diff -Nru scotch-6.0.4.dfsg1/debian/changelog scotch-6.0.6/debian/changelog --- scotch-6.0.4.dfsg1/debian/changelog 2018-05-13 17:04:02.000000000 +0000 +++ scotch-6.0.6/debian/changelog 2018-09-23 21:26:55.000000000 +0000 @@ -1,8 +1,34 @@ -scotch (6.0.4.dfsg1-8build1) cosmic; urgency=medium +scotch (6.0.6-2) unstable; urgency=medium - * No-change rebuild for dune openmpi soname change. + * Team upload. + * use DEB_HOST_ARCH=m68k,powerpcspe and DEB_HOST_ARCH_OS=hurd to + identify arches on which test errors are ignored or skipped + - allow m68k to run tests but ignore errors (segfault is expected + in the qemu emulator used to build packages on the m68k buildd) + * update build-fixes.patch to ensure libptesmumps links to ptscotch + and includes pt in its soname. Closes: #909404. + * don't compress pdf docs - -- Matthias Klose Sun, 13 May 2018 17:04:02 +0000 + -- Drew Parsons Mon, 24 Sep 2018 05:26:55 +0800 + +scotch (6.0.6-1) unstable; urgency=medium + + * Team upload. + * New upstream version. + - Scotch and PT-Scotch documentation now available. Closes: #890278. + * activate support for bz2 and lzma compression + * update debian/watch to special strings (detects alphabetic versions) + * update -DSCOTCH_PTHREAD_AFFINITY_LINUX to -DCOMMON_PTHREAD_AFFINITY_LINUX + * update build-fixes.patch + - use lib$(ESMUMPSLIB) instead of libesmumps + - preserve symlinks (cp -a) when installing libscotchmetis + * debian/control: update Vcs tags to + https://salsa.debian.org/science-team/scotch + * add debian/tests (autopkgtest) + * Standards-Version: 4.2.1 + * debhelper compatibility level 11 + + -- Drew Parsons Sat, 22 Sep 2018 15:19:03 +0800 scotch (6.0.4.dfsg1-8) unstable; urgency=medium diff -Nru scotch-6.0.4.dfsg1/debian/compat scotch-6.0.6/debian/compat --- scotch-6.0.4.dfsg1/debian/compat 2017-12-20 06:29:43.000000000 +0000 +++ scotch-6.0.6/debian/compat 2018-09-23 21:26:55.000000000 +0000 @@ -1 +1 @@ -10 +11 diff -Nru scotch-6.0.4.dfsg1/debian/control scotch-6.0.6/debian/control --- scotch-6.0.4.dfsg1/debian/control 2017-12-20 06:29:43.000000000 +0000 +++ scotch-6.0.6/debian/control 2018-09-23 21:26:55.000000000 +0000 @@ -4,15 +4,17 @@ Maintainer: Debian Science Maintainers Uploaders: "Adam C. Powell, IV" , Andreas Tille -Build-Depends: debhelper (>= 10), +Build-Depends: debhelper (>= 11), quilt, bison, flex, zlib1g-dev, + libbz2-dev, + liblzma-dev, chrpath, mpi-default-dev, mpi-default-bin -Standards-Version: 4.1.2 -Vcs-Git: git://anonscm.debian.org/debian-science/packages/scotch.git -Vcs-Browser: https://anonscm.debian.org/cgit/debian-science/packages/scotch.git +Standards-Version: 4.2.1 +Vcs-Git: https://salsa.debian.org/science-team/scotch.git +Vcs-Browser: https://salsa.debian.org/science-team/scotch Homepage: http://www.labri.fr/perso/pelegrin/scotch/ Package: scotch diff -Nru scotch-6.0.4.dfsg1/debian/copyright scotch-6.0.6/debian/copyright --- scotch-6.0.4.dfsg1/debian/copyright 2017-12-20 06:29:43.000000000 +0000 +++ scotch-6.0.6/debian/copyright 2018-09-23 21:26:55.000000000 +0000 @@ -1,9 +1,6 @@ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: scotch Source: https://www.labri.fr/perso/pelegrin/scotch/ -Files-Excluded: - doc/*pdf - doc/*ps.gz Files: * Copyright: 2004,2007,2008,2010-2012 ENSEIRB, INRIA & CNRS diff -Nru scotch-6.0.4.dfsg1/debian/libptscotch-6.0.lintian-overrides scotch-6.0.6/debian/libptscotch-6.0.lintian-overrides --- scotch-6.0.4.dfsg1/debian/libptscotch-6.0.lintian-overrides 2017-12-20 06:29:43.000000000 +0000 +++ scotch-6.0.6/debian/libptscotch-6.0.lintian-overrides 2018-09-23 21:26:55.000000000 +0000 @@ -1 +1 @@ -libptscotch-6.0: package-name-doesnt-match-sonames libptesmumps-6 libptscotch-6 libptscotcherr-6 libptscotcherrexit-6 libptscotchparmetis-6 +package-name-doesnt-match-sonames lib*esmumps-* libptscotch-* libptscotcherr-* libptscotcherrexit-* libptscotchparmetis-* diff -Nru scotch-6.0.4.dfsg1/debian/libptscotch-dev.doc-base scotch-6.0.6/debian/libptscotch-dev.doc-base --- scotch-6.0.4.dfsg1/debian/libptscotch-dev.doc-base 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/debian/libptscotch-dev.doc-base 2018-09-23 21:26:55.000000000 +0000 @@ -0,0 +1,13 @@ +Document: ptscotch-doc +Title: PT-Scotch Documentation +Author: François Pellegrini +Abstract: This document describes the capabilities and operations of + PT-Scotch and libScotch, a software package and a software library + which compute parallel static mappings and parallel sparse matrix + block orderings of distributed graphs. It gives brief descriptions of + the algorithms, details the input/output formats, instructions for + use, installation procedures, and provides a number of examples. +Section: Programming + +Format: PDF +Files: /usr/share/doc/libptscotch-dev/ptscotch_user*.pdf* diff -Nru scotch-6.0.4.dfsg1/debian/libptscotch-dev.docs scotch-6.0.6/debian/libptscotch-dev.docs --- scotch-6.0.4.dfsg1/debian/libptscotch-dev.docs 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/debian/libptscotch-dev.docs 2018-09-23 21:26:55.000000000 +0000 @@ -0,0 +1,3 @@ +doc/CeCILL-C_V1-en.txt +doc/CeCILL-C_V1-fr.txt +doc/ptscotch_user*.pdf diff -Nru scotch-6.0.4.dfsg1/debian/libptscotch-dev.install scotch-6.0.6/debian/libptscotch-dev.install --- scotch-6.0.4.dfsg1/debian/libptscotch-dev.install 2017-12-20 06:29:43.000000000 +0000 +++ scotch-6.0.6/debian/libptscotch-dev.install 2018-09-23 21:26:55.000000000 +0000 @@ -28,6 +28,3 @@ echo int64/lib/libpt${lib}*.a /usr/lib/${DEB_HOST_MULTIARCH}/scotch-int64 echo long/lib/libpt${lib}*.a /usr/lib/${DEB_HOST_MULTIARCH}/scotch-long done - -echo doc/CeCILL-C_V1-en.txt /usr/share/doc/libptscotch-dev -echo doc/CeCILL-C_V1-fr.txt /usr/share/doc/libptscotch-dev diff -Nru scotch-6.0.4.dfsg1/debian/libscotch-6.0.lintian-overrides scotch-6.0.6/debian/libscotch-6.0.lintian-overrides --- scotch-6.0.4.dfsg1/debian/libscotch-6.0.lintian-overrides 2017-12-20 06:29:43.000000000 +0000 +++ scotch-6.0.6/debian/libscotch-6.0.lintian-overrides 2018-09-23 21:26:55.000000000 +0000 @@ -1 +1 @@ -libscotch-6.0: package-name-doesnt-match-sonames libesmumps-6 libscotch-6 libscotcherr-6 libscotcherrexit-6 libscotchmetis-6 +package-name-doesnt-match-sonames libesmumps-* libscotch-* libscotcherr-* libscotcherrexit-* libscotchmetis-* diff -Nru scotch-6.0.4.dfsg1/debian/libscotch-dev.doc-base scotch-6.0.6/debian/libscotch-dev.doc-base --- scotch-6.0.4.dfsg1/debian/libscotch-dev.doc-base 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/debian/libscotch-dev.doc-base 2018-09-23 21:26:55.000000000 +0000 @@ -0,0 +1,14 @@ +Document: scotch-doc +Title: Scotch Documentation +Author: François Pellegrini +Abstract: This document describes the capabilities and operations of + Scotch and libScotch, a software package and a software library + devoted to static mapping, edge- and vertex-based graph partitioning, + and sparse matrix block ordering of graphs and meshes/hypergraphs. It + gives brief descriptions of the algorithms, details the input/output + formats, instructions for use, installation procedures, and provides a + number of examples. +Section: Programming + +Format: PDF +Files: /usr/share/doc/libscotch-dev/scotch_user*.pdf* diff -Nru scotch-6.0.4.dfsg1/debian/libscotch-dev.docs scotch-6.0.6/debian/libscotch-dev.docs --- scotch-6.0.4.dfsg1/debian/libscotch-dev.docs 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/debian/libscotch-dev.docs 2018-09-23 21:26:55.000000000 +0000 @@ -0,0 +1,3 @@ +doc/CeCILL-C_V1-en.txt +doc/CeCILL-C_V1-fr.txt +doc/scotch_user*.pdf diff -Nru scotch-6.0.4.dfsg1/debian/libscotch-dev.install scotch-6.0.6/debian/libscotch-dev.install --- scotch-6.0.4.dfsg1/debian/libscotch-dev.install 2017-12-20 06:29:43.000000000 +0000 +++ scotch-6.0.6/debian/libscotch-dev.install 2018-09-23 21:26:55.000000000 +0000 @@ -32,6 +32,3 @@ echo long/include/esmumps.h /usr/include/scotch-long echo long/include/scotch.h /usr/include/scotch-long echo long/include/scotchf.h /usr/include/scotch-long - -echo doc/CeCILL-C_V1-en.txt /usr/share/doc/libscotch-dev -echo doc/CeCILL-C_V1-fr.txt /usr/share/doc/libscotch-dev diff -Nru scotch-6.0.4.dfsg1/debian/patches/build-fixes.patch scotch-6.0.6/debian/patches/build-fixes.patch --- scotch-6.0.4.dfsg1/debian/patches/build-fixes.patch 2017-12-20 06:29:43.000000000 +0000 +++ scotch-6.0.6/debian/patches/build-fixes.patch 2018-09-23 21:26:55.000000000 +0000 @@ -9,11 +9,11 @@ Reviewed-By: "Adam C. Powell, IV" Last-Update: 2011-04-01 -Index: scotch-6.0.4.dfsg/src/Makefile +Index: scotch/src/Makefile =================================================================== ---- scotch-6.0.4.dfsg.orig/src/Makefile -+++ scotch-6.0.4.dfsg/src/Makefile -@@ -36,7 +36,7 @@ PATCHLEVEL = 4 +--- scotch.orig/src/Makefile ++++ scotch/src/Makefile +@@ -36,7 +36,7 @@ PATCHLEVEL = 6 .PHONY : clean default install ptscotch realclean required scotch @@ -22,13 +22,15 @@ required : Makefile.inc ../bin ../include ../lib -@@ -112,11 +112,10 @@ ptesmumps : ptscotch +@@ -116,13 +116,10 @@ ptesmumps : scotch ptscotch (cd esmumps ; $(MAKE) ptscotch && $(MAKE) ptinstall) install : required $(bindir) $(includedir) $(libdir) $(mandir)/man1 - -$(CP) -f ../bin/[agm]*$(EXE) $(bindir) - -$(CP) -f ../bin/d[agm]*$(EXE) $(bindir) +- -$(CP) -f ../include/*esmumps*.h $(includedir) - -$(CP) -f ../include/*scotch*.h $(includedir) +- -$(CP) -f ../lib/*esmumps*$(LIB) $(libdir) - -$(CP) -f ../lib/*scotch*$(LIB) $(libdir) - -$(CP) -Rf ../man/* $(mandir) + $(CP) -af ../bin/* $(bindir) @@ -38,11 +40,11 @@ clean : required (cd libscotch ; $(MAKE) clean) -Index: scotch-6.0.4.dfsg/src/libscotchmetis/Makefile +Index: scotch/src/libscotchmetis/Makefile =================================================================== ---- scotch-6.0.4.dfsg.orig/src/libscotchmetis/Makefile -+++ scotch-6.0.4.dfsg/src/libscotchmetis/Makefile -@@ -61,15 +61,15 @@ ptscotch : +--- scotch.orig/src/libscotchmetis/Makefile ++++ scotch/src/libscotchmetis/Makefile +@@ -63,15 +63,15 @@ ptscotch : libptscotchparmetis$(LIB) install : scotch @@ -58,12 +60,12 @@ + $(CP) -a libptscotchparmetis$(LIB) libptscotchparmetis*.so $(libdir) clean : -- -$(RM) *~ *$(OBJ) lib*$(LIB) -+ -$(RM) *~ *$(OBJ) lib*$(LIB) lib*.so lib*.a +- -$(RM) *~ *$(OBJ) lib*$(LIB) metis.h parmetis.h ++ -$(RM) *~ *$(OBJ) lib*$(LIB) lib*.so lib*.a metis.h parmetis.h realclean : clean -@@ -129,6 +129,8 @@ libptscotchparmetis$(LIB) : parmetis_dgr +@@ -139,6 +139,8 @@ libptscotchparmetis$(LIB) : parmetis_dgr parmetis_dgraph_order_f$(OBJ) \ parmetis_dgraph_part$(OBJ) \ parmetis_dgraph_part_f$(OBJ) @@ -72,7 +74,7 @@ $(AR) $(ARFLAGS) $(@) $(^) -$(RANLIB) $(@) -@@ -136,5 +138,7 @@ libscotchmetis$(LIB) : metis_graph_orde +@@ -146,5 +148,7 @@ libscotchmetis$(LIB) : metis_graph_orde metis_graph_order_f$(OBJ) \ metis_graph_part$(OBJ) \ metis_graph_part_f$(OBJ) @@ -80,10 +82,10 @@ + ln -s libscotchmetis-$(VERSION).so libscotchmetis.so $(AR) $(ARFLAGS) $(@) $(^) -$(RANLIB) $(@) -Index: scotch-6.0.4.dfsg/src/libscotch/Makefile +Index: scotch/src/libscotch/Makefile =================================================================== ---- scotch-6.0.4.dfsg.orig/src/libscotch/Makefile -+++ scotch-6.0.4.dfsg/src/libscotch/Makefile +--- scotch.orig/src/libscotch/Makefile ++++ scotch/src/libscotch/Makefile @@ -77,7 +77,7 @@ ptinstall : install \ $(libdir)/libptscotch$(LIB) @@ -122,14 +124,14 @@ ## ## Library dependencies. -@@ -2962,26 +2962,38 @@ ptscotchf.h : ptdummysizes$(EXE) \ +@@ -3064,26 +3064,38 @@ ptscotchf.h : ptdummysizes$(EXE) \ library_pt_f.h - ./ptdummysizes$(EXE) library_pt_f.h ptscotchf.h + ./ptdummysizes$(EXE) "-s$(SCOTCH_NAME_SUFFIX)" library_pt_f.h ptscotchf.h -libscotch$(LIB) : $(LIBSCOTCHDEPS) - $(AR) $(ARFLAGS) $(@) $(?) +libscotch$(LIB) : $(LIBSCOTCHDEPS) libscotcherr$(LIB) -+ $(CC) -shared -Wl,-soname,libscotch-$(VERSION).so $(LIBSCOTCHDEPS) -L. -lscotcherr -lz -lpthread -lm -lrt -o libscotch-$(VERSION).so ++ $(CC) -shared -Wl,-soname,libscotch-$(VERSION).so $(LIBSCOTCHDEPS) -L. -lscotcherr -lz -lbz2 -llzma -lpthread -lm -lrt -o libscotch-$(VERSION).so + ln -s libscotch-$(VERSION).so libscotch.so + $(AR) $(ARFLAGS) $(@) $(LIBSCOTCHDEPS) -$(RANLIB) $(@) @@ -149,7 +151,7 @@ -libptscotch$(LIB) : $(LIBPTSCOTCHDEPS) - $(AR) $(ARFLAGS) $(@) $(?) +libptscotch$(LIB) : $(LIBPTSCOTCHDEPS) $(LIBSCOTCHDEPS) libptscotcherr$(LIB) -+ $(CC) -shared -Wl,-soname,libptscotch-$(VERSION).so $(LIBPTSCOTCHDEPS) $(LIBSCOTCHDEPS) -L. -lptscotcherr -lz -lpthread -lm -lrt -o libptscotch-$(VERSION).so ++ $(CC) -shared -Wl,-soname,libptscotch-$(VERSION).so $(LIBPTSCOTCHDEPS) $(LIBSCOTCHDEPS) -L. -lptscotcherr -lz -lbz2 -llzma -lpthread -lm -lrt -o libptscotch-$(VERSION).so + ln -s libptscotch-$(VERSION).so libptscotch.so + $(AR) $(ARFLAGS) $(@) $(LIBPTSCOTCHDEPS) $(LIBSCOTCHDEPS) -$(RANLIB) $(@) @@ -165,48 +167,59 @@ + ln -s libptscotcherrexit-$(VERSION).so libptscotcherrexit.so $(AR) $(ARFLAGS) $(@) $(?) -$(RANLIB) $(@) -Index: scotch-6.0.4.dfsg/src/esmumps/Makefile +Index: scotch/src/esmumps/Makefile =================================================================== ---- scotch-6.0.4.dfsg.orig/src/esmumps/Makefile -+++ scotch-6.0.4.dfsg/src/esmumps/Makefile +--- scotch.orig/src/esmumps/Makefile ++++ scotch/src/esmumps/Makefile @@ -44,7 +44,7 @@ include ../Makefile.inc $(CC) $(CFLAGS) $(CLIBFLAGS) -I$(includedir) -c $(<) -o $(@) %$(EXE) : %.c -- $(CC) $(CFLAGS) -I$(includedir) $(<) -o $(@) -L$(libdir) $(LDFLAGS) -L. -l$(ESMUMPSLIB) -l$(SCOTCHLIB) -lscotch -l$(SCOTCHLIB)errexit -lm -+ $(CC) $(CFLAGS) -I$(includedir) $(<) -o $(@) -L$(libdir) $(LDFLAGS) -L. -l$(ESMUMPSLIB) -l$(SCOTCHLIB) -lscotch -lscotcherr -l$(SCOTCHLIB)err -l$(SCOTCHLIB)errexit -lm +- $(CC) $(CFLAGS) -I$(includedir) $(<) -o $(@) -L. -lesmumps -L$(libdir) -lscotch -lscotcherrexit $(LDFLAGS) ++ $(CC) $(CFLAGS) -I$(includedir) $(<) -o $(@) -L. -l$(ESMUMPSLIB) -L$(libdir) -l$(SCOTCHLIB) -l$(SCOTCHLIB)errexit $(LDFLAGS) ## ## Project rules. -@@ -59,19 +59,21 @@ scotch : clean +@@ -53,22 +53,28 @@ include ../Makefile.inc + .PHONY : ptscotch scotch ptinstall install clean realclean - ptscotch : clean - $(MAKE) CFLAGS="$(CFLAGS) -DSCOTCH_PTSCOTCH" CC="$(CCP)" SCOTCHLIB=ptscotch ESMUMPSLIB=ptesmumps \ -- libesmumps$(LIB) \ -+ libptesmumps$(LIB) \ + scotch : clean +- $(MAKE) CC="$(CCS)" CCD="$(CCS)" \ +- libesmumps$(LIB) \ ++ $(MAKE) CC="$(CCS)" CCD="$(CCS)" SCOTCHLIB=scotch ESMUMPSLIB=esmumps \ ++ libesmumps$(LIB) \ main_esmumps$(EXE) - install : +-ptscotch : scotch ++ptscotch : clean ++ $(MAKE) CFLAGS="$(CFLAGS) -DSCOTCH_PTSCOTCH" CC="$(CCP)" SCOTCHLIB=ptscotch ESMUMPSLIB=ptesmumps \ ++ libptesmumps$(LIB) \ ++ main_ptesmumps$(EXE) + +-install : scotch - -$(CP) esmumps.h $(includedir) - -$(CP) libesmumps$(LIB) $(libdir) + +-ptinstall : scotch +- -$(CP) esmumps.h $(includedir) +- -$(CP) libesmumps$(LIB) $(libdir)/libptesmumps$(LIB) ++install : scotch + -$(CP) -a esmumps.h $(includedir) + -$(CP) -a libesmumps* $(libdir) + -$(CP) -a main_esmumps$(EXE) $(bindir)/scotch_esmumps - - ptinstall : -- -$(CP) esmumps.h $(includedir) -- -$(CP) libptesmumps$(LIB) $(libdir) ++ ++ptinstall : ptscotch + -$(CP) -a esmumps.h $(includedir) + -$(CP) -a libptesmumps* $(libdir) -+ -$(CP) -a main_esmumps$(EXE) $(bindir)/ptscotch_esmumps ++ -$(CP) -a main_ptesmumps$(EXE) $(bindir)/ptscotch_esmumps clean : - -$(RM) *~ common.h *$(OBJ) lib*$(LIB) main_esmumps$(EXE) -+ -$(RM) *~ common.h *$(OBJ) lib*$(LIB) lib*.so main_esmumps$(EXE) ++ -$(RM) *~ common.h *$(OBJ) lib*$(LIB) lib*.so main_*esmumps$(EXE) realclean : clean -@@ -142,7 +144,7 @@ esmumps_strats$(OBJ) : esmumps_strats.c +@@ -139,7 +145,7 @@ esmumps_strats$(OBJ) : esmumps_strats.c common.h \ esmumps.h @@ -215,23 +228,39 @@ order$(OBJ) \ order_scotch_graph$(OBJ) \ dof$(OBJ) \ -@@ -151,9 +153,12 @@ libesmumps$(LIB) : graph_graph$(OBJ) +@@ -148,15 +154,24 @@ libesmumps$(LIB) : graph_graph$(OBJ) esmumps$(OBJ) \ esmumps_f$(OBJ) \ esmumps_strats$(OBJ) -+ $(CC) -shared -Wl,-soname,lib$(ESMUMPSLIB)-$(VERSION).so $^ -L../libscotch -lscotch -lscotcherr -o lib$(ESMUMPSLIB)-$(VERSION).so ++ $(CC) -shared -Wl,-soname,lib$(ESMUMPSLIB)-$(VERSION).so $^ -L../libscotch -l$(SCOTCHLIB) -l$(SCOTCHLIB)err -o lib$(ESMUMPSLIB)-$(VERSION).so + ln -s lib$(ESMUMPSLIB)-$(VERSION).so lib$(ESMUMPSLIB).so - $(AR) $(ARFLAGS) lib$(ESMUMPSLIB)$(LIB) $(?) - -$(RANLIB) lib$(ESMUMPSLIB)$(LIB) + $(AR) $(ARFLAGS) $(@) $(?) + -$(RANLIB) $(@) -+ - main_esmumps$(EXE) : main_esmumps.c \ +-main_esmumps$(EXE) : main_esmumps.c \ ++main_esmumps$(EXE) : main_esmumps.c \ common.h \ graph.h \ -Index: scotch-6.0.4.dfsg/src/scotch/Makefile + order.h \ + symbol.h \ + esmumps.h \ +- libesmumps$(LIB) \ +- $(libdir)/libscotch$(LIB) \ +- $(libdir)/libscotcherrexit$(LIB) ++ lib$(ESMUMPSLIB)$(LIB) \ ++ $(libdir)/lib$(SCOTCHLIB)$(LIB) \ ++ $(libdir)/lib$(SCOTCHLIB)errexit$(LIB) ++ ++main_ptesmumps$(EXE) : ++ -$(MV) main_esmumps$(EXE) main_tmp_esmumps$(EXE) 2>/dev/null || /bin/true ++ $(MAKE) CFLAGS="$(CFLAGS) -DSCOTCH_PTSCOTCH" CC="$(CCP)" SCOTCHLIB=ptscotch ESMUMPSLIB=ptesmumps \ ++ main_esmumps$(EXE) ++ $(MV) -f main_esmumps$(EXE) main_ptesmumps$(EXE) ++ -$(MV) main_tmp_esmumps$(EXE) main_esmumps$(EXE) 2>/dev/null || /bin/true +Index: scotch/src/scotch/Makefile =================================================================== ---- scotch-6.0.4.dfsg.orig/src/scotch/Makefile -+++ scotch-6.0.4.dfsg/src/scotch/Makefile +--- scotch.orig/src/scotch/Makefile ++++ scotch/src/scotch/Makefile @@ -41,13 +41,13 @@ libdir = ../../lib include ../Makefile.inc diff -Nru scotch-6.0.4.dfsg1/debian/patches/include_headers.patch scotch-6.0.6/debian/patches/include_headers.patch --- scotch-6.0.4.dfsg1/debian/patches/include_headers.patch 2017-12-20 06:29:43.000000000 +0000 +++ scotch-6.0.6/debian/patches/include_headers.patch 2018-09-23 21:26:55.000000000 +0000 @@ -27,28 +27,3 @@ #ifndef SCOTCH_PTSCOTCH #define SCOTCH_DUMMYPTFLAG #endif /* SCOTCH_PTSCOTCH */ -Index: scotch/src/libscotchmetis/parmetis.h -=================================================================== ---- scotch.orig/src/libscotchmetis/parmetis.h -+++ scotch/src/libscotchmetis/parmetis.h -@@ -67,6 +67,7 @@ - #define __parmetis_h__ - - #include /* Since ParMeTiS does it, do it too */ -+#include /* define SCOTCH_Num */ - - #endif /* __parmetis_h__ */ - -Index: scotch/src/libscotchmetis/metis.h -=================================================================== ---- scotch.orig/src/libscotchmetis/metis.h -+++ scotch/src/libscotchmetis/metis.h -@@ -59,6 +59,8 @@ - /** **/ - /************************************************************/ - -+#include /* define SCOTCH_Num */ -+ - /* - ** The defines. - */ diff -Nru scotch-6.0.4.dfsg1/debian/patches/metis-header.patch scotch-6.0.6/debian/patches/metis-header.patch --- scotch-6.0.4.dfsg1/debian/patches/metis-header.patch 2017-12-20 06:29:43.000000000 +0000 +++ scotch-6.0.6/debian/patches/metis-header.patch 2018-09-23 21:26:55.000000000 +0000 @@ -1,13 +1,13 @@ -Index: scotch-6.0.0.dfsg/src/libscotchmetis/metis.h +Index: scotch/src/libscotchmetis/library_metis.h =================================================================== ---- scotch-6.0.0.dfsg.orig/src/libscotchmetis/metis.h 2013-09-05 11:53:46.000000000 +0200 -+++ scotch-6.0.0.dfsg/src/libscotchmetis/metis.h 2013-09-05 11:53:46.000000000 +0200 +--- scotch.orig/src/libscotchmetis/library_metis.h ++++ scotch/src/libscotchmetis/library_metis.h @@ -84,6 +84,8 @@ #define METISNAME4(p,s) p##s #endif /* METISNAMEL */ +typedef int idxtype; + - /* - ** The function prototypes. - */ + #ifndef SCOTCH_METIS_RETURN + #define SCOTCH_METIS_RETURN + typedef enum { diff -Nru scotch-6.0.4.dfsg1/debian/README.Debian scotch-6.0.6/debian/README.Debian --- scotch-6.0.4.dfsg1/debian/README.Debian 2017-12-20 06:29:43.000000000 +0000 +++ scotch-6.0.6/debian/README.Debian 2018-09-23 21:26:55.000000000 +0000 @@ -1,8 +1,8 @@ scotch for Debian ----------------- -Scotch provides a metis interface which would allow one to compile -programs and libraries requiring metis whitout having to install metis +Scotch provides a metis and parmetis interface which would allow one to compile +programs and libraries requiring metis whitout having to install parmetis (which is a non-free software) -- Christophe Prud'homme , Thu, 18 Oct 2007 09:45:52 +0200 diff -Nru scotch-6.0.4.dfsg1/debian/rules scotch-6.0.6/debian/rules --- scotch-6.0.4.dfsg1/debian/rules 2017-12-20 06:29:43.000000000 +0000 +++ scotch-6.0.6/debian/rules 2018-09-23 21:26:55.000000000 +0000 @@ -24,19 +24,22 @@ CCP=mpicc export CFLAGS_COMMON = -O3 -fPIC -I. -I/usr/include/mpi \ - -Drestrict=__restrict -DCOMMON_FILE_COMPRESS_GZ \ + -Drestrict=__restrict \ + -DCOMMON_FILE_COMPRESS_GZ \ + -DCOMMON_FILE_COMPRESS_BZ2 \ + -DCOMMON_FILE_COMPRESS_LZMA \ -DCOMMON_PTHREAD \ -DSCOTCH_PTHREAD_NUMBER=2 \ -DCOMMON_RANDOM_FIXED_SEED \ -DSCOTCH_RENAME -DSCOTCH_RENAME_PARSER -export LDFLAGS_COMMON = -pthread -lz -lm -lrt +export LDFLAGS_COMMON = -pthread -lz -lbz2 -llzma -lm -lrt # hurd does not have POSIX time and therefore needs sys/time.h to define struct timeval # hurd does not support pthread_setaffinity_np (-DSCOTCH_PTHREAD_AFFINITY_LINUX) ifeq ($(DEB_BUILD_ARCH_OS),hurd) CFLAGS_COMMON += -DHAVE_SYS_TIME_H else - CFLAGS_COMMON += -DSCOTCH_PTHREAD_AFFINITY_LINUX + CFLAGS_COMMON += -DCOMMON_PTHREAD_AFFINITY_LINUX endif # By default, halt on test (check) failures. But, @@ -44,14 +47,13 @@ # - m68k segfaults inside the qemu emulator used for builds # - powerpcspe segfaults on test_scotch_graph_order in INTSIZE64 # so don't halt on test failures on these arches. -# In fact don't run tests at all on hurd, m68k. -ifeq ($(DEB_BUILD_ARCH_OS),hurd) +# In fact don't run tests at all on hurd. +ifeq ($(DEB_HOST_ARCH_OS),hurd) HALT_ON_TEST_ERROR = no SKIP_TESTS = yes -else ifeq ($(DEB_BUILD_ARCH_OS),m68k) +else ifeq ($(DEB_HOST_ARCH),m68k) HALT_ON_TEST_ERROR = no - SKIP_TESTS = yes -else ifeq ($(DEB_BUILD_ARCH_OS),powerpcspe) +else ifeq ($(DEB_HOST_ARCH),powerpcspe) HALT_ON_TEST_ERROR = no else HALT_ON_TEST_ERROR = yes @@ -152,9 +154,7 @@ cp debian/dgscat.1 int/share/man/man1 cp debian/dgscat.1 int/share/man/man1/gscat.1 # Fix lintian warnings - for file in $(shell ls int/bin) scotch_binaries; do \ - (cd int/share/man/man1 && gzip -9n $$file.1); \ - done + find int/share/man/man1/ -name *.1 | xargs -r gzip -n9 for file in scotch_esmumps scotch_gbase acpl amk_grf mcv; do \ (cd int/share/man/man1 && ln -sf scotch_binaries.1.gz $$file.1.gz); \ done @@ -219,7 +219,7 @@ dh_strip -plibscotch-6.0 --dbgsym-migration='libscotch-dbg (<< 6.0.4.dfsg1-8~)' dh_strip -plibptscotch-6.0 --dbgsym-migration='libptscotch-dbg (<< 6.0.4.dfsg1-8~)' dh_makeshlibs -a - dh_compress -a + dh_compress -a -X.pdf dh_fixperms -a dh_installdeb -a dh_shlibdeps -a diff -Nru scotch-6.0.4.dfsg1/debian/tests/check.Makefile.patch scotch-6.0.6/debian/tests/check.Makefile.patch --- scotch-6.0.4.dfsg1/debian/tests/check.Makefile.patch 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/debian/tests/check.Makefile.patch 2018-09-23 21:26:55.000000000 +0000 @@ -0,0 +1,47 @@ +--- Makefile.orig 2018-09-22 14:51:38.699772309 +0800 ++++ Makefile 2018-09-22 14:54:56.669056139 +0800 +@@ -32,9 +32,9 @@ + + TMPDIR = /tmp + +-SCOTCHINCLUDEDIR = ../../include +-SCOTCHLIBDIR = ../../lib +-SCOTCHBINDIR = ../../bin ++SCOTCHINCLUDEDIR = /usr/include/scotch ++SCOTCHLIBDIR = /usr/lib/$(shell dpkg-architecture -q DEB_HOST_MULTIARCH) ++SCOTCHBINDIR = /usr/bin + + LIBPTSCOTCH = -lptscotch -lscotch -lptscotcherr + LIBSCOTCH = -lscotch -lscotcherr +@@ -59,7 +59,7 @@ + $(CC) $(CFLAGS) $(CLIBFLAGS) -I$(SCOTCHINCLUDEDIR) -c $(<) -o $(@) + + %$(EXE) : %.c +- $(CC) $(CFLAGS) -I$(SCOTCHINCLUDEDIR) -L$(SCOTCHLIBDIR) $(<) -o $(@) $(SCOTCHLIBS) $(LDFLAGS) ++ $(CC) $(CFLAGS) -lm -I$(SCOTCHINCLUDEDIR) -L$(SCOTCHLIBDIR) $(<) -o $(@) $(SCOTCHLIBS) $(LDFLAGS) + + ## + ## Project rules. +@@ -104,10 +104,11 @@ + ## Test cases dependencies. + ## + ++# skip these checks: ++# check_common_random ++# check_fibo + CHECKSCOTCH = check_common_file_compress \ +- check_common_random \ + check_common_thread \ +- check_fibo \ + check_strat_seq \ + check_scotch_arch \ + check_scotch_arch_deco \ +@@ -362,7 +363,7 @@ + ## + + check_prog_gpart_remap : +- $(EXECS) $(SCOTCHBINDIR)/gpart 32 data/bump_imbal_32.grf /dev/null -rodata/bump_old.map -vmt ++ $(EXECS) $(SCOTCHBINDIR)/scotch_gpart 32 data/bump_imbal_32.grf /dev/null -rodata/bump_old.map -vmt + + ## + ## Parallel program tests. diff -Nru scotch-6.0.4.dfsg1/debian/tests/control scotch-6.0.6/debian/tests/control --- scotch-6.0.4.dfsg1/debian/tests/control 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/debian/tests/control 2018-09-23 21:26:55.000000000 +0000 @@ -0,0 +1,2 @@ +Tests: test-scotch +Depends: @, @builddeps@ diff -Nru scotch-6.0.4.dfsg1/debian/tests/test-scotch scotch-6.0.6/debian/tests/test-scotch --- scotch-6.0.4.dfsg1/debian/tests/test-scotch 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/debian/tests/test-scotch 2018-09-23 21:26:55.000000000 +0000 @@ -0,0 +1,19 @@ +export OMPI_MCA_plm_rsh_agent=/bin/false +export OMPI_MCA_rmaps_base_oversubscribe=1 + +cp debian/Makefile_int.inc src/Makefile.inc +cd src/check +patch < ../../debian/tests/check.Makefile.patch + +echo "Test libscotch.so (sequential)" +make realclean +make check + +echo "Test libptscotch.so (parallel)" +make realclean +make ptcheck 2>ptcheck.stderr +# expect multiple "Proc 1 of 3, pid ....." piped to stderr +if [ -s ptcheck.stderr ]; then + echo "stderr reported:" + cat ptcheck.stderr +fi diff -Nru scotch-6.0.4.dfsg1/debian/watch scotch-6.0.6/debian/watch --- scotch-6.0.4.dfsg1/debian/watch 2017-12-20 06:29:43.000000000 +0000 +++ scotch-6.0.6/debian/watch 2018-09-23 21:26:55.000000000 +0000 @@ -1,3 +1,2 @@ version=3 -opts=dversionmangle=s/\.dfsg1$// \ - https://gforge.inria.fr/frs/?group_id=248 /frs/download.php/.*/scotch_([\d.]+)\.ta?r?\.?gz +https://gforge.inria.fr/frs/?group_id=248 /frs/download.php/.*/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ Binary files /tmp/tmpp961_B/2VrPdjj9Sm/scotch-6.0.4.dfsg1/doc/ptscotch_user6.0.pdf and /tmp/tmpp961_B/UYzcEkJWzG/scotch-6.0.6/doc/ptscotch_user6.0.pdf differ Binary files /tmp/tmpp961_B/2VrPdjj9Sm/scotch-6.0.4.dfsg1/doc/ptscotch_user6.0.ps.gz and /tmp/tmpp961_B/UYzcEkJWzG/scotch-6.0.6/doc/ptscotch_user6.0.ps.gz differ Binary files /tmp/tmpp961_B/2VrPdjj9Sm/scotch-6.0.4.dfsg1/doc/scotch_user6.0.pdf and /tmp/tmpp961_B/UYzcEkJWzG/scotch-6.0.6/doc/scotch_user6.0.pdf differ Binary files /tmp/tmpp961_B/2VrPdjj9Sm/scotch-6.0.4.dfsg1/doc/scotch_user6.0.ps.gz and /tmp/tmpp961_B/UYzcEkJWzG/scotch-6.0.6/doc/scotch_user6.0.ps.gz differ diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/epsf.sty scotch-6.0.6/doc/src/ptscotch/epsf.sty --- scotch-6.0.4.dfsg1/doc/src/ptscotch/epsf.sty 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/epsf.sty 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,375 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\typeout{Document Style Option `epsf' (October 17 90)}% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% Inclusion of EPSF documents into [Oz]TeX documents. +%% Michel Mauny - April 25 90. +%% Emmanuel Chailloux - October 17 90 +%% History: +% --------- +%% April 11 91 +%% Fixed several bugs [mauny] +%% * Now accepts lines as %%BoundingBox:100 200 102 23 +%% without space here ^ +%% * Added a \leavevmode for \epfs{} to be accepted as single +%% element of a \begin{center} ... \end{center} +%% * Extracted calls to \newdimen for them to be global +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% TeX does itself the recognition of the Bounding Box of the drawing. +%% The macro is: +%% +%% \epsf{filename} +%% [xscale=/,yscale=/] <- optional +%% or (hsize=,vsize=)in pt +%% [ps=] <- optional +%% +%% Order of parameters is important, and the 3rd cannot be used without the +%% 2nd. +%% +%% A null hsize indicates the hsize scaled by the vsize scaling. +%% A null vsize indicates the vsize scaled by the hsize scaling. +%% A double null is the unit. +%% +%% This is not the first package to do that sort of things, but that one +%% reads by itself the size of drawings, and is thus really trivial to use. +%% +%% This package may be extended in two ways: +%% * usage of different versions of TeX (dvi2ps) (simple, but not trivial) +%% * usage of different EPSF files types (tested only with FreeHand 2.0) +%% should be trivial... +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% How to use this package? +%% Two things to do: +%% +%% 1. Create an EPSF file +%% Use FreeHand or any program capable of creating such files from +%% drawings or whatever. +%% Use the `Export' menu item (or anything equivalent), creating +%% the file (say) draw.eps +%% +%% 2. In your [La]TeX document, place the following command where you +%% want your drawing to appear: +%% \epsf{draw.eps} +%% And your drawing will be at that place, in a TeX box. +%% You don't have to leave extra place for your drawing: +%% it will be in a TeX box. +%% +%% Z If you want to specify a scaling (say 33.33333 %) then use the +%% optional argument: +%% \epsf{draw.eps}[xscale=2/3,yscale=2/3] +%% Scalings may be negative, but must be specified with the form: +%% /. +%% IMPORTANT: try to use small numbers, otherwise you risk to get +%% a TeX internal registers overflow. +%% +%% Z if you prefer to specify the vsize of you picture then use the +%% optional argument : +%% \epsf{draw.ps}(hsize=200,vsize=300) +%% Dimensions are given in points with the TeX convension : +%% 1in or 72pt. +%% +%% ZZ For real hackers only: if you want to add some PostScript to your +%% drawing (indeed at its beginning), then use the second optional +%% argument: +%% \epsf{draw.eps}[xscale=1/1,yscale=1/1][ps=] +%% The second argument must be specified in order to use the +%% second one (if you are tired to do that, make a new macro with +%% your default scaling. +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% \DVITOPS indicates the default TeX. +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\oztex{OzTeX}% +\def\dvips{dvips}% +\def\dvitops{dvitops}% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% Provide the appropriate value to \DVITOPS before installation. +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%\let\DVITOPS=\dvitops% +\let\DVITOPS=\dvips% +%%\let\DVITOPS=\oztex% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% Debugging options. +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\yes={yes}% +\def\no={no}% +\let\DEBUGepsf=\yes% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% \@doTeXspecial has to be extended in order to work +%% with other VI2PS programs +%% OzTeX produces \special{ } +%% and we produce - - translate +%% scale +%% %%%% Added by ... (PostScript comment) +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +{% +% #1 = filename +% #2 = xmin, #3 = ymin +% #4 = xmax, #5 = ymax +% #6 = hscale, #7 = vscale +% #8 = user postcript +% \ifx\DEBUGepsf\yes +% \typeout{doTexSpecial #1 #2 #3 #4 #5 #6 #7 #8} +% \fi +%%%% Added by \DVITOPS\space PostScript inclusion (epsf.sty) +% +%\advance\@pshoffset by -3pt +%\catcode`\%=11 +\newdimen\@pshscale\newdimen\@psvscale\newdimen\@pshoffset\newdimen\@psvoffset +\gdef\@doTeXspecial#1#2#3#4#5#6#7#8{% +\ifx\DVITOPS\oztex% +\special{#1\space#6\space#7\space scale\space-#2\space-#3\space translate\space#8\space}% +\else% +\ifx\DVITOPS\dvips% +\@pshscale=#6pt\@psvscale=#7pt +%%% Some dvips require a percentage. In this case, comment out the next line +\multiply\@pshscale by 100\multiply\@psvscale by 100% +\@pshoffset=-#6pt\multiply\@pshoffset by #2 +%\advance\@pshoffset by -1pt% +\@psvoffset=-#7pt\multiply\@psvoffset by #3% +\special{psfile="#1"\space% +vscale=\expandafter\@numbof\the\@psvscale\space% +hoffset=\expandafter\@numbof\the\@pshoffset\space% +voffset=\expandafter\@numbof\the\@psvoffset\space% +hscale=\expandafter\@numbof\the\@pshscale\space}% +\else% +\ifx\DVITOPS\dvitops% +\@pshscale=#6pt% +\@psvscale=#7pt% +\@pshoffset=-#6pt\multiply\@pshoffset by #2% +\@psvoffset=-#7pt\multiply\@psvoffset by #3% +\special{psfile="#1"\space% +hoffset=\expandafter\@numbof\the\@pshoffset\space% +voffset=\expandafter\@numbof\the\@psvoffset\space% +hscale=\expandafter\@numbof\the\@pshscale\space% +vscale=\expandafter\@numbof\the\@psvscale}% +\else% +\let\DVITOPS=\dvitops% +\@doTeXspecial{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}% +\fi% +\fi% +\fi% +}% +}% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% +%% Following definitions should not be changed (except bug fixes) +%% +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Will change the catcodes of % when `parsing' header of EPS file +% The ``:'' character will be parsed as a space (catcode = 10) +\def\@setdrawingsyntax{\catcode`\%=11\catcode`\:=10\catcode`\!=11}% +% +% Need some counters and an input channel +\newread\@drawingchannel% +\newcount\@drawhsize% +\newcount\@drawvsize% +\newdimen\@xscale% +\newdimen\@yscale% +\newdimen\@vsize% +\newdimen\@hsize% +\newcount\@newvsize% +\newcount\@newhsize% +\newcount\@ovsize% +\newcount\@ohsize% +% +% +% \@scale at will multiply by +% must be / (big numbers may produce overflows) +\def\@scale#1at#2/#3{\divide#1 by #3\multiply#1 by #2}% +% +% +{\catcode`\.=12\catcode`\p=12\catcode`\t=12\gdef\@dimentocount#1.#2pt{#1}}% +% +{\catcode`\p=12\catcode`\t=12\gdef\@numbof#1pt{#1}}% +% \@drawingscale{p1}{q1}{p1}{q2} => xscale:=p1/q1, yscale:=p2/q2 +\def\@scale#1at#2/#3{\divide#1 by #3\multiply#1 by #2}% +\def\@drawingscale#1#2#3#4{% +\@xscale=#1pt% +\divide\@xscale by #2% +\@yscale=#3pt\divide\@yscale by #4% +}% +% +% \firstitem to => arg1:=car(arg2); arg2:=cdr(arg2) +\def\firstitem#1to#2{\expandafter\makeseq#1\makeseq#1#2}% +\long\def\makeseq#1 #2\makeseq#3#4{\gdef#4{#1}\gdef#3{#2}}% +%% +%% The user function +%% \epsf{}[xscale=p1/q1,yscale=p2/q2][ps=] +%% or \epsf{}(hsize=w,vsize=h)[ps=] +%% Two optional arguments. If second is needed, then the first one must be +%% present. +%% +\def\epsf#1{\leavevmode% Must leave vertical mode in order to execute \everypar +\@ifnextchar[{\s@epsf{#1}}% +{\@ifnextchar({\h@epsf{#1}}% +{\s@epsf{#1}[xscale=1/1,yscale=1/1]}}}% +%% +\def\s@epsf#1[xscale=#2/#3,yscale=#4/#5]{% +\@ifnextchar[{\scale@epsf{#1}[xscale={#2}/{#3},yscale={#4}/{#5}]}% +{\scale@epsf{#1}[xscale={#2}/{#3},yscale={#4}/{#5}][ps=\space]}}% +% +% More arguments to come? +\def\h@epsf#1(hsize=#2,vsize=#3){% +\@ifnextchar[{\dimen@epsf{#1}(hsize={#2},vsize={#3})}% +{\dimen@epsf{#1}(hsize={#2},vsize={#3})[ps=\space]}}% +% +% The main function (not user acessible) +% +%% Used to check wether we found the box or not +\newif\ifnosize +\begingroup +%%% Warning: comment character is & (and no more %) +\@setdrawingsyntax\catcode`\&=14 +&& +&& What we will be looking for (`pt' is the supposed unit) +\gdef\BoundingBox{%%BoundingBox}& +&& +&& +\gdef\read@epsf#1{& +&& We accept PostScript and scales as optional parameters +\bgroup\@setdrawingsyntax +&& Change the code of % +\typeout{Opening #1}& && Verbose! +\openin\@drawingchannel=#1 +\ifeof\@drawingchannel\closein\@drawingchannel&& +\typeout{LaTeX warning: can't open #1.}& && If no file, then ask the user +\typeout{Size of the drawing? }& && the size of its drawing. + \gdef\@minX{0}\gdef\@minY{0}& && + \gdef\@maxX{596}\gdef\@maxY{846}& +& \message{X (in pts): }& +& \read-1 to\mX\global\edef\@maxX{\mX}& +& \message{Y (in pts): }& +& \read-1 to\mY\global\edef\@maxY{\mY}& +\else && Otherwise: + \read\@drawingchannel to\@drsize& Skipping first line (%!PS-Adobe...) + \loop && repeat "get one line" + \read\@drawingchannel to\@drsize& +\typeout{\space\space\space\space \@drsize}&& echo it to the terminal + \firstitem\@drsize to\BBox& + \ifx\BBox\BoundingBox& && First word =? Bounding Box + \nosizefalse& + \firstitem\@drsize to\@minX&& If yes, then get the informations + \firstitem\@drsize to\@minY&& i.e. minX, minY, maxX and maxY + \firstitem\@drsize to\@maxX&& in that order + \firstitem\@drsize to\@maxY&& + \else\nosizetrue&& + \fi + \ifnosize\relax\repeat&& && If no, then get one more line, etc. +\typeout{Closing}& && Verbose! + \closein\@drawingchannel&& +\fi +\egroup +} +&& +\gdef\scale@epsf#1[xscale=#2/#3,yscale=#4/#5][ps=#6]{& +\read@epsf{#1}& +\common@epsf{#1}[xscale=#2/#3,yscale=#4/#5][ps=#6]& +} +& +& +\gdef\dimen@epsf#1(hsize=#2,vsize=#3)[ps=#4]{& +\read@epsf{#1}& +\@newvsize=#3& +\@newhsize=#2& +&& +&& Computing vsize& +\@drawvsize=\@maxY& +\advance\@drawvsize by-\@minY& +\ifnum\@newvsize=0& if newvsize=0 +\ifnum\@newhsize=0& if newhsize=0 +\common@epsf{#1}[xscale=1/1,yscale=1/1][ps=#4]& +\else& else +&& Computing hsize +\@drawhsize=\@maxX& +\advance\@drawhsize by-\@minX& +&&\ifnum\@newhsize=0& +\@ohsize=\@drawhsize& +\divide\@drawhsize by\@ohsize& +\multiply\@drawhsize by\@newhsize& +\multiply\@drawvsize by\@newhsize& +\divide\@drawvsize by\@ohsize& +\@drawingscale{\the\@newhsize}{\@ohsize} +{\the\@newhsize}{\@ohsize}& +\fi& fi +\else& else +\@ovsize=\@drawvsize& +\divide\@drawvsize by\@ovsize& +\multiply\@drawvsize by\@newvsize& +&& +&& Computing hsize +\@newhsize=#2& +\@drawhsize=\@maxX& +\advance\@drawhsize by-\@minX& +\ifnum\@newhsize=0& if newhsize=0 +\multiply\@drawhsize by\@newvsize& +\divide\@drawhsize by\@ovsize& +\@drawingscale{\the\@newvsize}{\@ovsize} +{\the\@newvsize}{\@ovsize}& +\else& else +\@ohsize=\@drawhsize& +\divide\@drawhsize by\@ohsize& +\multiply\@drawhsize by\@newhsize& +\@drawingscale{\the\@newhsize}{\@ohsize} +{\the\@newvsize}{\@ovsize}& +\fi& fi +\fi& fi +&& Infos to the terminal. +\typeout{Drawing #1:}& +\typeout{\space\space\space Width=\the\@drawhsize pt Heigth=\the\@drawvsize pt}& +&& +&& +&\@newhsize=\@drawhsize\multiply\@newhsize by \@xscale +&\@newvsize=\@drawvsize\multiply\@newvsize by \@yscale +\typeout{\space\space\space Scalings: X=\the\@xscale\space Y=\the\@yscale}& +&\fbox{& +\vbox to\@drawvsize pt{\vfill\hbox to\@drawhsize pt{& +{{\@doTeXspecial{#1}\@minX\@minY\@maxX\@maxY& + {\expandafter\@numbof\the\@xscale}& + {\expandafter\@numbof\the\@yscale}& + {#4}}& +&\hfill& +}}}}& +&}& +& +& +\gdef\common@epsf#1[xscale=#2/#3,yscale=#4/#5][ps=#6]{& +&& Computing hsize +\@drawhsize=\@maxX& +\advance\@drawhsize by-\@minX& +\@scale\@drawhsize at #2/#3& +&& Computing vsize +\@drawvsize=\@maxY& +\advance\@drawvsize by-\@minY& +\@scale\@drawvsize at #4/#5& +&& Infos to the terminal. +\typeout{Drawing #1:}& +\typeout{\space\space\space Width \the\@drawhsize pt=(\@maxX -\@minX)*(#2/#3)Heigth \the\@drawvsize pt=(\@maxY -\@minY)*(#4/#5)}& +&& +&\typeout{*********** #2 #3 #4 #5}& +\@drawingscale{#2}{#3}{#4}{#5}& +\typeout{\space\space\space Scalings: X=\the\@xscale\space Y=\the\@yscale}& +&& +&\fbox{& +\vbox to\@drawvsize pt{\vfill\hbox to\@drawhsize pt{& +{{\@doTeXspecial{#1}\@minX\@minY\@maxX\@maxY& + {\expandafter\@numbof\the\@xscale}& + {\expandafter\@numbof\the\@yscale}& + {#6}}& +&\hfill& +}}}& +&}& +} +\endgroup diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/fullpage.sty scotch-6.0.6/doc/src/ptscotch/fullpage.sty --- scotch-6.0.4.dfsg1/doc/src/ptscotch/fullpage.sty 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/fullpage.sty 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,29 @@ +% This is FULLPAGE.STY by H.Partl, Version 2 as of 15 Dec 1988. +% Document Style Option to fill the paper just like Plain TeX. + +\typeout{Style Option FULLPAGE Version 2 as of 15 Dec 1988} + +\topmargin 0pt +\advance \topmargin by -\headheight +\advance \topmargin by -\headsep + +\textheight 8.9in + +\oddsidemargin 0pt +\evensidemargin \oddsidemargin +\marginparwidth 0.5in + +\textwidth 6.5in + + +% For users of A4 paper: The above values are suited for american 8.5x11in +% paper. If your output driver performs a conversion for A4 paper, keep +% those values. If your output driver conforms to the TeX standard (1in/1in), +% then you should add the following commands to center the text on A4 paper: + +% \advance\hoffset by -3mm % A4 is narrower. +% \advance\voffset by 8mm % A4 is taller. + +\endinput + + diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/p.bib scotch-6.0.6/doc/src/ptscotch/p.bib --- scotch-6.0.4.dfsg1/doc/src/ptscotch/p.bib 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/p.bib 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,1060 @@ +@article{amdadu96, + author = "Amestoy, P. and Davis, T. and Duff, I.", + title = "An approximate minimum degree ordering algorithm", + journal = "{SIAM} {J}. {M}atrix {A}nal. and {A}ppl.", + volume = "17", + pages = "886--905", + year = "1996" +} + +@inproceedings{aseilish91, + author = "Ashcraft, C. and Eisenstat, S. and Liu, J. W.-H. and Sherman, A.", + title = "A comparison of three column based distributed sparse factorization schemes", + booktitle = "Proc. Fifth {SIAM} Conf. on Parallel Processing for Scientific Computing", + year = "1991", +} + +@article{ashc95, + author = "Ashcraft, C.", + title = "Compressed Graphs and the Minimum Degree Algorithm", + journal = "{SIAM} {J}. {S}ci. {C}omput.", + volume = "16", + number = "6", + pages = "1404--1411", + year = "1995", + abstract = "Compressing graphs for ordering speed-up", + owner = "Francois PELLEGRINI" +} + +@article{basi94, + author = "Barnard, S. T. and Simon, H. D.", + title = "A fast multilevel implementation of recursive + spectral bisection for partitioning unstructured + problems", + journal = "{C}oncurrency: {P}ractice and {E}xperience", + volume = "6", + number = "2", + pages = "101-117", + year = "1994", + abstract = "Fast RSB mapping program, with results on standard + test graphs", + owner = "Francois PELLEGRINI" +} + +@misc{cecill, + key = "cecill", + title = "{CeCILL}: ``{CEA}-{CNRS}-{INRIA} {L}ogiciel {L}ibre'' free/libre software license", + note = "Available from \url{http://www.cecill.info/licenses.en.html}" +} + +@phdthesis{chev07, + author = "Chevalier, C.", + title = "Conception et mise en o$\!$euvre d'outils efficaces pour le partitionnement et la distribution parall\`eles de probl\`emes num\'eriques de tr\`es grande taille", + type = "{T}h\`ese de {D}octorat", + school = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", + number = "3434", + month = sep, + year = "2007" +} + +@inproceedings{chpe06a, + author = "Chevalier, C. and Pellegrini, F.", + title = "Improvement of the Efficiency of Genetic Algorithms for Scalable Parallel Graph Partitioning in a Multi-Level Framework", + booktitle = "Proc\@. EuroPar, Dresden", + series = "LNCS 4128", + pages = "243--252", + month = sep, + year = "2006", + OPTpublisher = "Springer", + OPTnote = "{\tt http://\lbt www.\lbo labri.\lbo fr/\lbt \~{}pelegrin/\lbt papers/\lbt scotch\_\lbt efficient\lbo ga.\lbt pdf}" +} + +@Article{chpe08, + author = "Chevalier, C. and Pellegrini, F.", + title = "\ptscotch: A tool for efficient parallel graph ordering", + journal = "{P}arallel {C}omputing", + year = "2008", + month = "jan", + note = "{\tt http://\lbt www.\lbo labri.\lbo fr/\lbt \~{}pelegrin/\lbt papers/\lbt scotch\_\lbt parallel\lbt ordering\_\lbo parcomp.\lbt pdf}" +} + +@article{chro89, + author = "Charrier, P. and Roman, J.", + title = "Algorithmique et calculs de complexit\'e pour un + solveur de type dissections embo\^\i t\'ees", + journal = "{N}umerische {M}athematik", + volume = "55", + pages = "463--476", + year = "1989", + owner = "Francois PELLEGRINI" +} + +@techreport {chro92a, + author = "Charrier, P. and Roman, J.", + title = "Partitioning and Mapping for parallel nested dissection on distributed memory architectures", + type = "Rapport de recherche", + number = "92-12", + month = mar, + year = "1992", + institution = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", +} + +@inproceedings {chro92b, + author = "Charrier, P. and Roman, J.", + title = "Partitioning and Mapping for parallel nested dissection on distributed memory architectures", + booktitle = "Proc\@. CONPAR'92", + series = "LNCS 634", + pages = "295--306", + month = sep, + year = "1992", + OPTpublisher = "Springer" +} + +@inproceedings {cuma69, + author = "Cuthill, E. and Macc~Kee, J.", + title = "Reducing the bandwidth of sparse symmetric matrices", + booktitle = "Proc. 24th national conference {ACM}", + year = "1969", + pages = "157--172", + publisher = "{ACM}", + abstract = "Bisection of the 2D mesh" +} + +@article {doho72, + author = "Donath, W. and Hoffman, A.", + title = "Algorithms for partitioning of graphs and computer logic + based on eigenvectors of connection matrices", + journal = "{IBM} {T}echnical {D}isclosure {B}ulletin", + volume = "15", + year = "1972", + pages = "938--944", + field = "Sepa, ALGO", + abstract = "First historical results on the RSB techniques", + owner = "Francois PELLEGRINI" +} + +@article {doho73, + author = "Donath, W. and Hoffman, A.", + title = "Lower bounds for the partitioning of graphs", + journal = "{IBM} {J}ournal of {R}esearch and {D}evelopment", + volume = "17", + year = "1973", + pages = "420--425", + field = "Sepa, ALGO", + abstract = "First historical results on the RSB techniques", + owner = "Francois PELLEGRINI" +} + +@inproceedings{drro94a, + author = "van Driessche, R. and Roose, D.", + title = "Dynamic load balancing with an improved spectral bisection algorithm", + booktitle = "Proc\@. {SHPCC'94}, Knoxville", + pages = "494--500", + year = "1994", + month = may, + organization = "IEEE", + owner = "Francois PELLEGRINI" +} + +@techreport{drro94b, + author = "van Driessche, R. and Roose, D.", + title = "A graph contraction algorithm for the calculation of eigenvectors of the laplacian matrix of a graph with a multilevel method", + institution = "Katholieke Universiteit Leuven", + number = "TW 209", + month = may, + year = "1994", + owner = "Francois PELLEGRINI" +} + +@article{duff81, + author = "Duff, I.", + title = "On Algorithms for Obtaining a Maximum Transversal", + journal = "{ACM} {T}rans. {M}ath. {S}oftware", + volume = "7", + number = "3", + pages = "315--330", + month = sep, + year = "1981", + abstract = "Finding vertex separators from edge separators", + owner = "Francois PELLEGRINI" +} + +@techreport{dugrle92, + author = "Duff, I. S. and Grimes, R. G. and Lewis, J. G.", + title = "Users' guide for the {H}arwell-{B}oeing Sparse Matrix Collection", + institution = "CERFACS", + number = "TR/PA/92/86", + month = oct, + year = "1992", + address = "Toulouse, France", + owner = "Francois PELLEGRINI" +} + +@article {errasa90, + author = "Ercal, F. and Ramanujam, J. and Sadayappan, P.", + title = "Task allocation onto a hypercube by recursive mincut bipartitionning", + journal = "{J}ournal of {P}arallel and {D}istributed {C}omputing", + volume = "10", + year = "1990", + pages = "35--44", + field = "Mapp, ALGO", + abstract = "Description of mapping on hypercubes using their topology: easy bipartition into sub-hypercubes and strong connection between them", + owner = "Francois PELLEGRINI" +} + +@article {fied73, + author = "Fiedler, M.", + title = "Algebraic connectivity of graphs", + journal = "{C}zechoslovak {M}ath. {J}.", + volume = "23", + year = "1973", + pages = "298--305", + field = "Sepa, THEO", + abstract = "Properties leading to spectral bisection", + owner = "Francois PELLEGRINI" +} + +@article {fied75, + author = "Fiedler, M.", + title = "A property of eigenvectors of non-negative + symmetric matrices and its application to graph theory", + journal = "{C}zechoslovak {M}ath. {J}.", + volume = "25", + year = "1975", + pages = "619--633", + field = "Sepa, THEO", + abstract = "Properties leading to spectral bisection", + owner = "Francois PELLEGRINI" +} + +@inproceedings {fima82, + author = "Fiduccia, C. M. and Mattheyses, R. M.", + title = "A linear-time heuristic for improving network partitions", + booktitle = "Proceedings of the 19th {D}esign {A}utomation {C}onference", + year = "1982", + pages = "175--181", + publisher = "{IEEE}", + field = "Sepa, ALGO", + abstract = "Description of an heuristic algorithm, using foxy data structures, achieving separation in almost-linear time by iteratively moving nodes in given sets to minimize a cost function", + owner = "Francois PELLEGRINI" +} + +@article {gajost76, + author = "Garey, M. R. and Johnson, D. S. and Stockmeyer, L.", + title = "Some simplified {NP}-complete graph problems", + journal = "{T}heoretical {C}omputer {S}cience", + volume = "1", + year = "1976", + pages = "237--267", + field = "Sepa, ALGO", + abstract = "Graph bipartitioning is NP-complete", + owner = "Francois PELLEGRINI" +} + +@book {gajo79, + author = "Garey, M. R. and Johnson, D. S.", + title = "{C}omputers and {I}ntractablility: {A} {G}uide to the {T}heory of {NP}-completeness", + publisher = "W. H. Freeman", + year = "1979", + address = "San Francisco" +} + +@article{geheling88, + author = "George, A. and Heath, M. T. and Liu, J. W.-H. and Ng, E. G.-Y.", + title = "Sparse {C}holesky factorization on a local memory multiprocessor", + journal = "{SIAM} {J}ournal on {S}cientific and {S}tatistical {C}omputing", + volume = "9", + pages = "327--340", + year = "1988" +} + +@book {geli81, + author = "George, J. A. and Liu, J. W.-H.", + title = "Computer solution of large sparse positive definite systems", + year = "1981", + publisher = "Prentice Hall" +} + +@article {geli89, + author = "George, A. and Liu, J. W.-H.", + title = "The evolution of the Minimum Degree ordering algorithm", + journal = "{SIAM} {R}eview", + volume = "31", + pages = "1--19", + year = "1989" +} + +@article{geng89, + author = "Geist, G. A. and Ng, E. G.-Y.", + title = "Task scheduling for parallel sparse {C}holesky factorization", + journal = "{I}nternational {J}ournal of {P}arallel {P}rogramming", + volume = "18", + number = "4", + pages = "291--314", + year = "1989" +} + +@article {gipost76, + author = "Gibbs, N. E. and Poole, W. G. and Stockmeyer, P. K.", + title = "A comparison of several bandwidth and profile reduction algorithms", + journal = "{ACM} Trans. Math. Software", + volume = "2", + year = "1976", + pages = "322--330", + field = "bdth about sparse matrices", + owner = "Jean ROMAN" +} + +@misc{lgpl, + key = "lgpl", + title = "{GNU} {L}esser {G}eneral {P}ublic {L}icense", + note = "Available from \url{http://www.gnu.org/copyleft/lesser.html}" +} + +@techreport{gukaku94, + author = "Gupta, A. and Karypis, G. and Kumar, V.", + title = "Highly scalable parallel algorithms for sparse matrix factorization", + institution = "{U}niversity of {M}innesota", + type = "TR", + number = "94-063", + year = "1994", + OPTnote = "To appear in {\em {IEEE} {T}rans. on {P}arallel and {D}istributed {S}ystems}, 1997" +} + +@inproceedings{gukaku96, + author = "Gupta, A. and Karypis, G. and Kumar, V.", + title = "Scalable parallel algorithms for sparse linear systems", + booktitle = "Proc. {Stratagem'96}, Sophia-Antipolis", + pages = "97--110", + year = "1996", + month = jul, + organization = "INRIA", +} + +@article{gukaku97, + author = "Gupta, A. and Karypis, G. and Kumar, V.", + title = "Highly scalable parallel algorithms for sparse matrix factorization", + journal = "{IEEE} {T}rans. {P}arallel {D}istrib. {S}yst.", + volume = "8", + number = "5", + pages = "502--520", + year = "1997" +} + +@article {gusu84, + author = "Gurari, E. M. and Sudborough, I. H.", + title = "Improved Dynamic Algorithms for Bandwidth Minimization and the Mincut Linear Arrangement Problem", + journal = "Journal of Algorithms", + volume = "5", + year = "1984", + pages = "531--546", + field = "Heuristiques pour bdth and cdth", + abstract = "cf. titre", + owner = "D.B." +} + +@phdthesis {hamm92, + author = "Hammond, S. W.", + title = "Mapping unstructured grid computations to massively parallel computers", + month = feb, + year = "1992", + school = "{R}ensselaer {P}olytechnic {I}nstitute", + address = "{T}roy, {N}ew-{Y}ork" +} + +@techreport{hele93a, + author = "Hendrickson, B. and Leland, R.", + title = "Multidimensional spectral load balancing", + institution = "{S}andia {N}ational {L}aboratories", + number = "SAND93--0074", + month = jan, + year = "1993", + owner = "Francois PELLEGRINI" +} + +@techreport{hele93b, + author = "Hendrickson, B. and Leland, R.", + title = "A multilevel algorithm for partitioning graphs", + institution = "{S}andia {N}ational {L}aboratories", + number = "SAND93--1301", + month = jun, + year = "1993", + owner = "Francois PELLEGRINI" +} + +@techreport{hele93c, + author = "Hendrickson, B. and Leland, R.", + title = "The \sc {C}haco \rm user's guide", + institution = "{S}andia {N}ational {L}aboratories", + number = "SAND93--2339", + month = nov, + year = "1993", + owner = "Francois PELLEGRINI" +} + +@inproceedings{hele94a, + author = "Hendrickson, B. and Leland, R.", + title = "An empirical study of static load balancing algorithms", + booktitle = "Proc\@. {SHPCC'94}, Knoxville", + pages = "682--685", + year = "1994", + month = may, + organization = "IEEE" +} + +@techreport{hele94b, + author = "Hendrickson, B. and Leland, R.", + title = "The {\sc {C}haco} user's guide -- Version 2.0", + institution = "{S}andia {N}ational {L}aboratories", + number = "SAND94--2692", + year = "1994", + owner = "Francois PELLEGRINI" +} + +@inproceedings {hele95, + author = "Hendrickson, B. and Leland, R.", + title = "A Multilevel Algorithm for Partitioning Graphs", + booktitle = "Proc\@. ACM/IEEE conference on Supercomputing (CDROM)", + month = "dec", + year = "1995", + location = "San Diego" +} + +@inproceedings{heledr96, + author = "Hendrickson, B. and Leland, R. and Van Driessche, R.", + title = "{E}nhancing {D}ata {L}ocality by {U}sing {T}erminal + {P}ropagation", + booktitle = "Proceedings of the 29$\,^{th}$ Hawaii International Conference + on System Sciences", + year = "1996", + month = jan, + organization = "IEEE" +} + +@inproceedings {heledr97, + author = "Hendrickson, B. and Leland, R. and Van Driessche, R.", + title = "Skewed Graph Partitioning", + booktitle = "Proceedings of the 8$^{th}$ {SIAM} {C}onference on + {P}arallel {P}rocessing for {S}cientific {C}omputing", + month = mar, + year = 1997, + organization = "IEEE" +} + +@inproceedings{heperaro04a, + author = "H\'enon, P. and Pellegrini, F. and Ramet, P. and Roman, J. and Saad, Y.", + title = "High Performance Complete and Incomplete Factorizations for Very Large Sparse Systems by using {\sc {S}cotch} and {\sc {P}a{S}ti{X}} softwares", + booktitle = "Proc\@. 11$^{th}$ {SIAM} {C}onference on {P}arallel {P}rocessing for {S}cientific {C}omputing, San Francisco, {USA}", + month = feb, + year = 2004 +} + +@article{hero98, + author = "Hendrickson, B. and Rothberg, E.", + title = "Improving the Runtime and Quality of Nested Dissection Ordering", + journal = "{SIAM} {J}. {S}ci. {C}omput.", + volume = "20", + number = "2", + year = "1998", + pages = "468--489", + owner = "Francois PELLEGRINI" +} + +@article {hoka73, + author = "Hopcroft, J. and Karp, R.", + title = "An $n^{5/2}$ Algorithm for Maximum Matchings in Bipartite Graphs", + journal = "{SIAM} {J}ournal of {C}omputing", + volume = "2", + number = "4", + month = dec, + year = "1973", + pages = "225--231", + field = "Sepa, ALGO", + abstract = "Finding vertex separators from edge separators", + owner = "Francois PELLEGRINI" +} + +@techreport{kaku95a, + author = "Karypis, G. and Kumar, V.", + title = "A Fast and High Quality Multilevel Scheme for Partitioning + Irregular Graphs", + institution = "{U}niversity of {M}innesota", + type = "Technical Report", + number = "95-035", + month = jun, + year = "1995", + owner = "Francois PELLEGRINI" +} + +@techreport{kaku95b, + author = "Karypis, G. and Kumar, V.", + title = "{\sc Me$\!$T$\!$iS} -- Unstructured Graph Partitioning and + Sparse Matrix Ordering System -- Version~2.0", + institution = "{U}niversity of {M}innesota", + month = jun, + year = "1995", + owner = "Francois PELLEGRINI" +} + +@techreport{kaku95c, + author = "Karypis, G. and Kumar, V.", + title = "Multilevel $k$-way Partitioning Scheme for + Irregular Graphs", + institution = "{U}niversity of {M}innesota", + type = "Technical Report", + number = "95-064", + month = aug, + year = "1995", + owner = "Francois PELLEGRINI" +} + +@manual{kaku98a, + author = "Karypis, G. and Kumar, V.", + title = "{\sc Me$\!$T$\!$iS} -- A Software Package for Partitioning + Unstructured Graphs, Partitioning Meshes, and Computing + Fill-Reducing Orderings of Sparse Matrices -- Version~4.0", + organization = "{U}niversity of {M}innesota", + month = sep, + year = "1998", + owner = "Francois PELLEGRINI" +} + +@article {keli70, + author = "Kernighan, B. W. and Lin, S.", + title = "An efficient heuristic procedure for partitionning graphs", + journal = "{BELL} System Technical Journal", + month = feb, + year = "1970", + pages = "291--307", + publisher = "{BELL} {C}orporation", + field = "Sepa, ALGO", + abstract = "Description of an heuristic algorithm achieving separation by iteratively exchanging nodes in given sets to minimize a cost function", + owner = "Francois PELLEGRINI" +} + +@article {lafeel94, + author = "Laguna, M. and Feo, T. A. and Elrod, H. C.", + title = "A greedy randomized adaptative search procedure for the + two-partition problem", + journal = "{O}perations {R}esearch", + month = jul, + year = "1994", + pages = "677--687", + field = "Bipa, ALGO", + abstract = "Iterative Adaptative algorithms for graph bipartitioning", + owner = "Francois PELLEGRINI" +} + +@techreport{leabdofe92, + author = "Leiserson, C. and Abuhamdeh, Z. and Douglas, D. and + Feynman, C. and Ganmukhi, M. and Hill, J. and + Hillis, W. and Kuszmaul, B. and Pierre, M. and + Wells, D. and Wong, M. and Yang, S. and Zak, R.", + title = "The Network Architecture of the {C}onnection + {M}achine {CM-5}", + institution = "{T}hinking {M}achines", + month = "juillet", + year = "1992", + owner = "Francois PELLEGRINI" +} + +@inproceedings {lele87, + author = "Leiserson, C. and Lewis, J.", + title = "Orderings for parallel sparse symmetric factorization", + booktitle = "Third {SIAM} Conference on Parallel Processing for Scientific Computing", + year = "1987", + location = "Troms\o", + organization = "SIAM", + abstract = "Finding vertex separators from edge separators", + owner = "Francois PELLEGRINI" +} + +@article {lirota79, + author = "Lipton, R. J. and Rose, D. J. and Tarjan, R. E.", + title = "Generalized nested dissection", + journal = "{SIAM} Journal of Numerical Analysis", + volume = "16", + number = "2", + month = apr, + year = "1979", + pages = "346--358", + publisher = "{S}ociety for {I}ndustrial and {A}pplied {M}athematics", + field = "Sepa, DESC", + abstract = "Use of separation theorems to solve linear systems. + Results achieved: bounds for planar graph + reordering, only sparse graphs have good separators, + not all sparse graphs have good separators.", + owner = "Francois PELLEGRINI" +} + +@inproceedings {litsdukl93, + author = "Lin, M. and Tsang, R. and Du, D. H. C. and Klietz, + A. E. and Saroff, S.", + title = "Performance Evaluation of the {CM-5} + Interconnection Network", + booktitle = "Proceedings of CompCon Spring'93", + year = "1993", + abstract = "The bandwidth of the CM-5 is constant over the levels" +} + +@phdthesis {liu-75, + author = "Liu, J. W.", + title = "On reducing the profile of sparse symmetric matrices", + school = "{U}niversity of {W}aterloo", + year = "1975", + address = "{W}aterloo, {O}ntario", +} + +@article {liu-85, + author = "Liu, J. W.-H.", + title = "Modification of the minimum-degree algorithm by multiple elimination", + journal = "{ACM} {T}rans. {M}ath. {S}oftware", + volume = "11", + number = "2", + year = 1985, + pages = "141--153", + field = "Orde, ALGO", + abstract = "Description of the Multiple Minimum Degree algorithm", + owner = "Francois PELLEGRINI" +} + +@misc{mpi11, + key = "mpi11", + title = "{MPI}: {A} {M}essage {P}assing {I}nterface {S}tandard, version 1.1", + month = "jun", + year = 1995, + note = "Available from \url{http://www.mpi-forum.org/docs/mpi-11-html/mpi-report.html}" +} + +@misc{oinv, + key = "oinv", + title = "{SGI} {O}pen {I}nventor", + note = "Available from \url{http://oss.sgi.com/projects/inventor/}" +} + +@manual{ParMetis, + title = "{\sc ParMetis}: Parallel Graph Partitioning and Sparse Matrix Ordering Library", + author = "Karypis, G. and Kumar, V.", + organization = "University of Minnesota", + month = "aug", + year = "2003" +} + +@manual{pci-93, + title = "{CS-2} {P}roduct {D}escription", + organization = "{P}erformance {C}omputing {I}ndustries", + year = "1993" +} + +@Article{pell93d, + author = "Pellegrini, F.", + title = "Bounds for the Bandwidth of the $d$-ary de~{B}ruijn graph", + journal = "Parallel Processing Letters", + year = "1993", + volume = "3", + number = "4", + pages = "431--443" +} + +@inproceedings{pell94a, + author = "Pellegrini, F.", + title = "Static Mapping by Dual Recursive Bipartitioning of Process and Architecture Graphs", + booktitle = "Proc\@. {SHPCC'94}, Knoxville", + pages = "486--493", + year = "1994", + month = may, + organization = "IEEE" +} + +@inproceedings{pell94b, + author = "Pellegrini, F.", + title = "Placement statique par bipartitionnement r\'ecursif conjoint des graphes de processus et d'architecture", + booktitle = "Actes des 6\/${}^{\grave{e}mes}$ Rencontres Francophones du Parall\'elisme, RenPar'6, Lyon", + pages = "41--44", + year = "1994", + month = jun, + organization = "ENS Lyon" +} + +@phdthesis{pell95a, + author = "Pellegrini, F.", + title = "Application de m\'ethodes de partition \`a la r\'esolution de probl\`emes de graphes issus du parall\'elisme", + type = "{T}h\`ese de {D}octorat", + school = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", + number = "1244", + month = jan, + year = "1995", + address = "351 cours de la Lib\'eration, 33405 Talence, France", + owner = "Francois PELLEGRINI" +} + +@inproceedings{pell07b, + author = "Pellegrini, F.", + title = "A parallelisable multi-level banded diffusion scheme for computing balanced partitions with smooth boundaries", + booktitle = "Proc\@. EuroPar, Rennes", + series = "LNCS 4641", + pages = "191--200", + month = aug, + year = "2007", + OPTeditor = "A.-M. Kermarrec, L. Boug\'e, T. Priol", + OPTpublisher = "Springer", + OPTnote = "{\tt http://\lbt www.\lbo labri.\lbo fr/\lbt \~{}pelegrin/\lbt papers/\lbt scotch\_\lbt bipart\_\lbt diffusion\_\lbt europar2007.\lbt pdf}" +} + +@techreport{pell07c, + author = "Pellegrini, F.", + title = "{\sc {S}cotch 5.0} {U}ser's {G}uide", + institution = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", + month = aug, + year = "2007", + note = "Available from \url{http://www.labri.fr/~pelegrin/scotch/}" +} + +@TechReport{pell07d, + author = "Pellegrini, F.", + title = "{\sc {PT}-{S}cotch 5.0} \mbox{U}ser's guide", + institution = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", + month = aug, + year = "2007", + note = "Available from \url{http://www.labri.fr/~pelegrin/scotch/}" +} + +@techreport{pell08b, + author = "Pellegrini, F.", + title = "{\sc {S}cotch 5.1} {U}ser's {G}uide", + institution = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", + month = aug, + year = "2008", + note = "Available from \url{http://www.labri.fr/~pelegrin/scotch/}" +} + +@TechReport{pell08c, + author = "Pellegrini, F.", + title = "{\sc {PT}-{S}cotch 5.1} \mbox{U}ser's guide", + institution = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", + month = aug, + year = "2008", + note = "Available from \url{http://www.labri.fr/~pelegrin/scotch/}" +} + +@inproceedings{pero96a, + author = "Pellegrini, F. and Roman, J.", + title = "{\sc Scotch}: A Software Package for Static Mapping by Dual Recursive Bipartitioning of Process and Architecture Graphs", + booktitle = "Proc\@. {HPCN'96}, Brussels", + series = "LNCS 1067", + pages = "493--498", + month = apr, + year = "1996" +} + +@techreport{pero96b, + author = "Pellegrini, F. and Roman, J.", + title = "Experimental Analysis of the Dual Recursive Bipartitioning Algorithm for Static Mapping", + type = "{R}esearch {R}eport", + institution = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", + month = aug, + year = "1996", + note = "Available from \url{http://www.labri.fr/~pelegrin/papers/scotch_expanalysis.ps.gz}" +} + +@inproceedings{pero97a, + author = "Pellegrini, F. and Roman, J.", + title = "{S}parse matrix ordering with {\sc {S}cotch}", + booktitle = "Proc\@. {HPCN'97}, Vienna", + series = "LNCS 1225", + pages = "370--378", + month = apr, + year = "1997" +} + +@inproceedings{peroam99, + author = "Pellegrini, F. and Roman, J. and Amestoy, P.", + title = "Hybridizing Nested Dissection and Halo Approximate Minimum Degree for Efficient Sparse Matrix Ordering", + booktitle = "Proc\@. {Irregular'99}, San Juan", + series = "LNCS 1586", + pages = "986--995", + month = apr, + year = "1999" +} + +@article{peroam00a, + author = "Pellegrini, F. and Roman, J. and Amestoy, P.", + title = "Hybridizing Nested Dissection and Halo Approximate Minimum Degree for Efficient Sparse Matrix Ordering", + journal = "{C}oncurrency: {P}ractice and {E}xperience", + year = "2000", + volume = "12", + pages = "69--84" +} + +@article {pofa90, + author = "Pothen, A. and Fan, C.-J.", + title = "Computing the Block Triangular Form of a Sparse Matrix", + journal = "{ACM} {T}rans. {M}ath. {S}oftware", + volume = "16", + number = "4", + month = dec, + year = "1990", + pages = "303--324", + field = "Sepa, ALGO", + abstract = "Finding vertex separators from edge separators", + owner = "Francois PELLEGRINI" +} + +@article {posili90, + author = "Pothen, A. and Simon, H. D. and Liou, K.-P.", + title = "Partitioning sparse matrices with eigenvectors of graphs", + journal = "{SIAM} {J}ournal of {M}atrix {A}nalysis", + volume = "11", + number = "3", + month = jul, + year = "1990", + pages = "430--452", + field = "Sepa, THEO ALGO", + abstract = "Global method for bipartitioning a graph based on sparse matrix considerations", + owner = "Francois PELLEGRINI" +} + +@article {roha89, + author = "Roucairol, C. and Hansen, P.", + title = "Cut cost minimization in graph partitioning", + journal = "{N}umerical and {A}pplied {M}athematics", + year = "1989", + pages = "585--587", + publisher = "{S}cientific {P}ublishing", + field = "Sepa, THEO ALGO", + abstract = "Description of a mincut algorithm with constrained vertex sets sizes based on quadratic assignment with Lagrangean relaxation", + owner = "Francois PELLEGRINI" +} + +@inproceedings{rogu93, + author = "Rothberg, E. and Gupta, A.", + title = "An efficient block-oriented approach to parallel sparse {C}holesky factorization", + booktitle = "{S}upercomputing'93 {P}roceedings", + year = "1993", + organization = "IEEE" +} + +@inproceedings{rosc94, + author = "Rothberg, E. and Schreiber, R.", + title = "Improved load distribution in parallel sparse {C}holesky factorization", + booktitle = "{S}upercomputing'94 {P}roceedings", + year = "1994", + organization = "IEEE" +} + +@inproceedings{roth94, + author = "Rothberg, E.", + title = "Performance of panel and block approaches to sparse {C}holesky factorization on the {iPSC/860} and {P}aragon multicomputers", + booktitle = "Proc\@. {SHPCC'94}, Knoxville", + pages = "324--333", + year = "1994", + month = may, + organization = "IEEE" +} + +@article {roma85, + author = "Roman, J.", + title = "Calculs de complexit\'e relatifs \`a une m\'ethode de dissection embo\^\i t\'ee", + journal = "{N}umerische {M}athematik", + volume = "47", + year = "1985", + pages = "175--190" +} + +@book {rume94, + author = "de Rumeur, J.", + title = "Communication dans les r\'eseaux de processeurs", + month = oct, + year = "1994", + publisher = "Masson", + abstract = "Plein de resultats sur les graphes", + owner = "Andre RASPAUD", +} + +@mastersthesis{scar96, + author = "Scarano, L.", + title = "Metodologie di allocazione statica con algoritmi di + bipartizionamento multilevelo", + school = "{F}acolt\'a di {I}ngegneria, {U}niversit\`a degli {S}tudi di {B}ologna", + type = "{T}esi di {L}aurea", + month = mar, + year = "1996", + owner = "Francois PELLEGRINI" +} + +@inbook {sero85, + author = "Seymour, P. D. and Robertson, N.", + chapter = "Graph minors -- {A} survey", + title = "Surveys in combinatorics", + year = "1985", + pages = "153--171", + editor = "Ian Anderson", + publisher = "Cambridge University Press", + abstract = "blublu", + owner = "Dominique BARTH", +} + +@techreport{shre92, + author = "Schreiber, R.", + title = "Scalability of sparse direct solvers", + institution = "{RIACS}, {NASA} {A}mes {R}esearch {C}enter", + type = "Technical Report", + number = "TR 92.13", + month = may, + year = "1992", + owner = "Francois PELLEGRINI" +} + +@article{simo91, + author = "Simon, H. D.", + title = "Partitioning of unstructured problems for parallel + processing", + journal = "{C}omputing {S}ystems in {E}ngineering", + volume = "2", + pages = "135-148", + year = "1991", + abstract = "blublu", + owner = "Francois PELLEGRINI" +} + +@techreport{site93, + author = "Simon, H. D. and Teng, S.-H.", + title = "How good is recursive bipartition", + type = "Research report", + institution = "{NASA} {A}mes {R}esearch {C}enter", + month = jun, + year = "1993", + abstract = "Theoretical proof of goodness of bipartition for some + families of graphs, based on Lipton and Tarjan separators", + owner = "Francois PELLEGRINI" +} + +@techreport{shsz91, + author = "Shahrokhi, F. and Szekely, L. A.", + title = "An algebraic approach to the uniform concurrent multicommodity flow -- {T}heory and Applications", + institution = "University of North Texas", + number = "CRPDC-91-4", + year = "1991", + owner = "Dominique BARTH" +} + +@article {shts85, + author = "Shen, C.-C. and Tsai, W.-H.", + title = "A graph matching approach to optimal task + assignment in distributed computing systems using a + minimax criterion", + journal = "{IEEE} {T}ransactions on {C}omputers", + volume = "C-34", + number = "3", + month = mar, + year = "1985", + pages = "197--203", + field = "Mapp, ALGO", + abstract = "A B&B A* mapping algorithm", + owner = "Francois PELLEGRINI" +} + +@article {sinc87, + author = "Sinclair, J. B.", + title = "Efficient computation of optimal assignments for + distributed tasks", + journal = "{J}ournal of {P}arallel and {D}istributed {C}omputing", + volume = "4", + year = "1987", + pages = "342--362", + field = "Mapp, ALGO", + abstract = "A B&B A* mapping algorithm", + owner = "Francois PELLEGRINI" +} + +@inproceedings {smar76, + author = "Smith, W. F. and Arany, I.", + title = "Another algorithm for reducing bandwidth and profile of a sparse matrix", + booktitle = "Proc. AFIPS 1976 NCC", + year = "1976", + pages = "341--352", + publisher = "AFIP Press", + address = "Montvale, New Jersey" + } + +@article{ston77, + author = "Stone, H. S.", + title = "Multiprocessor scheduling with the aid of network + flow algorithms", + journal = "{IEEE} {T}ransactions on {S}oftware {E}ngineering", + volume = "SE 3", + number = "2", + month = jan, + year = "1977", + pages = "85--93", + field = "Mapp, ALGO", + abstract = "Self-explanatory", + owner = "Francois PELLEGRINI" +} + +@techreport {tamu92, + author = "Talbi, E.-G. and Muntean, T.", + title = "\'Evaluation et \'etude comparative d'algorithmes d'optimisation combinatoire: application au probl\`eme de placement de processus", + institution = "LGI-IMAG", + address = "46 av. {F}. {V}iallet, 38031 {G}renoble {CEDEX}", + type = "Rapport de Recherche", + number = "RR~886-I", + month = apr, + year = "1992", + field = "Mapp, SURV ALGO", + abstract = "Good survey of mapping algorithms & techniques, with comparisons; Presentation of a parallel genetic algorithm", + owner = "Francois PELLEGRINI" +} + +@article {tiwa67, + author = "Tinney, W. F. and Walker, J. W.", + title = "Direct solutions of sparse network equations by optimally ordered triangular factorization", + journal = "{J}. {P}roc. {IEEE}", + volume = "55", + year = "1967", + pages = "1801--1809" +} + +@inproceedings {wacrevjo95, + author = "Walshaw, C. and Cross, M. and Everett, M. G. and Johnson, S. and McManus, K.", + title = "Partitioning \& Mapping of Unstructured Meshes to Parallel Machine Topologies", + booktitle = "Proc\@. {Irregular'95}", + series = "LNCS 980", + pages = "121--126", + year = "1995" +} + +@article {waro84, + author = "Ward, M. O. and Romero, D. J.", + title = "Assigning parallel-executable, intercommunicating subtasks to processors", + journal = "{IEEE}", + year = "1984", + pages = "392--394", + field = "Mapp, ALGO", + abstract = "Description of cost functions for greedy mapping algorithms using criteria of `loss of parallelism', `synchronization', and `data sources' to place subtasks issued from sequential program automatic paralllization", + owner = "Francois PELLEGRINI" +} + +@misc{webmetis-parmetis, + key = "karypis-metis-parmetis", + title = "{\metis}: {F}amily of Multilevel Partitioning Algorithms", + note = "\url{http://glaros.dtc.umn.edu/gkhome/views/metis}" +} + +@inproceedings {yokaka75, + author = "Yoshizawa, H. and Kawanishi, H. and Kani, K.", + title = "A Heuristic procedure for ordering {MOS} arrays", + booktitle = "Proc\@. of Design Automation Conference", + year = "1975", + pages = "384--393" +} + +@inproceedings{zovake94, + author = "Zone, O. and Vanderstraeten, D. and Keunings, R.", + title = "Un solveur direct parall\`ele bas\'e sur une d\'ecomposition de domaine appliqu\'e aux probl\`emes d'\'el\'ements finis", + booktitle = "Actes des 6\/${}^{\grave{e}mes}$ Rencontres Francophones du Parall\'elisme, RenPar'6, Lyon", + pages = "113--118", + year = "1994", + month = jun, + organization = "ENS Lyon" +} diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/p_c.tex scotch-6.0.6/doc/src/ptscotch/p_c.tex --- scotch-6.0.4.dfsg1/doc/src/ptscotch/p_c.tex 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/p_c.tex 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,44 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Titre : p_c.tex % +% Sujet : Manuel de l'utilisateur % +% du projet 'PT-Scotch' % +% Changes % +% Auteur : Francois Pellegrini % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Updates} +\label{sec-changes} + +\subsection{Changes from version 5.0} + +\ptscotch\ now provides routines to compute in +parallel partitions of distributed graphs. + +A new integer index type has been created in the Fortran interface, to +address array indices larger than the maximum value which can be +stored in a regular integer. Please refer to +Section~\ref{sec-install-inttypesize} for more information. + +A new set of routines has been designed, to ease the use of the +\libscotch\ as a dynamic library. The {\tt SCOTCH\_\lbt version} +routine returns the version, release and patchlevel numbers of the +library being used. The {\tt SCOTCH\_\lbt *Alloc} routines, +which are only available in the C interface at the time being, +dynamically allocate storage space for the opaque API +\scotch\ structures, which frees application programs from the need +to be systematically recompiled because of possible changes of +\scotch\ structure sizes. + +\subsection{Changes from version 5.1} + +Unlike its sequential counterpart, version {\sc 6.0} of +\ptscotch\ does not bring major algorithmic improvements with respect +to the latest {\sc 5.1.12} release of the {\sc 5.1} branch. + +In order to ease the work of people writing numerical solvers, it +exposes in its interface a new distributed graph handling routine, +{\tt SCOTCH\_\lbt dgraph\lbt Redist}, that builds a redistributed +graph from an existing distributed graph and partition data. See +Section~\ref{sec-lib-dgraphredist}. diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/p_d.tex scotch-6.0.6/doc/src/ptscotch/p_d.tex --- scotch-6.0.4.dfsg1/doc/src/ptscotch/p_d.tex 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/p_d.tex 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,106 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Titre : p_d.tex % +% Sujet : Manuel de l'utilisateur % +% du projet 'PT-Scotch' % +% Distribution programmes % +% Auteur : Francois Pellegrini % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Installation} +\label{sec-install} + +Version {\sc \scotchver} of the \scotch\ software package, which +contains the \ptscotch\ routines, is distributed as free/libre +software under the CeCILL-C free/libre software license~\cite{cecill}, +which is very similar to the GNU LGPL license. Therefore, it is not +distributed as a set of binaries, but instead in the form of a source +distribution, which can be downloaded from the \scotch\ web page at +\url{http://www.labri.fr/~pelegrin/scotch/}~. +\\ + +All \scotch\ users are welcome to send an e-mail to the author so that +they can be added to the \scotch\ mailing list, and be automatically +informed of new releases and publications. +\\ + +The extraction process will create a {\tt scotch\_\scotchversub} +directory, containing several subdirectories and files. Please refer +to the files called {\tt LICENSE\_\lbt EN.txt} or +{\tt LICENCE\_\lbt FR.txt}, as well as file +{\tt INSTALL\_\lbt EN.txt}, to see under which conditions your +distribution of \scotch\ is licensed and how to install it. + +\subsection{Thread issues} + +To enable the use of POSIX threads in some routines, the {\tt +SCOTCH\_\lbt PTHREAD} flag must be set. If your MPI implementation is +not thread-safe, make sure this flag is not defined at compile time. +If the flag is defined, make sure to use the \texttt{MPI\_\lbt +Init\_\lbt thread} MPI routine to initialize the communication +subsystem, at the \texttt{MPI\_\lbt THREAD\_\lbt MULTIPLE} level +(see Section~\ref{sec-lib-thread}). + +\subsection{File compression issues} + +To enable on-the-fly compression and decompression of various formats, +the relevant flags must be defined. These flags are {\tt COMMON\_\lbt +FILE\_\lbt COMPRESS\_\lbt BZ2} for {\tt bzip2} (de)compression, {\tt +COMMON\_\lbt FILE\_\lbt COMPRESS\_\lbt GZ} for {\tt gzip} +(de)compression, and {\tt COMMON\_\lbt FILE\_\lbt COMPRESS\_\lbt LZMA} +for {\tt lzma} decompression. Note that the corresponding +development libraries must be installed on your system before compile +time, and that compressed file handling can take place only on systems +which support multi-threading or multi-processing. In the first case, +you must set the {\tt SCOTCH\_\lbt PTHREAD} flag in order to take +advantage of these features. + +On Linux systems, the development libraries to install are {\tt +libbzip2\_1-\lbt devel} for the {\tt bzip2} format, {\tt zlib1-\lbt +devel} for the {\tt gzip} format, and {\tt liblzma0-\lbt devel} for +the {\tt lzma} format. The names of the libraries may vary according +to operating systems and library versions. Ask your system engineer in +case of trouble. + +\subsection{Machine word size issues} +\label{sec-install-inttypesize} + +The integer values handled by \scotch\ are based on the +{\tt SCOTCH\_\lbt Num} type, which equates by default to the {\tt int} +C type, corresponding to the {\tt INTEGER} Fortran type, both of which +being of machine word size. To coerce the length of the +{\tt SCOTCH\_\lbt Num} integer type to 32 or 64 bits, one can use the +``{\tt -DINTSIZE32}'' or ``{\tt -DINTSIZE64}'' flags, respectively, or +else use the ``{\tt -DINT=}'' definition, at compile time. For +instance, adding ``{\tt -DINT=long}'' to the {\tt CFLAGS} variable in +the {\tt Makefile.inc} file to be placed at the root of the source +tree will make all {\tt SCOTCH\_\lbt Num} integers become {\tt long} C +integers. + +Whenever doing so, make sure to use integer types of equivalent length +to declare variables passed to \scotch\ routines from caller C and +Fortran procedures. Also, because of API conflicts, the +\metis\ compatibility library will not be usable. It is usually safer +and cleaner to tune your C and Fortran compilers to make them +interpret {\tt int} and {\tt INTEGER} types as 32 or 64 bit values, +than to use the aforementioned flags and coerce type lengths in your +own code. + +Fortran users also have to take care of another size issue: since +there are no pointers in Fortran~77, the Fortran interface of some +routines converts pointers to be returned into integer indices with +respect to a given array (e.g. see +Section~\ref{sec-lib-func-scotchdgraphdata}). +For 32\_64 architectures, such indices can be larger than the size of +a regular {\tt INTEGER}. This is why the indices to be returned are +defined by means of a specific integer type, {\tt SCOTCH\_Idx}. To +coerce the length of this index type to 32 or 64 bits, one can use the +``{\tt -DIDXSIZE32}'' or ``{\tt -DIDXSIZE64}'' flags, respectively, or +else use the ``{\tt -DIDX=}'' definition, at compile time. For +instance, adding ``{\tt -DIDX="long~long"}'' to the {\tt CFLAGS} +variable in the {\tt Makefile.inc} file to be placed at the root of +the source tree will equate all {\tt SCOTCH\_\lbt Idx} integers to C +{\tt long long} integers. By default, when the size of +{\tt SCOTCH\_\lbt Idx} is not explicitly defined, it is assumed to be +the same as the size of {\tt SCOTCH\_\lbt Num}. diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/p_e.tex scotch-6.0.6/doc/src/ptscotch/p_e.tex --- scotch-6.0.4.dfsg1/doc/src/ptscotch/p_e.tex 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/p_e.tex 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,85 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Titre : p_e.tex % +% Sujet : Manuel de l'utilisateur % +% du projet 'PT-Scotch' % +% Exemples d'utilisation % +% Auteur : Francois Pellegrini % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Examples} +\label{sec-examples} + +This section contains chosen examples destined to show how the programs +of the \ptscotch\ project interoperate and can be combined. +It is assumed that parallel programs are launched by means of the +{\tt mpirun} command, which comprises a {\tt -np} option to set the +number of processes on which to run them. +Character ``{\tt\bf \%}'' in bold represents the shell prompt. +\begin{itemize} +\item +Create a distributed source graph file of $7$ fragments from the +centralized source graph file {\tt brol.grf} stored in the current +directory of process $0$ of the MPI environment, and stores the +resulting fragments in files labeled with the proper number of +processors and processor ranks. +\\ + +\noi +{\tt +{\bf\%} mpirun -np 7 dgscat brol.grf brol-\%p-\%r.dgr +} + +\item +Compute on $3$ processors the ordering of graph {\tt brol.grf}, to be +saved in a file called {\tt brol.ord} written by process $0$ of the +MPI environment. +\\ + +\noi +{\tt +{\bf\%} mpirun -np 7 dgord brol.grf brol.ord +} + +\item +Compute on $4$ processors the first three levels of nested dissection +of graph {\tt brol.grf}, and create an {\sc Open Inventor} file called +{\tt brol.iv} to show the resulting separators and leaves. +\\ + +\noi +{\tt +{\bf\%} mpirun -np 4 dgord brol.grf /dev/null '-On\{sep=\lbt /(levl\lbt <\lbt 3)\lbt ?\lbt m\{\lbt asc=\lbt b\{strat=\lbt q\{\lbt strat=\lbt f\}\},\lbt low=\lbt q\{\lbt strat=\lbt h\},\lbt seq=\lbt q\{\lbt strat=\lbt m\{low=\lbt h,asc=\lbt b\{\lbt strat=\lbt f\}\}\}\};,\lbt ole=\lbt s,\lbt ose=\lbt s,\lbt osq=\lbt n\{\lbt sep=\lbt /(levl\lbt <\lbt 3)\lbt ?\lbt m\{asc=\lbt b\{\lbt strat=\lbt f\},\lbt low=\lbt h\};\}\}' -mbrol.map +\\ +{\bf\%} gout brol.grf brol.xyz brol.map brol.iv +} +\item +Compute on $4$ processors an ordering of the compressed graph {\tt +brol.\lbt grf.\lbt gz}, and output the resulting ordering on +compressed form. +\\ + +\noi +{\tt +{\bf\%} mpirun -np 4 dgord brol.grf.gz brol.ord.gz +} +\item +Recompile a program that used \parmetis\ so that it uses \ptscotch\ instead. +\\ + +\noi +{\tt +{\bf\%} mpicc brol.c -o brol -I\$\{parmetisdir\} -lptscotchparmetis -lptscotch -lptscotcherr -lparmetis -lmetis -lm} +\spa + +\noi +Note that the ``{\tt -lptscotch\lbt parmetis}'' option must be placed before the +``{\tt -lparmetis}'' one, so that routines that are redefined by \ptscotch\ are +selected instead of their \parmetis\ counterpart. When no other +\parmetis\ routines than the ones redefined by \ptscotch\ are used, the +``{\tt -lparmetis -lmetis}'' options can be omitted. The ``{\tt -I\$\{parmetisdir\}} +option may be necessary to provide the path to the original {\tt parmetis.h} +include file, which contains the prototypes of all of the \parmetis\ routines. + +\end{itemize} diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/p_f_band.eps scotch-6.0.6/doc/src/ptscotch/p_f_band.eps --- scotch-6.0.4.dfsg1/doc/src/ptscotch/p_f_band.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/p_f_band.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,558 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: stdin +%%Creator: fig2dev Version 3.2 Patchlevel 5-alpha5 +%%CreationDate: Thu Dec 28 22:07:04 2006 +%%For: pelegrin@brol (Francois PELLEGRINI) +%%BoundingBox: 0 0 916 113 +%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 113 moveto 0 0 lineto 916 0 lineto 916 113 lineto closepath clip newpath +-250.3 454.6 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +% +% Fig objects follow +% +% +% here starts figure with depth 50 +% Ellipse +7.500 slw +n 17214 6600 2158 848 0 360 DrawEllipse gs col0 s gr + +% Polyline +2 slj +0 slc + [15 45] 45 sd +n 17969 5807 m 17969 5808 l 17968 5811 l 17967 5815 l 17964 5823 l 17961 5833 l + 17957 5845 l 17952 5861 l 17945 5879 l 17937 5900 l 17928 5923 l + 17918 5947 l 17906 5972 l 17893 5999 l 17879 6027 l 17862 6055 l + 17844 6084 l 17824 6114 l 17801 6144 l 17775 6176 l 17745 6209 l + 17712 6243 l 17675 6278 l 17633 6315 l 17586 6352 l 17536 6389 l + 17490 6420 l 17444 6449 l 17399 6476 l 17357 6499 l 17318 6519 l + 17282 6536 l 17250 6550 l 17222 6560 l 17197 6568 l 17175 6573 l + 17156 6577 l 17139 6579 l 17123 6579 l 17109 6579 l 17095 6578 l + 17081 6578 l 17066 6577 l 17051 6578 l 17033 6580 l 17013 6583 l + 16990 6588 l 16964 6596 l 16934 6606 l 16899 6619 l 16861 6635 l + 16818 6654 l 16772 6676 l 16722 6702 l 16670 6730 l 16618 6759 l + 16563 6791 l 16511 6824 l 16461 6855 l 16416 6886 l 16374 6916 l + 16335 6944 l 16299 6972 l 16265 6998 l 16235 7024 l 16206 7049 l + 16179 7073 l 16153 7096 l 16129 7119 l 16107 7142 l 16086 7163 l + 16066 7183 l 16048 7202 l 16032 7220 l 16017 7235 l 16005 7249 l + 15994 7261 l 15986 7270 l 15980 7278 l 15975 7283 l 15972 7286 l + 15971 7288 l + 15970 7289 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 16132 5859 m 16132 5861 l 16131 5864 l 16130 5871 l 16128 5881 l 16125 5894 l + 16122 5911 l 16119 5931 l 16116 5954 l 16113 5980 l 16110 6007 l + 16109 6035 l 16108 6064 l 16108 6095 l 16109 6127 l 16113 6159 l + 16118 6194 l 16126 6230 l 16136 6267 l 16150 6307 l 16167 6348 l + 16187 6389 l 16210 6429 l 16236 6466 l 16262 6500 l 16288 6531 l + 16315 6559 l 16342 6584 l 16369 6607 l 16396 6628 l 16422 6647 l + 16449 6665 l 16475 6682 l 16500 6697 l 16524 6710 l 16546 6722 l + 16566 6733 l 16583 6742 l 16596 6748 l 16606 6753 l 16613 6756 l + 16616 6758 l + 16618 6759 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 17645 6282 m 17646 6283 l 17648 6284 l 17653 6287 l 17660 6292 l 17669 6298 l + 17681 6306 l 17695 6316 l 17712 6328 l 17731 6342 l 17752 6357 l + 17774 6374 l 17797 6391 l 17821 6410 l 17845 6430 l 17870 6451 l + 17895 6474 l 17920 6497 l 17946 6523 l 17972 6550 l 17998 6579 l + 18025 6610 l 18052 6644 l 18079 6680 l 18105 6719 l 18131 6759 l + 18157 6803 l 18180 6847 l 18200 6888 l 18217 6928 l 18231 6966 l + 18243 7001 l 18254 7035 l 18262 7068 l 18269 7099 l 18275 7129 l + 18279 7158 l 18283 7186 l 18286 7212 l 18288 7237 l 18290 7259 l + 18291 7280 l 18292 7297 l 18292 7312 l 18293 7323 l 18293 7331 l + 18293 7337 l 18293 7340 l + 18293 7341 l gs col0 s gr [] 0 sd +% Polyline +15.000 slw +n 17214 5753 m 17213 5754 l 17211 5755 l 17208 5757 l 17204 5760 l 17198 5765 l + 17190 5771 l 17181 5779 l 17171 5788 l 17161 5799 l 17151 5811 l + 17141 5825 l 17131 5841 l 17122 5859 l 17114 5879 l 17107 5902 l + 17101 5928 l 17097 5958 l 17095 5993 l 17095 6032 l 17098 6076 l + 17104 6125 l 17111 6165 l 17119 6206 l 17128 6245 l 17138 6281 l + 17148 6314 l 17159 6343 l 17170 6369 l 17181 6392 l 17191 6411 l + 17202 6428 l 17212 6442 l 17223 6455 l 17233 6467 l 17243 6478 l + 17253 6489 l 17264 6501 l 17274 6514 l 17284 6530 l 17294 6547 l + 17305 6568 l 17315 6592 l 17326 6620 l 17336 6652 l 17345 6688 l + 17354 6729 l 17362 6772 l 17369 6819 l 17374 6866 l 17377 6920 l + 17378 6972 l 17376 7020 l 17372 7064 l 17366 7105 l 17358 7142 l + 17350 7177 l 17340 7209 l 17330 7238 l 17318 7266 l 17306 7293 l + 17294 7317 l 17282 7340 l 17270 7362 l 17259 7381 l 17248 7398 l + 17239 7412 l 17231 7424 l 17224 7434 l 17220 7440 l 17216 7445 l + 17215 7447 l + 17214 7448 l gs col0 s gr +% Polyline +n 11813 5795 m 11814 5796 l 11817 5797 l 11821 5800 l 11826 5804 l 11833 5810 l + 11839 5816 l 11846 5825 l 11851 5834 l 11855 5846 l 11858 5860 l + 11858 5878 l 11856 5900 l 11850 5925 l 11842 5949 l 11832 5972 l + 11822 5991 l 11811 6007 l 11800 6020 l 11789 6029 l 11779 6037 l + 11769 6043 l 11758 6050 l 11748 6057 l 11738 6067 l 11729 6080 l + 11720 6098 l 11712 6119 l 11707 6145 l 11705 6173 l 11708 6204 l + 11715 6229 l 11725 6248 l 11737 6260 l 11750 6266 l 11764 6269 l + 11778 6270 l 11792 6270 l 11805 6273 l 11819 6280 l 11831 6293 l + 11841 6313 l 11848 6341 l 11850 6375 l 11848 6403 l 11843 6430 l + 11835 6454 l 11825 6474 l 11814 6491 l 11802 6505 l 11789 6517 l + 11775 6527 l 11762 6536 l 11749 6544 l 11736 6554 l 11724 6565 l + 11713 6577 l 11704 6593 l 11697 6611 l 11694 6631 l 11694 6653 l + 11700 6675 l 11712 6696 l 11729 6713 l 11748 6724 l 11767 6730 l + 11786 6732 l 11804 6730 l 11822 6727 l 11840 6723 l 11857 6718 l + 11876 6714 l 11895 6712 l 11915 6713 l 11937 6716 l 11959 6724 l + 11981 6735 l 12000 6750 l 12015 6766 l 12024 6782 l 12030 6796 l + 12032 6807 l 12032 6816 l 12030 6824 l 12026 6830 l 12022 6835 l + 12018 6840 l 12013 6847 l 12008 6854 l 12002 6864 l 11997 6876 l + 11990 6892 l 11983 6909 l 11974 6928 l 11960 6951 l 11946 6969 l + 11931 6980 l 11917 6985 l 11904 6986 l 11891 6985 l 11879 6984 l + 11867 6985 l 11857 6991 l 11849 7003 l 11846 7023 l 11850 7050 l + 11859 7072 l 11871 7093 l 11887 7110 l 11903 7124 l 11921 7134 l + 11939 7142 l 11956 7148 l 11974 7152 l 11992 7157 l 12009 7163 l + 12026 7171 l 12041 7183 l 12055 7200 l 12067 7221 l 12074 7246 l + 12075 7275 l 12070 7301 l 12060 7326 l 12047 7349 l 12031 7370 l + 12012 7390 l 11992 7409 l 11970 7426 l 11947 7442 l 11924 7458 l + 11901 7472 l 11879 7485 l 11859 7496 l 11843 7505 l 11830 7512 l + 11821 7517 l 11815 7520 l + 11813 7521 l gs col0 s gr +% Ellipse +7.500 slw +n 6338 6658 2159 863 0 360 DrawEllipse gs col0 s gr + +% Polyline + [15 45] 45 sd +n 7093 5849 m 7093 5850 l 7092 5853 l 7091 5858 l 7088 5865 l 7085 5875 l + 7081 5888 l 7076 5904 l 7069 5923 l 7061 5944 l 7052 5967 l + 7042 5991 l 7030 6017 l 7017 6045 l 7003 6073 l 6987 6101 l + 6969 6131 l 6948 6161 l 6925 6193 l 6899 6225 l 6870 6258 l + 6837 6293 l 6799 6329 l 6758 6366 l 6711 6404 l 6661 6442 l + 6615 6474 l 6569 6503 l 6525 6531 l 6482 6554 l 6443 6575 l + 6407 6592 l 6375 6606 l 6347 6617 l 6322 6625 l 6300 6630 l + 6281 6634 l 6264 6636 l 6249 6636 l 6234 6636 l 6220 6635 l + 6207 6635 l 6192 6635 l 6176 6635 l 6159 6637 l 6139 6640 l + 6116 6646 l 6089 6653 l 6059 6664 l 6025 6677 l 5987 6693 l + 5944 6713 l 5898 6736 l 5848 6762 l 5796 6790 l 5744 6820 l + 5689 6853 l 5637 6886 l 5587 6918 l 5542 6949 l 5500 6980 l + 5461 7009 l 5425 7036 l 5392 7063 l 5361 7089 l 5332 7115 l + 5305 7139 l 5279 7163 l 5255 7187 l 5233 7209 l 5212 7231 l + 5192 7251 l 5174 7271 l 5158 7288 l 5143 7305 l 5131 7319 l + 5120 7330 l 5112 7340 l 5106 7348 l 5101 7353 l 5098 7356 l + 5097 7358 l + 5096 7359 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5258 5903 m 5258 5905 l 5257 5908 l 5256 5915 l 5254 5925 l 5251 5939 l + 5248 5956 l 5245 5977 l 5242 6000 l 5239 6025 l 5236 6053 l + 5234 6082 l 5233 6112 l 5233 6143 l 5235 6175 l 5238 6208 l + 5243 6243 l 5251 6280 l 5261 6318 l 5275 6358 l 5292 6400 l + 5312 6442 l 5335 6483 l 5361 6521 l 5387 6556 l 5414 6587 l + 5440 6616 l 5467 6641 l 5494 6665 l 5521 6686 l 5548 6706 l + 5574 6724 l 5601 6741 l 5626 6756 l 5650 6770 l 5672 6783 l + 5692 6793 l 5709 6802 l 5722 6809 l 5732 6814 l 5739 6817 l + 5742 6819 l + 5744 6820 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 6769 6334 m 6770 6335 l 6772 6336 l 6777 6339 l 6784 6344 l 6793 6350 l + 6805 6359 l 6819 6369 l 6836 6381 l 6855 6395 l 6876 6411 l + 6898 6427 l 6921 6445 l 6945 6465 l 6969 6485 l 6994 6507 l + 7019 6529 l 7044 6553 l 7070 6579 l 7096 6607 l 7122 6636 l + 7149 6668 l 7176 6703 l 7203 6740 l 7229 6779 l 7255 6820 l + 7281 6865 l 7304 6909 l 7324 6952 l 7341 6992 l 7355 7031 l + 7367 7067 l 7378 7102 l 7386 7135 l 7393 7167 l 7399 7197 l + 7403 7227 l 7407 7255 l 7410 7282 l 7412 7307 l 7414 7330 l + 7415 7350 l 7416 7368 l 7416 7383 l 7417 7395 l 7417 7403 l + 7417 7409 l 7417 7412 l + 7417 7413 l gs col0 s gr [] 0 sd +% Polyline +15.000 slw +n 6338 5795 m 6339 5796 l 6342 5797 l 6346 5800 l 6351 5804 l 6358 5810 l + 6364 5816 l 6371 5825 l 6376 5834 l 6380 5846 l 6383 5860 l + 6383 5878 l 6381 5900 l 6375 5925 l 6367 5949 l 6357 5972 l + 6347 5991 l 6336 6007 l 6325 6020 l 6314 6029 l 6304 6037 l + 6294 6043 l 6283 6050 l 6273 6057 l 6263 6067 l 6254 6080 l + 6245 6098 l 6237 6119 l 6232 6145 l 6230 6173 l 6233 6204 l + 6240 6229 l 6250 6248 l 6262 6260 l 6275 6266 l 6289 6269 l + 6303 6270 l 6317 6270 l 6330 6273 l 6344 6280 l 6356 6293 l + 6366 6313 l 6373 6341 l 6375 6375 l 6373 6403 l 6368 6430 l + 6360 6454 l 6350 6474 l 6339 6491 l 6327 6505 l 6314 6517 l + 6300 6527 l 6287 6536 l 6274 6544 l 6261 6554 l 6249 6565 l + 6238 6577 l 6229 6593 l 6222 6611 l 6219 6631 l 6219 6653 l + 6225 6675 l 6237 6696 l 6254 6713 l 6273 6724 l 6292 6730 l + 6311 6732 l 6329 6730 l 6347 6727 l 6365 6723 l 6382 6718 l + 6401 6714 l 6420 6712 l 6440 6713 l 6462 6716 l 6484 6724 l + 6506 6735 l 6525 6750 l 6540 6766 l 6549 6782 l 6555 6796 l + 6557 6807 l 6557 6816 l 6555 6824 l 6551 6830 l 6547 6835 l + 6543 6840 l 6538 6847 l 6533 6854 l 6527 6864 l 6522 6876 l + 6515 6892 l 6508 6909 l 6499 6928 l 6485 6951 l 6471 6969 l + 6456 6980 l 6442 6985 l 6429 6986 l 6416 6985 l 6404 6984 l + 6392 6985 l 6382 6991 l 6374 7003 l 6371 7023 l 6375 7050 l + 6384 7072 l 6396 7093 l 6412 7110 l 6428 7124 l 6446 7134 l + 6464 7142 l 6481 7148 l 6499 7152 l 6517 7157 l 6534 7163 l + 6551 7171 l 6566 7183 l 6580 7200 l 6592 7221 l 6599 7246 l + 6600 7275 l 6595 7301 l 6585 7326 l 6572 7349 l 6556 7370 l + 6537 7390 l 6517 7409 l 6495 7426 l 6472 7442 l 6449 7458 l + 6426 7472 l 6404 7485 l 6384 7496 l 6368 7505 l 6355 7512 l + 6346 7517 l 6340 7520 l + 6338 7521 l gs col0 s gr +% Ellipse +7.500 slw +n 11813 6658 2159 863 0 360 DrawEllipse gs col0 s gr + +% Polyline + [15 45] 45 sd +n 12568 5849 m 12568 5850 l 12567 5853 l 12566 5858 l 12563 5865 l 12560 5875 l + 12556 5888 l 12551 5904 l 12544 5923 l 12536 5944 l 12527 5967 l + 12517 5991 l 12505 6017 l 12492 6045 l 12478 6073 l 12462 6101 l + 12444 6131 l 12423 6161 l 12400 6193 l 12374 6225 l 12345 6258 l + 12312 6293 l 12274 6329 l 12233 6366 l 12186 6404 l 12136 6442 l + 12090 6474 l 12044 6503 l 12000 6531 l 11957 6554 l 11918 6575 l + 11882 6592 l 11850 6606 l 11822 6617 l 11797 6625 l 11775 6630 l + 11756 6634 l 11739 6636 l 11724 6636 l 11709 6636 l 11695 6635 l + 11682 6635 l 11667 6635 l 11651 6635 l 11634 6637 l 11614 6640 l + 11591 6646 l 11564 6653 l 11534 6664 l 11500 6677 l 11462 6693 l + 11419 6713 l 11373 6736 l 11323 6762 l 11271 6790 l 11219 6820 l + 11164 6853 l 11112 6886 l 11062 6918 l 11017 6949 l 10975 6980 l + 10936 7009 l 10900 7036 l 10867 7063 l 10836 7089 l 10807 7115 l + 10780 7139 l 10754 7163 l 10730 7187 l 10708 7209 l 10687 7231 l + 10667 7251 l 10649 7271 l 10633 7288 l 10618 7305 l 10606 7319 l + 10595 7330 l 10587 7340 l 10581 7348 l 10576 7353 l 10573 7356 l + 10572 7358 l + 10571 7359 l gs col0 s gr [] 0 sd +% here ends figure; +% +% here starts figure with depth 40 +% Polyline +0 slj +0 slc +0.000 slw +n 15108 5807 m 15000 5807 l 15000 5700 l 15108 5700 l + cp gs col7 1.00 shd ef gr +% Polyline +n 19425 7500 m 19317 7500 l 19317 7394 l 19425 7394 l + cp gs col7 1.00 shd ef gr +% Polyline +n 9600 7575 m 11400 7575 l 11400 5700 l 9600 5700 l + cp gs col7 1.00 shd ef gr +% Polyline +n 12300 7575 m 14025 7575 l 14025 5700 l 12300 5700 l + cp gs col7 1.00 shd ef gr +% here ends figure; +% +% here starts figure with depth 20 +% Polyline +2 slj +0 slc +7.500 slw +n 11400 7500 m 11400 7499 l 11401 7495 l 11404 7486 l 11409 7470 l 11414 7449 l + 11420 7425 l 11426 7400 l 11431 7376 l 11435 7354 l 11438 7333 l + 11440 7314 l 11440 7297 l 11439 7280 l 11438 7263 l 11435 7247 l + 11432 7232 l 11428 7215 l 11423 7198 l 11418 7180 l 11412 7162 l + 11406 7143 l 11400 7123 l 11394 7104 l 11388 7084 l 11382 7065 l + 11377 7046 l 11372 7028 l 11368 7010 l 11365 6992 l 11363 6975 l + 11361 6958 l 11360 6940 l 11359 6922 l 11360 6904 l 11360 6885 l + 11362 6866 l 11364 6846 l 11366 6827 l 11369 6807 l 11371 6788 l + 11374 6770 l 11377 6752 l 11380 6735 l 11383 6718 l 11385 6703 l + 11388 6688 l 11390 6673 l 11391 6658 l 11393 6642 l 11394 6627 l + 11395 6611 l 11395 6594 l 11395 6578 l 11395 6561 l 11394 6544 l + 11393 6526 l 11391 6509 l 11388 6492 l 11386 6475 l 11383 6459 l + 11379 6442 l 11375 6425 l 11371 6409 l 11367 6393 l 11362 6377 l + 11357 6359 l 11351 6341 l 11345 6322 l 11340 6302 l 11334 6282 l + 11328 6262 l 11323 6241 l 11318 6221 l 11313 6201 l 11309 6182 l + 11305 6163 l 11302 6145 l 11300 6127 l 11299 6110 l 11298 6094 l + 11298 6076 l 11300 6058 l 11302 6040 l 11306 6021 l 11312 6000 l + 11319 5979 l 11327 5955 l 11337 5930 l 11347 5905 l 11358 5880 l + 11368 5857 l 11377 5838 l 11383 5825 l 11387 5817 l 11389 5814 l + + 11389 5813 l gs col0 s gr +% Polyline +n 12300 7500 m 12300 7499 l 12301 7496 l 12305 7488 l 12310 7474 l 12317 7453 l + 12327 7428 l 12337 7399 l 12348 7368 l 12359 7337 l 12369 7306 l + 12378 7278 l 12386 7252 l 12393 7227 l 12399 7205 l 12403 7184 l + 12407 7164 l 12410 7144 l 12413 7125 l 12414 7106 l 12415 7086 l + 12416 7067 l 12415 7046 l 12415 7025 l 12414 7003 l 12412 6981 l + 12410 6959 l 12407 6936 l 12404 6913 l 12401 6890 l 12398 6867 l + 12394 6844 l 12390 6822 l 12386 6801 l 12383 6779 l 12379 6758 l + 12375 6738 l 12372 6718 l 12368 6699 l 12365 6679 l 12361 6659 l + 12357 6638 l 12353 6617 l 12349 6595 l 12346 6573 l 12342 6551 l + 12337 6528 l 12333 6506 l 12329 6485 l 12326 6464 l 12322 6443 l + 12318 6424 l 12314 6405 l 12310 6387 l 12307 6370 l 12303 6353 l + 12300 6338 l 12296 6318 l 12291 6300 l 12287 6282 l 12283 6263 l + 12278 6245 l 12274 6227 l 12270 6210 l 12266 6192 l 12263 6175 l + 12260 6159 l 12257 6143 l 12255 6127 l 12253 6113 l 12252 6098 l + 12252 6085 l 12252 6071 l 12253 6056 l 12254 6039 l 12257 6022 l + 12260 6004 l 12265 5983 l 12271 5960 l 12278 5934 l 12286 5908 l + 12294 5882 l 12301 5860 l 12306 5843 l 12309 5832 l 12311 5828 l + + 12311 5827 l gs col0 s gr +% here ends figure; +% +% here starts figure with depth 10 +% Polyline +0 slj +0 slc +7.500 slw +n 10275 6525 m + 10575 6825 l gs col0 s gr +% Polyline +n 10575 6525 m + 10275 6825 l gs col0 s gr +/Times-Roman ff 600.00 scf sf +10125 6300 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 360.00 scf sf +10425 6375 m +gs 1 -1 sc (0) col0 sh gr +% Polyline +n 13200 6450 m + 13500 6750 l gs col0 s gr +% Polyline +n 13500 6450 m + 13200 6750 l gs col0 s gr +/Times-Roman ff 600.00 scf sf +13050 6300 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 360.00 scf sf +13350 6375 m +gs 1 -1 sc (3) col0 sh gr +% Polyline +30.000 slw +gs clippath +14470 6660 m 14790 6660 l 14790 6540 l 14470 6540 l 14470 6540 l 14710 6600 l 14470 6660 l cp +eoclip +n 14025 6600 m + 14775 6600 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 14470 6660 m 14710 6600 l 14470 6540 l 14470 6660 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +9295 6660 m 9615 6660 l 9615 6540 l 9295 6540 l 9295 6540 l 9535 6600 l 9295 6660 l cp +eoclip +n 8850 6600 m + 9600 6600 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 9295 6660 m 9535 6600 l 9295 6540 l 9295 6660 l cp gs 0.00 setgray ef gr col0 s +% here ends figure; +% +% here starts figure with depth 2 +% Polyline +0 slj +0 slc +7.500 slw +n 11443 5900 m 10989 6267 l + 11363 6040 l gs col0 s gr +% Polyline +n 11356 6200 m 10983 6267 l + 11443 6340 l gs col0 s gr +% Polyline +n 11443 6500 m 10989 6260 l + 11443 6640 l gs col0 s gr +% Polyline +n 11436 6793 m 10983 7093 l + 11436 6940 l gs col0 s gr +% Polyline +n 11436 7100 m 10989 7093 l + 11509 7240 l gs col0 s gr +% Polyline +n 11509 7400 m + 10983 7093 l gs col0 s gr +% Polyline +n 12184 5900 m 12717 6040 l + 12111 6040 l gs col0 s gr +% Polyline +n 12184 6193 m 12717 6040 l + 12184 6340 l gs col0 s gr +% Polyline +n 12257 6500 m 12717 6940 l + 12264 6640 l gs col0 s gr +% Polyline +n 12331 6800 m 12717 6940 l + 12337 6940 l gs col0 s gr +% Polyline +n 12331 7100 m 12711 6940 l + 12337 7240 l gs col0 s gr +% Polyline +n 12257 7393 m + 12717 6940 l gs col0 s gr +% here ends figure; +% +% here starts figure with depth 0 +% Ellipse +7.500 slw +n 10988 6263 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 10988 7088 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 12713 6938 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 12713 6038 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 11438 5888 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 11363 6038 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 11363 6188 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 11438 6338 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 11438 6488 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 11438 6638 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 11438 6788 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 11438 6938 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 11438 7088 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 11513 7238 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 11513 7388 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 12188 5888 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 12113 6038 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 12188 6188 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 12188 6338 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 12263 6488 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 12263 6638 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 12338 6788 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 12338 6938 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 12338 7088 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 12338 7238 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 12263 7388 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% here ends figure; +$F2psEnd +rs +showpage +%%Trailer +%EOF diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/p_f_gr1.eps scotch-6.0.6/doc/src/ptscotch/p_f_gr1.eps --- scotch-6.0.4.dfsg1/doc/src/ptscotch/p_f_gr1.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/p_f_gr1.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,1265 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: stdin +%%Creator: fig2dev Version 3.2 Patchlevel 5-alpha7 +%%CreationDate: Tue Feb 5 15:59:38 2008 +%%For: pelegrin@brol (Francois PELLEGRINI) +%%BoundingBox: 0 0 776 830 +%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 830 moveto 0 0 lineto 776 0 lineto 776 830 lineto closepath clip newpath +0.7 828.7 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +% +% Fig objects follow +% +% +% here starts figure with depth 55 +% Polyline +0 slj +0 slc +0.000 slw +n 4050 4800 m 3750 4800 l 3750 4500 l 4050 4500 l + cp gs 0.50 setgray ef gr +% Polyline +n 7650 4800 m 7350 4800 l 7350 4500 l 7650 4500 l + cp gs 0.50 setgray ef gr +% Polyline +n 11250 4800 m 10950 4800 l 10950 4500 l 11250 4500 l + cp gs 0.50 setgray ef gr +% here ends figure; +% +% here starts figure with depth 50 +% Polyline +0 slj +0 slc +7.500 slw +n 12900 300 m 0 300 l 0 0 l 12900 0 l + cp gs 0.50 setgray ef gr gs col0 s gr +% Polyline +n 8400 1200 m + 7500 2100 l gs col0 s gr +% Polyline +n 6600 1200 m 7500 2100 l 6600 3000 l 5700 2100 l 6600 1200 l 6600 3000 l + 7500 3900 l 7500 2100 l 8400 3000 l 9300 2100 l 8400 1200 l + 8400 3000 l + 7500 3900 l gs col0 s gr +% Polyline +n 4800 8100 m 3900 7200 l 4800 6300 l 3900 5400 l 3900 7200 l 3000 6300 l + + 3900 5400 l gs col0 s gr +% Polyline +n 6600 5400 m 7500 6300 l 6600 7200 l 7500 8100 l 7500 6300 l 8400 7200 l + + 7500 8100 l gs col0 s gr +% Polyline +n 7500 6300 m + 8400 5400 l gs col0 s gr +% Polyline +n 10200 8100 m 11100 7200 l 10200 6300 l 11100 5400 l 11100 7200 l 12000 6300 l + + 11100 5400 l gs col0 s gr +% Polyline +n 2100 13800 m + 2100 4800 l gs col0 s gr +% Polyline +n 5700 13800 m + 5700 4800 l gs col0 s gr +% Polyline +n 9300 13800 m + 9300 4800 l gs col0 s gr +% Polyline +n 12900 4800 m 0 4800 l 0 4500 l 12900 4500 l + cp gs 0.50 setgray ef gr gs col0 s gr +% here ends figure; +% +% here starts figure with depth 40 +/Times-Roman ff 285.00 scf sf +174 231 m +gs 1 -1 sc (Duplicated data) col7 sh gr +% Polyline +2 slj +0 slc +7.500 slw + [15 45] 45 sd +n 7875 975 m 7874 978 l 7872 986 l 7868 999 l 7863 1018 l 7856 1043 l + 7848 1073 l 7839 1106 l 7831 1141 l 7823 1175 l 7815 1209 l + 7809 1242 l 7804 1272 l 7800 1301 l 7797 1328 l 7795 1354 l + 7795 1378 l 7795 1402 l 7797 1426 l 7800 1450 l 7803 1470 l + 7807 1491 l 7812 1512 l 7817 1534 l 7822 1556 l 7829 1579 l + 7835 1603 l 7843 1628 l 7850 1654 l 7858 1680 l 7865 1707 l + 7873 1734 l 7881 1761 l 7889 1789 l 7896 1817 l 7903 1845 l + 7909 1872 l 7915 1900 l 7921 1927 l 7926 1955 l 7930 1982 l + 7933 2008 l 7936 2035 l 7938 2063 l 7938 2086 l 7939 2110 l + 7939 2134 l 7938 2159 l 7937 2185 l 7935 2211 l 7933 2238 l + 7931 2266 l 7928 2294 l 7925 2323 l 7922 2352 l 7918 2382 l + 7915 2412 l 7911 2443 l 7907 2473 l 7903 2504 l 7899 2535 l + 7896 2565 l 7892 2595 l 7889 2625 l 7886 2655 l 7883 2684 l + 7881 2712 l 7879 2741 l 7877 2768 l 7876 2796 l 7875 2823 l + 7875 2850 l 7875 2879 l 7876 2908 l 7878 2938 l 7879 2968 l + 7882 2998 l 7885 3029 l 7888 3061 l 7892 3092 l 7896 3124 l + 7900 3157 l 7905 3189 l 7909 3222 l 7914 3254 l 7919 3286 l + 7924 3317 l 7929 3348 l 7934 3379 l 7938 3408 l 7943 3437 l + 7947 3465 l 7950 3491 l 7954 3517 l 7956 3542 l 7959 3566 l + 7961 3590 l 7963 3613 l 7964 3639 l 7964 3664 l 7964 3690 l + 7963 3715 l 7961 3741 l 7958 3768 l 7954 3795 l 7949 3824 l + 7943 3854 l 7937 3886 l 7930 3918 l 7922 3951 l 7914 3984 l + 7905 4015 l 7898 4044 l 7891 4070 l 7885 4090 l 7881 4106 l + 7877 4117 l 7876 4122 l + 7875 4125 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 7125 975 m 7124 978 l 7120 985 l 7115 997 l 7108 1014 l 7098 1036 l + 7088 1060 l 7077 1087 l 7066 1114 l 7056 1141 l 7047 1167 l + 7039 1191 l 7032 1215 l 7026 1237 l 7022 1259 l 7018 1281 l + 7015 1302 l 7013 1325 l 7011 1344 l 7010 1364 l 7009 1384 l + 7009 1406 l 7009 1428 l 7009 1451 l 7010 1476 l 7010 1500 l + 7011 1526 l 7012 1552 l 7013 1578 l 7013 1605 l 7014 1632 l + 7015 1658 l 7015 1684 l 7016 1709 l 7016 1734 l 7016 1759 l + 7016 1782 l 7015 1805 l 7014 1828 l 7013 1850 l 7011 1872 l + 7009 1894 l 7006 1915 l 7003 1937 l 7000 1960 l 6997 1983 l + 6994 2006 l 6990 2029 l 6987 2053 l 6983 2077 l 6980 2102 l + 6977 2126 l 6975 2151 l 6972 2175 l 6971 2199 l 6969 2223 l + 6969 2246 l 6969 2270 l 6969 2293 l 6970 2316 l 6972 2339 l + 6975 2363 l 6978 2384 l 6982 2406 l 6987 2429 l 6992 2453 l + 6997 2477 l 7004 2502 l 7010 2528 l 7018 2555 l 7025 2582 l + 7033 2610 l 7040 2639 l 7048 2668 l 7056 2697 l 7064 2726 l + 7071 2755 l 7078 2784 l 7084 2812 l 7090 2840 l 7096 2868 l + 7101 2895 l 7105 2922 l 7108 2948 l 7111 2974 l 7113 3000 l + 7114 3026 l 7114 3052 l 7113 3078 l 7112 3105 l 7110 3132 l + 7108 3160 l 7104 3188 l 7101 3216 l 7096 3245 l 7091 3274 l + 7086 3303 l 7081 3332 l 7075 3361 l 7069 3390 l 7062 3418 l + 7056 3445 l 7050 3472 l 7044 3498 l 7038 3523 l 7032 3547 l + 7027 3571 l 7022 3594 l 7017 3616 l 7013 3638 l 7008 3661 l + 7004 3684 l 7000 3707 l 6997 3730 l 6994 3754 l 6991 3779 l + 6989 3805 l 6987 3832 l 6985 3861 l 6983 3891 l 6981 3922 l + 6980 3954 l 6979 3986 l 6978 4017 l 6977 4046 l 6976 4070 l + 6976 4091 l 6975 4106 l 6975 4117 l 6975 4122 l + 6975 4125 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4425 5175 m 4424 5178 l 4420 5185 l 4415 5197 l 4408 5214 l 4398 5236 l + 4388 5260 l 4377 5287 l 4366 5314 l 4356 5341 l 4347 5367 l + 4339 5391 l 4332 5415 l 4326 5437 l 4322 5459 l 4318 5481 l + 4315 5502 l 4313 5525 l 4311 5544 l 4310 5564 l 4309 5584 l + 4309 5606 l 4309 5628 l 4309 5651 l 4310 5676 l 4310 5700 l + 4311 5726 l 4312 5752 l 4313 5778 l 4313 5805 l 4314 5832 l + 4315 5858 l 4315 5884 l 4316 5909 l 4316 5934 l 4316 5959 l + 4316 5982 l 4315 6005 l 4314 6028 l 4313 6050 l 4311 6072 l + 4309 6094 l 4306 6115 l 4303 6137 l 4300 6160 l 4297 6183 l + 4294 6206 l 4290 6229 l 4287 6253 l 4283 6277 l 4280 6302 l + 4277 6326 l 4275 6351 l 4272 6375 l 4271 6399 l 4269 6423 l + 4269 6446 l 4269 6470 l 4269 6493 l 4270 6516 l 4272 6539 l + 4275 6563 l 4278 6584 l 4282 6606 l 4287 6629 l 4292 6653 l + 4297 6677 l 4304 6702 l 4310 6728 l 4318 6755 l 4325 6782 l + 4333 6810 l 4340 6839 l 4348 6868 l 4356 6897 l 4364 6926 l + 4371 6955 l 4378 6984 l 4384 7012 l 4390 7040 l 4396 7068 l + 4401 7095 l 4405 7122 l 4408 7148 l 4411 7174 l 4413 7200 l + 4414 7226 l 4414 7252 l 4413 7278 l 4412 7305 l 4410 7332 l + 4408 7360 l 4404 7388 l 4401 7416 l 4396 7445 l 4391 7474 l + 4386 7503 l 4381 7532 l 4375 7561 l 4369 7590 l 4362 7618 l + 4356 7645 l 4350 7672 l 4344 7698 l 4338 7723 l 4332 7747 l + 4327 7771 l 4322 7794 l 4317 7816 l 4313 7838 l 4308 7861 l + 4304 7884 l 4300 7907 l 4297 7930 l 4294 7954 l 4291 7979 l + 4289 8005 l 4287 8032 l 4285 8061 l 4283 8091 l 4281 8122 l + 4280 8154 l 4279 8186 l 4278 8217 l 4277 8246 l 4276 8270 l + 4276 8291 l 4275 8306 l 4275 8317 l 4275 8322 l + 4275 8325 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 7875 5175 m 7874 5178 l 7872 5186 l 7868 5199 l 7863 5218 l 7856 5243 l + 7848 5273 l 7839 5306 l 7831 5341 l 7823 5375 l 7815 5409 l + 7809 5442 l 7804 5472 l 7800 5501 l 7797 5528 l 7795 5554 l + 7795 5578 l 7795 5602 l 7797 5626 l 7800 5650 l 7803 5670 l + 7807 5691 l 7812 5712 l 7817 5734 l 7822 5756 l 7829 5779 l + 7835 5803 l 7843 5828 l 7850 5854 l 7858 5880 l 7865 5907 l + 7873 5934 l 7881 5961 l 7889 5989 l 7896 6017 l 7903 6045 l + 7909 6072 l 7915 6100 l 7921 6127 l 7926 6155 l 7930 6182 l + 7933 6208 l 7936 6235 l 7938 6263 l 7938 6286 l 7939 6310 l + 7939 6334 l 7938 6359 l 7937 6385 l 7935 6411 l 7933 6438 l + 7931 6466 l 7928 6494 l 7925 6523 l 7922 6552 l 7918 6582 l + 7915 6612 l 7911 6643 l 7907 6673 l 7903 6704 l 7899 6735 l + 7896 6765 l 7892 6795 l 7889 6825 l 7886 6855 l 7883 6884 l + 7881 6912 l 7879 6941 l 7877 6968 l 7876 6996 l 7875 7023 l + 7875 7050 l 7875 7079 l 7876 7108 l 7878 7138 l 7879 7168 l + 7882 7198 l 7885 7229 l 7888 7261 l 7892 7292 l 7896 7324 l + 7900 7357 l 7905 7389 l 7909 7422 l 7914 7454 l 7919 7486 l + 7924 7517 l 7929 7548 l 7934 7579 l 7938 7608 l 7943 7637 l + 7947 7665 l 7950 7691 l 7954 7717 l 7956 7742 l 7959 7766 l + 7961 7790 l 7963 7813 l 7964 7839 l 7964 7864 l 7964 7890 l + 7963 7915 l 7961 7941 l 7958 7968 l 7954 7995 l 7949 8024 l + 7943 8054 l 7937 8086 l 7930 8118 l 7922 8151 l 7914 8184 l + 7905 8215 l 7898 8244 l 7891 8270 l 7885 8290 l 7881 8306 l + 7877 8317 l 7876 8322 l + 7875 8325 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 7125 5175 m 7124 5178 l 7120 5185 l 7115 5197 l 7108 5214 l 7098 5236 l + 7088 5260 l 7077 5287 l 7066 5314 l 7056 5341 l 7047 5367 l + 7039 5391 l 7032 5415 l 7026 5437 l 7022 5459 l 7018 5481 l + 7015 5502 l 7013 5525 l 7011 5544 l 7010 5564 l 7009 5584 l + 7009 5606 l 7009 5628 l 7009 5651 l 7010 5676 l 7010 5700 l + 7011 5726 l 7012 5752 l 7013 5778 l 7013 5805 l 7014 5832 l + 7015 5858 l 7015 5884 l 7016 5909 l 7016 5934 l 7016 5959 l + 7016 5982 l 7015 6005 l 7014 6028 l 7013 6050 l 7011 6072 l + 7009 6094 l 7006 6115 l 7003 6137 l 7000 6160 l 6997 6183 l + 6994 6206 l 6990 6229 l 6987 6253 l 6983 6277 l 6980 6302 l + 6977 6326 l 6975 6351 l 6972 6375 l 6971 6399 l 6969 6423 l + 6969 6446 l 6969 6470 l 6969 6493 l 6970 6516 l 6972 6539 l + 6975 6563 l 6978 6584 l 6982 6606 l 6987 6629 l 6992 6653 l + 6997 6677 l 7004 6702 l 7010 6728 l 7018 6755 l 7025 6782 l + 7033 6810 l 7040 6839 l 7048 6868 l 7056 6897 l 7064 6926 l + 7071 6955 l 7078 6984 l 7084 7012 l 7090 7040 l 7096 7068 l + 7101 7095 l 7105 7122 l 7108 7148 l 7111 7174 l 7113 7200 l + 7114 7226 l 7114 7252 l 7113 7278 l 7112 7305 l 7110 7332 l + 7108 7360 l 7104 7388 l 7101 7416 l 7096 7445 l 7091 7474 l + 7086 7503 l 7081 7532 l 7075 7561 l 7069 7590 l 7062 7618 l + 7056 7645 l 7050 7672 l 7044 7698 l 7038 7723 l 7032 7747 l + 7027 7771 l 7022 7794 l 7017 7816 l 7013 7838 l 7008 7861 l + 7004 7884 l 7000 7907 l 6997 7930 l 6994 7954 l 6991 7979 l + 6989 8005 l 6987 8032 l 6985 8061 l 6983 8091 l 6981 8122 l + 6980 8154 l 6979 8186 l 6978 8217 l 6977 8246 l 6976 8270 l + 6976 8291 l 6975 8306 l 6975 8317 l 6975 8322 l + 6975 8325 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 10575 5175 m 10574 5178 l 10572 5186 l 10568 5199 l 10563 5218 l 10556 5243 l + 10548 5273 l 10539 5306 l 10531 5341 l 10523 5375 l 10515 5409 l + 10509 5442 l 10504 5472 l 10500 5501 l 10497 5528 l 10495 5554 l + 10495 5578 l 10495 5602 l 10497 5626 l 10500 5650 l 10503 5670 l + 10507 5691 l 10512 5712 l 10517 5734 l 10522 5756 l 10529 5779 l + 10535 5803 l 10543 5828 l 10550 5854 l 10558 5880 l 10565 5907 l + 10573 5934 l 10581 5961 l 10589 5989 l 10596 6017 l 10603 6045 l + 10609 6072 l 10615 6100 l 10621 6127 l 10626 6155 l 10630 6182 l + 10633 6208 l 10636 6235 l 10638 6263 l 10638 6286 l 10639 6310 l + 10639 6334 l 10638 6359 l 10637 6385 l 10635 6411 l 10633 6438 l + 10631 6466 l 10628 6494 l 10625 6523 l 10622 6552 l 10618 6582 l + 10615 6612 l 10611 6643 l 10607 6673 l 10603 6704 l 10599 6735 l + 10596 6765 l 10592 6795 l 10589 6825 l 10586 6855 l 10583 6884 l + 10581 6912 l 10579 6941 l 10577 6968 l 10576 6996 l 10575 7023 l + 10575 7050 l 10575 7079 l 10576 7108 l 10578 7138 l 10579 7168 l + 10582 7198 l 10585 7229 l 10588 7261 l 10592 7292 l 10596 7324 l + 10600 7357 l 10605 7389 l 10609 7422 l 10614 7454 l 10619 7486 l + 10624 7517 l 10629 7548 l 10634 7579 l 10638 7608 l 10643 7637 l + 10647 7665 l 10650 7691 l 10654 7717 l 10656 7742 l 10659 7766 l + 10661 7790 l 10663 7813 l 10664 7839 l 10664 7864 l 10664 7890 l + 10663 7915 l 10661 7941 l 10658 7968 l 10654 7995 l 10649 8024 l + 10643 8054 l 10637 8086 l 10630 8118 l 10622 8151 l 10614 8184 l + 10605 8215 l 10598 8244 l 10591 8270 l 10585 8290 l 10581 8306 l + 10577 8317 l 10576 8322 l + 10575 8325 l gs col0 s gr [] 0 sd +/Times-Roman ff 240.00 scf sf +150 4731 m +gs 1 -1 sc (Local data) col7 sh gr +% here ends figure; +% +% here starts figure with depth 35 +/Times-Roman ff 240.00 scf sf +3825 4731 m +gs 1 -1 sc (0) col7 sh gr +/Times-Roman ff 240.00 scf sf +7425 4731 m +gs 1 -1 sc (1) col7 sh gr +/Times-Roman ff 240.00 scf sf +11025 4731 m +gs 1 -1 sc (2) col7 sh gr +% here ends figure; +% +% here starts figure with depth 20 +/Courier ff 240.00 scf sf +300 1425 m +gs 1 -1 sc (vertglbnbr) col0 sh gr +% Polyline +0 slj +0 slc +7.500 slw + [15 45] 45 sd +n 5100 13200 m 5400 13200 l 5400 13500 l 5100 13500 l + cp gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5400 13200 m + 5100 13500 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5100 13200 m + 5400 13500 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 8400 13200 m 8700 13200 l 8700 13500 l 8400 13500 l + cp gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 8700 13200 m + 8400 13500 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 8400 13200 m + 8700 13500 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5100 12600 m 5400 12600 l 5400 12900 l 5100 12900 l + cp gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5400 12600 m + 5100 12900 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5100 12600 m + 5400 12900 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 8400 12600 m 8700 12600 l 8700 12900 l 8400 12900 l + cp gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 8700 12600 m + 8400 12900 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 8400 12600 m + 8700 12900 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 12300 12600 m 12600 12600 l 12600 12900 l 12300 12900 l + cp gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 12600 12600 m + 12300 12900 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 12300 12600 m + 12600 12900 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 12300 13200 m 12600 13200 l 12600 13500 l 12300 13500 l + cp gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 12600 13200 m + 12300 13500 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 12300 13200 m + 12600 13500 l gs col0 s gr [] 0 sd +/Courier ff 240.00 scf sf +300 9225 m +gs 1 -1 sc (vertlocnbr) col0 sh gr +% Polyline +gs clippath +3120 12448 m 3120 12615 l 3180 12615 l 3180 12448 l 3180 12448 l 3150 12568 l 3120 12448 l cp +eoclip +n 2850 11700 m 2850 12225 l 3150 12225 l + 3150 12600 l gs col0 s gr gr + +% arrowhead +n 3120 12448 m 3150 12568 l 3180 12448 l 3120 12448 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +7620 12448 m 7620 12615 l 7680 12615 l 7680 12448 l 7680 12448 l 7650 12568 l 7620 12448 l cp +eoclip +n 6450 11700 m 6450 12150 l 7650 12150 l + 7650 12600 l gs col0 s gr gr + +% arrowhead +n 7620 12448 m 7650 12568 l 7680 12448 l 7620 12448 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +8520 12448 m 8520 12615 l 8580 12615 l 8580 12448 l 8580 12448 l 8550 12568 l 8520 12448 l cp +eoclip +n 6750 11700 m 6750 12075 l 8550 12075 l + 8550 12600 l gs col0 s gr gr + +% arrowhead +n 8520 12448 m 8550 12568 l 8580 12448 l 8520 12448 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4320 12448 m 4320 12615 l 4380 12615 l 4380 12448 l 4380 12448 l 4350 12568 l 4320 12448 l cp +eoclip +n 3150 11700 m 3150 12150 l 4350 12150 l + 4350 12600 l gs col0 s gr gr + +% arrowhead +n 4320 12448 m 4350 12568 l 4380 12448 l 4320 12448 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +5220 12448 m 5220 12615 l 5280 12615 l 5280 12448 l 5280 12448 l 5250 12568 l 5220 12448 l cp +eoclip +n 3450 11625 m 3450 12075 l 5250 12075 l + 5250 12600 l gs col0 s gr gr + +% arrowhead +n 5220 12448 m 5250 12568 l 5280 12448 l 5220 12448 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +10620 12448 m 10620 12615 l 10680 12615 l 10680 12448 l 10680 12448 l 10650 12568 l 10620 12448 l cp +eoclip +n 10050 11700 m 10050 12225 l 10650 12225 l + 10650 12600 l gs col0 s gr gr + +% arrowhead +n 10620 12448 m 10650 12568 l 10680 12448 l 10620 12448 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +11220 12448 m 11220 12615 l 11280 12615 l 11280 12448 l 11280 12448 l 11250 12568 l 11220 12448 l cp +eoclip +n 10350 11700 m 10350 12150 l 11250 12150 l + 11250 12600 l gs col0 s gr gr + +% arrowhead +n 11220 12448 m 11250 12568 l 11280 12448 l 11220 12448 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +12420 12448 m 12420 12615 l 12480 12615 l 12480 12448 l 12480 12448 l 12450 12568 l 12420 12448 l cp +eoclip +n 10650 11700 m 10650 12075 l 12450 12075 l + 12450 12600 l gs col0 s gr gr + +% arrowhead +n 12420 12448 m 12450 12568 l 12480 12448 l 12420 12448 l cp gs 0.00 setgray ef gr col0 s +/Courier ff 240.00 scf sf +300 11025 m +gs 1 -1 sc (vendloctab) col0 sh gr +/Courier ff 240.00 scf sf +300 11625 m +gs 1 -1 sc (vertloctab) col0 sh gr +/Courier ff 240.00 scf sf +300 9825 m +gs 1 -1 sc (vertgstnbr) col0 sh gr +/Courier ff 240.00 scf sf +300 10425 m +gs 1 -1 sc (edgelocnbr) col0 sh gr +/Courier ff 240.00 scf sf +300 13425 m +gs 1 -1 sc (edgegsttab) col0 sh gr +/Courier ff 240.00 scf sf +300 12825 m +gs 1 -1 sc (edgeloctab) col0 sh gr +/Courier ff 240.00 scf sf +300 825 m +gs 1 -1 sc (baseval) col0 sh gr +/Courier ff 240.00 scf sf +300 2025 m +gs 1 -1 sc (edgeglbnbr) col0 sh gr +/Courier ff 240.00 scf sf +300 3225 m +gs 1 -1 sc (proccnttab) col0 sh gr +/Courier ff 240.00 scf sf +300 2625 m +gs 1 -1 sc (procglbnbr) col0 sh gr +/Courier ff 240.00 scf sf +300 3825 m +gs 1 -1 sc (procvrttab) col0 sh gr +% here ends figure; +% +% here starts figure with depth 15 +% Polyline +0 slj +0 slc +7.500 slw +n 2400 600 m 2700 600 l 2700 900 l 2400 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 1800 m 2700 1800 l 2700 2100 l 2400 2100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2425 2040 m +gs 1 -1 sc (26) col0 sh gr +% Polyline +n 2400 3000 m 2700 3000 l 2700 3300 l 2400 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 3000 m 3300 3000 l 3300 3300 l 3000 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 3000 m 3000 3000 l 3000 3300 l 2700 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 2400 m 2700 2400 l 2700 2700 l 2400 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 1200 m 2700 1200 l 2700 1500 l 2400 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 3600 m 3300 3600 l 3300 3900 l 3000 3900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 3600 m 3000 3600 l 3000 3900 l 2700 3900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3300 3600 m 3600 3600 l 3600 3900 l 3300 3900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 3600 m 2700 3600 l 2700 3900 l 2400 3900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 11400 m 2700 11400 l 2700 11700 l 2400 11700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 11400 m 3000 11400 l 3000 11700 l 2700 11700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 11400 m 3300 11400 l 3300 11700 l 3000 11700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3300 11400 m 3600 11400 l 3600 11700 l 3300 11700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3325 11640 m +gs 1 -1 sc (10) col0 sh gr +% Polyline +n 2400 9600 m 2700 9600 l 2700 9900 l 2400 9900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 10200 m 2700 10200 l 2700 10500 l 2400 10500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6000 11400 m 6300 11400 l 6300 11700 l 6000 11700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6000 9600 m 6300 9600 l 6300 9900 l 6000 9900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6600 11400 m 6900 11400 l 6900 11700 l 6600 11700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6000 10200 m 6300 10200 l 6300 10500 l 6000 10500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 9600 10200 m 9900 10200 l 9900 10500 l 9600 10500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 9600 11400 m 9900 11400 l 9900 11700 l 9600 11700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 9900 11400 m 10200 11400 l 10200 11700 l 9900 11700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +10000 11640 m +gs 1 -1 sc (4) col0 sh gr +% Polyline +n 9600 9600 m 9900 9600 l 9900 9900 l 9600 9900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 10200 11400 m 10500 11400 l 10500 11700 l 10200 11700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 10500 11400 m 10800 11400 l 10800 11700 l 10500 11700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +10525 11640 m +gs 1 -1 sc (10) col0 sh gr +% Polyline +n 6300 11400 m 6600 11400 l 6600 11700 l 6300 11700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 13200 m 2700 13200 l 2700 13500 l 2400 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 13200 m 3000 13200 l 3000 13500 l 2700 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 13200 m 3300 13200 l 3300 13500 l 3000 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3300 13200 m 3600 13200 l 3600 13500 l 3300 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3600 13200 m 3900 13200 l 3900 13500 l 3600 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3900 13200 m 4200 13200 l 4200 13500 l 3900 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6000 13200 m 6300 13200 l 6300 13500 l 6000 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6300 13200 m 6600 13200 l 6600 13500 l 6300 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6600 13200 m 6900 13200 l 6900 13500 l 6600 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6900 13200 m 7200 13200 l 7200 13500 l 6900 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4200 13200 m 4500 13200 l 4500 13500 l 4200 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4500 13200 m 4800 13200 l 4800 13500 l 4500 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4800 13200 m 5100 13200 l 5100 13500 l 4800 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 9600 13200 m 9900 13200 l 9900 13500 l 9600 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 9900 13200 m 10200 13200 l 10200 13500 l 9900 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 10200 13200 m 10500 13200 l 10500 13500 l 10200 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 10500 13200 m 10800 13200 l 10800 13500 l 10500 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 10800 13200 m 11100 13200 l 11100 13500 l 10800 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 11100 13200 m 11400 13200 l 11400 13500 l 11100 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +11200 13440 m +gs 1 -1 sc (4) col0 sh gr +% Polyline +n 11400 13200 m 11700 13200 l 11700 13500 l 11400 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 11700 13200 m 12000 13200 l 12000 13500 l 11700 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 12000 13200 m 12300 13200 l 12300 13500 l 12000 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7800 13200 m 8100 13200 l 8100 13500 l 7800 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7500 13200 m 7800 13200 l 7800 13500 l 7500 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7200 13200 m 7500 13200 l 7500 13500 l 7200 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8100 13200 m 8400 13200 l 8400 13500 l 8100 13500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 12600 m 2700 12600 l 2700 12900 l 2400 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 12600 m 3000 12600 l 3000 12900 l 2700 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 12600 m 3300 12600 l 3300 12900 l 3000 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3300 12600 m 3600 12600 l 3600 12900 l 3300 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3600 12600 m 3900 12600 l 3900 12900 l 3600 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3900 12600 m 4200 12600 l 4200 12900 l 3900 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6000 12600 m 6300 12600 l 6300 12900 l 6000 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6300 12600 m 6600 12600 l 6600 12900 l 6300 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6600 12600 m 6900 12600 l 6900 12900 l 6600 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6900 12600 m 7200 12600 l 7200 12900 l 6900 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4200 12600 m 4500 12600 l 4500 12900 l 4200 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4500 12600 m 4800 12600 l 4800 12900 l 4500 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4800 12600 m 5100 12600 l 5100 12900 l 4800 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 9600 12600 m 9900 12600 l 9900 12900 l 9600 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 9900 12600 m 10200 12600 l 10200 12900 l 9900 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 10200 12600 m 10500 12600 l 10500 12900 l 10200 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 10500 12600 m 10800 12600 l 10800 12900 l 10500 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 10800 12600 m 11100 12600 l 11100 12900 l 10800 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 11100 12600 m 11400 12600 l 11400 12900 l 11100 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +11200 12840 m +gs 1 -1 sc (4) col0 sh gr +% Polyline +n 11400 12600 m 11700 12600 l 11700 12900 l 11400 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 11700 12600 m 12000 12600 l 12000 12900 l 11700 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 12000 12600 m 12300 12600 l 12300 12900 l 12000 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7800 12600 m 8100 12600 l 8100 12900 l 7800 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7500 12600 m 7800 12600 l 7800 12900 l 7500 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7200 12600 m 7500 12600 l 7500 12900 l 7200 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8100 12600 m 8400 12600 l 8400 12900 l 8100 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 9000 m 2700 9000 l 2700 9300 l 2400 9300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6000 9000 m 6300 9000 l 6300 9300 l 6000 9300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 9600 9000 m 9900 9000 l 9900 9300 l 9600 9300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +gs clippath +2520 12448 m 2520 12615 l 2580 12615 l 2580 12448 l 2580 12448 l 2550 12568 l 2520 12448 l cp +eoclip +n 2550 11700 m + 2550 12600 l gs col0 s gr gr + +% arrowhead +n 2520 12448 m 2550 12568 l 2580 12448 l 2520 12448 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6120 12448 m 6120 12615 l 6180 12615 l 6180 12448 l 6180 12448 l 6150 12568 l 6120 12448 l cp +eoclip +n 6150 11700 m + 6150 12600 l gs col0 s gr gr + +% arrowhead +n 6120 12448 m 6150 12568 l 6180 12448 l 6120 12448 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +9720 12448 m 9720 12615 l 9780 12615 l 9780 12448 l 9780 12448 l 9750 12568 l 9720 12448 l cp +eoclip +n 9750 11700 m + 9750 12600 l gs col0 s gr gr + +% arrowhead +n 9720 12448 m 9750 12568 l 9780 12448 l 9720 12448 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +2670 11248 m 2670 11415 l 2730 11415 l 2730 11248 l 2730 11248 l 2700 11368 l 2670 11248 l cp +eoclip +n 2400 10950 m 2700 10950 l + 2700 11400 l gs col0 s gr gr + +% arrowhead +n 2670 11248 m 2700 11368 l 2730 11248 l 2670 11248 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6270 11248 m 6270 11415 l 6330 11415 l 6330 11248 l 6330 11248 l 6300 11368 l 6270 11248 l cp +eoclip +n 6000 10950 m 6300 10950 l + 6300 11400 l gs col0 s gr gr + +% arrowhead +n 6270 11248 m 6300 11368 l 6330 11248 l 6270 11248 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +9870 11248 m 9870 11415 l 9930 11415 l 9930 11248 l 9930 11248 l 9900 11368 l 9870 11248 l cp +eoclip +n 9600 10950 m 9900 10950 l + 9900 11400 l gs col0 s gr gr + +% arrowhead +n 9870 11248 m 9900 11368 l 9930 11248 l 9870 11248 l cp gs 0.00 setgray ef gr col0 s +% here ends figure; +% +% here starts figure with depth 12 +% Ellipse +7.500 slw +n 7500 2100 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 7500 3900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 8400 3000 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 8400 1200 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6600 3000 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6600 1200 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 5700 2100 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 9300 2100 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 3900 7200 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 3900 5400 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 3000 6300 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 4800 6300 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 4800 8100 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 7500 6300 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 7500 8100 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6600 5400 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 6600 7200 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 8400 5400 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 8400 7200 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 11100 7200 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 11100 5400 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 12000 6300 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 10200 6300 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 10200 8100 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% here ends figure; +% +% here starts figure with depth 10 +/Times-Roman ff 240.00 scf sf +7450 2190 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +7450 3990 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +8350 1290 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +6550 3090 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +6550 1290 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +5650 2190 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +3850 7290 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +3850 5490 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +2950 6390 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +4750 6390 m +gs 1 -1 sc (4) col7 sh gr +/Times-Roman ff 240.00 scf sf +4750 8190 m +gs 1 -1 sc (5) col7 sh gr +/Times-Roman ff 240.00 scf sf +7450 6390 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +7450 8190 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +6550 5490 m +gs 1 -1 sc (4) col7 sh gr +/Times-Roman ff 240.00 scf sf +6550 7290 m +gs 1 -1 sc (3) col7 sh gr +/Times-Roman ff 240.00 scf sf +8350 5490 m +gs 1 -1 sc (5) col7 sh gr +/Times-Roman ff 240.00 scf sf +11050 5490 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +10150 6390 m +gs 1 -1 sc (4) col7 sh gr +/Times-Roman ff 240.00 scf sf +10150 8190 m +gs 1 -1 sc (5) col7 sh gr +% here ends figure; +% +% here starts figure with depth 8 +/Times-Roman ff 240.00 scf sf +8350 3090 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 240.00 scf sf +9250 2190 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +8350 7290 m +gs 1 -1 sc (6) col7 sh gr +/Times-Roman ff 240.00 scf sf +11050 7290 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +11950 6390 m +gs 1 -1 sc (2) col0 sh gr +% here ends figure; +% +% here starts figure with depth 5 +/Times-Roman ff 240.00 scf sf +2500 840 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 3240 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +3100 3240 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 3240 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 2640 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 1440 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 240.00 scf sf +3100 3840 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 3840 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +3400 3840 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 3840 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 11640 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 11640 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +3100 11640 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 9840 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 10440 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman ff 240.00 scf sf +6100 11640 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +6100 9840 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +6700 11640 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman ff 240.00 scf sf +6100 10440 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 240.00 scf sf +9700 10440 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman ff 240.00 scf sf +9700 11640 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +9700 9840 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +10300 11640 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +6400 11640 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 13440 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 13440 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +3100 13440 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +3400 13440 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +3700 13440 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +4000 13440 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +6100 13440 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +6400 13440 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +6700 13440 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +7000 13440 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +4300 13440 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +4600 13440 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +4900 13440 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +9700 13440 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +10000 13440 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +10300 13440 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +10600 13440 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +10900 13440 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +11500 13440 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +11800 13440 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +12100 13440 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +7900 13440 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +7600 13440 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +7300 13440 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +8200 13440 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 12840 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 12840 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +3100 12840 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +3400 12840 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +3700 12840 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +4000 12840 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +6100 12840 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +6400 12840 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +6700 12840 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +7000 12840 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 240.00 scf sf +4300 12840 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +4600 12840 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +4900 12840 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +9700 12840 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +10000 12840 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +10300 12840 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 240.00 scf sf +10600 12840 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +10900 12840 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 240.00 scf sf +11500 12840 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +11800 12840 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +12100 12840 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +7900 12840 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +7600 12840 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 240.00 scf sf +7300 12840 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +8200 12840 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 9240 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +6100 9240 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +9700 9240 m +gs 1 -1 sc (3) col0 sh gr +% here ends figure; +$F2psEnd +rs +showpage +%%Trailer +%EOF diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/p_f_gr1.fig scotch-6.0.6/doc/src/ptscotch/p_f_gr1.fig --- scotch-6.0.4.dfsg1/doc/src/ptscotch/p_f_gr1.fig 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/p_f_gr1.fig 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,702 @@ +#FIG 3.2 Produced by xfig version 3.2.5-alpha5 +Landscape +Center +Inches +Letter +100.00 +Single +0 +1200 2 +6 0 0 12900 300 +2 2 0 1 0 0 50 -1 10 0.000 0 0 -1 0 0 5 + 12900 300 0 300 0 0 12900 0 12900 300 +4 0 7 40 -1 0 19 0.0000 4 270 1995 174 231 Duplicated data\001 +-6 +6 2400 600 2700 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 600 2700 600 2700 900 2400 900 2400 600 +4 0 0 5 0 0 16 0.0000 4 195 135 2500 840 1\001 +-6 +6 2400 1800 2700 2100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 1800 2700 1800 2700 2100 2400 2100 2400 1800 +4 0 0 15 0 0 16 0.0000 4 195 270 2425 2040 26\001 +-6 +6 2400 3000 2700 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 3000 2700 3000 2700 3300 2400 3300 2400 3000 +4 0 0 5 0 0 16 0.0000 4 195 135 2500 3240 3\001 +-6 +6 3000 3000 3300 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 3000 3300 3000 3300 3300 3000 3300 3000 3000 +4 0 0 5 0 0 16 0.0000 4 195 135 3100 3240 3\001 +-6 +6 2700 3000 3000 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 3000 3000 3000 3000 3300 2700 3300 2700 3000 +4 0 0 5 0 0 16 0.0000 4 195 135 2800 3240 2\001 +-6 +6 2400 2400 2700 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 2400 2700 2400 2700 2700 2400 2700 2400 2400 +4 0 0 5 0 0 16 0.0000 4 195 135 2500 2640 3\001 +-6 +6 300 1200 2700 1500 +6 2400 1200 2700 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 1200 2700 1200 2700 1500 2400 1500 2400 1200 +4 0 0 5 0 0 16 0.0000 4 195 135 2500 1440 8\001 +-6 +4 0 0 20 0 12 16 0.0000 4 240 1650 300 1425 vertglbnbr\001 +-6 +6 5550 975 9450 4125 +6 5550 1050 9450 4050 +6 7350 1950 7650 2250 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7500 2100 150 150 7500 2100 7650 2100 +4 0 0 10 0 0 16 0.0000 4 195 135 7450 2190 4\001 +-6 +6 7350 3750 7650 4050 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7500 3900 150 150 7500 3900 7650 3900 +4 0 0 10 0 0 16 0.0000 4 195 135 7450 3990 5\001 +-6 +6 8250 2850 8550 3150 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8400 3000 150 150 8400 3000 8550 3000 +4 0 0 8 0 0 16 0.0000 4 195 135 8350 3090 8\001 +-6 +6 8250 1050 8550 1350 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8400 1200 150 150 8400 1200 8550 1200 +4 0 0 10 0 0 16 0.0000 4 195 135 8350 1290 6\001 +-6 +6 6450 2850 6750 3150 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6600 3000 150 150 6600 3000 6750 3000 +4 0 0 10 0 0 16 0.0000 4 195 135 6550 3090 2\001 +-6 +6 6450 1050 6750 1350 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6600 1200 150 150 6600 1200 6750 1200 +4 0 0 10 0 0 16 0.0000 4 195 135 6550 1290 3\001 +-6 +6 5550 1950 5850 2250 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 5700 2100 150 150 5700 2100 5850 2100 +4 0 0 10 0 0 16 0.0000 4 195 135 5650 2190 1\001 +-6 +6 9150 1950 9450 2250 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 9300 2100 150 150 9300 2100 9450 2100 +4 0 0 8 0 0 16 0.0000 4 195 135 9250 2190 7\001 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 8400 1200 7500 2100 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 13 + 6600 1200 7500 2100 6600 3000 5700 2100 6600 1200 6600 3000 + 7500 3900 7500 2100 8400 3000 9300 2100 8400 1200 8400 3000 + 7500 3900 +-6 +3 0 2 1 0 7 40 -1 -1 3.000 0 0 0 6 + 7875 975 7725 1425 8025 2025 7800 2850 8025 3675 7875 4125 + 0.000 1.000 1.000 1.000 1.000 0.000 +3 0 2 1 0 7 40 -1 -1 3.000 0 0 0 7 + 7125 975 6975 1275 7050 1875 6900 2325 7200 3000 6975 3675 + 6975 4125 + 0.000 1.000 1.000 1.000 1.000 1.000 0.000 +-6 +6 2400 3600 3600 3900 +6 3000 3600 3300 3900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 3600 3300 3600 3300 3900 3000 3900 3000 3600 +4 0 0 5 0 0 16 0.0000 4 195 135 3100 3840 6\001 +-6 +6 2700 3600 3000 3900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 3600 3000 3600 3000 3900 2700 3900 2700 3600 +4 0 0 5 0 0 16 0.0000 4 195 135 2800 3840 4\001 +-6 +6 3300 3600 3600 3900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 3600 3600 3600 3600 3900 3300 3900 3300 3600 +4 0 0 5 0 0 16 0.0000 4 195 135 3400 3840 9\001 +-6 +6 2400 3600 2700 3900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 3600 2700 3600 2700 3900 2400 3900 2400 3600 +4 0 0 5 0 0 16 0.0000 4 195 135 2500 3840 1\001 +-6 +-6 +6 0 4500 12900 13800 +6 2850 5175 4950 8325 +6 3750 7050 4050 7350 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 3900 7200 150 150 3900 7200 4050 7200 +4 0 0 10 0 0 16 0.0000 4 195 135 3850 7290 2\001 +-6 +6 3750 5250 4050 5550 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 3900 5400 150 150 3900 5400 4050 5400 +4 0 0 10 0 0 16 0.0000 4 195 135 3850 5490 3\001 +-6 +6 2850 6150 3150 6450 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 3000 6300 150 150 3000 6300 3150 6300 +4 0 0 10 0 0 16 0.0000 4 195 135 2950 6390 1\001 +-6 +1 3 0 1 0 0 12 0 20 0.000 1 0.0000 4800 6300 150 150 4800 6300 4950 6300 +1 3 0 1 0 0 12 0 20 0.000 1 0.0000 4800 8100 150 150 4800 8100 4950 8100 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 7 + 4800 8100 3900 7200 4800 6300 3900 5400 3900 7200 3000 6300 + 3900 5400 +3 0 2 1 0 7 40 -1 -1 3.000 0 0 0 7 + 4425 5175 4275 5475 4350 6075 4200 6525 4500 7200 4275 7875 + 4275 8325 + 0.000 1.000 1.000 1.000 1.000 1.000 0.000 +4 0 7 10 0 0 16 0.0000 4 195 135 4750 6390 4\001 +4 0 7 10 0 0 16 0.0000 4 195 135 4750 8190 5\001 +-6 +6 6450 5175 8550 8325 +6 7350 6150 7650 6450 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7500 6300 150 150 7500 6300 7650 6300 +4 0 0 10 0 0 16 0.0000 4 195 135 7450 6390 1\001 +-6 +6 7350 7950 7650 8250 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7500 8100 150 150 7500 8100 7650 8100 +4 0 0 10 0 0 16 0.0000 4 195 135 7450 8190 2\001 +-6 +6 6450 5250 6750 5550 +1 3 0 1 0 0 12 0 20 0.000 1 0.0000 6600 5400 150 150 6600 5400 6750 5400 +4 0 7 10 0 0 16 0.0000 4 195 135 6550 5490 4\001 +-6 +6 6450 7050 6750 7350 +1 3 0 1 0 0 12 0 20 0.000 1 0.0000 6600 7200 150 150 6600 7200 6750 7200 +4 0 7 10 0 0 16 0.0000 4 195 135 6550 7290 3\001 +-6 +6 8250 5250 8550 5550 +1 3 0 1 0 0 12 0 20 0.000 1 0.0000 8400 5400 150 150 8400 5400 8550 5400 +4 0 7 10 0 0 16 0.0000 4 195 135 8350 5490 5\001 +-6 +6 8250 7050 8550 7350 +1 3 0 1 0 0 12 0 20 0.000 1 0.0000 8400 7200 150 150 8400 7200 8550 7200 +4 0 7 8 0 0 16 0.0000 4 195 135 8350 7290 6\001 +-6 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 7 + 6600 5400 7500 6300 6600 7200 7500 8100 7500 6300 8400 7200 + 7500 8100 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 7500 6300 8400 5400 +3 0 2 1 0 7 40 -1 -1 3.000 0 0 0 6 + 7875 5175 7725 5625 8025 6225 7800 7050 8025 7875 7875 8325 + 0.000 1.000 1.000 1.000 1.000 0.000 +3 0 2 1 0 7 40 -1 -1 3.000 0 0 0 7 + 7125 5175 6975 5475 7050 6075 6900 6525 7200 7200 6975 7875 + 6975 8325 + 0.000 1.000 1.000 1.000 1.000 1.000 0.000 +-6 +6 10050 5175 12150 8325 +6 10950 7050 11250 7350 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 11100 7200 150 150 11100 7200 11250 7200 +4 0 0 8 0 0 16 0.0000 4 195 135 11050 7290 3\001 +-6 +6 10950 5250 11250 5550 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 11100 5400 150 150 11100 5400 11250 5400 +4 0 0 10 0 0 16 0.0000 4 195 135 11050 5490 1\001 +-6 +6 11850 6150 12150 6450 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 12000 6300 150 150 12000 6300 12150 6300 +4 0 0 8 0 0 16 0.0000 4 195 135 11950 6390 2\001 +-6 +1 3 0 1 0 0 12 0 20 0.000 1 0.0000 10200 6300 150 150 10200 6300 10350 6300 +1 3 0 1 0 0 12 0 20 0.000 1 0.0000 10200 8100 150 150 10200 8100 10350 8100 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 7 + 10200 8100 11100 7200 10200 6300 11100 5400 11100 7200 12000 6300 + 11100 5400 +3 0 2 1 0 7 40 -1 -1 3.000 0 0 0 6 + 10575 5175 10425 5625 10725 6225 10500 7050 10725 7875 10575 8325 + 0.000 1.000 1.000 1.000 1.000 0.000 +4 0 7 10 0 0 16 0.0000 4 195 135 10150 6390 4\001 +4 0 7 10 0 0 16 0.0000 4 195 135 10150 8190 5\001 +-6 +6 3750 4500 4050 4800 +2 2 0 0 -1 0 55 -1 10 0.000 0 0 -1 0 0 5 + 4050 4800 3750 4800 3750 4500 4050 4500 4050 4800 +4 0 7 35 -1 0 16 0.0000 4 195 135 3825 4731 0\001 +-6 +6 7350 4500 7650 4800 +2 2 0 0 -1 0 55 -1 10 0.000 0 0 -1 0 0 5 + 7650 4800 7350 4800 7350 4500 7650 4500 7650 4800 +4 0 7 35 -1 0 16 0.0000 4 195 135 7425 4731 1\001 +-6 +6 10950 4500 11250 4800 +2 2 0 0 -1 0 55 -1 10 0.000 0 0 -1 0 0 5 + 11250 4800 10950 4800 10950 4500 11250 4500 11250 4800 +4 0 7 35 -1 0 16 0.0000 4 195 135 11025 4731 2\001 +-6 +6 300 9000 12600 13500 +6 2400 11400 2700 11700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 11400 2700 11400 2700 11700 2400 11700 2400 11400 +4 0 0 5 0 0 16 0.0000 4 195 135 2500 11640 1\001 +-6 +6 2700 11400 3000 11700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 11400 3000 11400 3000 11700 2700 11700 2700 11400 +4 0 0 5 0 0 16 0.0000 4 195 135 2800 11640 3\001 +-6 +6 3000 11400 3300 11700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 11400 3300 11400 3300 11700 3000 11700 3000 11400 +4 0 0 5 0 0 16 0.0000 4 195 135 3100 11640 7\001 +-6 +6 3300 11400 3600 11700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 11400 3600 11400 3600 11700 3300 11700 3300 11400 +4 0 0 15 0 0 16 0.0000 4 195 270 3325 11640 10\001 +-6 +6 2400 9600 2700 9900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 9600 2700 9600 2700 9900 2400 9900 2400 9600 +4 0 0 5 0 0 16 0.0000 4 195 135 2500 9840 5\001 +-6 +6 2400 10200 2700 10500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 10200 2700 10200 2700 10500 2400 10500 2400 10200 +4 0 0 5 0 0 16 0.0000 4 195 135 2500 10440 9\001 +-6 +6 6000 11400 6300 11700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6000 11400 6300 11400 6300 11700 6000 11700 6000 11400 +4 0 0 5 0 0 16 0.0000 4 195 135 6100 11640 1\001 +-6 +6 6000 9600 6300 9900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6000 9600 6300 9600 6300 9900 6000 9900 6000 9600 +4 0 0 5 0 0 16 0.0000 4 195 135 6100 9840 6\001 +-6 +6 6600 11400 6900 11700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6600 11400 6900 11400 6900 11700 6600 11700 6600 11400 +4 0 0 5 0 0 16 0.0000 4 195 135 6700 11640 9\001 +-6 +6 6000 10200 6300 10500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6000 10200 6300 10200 6300 10500 6000 10500 6000 10200 +4 0 0 5 0 0 16 0.0000 4 195 135 6100 10440 8\001 +-6 +6 9600 10200 9900 10500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9600 10200 9900 10200 9900 10500 9600 10500 9600 10200 +4 0 0 5 0 0 16 0.0000 4 195 135 9700 10440 9\001 +-6 +6 9600 11400 9900 11700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9600 11400 9900 11400 9900 11700 9600 11700 9600 11400 +4 0 0 5 0 0 16 0.0000 4 195 135 9700 11640 1\001 +-6 +6 9900 11400 10200 11700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9900 11400 10200 11400 10200 11700 9900 11700 9900 11400 +4 0 0 15 0 0 16 0.0000 4 195 135 10000 11640 4\001 +-6 +6 9600 9600 9900 9900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9600 9600 9900 9600 9900 9900 9600 9900 9600 9600 +4 0 0 5 0 0 16 0.0000 4 195 135 9700 9840 5\001 +-6 +6 10200 11400 10500 11700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 10200 11400 10500 11400 10500 11700 10200 11700 10200 11400 +4 0 0 5 0 0 16 0.0000 4 195 135 10300 11640 6\001 +-6 +6 10500 11400 10800 11700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 10500 11400 10800 11400 10800 11700 10500 11700 10500 11400 +4 0 0 15 0 0 16 0.0000 4 195 270 10525 11640 10\001 +-6 +6 6300 11400 6600 11700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6300 11400 6600 11400 6600 11700 6300 11700 6300 11400 +4 0 0 5 0 0 16 0.0000 4 195 135 6400 11640 6\001 +-6 +6 2400 13200 2700 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 13200 2700 13200 2700 13500 2400 13500 2400 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 2500 13440 3\001 +-6 +6 2700 13200 3000 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 13200 3000 13200 3000 13500 2700 13500 2700 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 2800 13440 2\001 +-6 +6 3000 13200 3300 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 13200 3300 13200 3300 13500 3000 13500 3000 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 3100 13440 3\001 +-6 +6 3300 13200 3600 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 13200 3600 13200 3600 13500 3300 13500 3300 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 3400 13440 5\001 +-6 +6 3600 13200 3900 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 13200 3900 13200 3900 13500 3600 13500 3600 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 3700 13440 4\001 +-6 +6 3900 13200 4200 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3900 13200 4200 13200 4200 13500 3900 13500 3900 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 4000 13440 1\001 +-6 +6 6000 13200 6300 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6000 13200 6300 13200 6300 13500 6000 13500 6000 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 6100 13440 4\001 +-6 +6 6300 13200 6600 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6300 13200 6600 13200 6600 13500 6300 13500 6300 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 6400 13440 5\001 +-6 +6 6600 13200 6900 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6600 13200 6900 13200 6900 13500 6600 13500 6600 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 6700 13440 3\001 +-6 +6 6900 13200 7200 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6900 13200 7200 13200 7200 13500 6900 13500 6900 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 7000 13440 6\001 +-6 +6 4200 13200 4500 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4200 13200 4500 13200 4500 13500 4200 13500 4200 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 4300 13440 4\001 +-6 +6 4500 13200 4800 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4500 13200 4800 13200 4800 13500 4500 13500 4500 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 4600 13440 2\001 +-6 +6 4800 13200 5100 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4800 13200 5100 13200 5100 13500 4800 13500 4800 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 4900 13440 1\001 +-6 +6 5100 13200 5400 13500 +2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 + 5100 13200 5400 13200 5400 13500 5100 13500 5100 13200 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 5400 13200 5100 13500 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 5100 13200 5400 13500 +-6 +6 9600 13200 9900 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9600 13200 9900 13200 9900 13500 9600 13500 9600 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 9700 13440 4\001 +-6 +6 9900 13200 10200 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9900 13200 10200 13200 10200 13500 9900 13500 9900 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 10000 13440 2\001 +-6 +6 10200 13200 10500 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 10200 13200 10500 13200 10500 13500 10200 13500 10200 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 10300 13440 3\001 +-6 +6 10500 13200 10800 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 10500 13200 10800 13200 10800 13500 10500 13500 10500 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 10600 13440 1\001 +-6 +6 10800 13200 11100 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 10800 13200 11100 13200 11100 13500 10800 13500 10800 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 10900 13440 3\001 +-6 +6 11100 13200 11400 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 11100 13200 11400 13200 11400 13500 11100 13500 11100 13200 +4 0 0 15 0 0 16 0.0000 4 195 135 11200 13440 4\001 +-6 +6 11400 13200 11700 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 11400 13200 11700 13200 11700 13500 11400 13500 11400 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 11500 13440 1\001 +-6 +6 11700 13200 12000 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 11700 13200 12000 13200 12000 13500 11700 13500 11700 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 11800 13440 2\001 +-6 +6 12000 13200 12300 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 12000 13200 12300 13200 12300 13500 12000 13500 12000 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 12100 13440 5\001 +-6 +6 7800 13200 8100 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7800 13200 8100 13200 8100 13500 7800 13500 7800 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 7900 13440 3\001 +-6 +6 7500 13200 7800 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7500 13200 7800 13200 7800 13500 7500 13500 7500 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 7600 13440 6\001 +-6 +6 8400 13200 8700 13500 +2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 + 8400 13200 8700 13200 8700 13500 8400 13500 8400 13200 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 8700 13200 8400 13500 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 8400 13200 8700 13500 +-6 +6 7200 13200 7500 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7200 13200 7500 13200 7500 13500 7200 13500 7200 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 7300 13440 2\001 +-6 +6 8100 13200 8400 13500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8100 13200 8400 13200 8400 13500 8100 13500 8100 13200 +4 0 0 5 0 0 16 0.0000 4 195 135 8200 13440 1\001 +-6 +6 2400 12600 2700 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 12600 2700 12600 2700 12900 2400 12900 2400 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 2500 12840 3\001 +-6 +6 2700 12600 3000 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 12600 3000 12600 3000 12900 2700 12900 2700 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 2800 12840 2\001 +-6 +6 3000 12600 3300 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 12600 3300 12600 3300 12900 3000 12900 3000 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 3100 12840 3\001 +-6 +6 3300 12600 3600 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 12600 3600 12600 3600 12900 3300 12900 3300 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 3400 12840 5\001 +-6 +6 3600 12600 3900 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 12600 3900 12600 3900 12900 3600 12900 3600 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 3700 12840 4\001 +-6 +6 3900 12600 4200 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3900 12600 4200 12600 4200 12900 3900 12900 3900 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 4000 12840 1\001 +-6 +6 6000 12600 6300 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6000 12600 6300 12600 6300 12900 6000 12900 6000 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 6100 12840 3\001 +-6 +6 6300 12600 6600 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6300 12600 6600 12600 6600 12900 6300 12900 6300 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 6400 12840 6\001 +-6 +6 6600 12600 6900 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6600 12600 6900 12600 6900 12900 6600 12900 6600 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 6700 12840 2\001 +-6 +6 6900 12600 7200 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6900 12600 7200 12600 7200 12900 6900 12900 6900 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 7000 12840 8\001 +-6 +6 4200 12600 4500 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4200 12600 4500 12600 4500 12900 4200 12900 4200 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 4300 12840 4\001 +-6 +6 4500 12600 4800 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4500 12600 4800 12600 4800 12900 4500 12900 4500 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 4600 12840 2\001 +-6 +6 4800 12600 5100 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4800 12600 5100 12600 5100 12900 4800 12900 4800 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 4900 12840 1\001 +-6 +6 5100 12600 5400 12900 +2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 + 5100 12600 5400 12600 5400 12900 5100 12900 5100 12600 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 5400 12600 5100 12900 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 5100 12600 5400 12900 +-6 +6 9600 12600 9900 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9600 12600 9900 12600 9900 12900 9600 12900 9600 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 9700 12840 4\001 +-6 +6 9900 12600 10200 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9900 12600 10200 12600 10200 12900 9900 12900 9900 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 10000 12840 7\001 +-6 +6 10200 12600 10500 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 10200 12600 10500 12600 10500 12900 10200 12900 10200 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 10300 12840 8\001 +-6 +6 10500 12600 10800 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 10500 12600 10800 12600 10800 12900 10500 12900 10500 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 10600 12840 6\001 +-6 +6 10800 12600 11100 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 10800 12600 11100 12600 11100 12900 10800 12900 10800 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 10900 12840 8\001 +-6 +6 11100 12600 11400 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 11100 12600 11400 12600 11400 12900 11100 12900 11100 12600 +4 0 0 15 0 0 16 0.0000 4 195 135 11200 12840 4\001 +-6 +6 11400 12600 11700 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 11400 12600 11700 12600 11700 12900 11400 12900 11400 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 11500 12840 6\001 +-6 +6 11700 12600 12000 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 11700 12600 12000 12600 12000 12900 11700 12900 11700 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 11800 12840 7\001 +-6 +6 12000 12600 12300 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 12000 12600 12300 12600 12300 12900 12000 12900 12000 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 12100 12840 5\001 +-6 +6 7800 12600 8100 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7800 12600 8100 12600 8100 12900 7800 12900 7800 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 7900 12840 2\001 +-6 +6 7500 12600 7800 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7500 12600 7800 12600 7800 12900 7500 12900 7500 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 7600 12840 8\001 +-6 +6 8400 12600 8700 12900 +2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 + 8400 12600 8700 12600 8700 12900 8400 12900 8400 12600 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 8700 12600 8400 12900 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 8400 12600 8700 12900 +-6 +6 7200 12600 7500 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7200 12600 7500 12600 7500 12900 7200 12900 7200 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 7300 12840 5\001 +-6 +6 8100 12600 8400 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8100 12600 8400 12600 8400 12900 8100 12900 8100 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 8200 12840 4\001 +-6 +6 12300 12600 12600 12900 +2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 + 12300 12600 12600 12600 12600 12900 12300 12900 12300 12600 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 12600 12600 12300 12900 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 12300 12600 12600 12900 +-6 +6 12300 13200 12600 13500 +2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 + 12300 13200 12600 13200 12600 13500 12300 13500 12300 13200 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 12600 13200 12300 13500 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 12300 13200 12600 13500 +-6 +6 300 9000 9900 9300 +6 2400 9000 2700 9300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 9000 2700 9000 2700 9300 2400 9300 2400 9000 +4 0 0 5 0 0 16 0.0000 4 195 135 2500 9240 3\001 +-6 +6 6000 9000 6300 9300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6000 9000 6300 9000 6300 9300 6000 9300 6000 9000 +4 0 0 5 0 0 16 0.0000 4 195 135 6100 9240 2\001 +-6 +6 9600 9000 9900 9300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9600 9000 9900 9000 9900 9300 9600 9300 9600 9000 +4 0 0 5 0 0 16 0.0000 4 195 135 9700 9240 3\001 +-6 +4 0 0 20 0 12 16 0.0000 4 180 1650 300 9225 vertlocnbr\001 +-6 +2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 2 + 1 1 1.00 60.00 120.00 + 2550 11700 2550 12600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2850 11700 2850 12225 3150 12225 3150 12600 +2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 2 + 1 1 1.00 60.00 120.00 + 6150 11700 6150 12600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 6450 11700 6450 12150 7650 12150 7650 12600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 6750 11700 6750 12075 8550 12075 8550 12600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3150 11700 3150 12150 4350 12150 4350 12600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3450 11625 3450 12075 5250 12075 5250 12600 +2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 2 + 1 1 1.00 60.00 120.00 + 9750 11700 9750 12600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 10050 11700 10050 12225 10650 12225 10650 12600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 10350 11700 10350 12150 11250 12150 11250 12600 +2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 3 + 1 1 1.00 60.00 120.00 + 2400 10950 2700 10950 2700 11400 +2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 3 + 1 1 1.00 60.00 120.00 + 6000 10950 6300 10950 6300 11400 +2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 3 + 1 1 1.00 60.00 120.00 + 9600 10950 9900 10950 9900 11400 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 10650 11700 10650 12075 12450 12075 12450 12600 +4 0 0 20 0 12 16 0.0000 4 180 1650 300 11025 vendloctab\001 +4 0 0 20 0 12 16 0.0000 4 180 1650 300 11625 vertloctab\001 +4 0 0 20 0 12 16 0.0000 4 240 1650 300 9825 vertgstnbr\001 +4 0 0 20 0 12 16 0.0000 4 240 1650 300 10425 edgelocnbr\001 +4 0 0 20 0 12 16 0.0000 4 240 1650 300 13425 edgegsttab\001 +4 0 0 20 0 12 16 0.0000 4 240 1650 300 12825 edgeloctab\001 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 2100 13800 2100 4800 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5700 13800 5700 4800 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 9300 13800 9300 4800 +2 2 0 1 0 0 50 -1 10 0.000 0 0 -1 0 0 5 + 12900 4800 0 4800 0 4500 12900 4500 12900 4800 +4 0 7 40 -1 0 16 0.0000 4 195 1140 150 4731 Local data\001 +-6 +4 0 0 20 0 12 16 0.0000 4 180 1155 300 825 baseval\001 +4 0 0 20 0 12 16 0.0000 4 240 1650 300 2025 edgeglbnbr\001 +4 0 0 20 0 12 16 0.0000 4 240 1650 300 3225 proccnttab\001 +4 0 0 20 0 12 16 0.0000 4 240 1650 300 2625 procglbnbr\001 +4 0 0 20 0 12 16 0.0000 4 240 1650 300 3825 procvrttab\001 diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/p_f_gr2.eps scotch-6.0.6/doc/src/ptscotch/p_f_gr2.eps --- scotch-6.0.4.dfsg1/doc/src/ptscotch/p_f_gr2.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/p_f_gr2.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,1265 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: stdin +%%Creator: fig2dev Version 3.2 Patchlevel 5-alpha7 +%%CreationDate: Tue Feb 5 15:59:38 2008 +%%For: pelegrin@brol (Francois PELLEGRINI) +%%BoundingBox: 0 0 776 866 +%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 866 moveto 0 0 lineto 776 0 lineto 776 866 lineto closepath clip newpath +0.7 864.7 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +% +% Fig objects follow +% +% +% here starts figure with depth 55 +% Polyline +0 slj +0 slc +0.000 slw +n 4050 4800 m 3750 4800 l 3750 4500 l 4050 4500 l + cp gs 0.50 setgray ef gr +% Polyline +n 7650 4800 m 7350 4800 l 7350 4500 l 7650 4500 l + cp gs 0.50 setgray ef gr +% Polyline +n 11250 4800 m 10950 4800 l 10950 4500 l 11250 4500 l + cp gs 0.50 setgray ef gr +% here ends figure; +% +% here starts figure with depth 50 +% Polyline +0 slj +0 slc +7.500 slw +n 12900 300 m 0 300 l 0 0 l 12900 0 l + cp gs 0.50 setgray ef gr gs col0 s gr +% Polyline +n 4800 8100 m 3900 7200 l 4800 6300 l 3900 5400 l 3900 7200 l 3000 6300 l + + 3900 5400 l gs col0 s gr +% Polyline +n 6600 5400 m 7500 6300 l 6600 7200 l 7500 8100 l 7500 6300 l 8400 7200 l + + 7500 8100 l gs col0 s gr +% Polyline +n 7500 6300 m + 8400 5400 l gs col0 s gr +% Polyline +n 10200 8100 m 11100 7200 l 10200 6300 l 11100 5400 l 11100 7200 l 12000 6300 l + + 11100 5400 l gs col0 s gr +% Polyline +n 2100 14400 m + 2100 4800 l gs col0 s gr +% Polyline +n 5700 14400 m + 5700 4800 l gs col0 s gr +% Polyline +n 9300 14400 m + 9300 4800 l gs col0 s gr +% Polyline +n 12900 4800 m 0 4800 l 0 4500 l 12900 4500 l + cp gs 0.50 setgray ef gr gs col0 s gr +% Polyline +n 8400 1200 m + 7500 2100 l gs col0 s gr +% Polyline +n 6600 1200 m 7500 2100 l 6600 3000 l 5700 2100 l 6600 1200 l 6600 3000 l + 7500 3900 l 7500 2100 l 8400 3000 l 9300 2100 l 8400 1200 l + 8400 3000 l + 7500 3900 l gs col0 s gr +% here ends figure; +% +% here starts figure with depth 40 +/Times-Roman ff 285.00 scf sf +174 231 m +gs 1 -1 sc (Duplicated data) col7 sh gr +% Polyline +2 slj +0 slc +7.500 slw + [15 45] 45 sd +n 4425 5175 m 4424 5178 l 4420 5185 l 4415 5197 l 4408 5214 l 4398 5236 l + 4388 5260 l 4377 5287 l 4366 5314 l 4356 5341 l 4347 5367 l + 4339 5391 l 4332 5415 l 4326 5437 l 4322 5459 l 4318 5481 l + 4315 5502 l 4313 5525 l 4311 5544 l 4310 5564 l 4309 5584 l + 4309 5606 l 4309 5628 l 4309 5651 l 4310 5676 l 4310 5700 l + 4311 5726 l 4312 5752 l 4313 5778 l 4313 5805 l 4314 5832 l + 4315 5858 l 4315 5884 l 4316 5909 l 4316 5934 l 4316 5959 l + 4316 5982 l 4315 6005 l 4314 6028 l 4313 6050 l 4311 6072 l + 4309 6094 l 4306 6115 l 4303 6137 l 4300 6160 l 4297 6183 l + 4294 6206 l 4290 6229 l 4287 6253 l 4283 6277 l 4280 6302 l + 4277 6326 l 4275 6351 l 4272 6375 l 4271 6399 l 4269 6423 l + 4269 6446 l 4269 6470 l 4269 6493 l 4270 6516 l 4272 6539 l + 4275 6563 l 4278 6584 l 4282 6606 l 4287 6629 l 4292 6653 l + 4297 6677 l 4304 6702 l 4310 6728 l 4318 6755 l 4325 6782 l + 4333 6810 l 4340 6839 l 4348 6868 l 4356 6897 l 4364 6926 l + 4371 6955 l 4378 6984 l 4384 7012 l 4390 7040 l 4396 7068 l + 4401 7095 l 4405 7122 l 4408 7148 l 4411 7174 l 4413 7200 l + 4414 7226 l 4414 7252 l 4413 7278 l 4412 7305 l 4410 7332 l + 4408 7360 l 4404 7388 l 4401 7416 l 4396 7445 l 4391 7474 l + 4386 7503 l 4381 7532 l 4375 7561 l 4369 7590 l 4362 7618 l + 4356 7645 l 4350 7672 l 4344 7698 l 4338 7723 l 4332 7747 l + 4327 7771 l 4322 7794 l 4317 7816 l 4313 7838 l 4308 7861 l + 4304 7884 l 4300 7907 l 4297 7930 l 4294 7954 l 4291 7979 l + 4289 8005 l 4287 8032 l 4285 8061 l 4283 8091 l 4281 8122 l + 4280 8154 l 4279 8186 l 4278 8217 l 4277 8246 l 4276 8270 l + 4276 8291 l 4275 8306 l 4275 8317 l 4275 8322 l + 4275 8325 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 7875 5175 m 7874 5178 l 7872 5186 l 7868 5199 l 7863 5218 l 7856 5243 l + 7848 5273 l 7839 5306 l 7831 5341 l 7823 5375 l 7815 5409 l + 7809 5442 l 7804 5472 l 7800 5501 l 7797 5528 l 7795 5554 l + 7795 5578 l 7795 5602 l 7797 5626 l 7800 5650 l 7803 5670 l + 7807 5691 l 7812 5712 l 7817 5734 l 7822 5756 l 7829 5779 l + 7835 5803 l 7843 5828 l 7850 5854 l 7858 5880 l 7865 5907 l + 7873 5934 l 7881 5961 l 7889 5989 l 7896 6017 l 7903 6045 l + 7909 6072 l 7915 6100 l 7921 6127 l 7926 6155 l 7930 6182 l + 7933 6208 l 7936 6235 l 7938 6263 l 7938 6286 l 7939 6310 l + 7939 6334 l 7938 6359 l 7937 6385 l 7935 6411 l 7933 6438 l + 7931 6466 l 7928 6494 l 7925 6523 l 7922 6552 l 7918 6582 l + 7915 6612 l 7911 6643 l 7907 6673 l 7903 6704 l 7899 6735 l + 7896 6765 l 7892 6795 l 7889 6825 l 7886 6855 l 7883 6884 l + 7881 6912 l 7879 6941 l 7877 6968 l 7876 6996 l 7875 7023 l + 7875 7050 l 7875 7079 l 7876 7108 l 7878 7138 l 7879 7168 l + 7882 7198 l 7885 7229 l 7888 7261 l 7892 7292 l 7896 7324 l + 7900 7357 l 7905 7389 l 7909 7422 l 7914 7454 l 7919 7486 l + 7924 7517 l 7929 7548 l 7934 7579 l 7938 7608 l 7943 7637 l + 7947 7665 l 7950 7691 l 7954 7717 l 7956 7742 l 7959 7766 l + 7961 7790 l 7963 7813 l 7964 7839 l 7964 7864 l 7964 7890 l + 7963 7915 l 7961 7941 l 7958 7968 l 7954 7995 l 7949 8024 l + 7943 8054 l 7937 8086 l 7930 8118 l 7922 8151 l 7914 8184 l + 7905 8215 l 7898 8244 l 7891 8270 l 7885 8290 l 7881 8306 l + 7877 8317 l 7876 8322 l + 7875 8325 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 7125 5175 m 7124 5178 l 7120 5185 l 7115 5197 l 7108 5214 l 7098 5236 l + 7088 5260 l 7077 5287 l 7066 5314 l 7056 5341 l 7047 5367 l + 7039 5391 l 7032 5415 l 7026 5437 l 7022 5459 l 7018 5481 l + 7015 5502 l 7013 5525 l 7011 5544 l 7010 5564 l 7009 5584 l + 7009 5606 l 7009 5628 l 7009 5651 l 7010 5676 l 7010 5700 l + 7011 5726 l 7012 5752 l 7013 5778 l 7013 5805 l 7014 5832 l + 7015 5858 l 7015 5884 l 7016 5909 l 7016 5934 l 7016 5959 l + 7016 5982 l 7015 6005 l 7014 6028 l 7013 6050 l 7011 6072 l + 7009 6094 l 7006 6115 l 7003 6137 l 7000 6160 l 6997 6183 l + 6994 6206 l 6990 6229 l 6987 6253 l 6983 6277 l 6980 6302 l + 6977 6326 l 6975 6351 l 6972 6375 l 6971 6399 l 6969 6423 l + 6969 6446 l 6969 6470 l 6969 6493 l 6970 6516 l 6972 6539 l + 6975 6563 l 6978 6584 l 6982 6606 l 6987 6629 l 6992 6653 l + 6997 6677 l 7004 6702 l 7010 6728 l 7018 6755 l 7025 6782 l + 7033 6810 l 7040 6839 l 7048 6868 l 7056 6897 l 7064 6926 l + 7071 6955 l 7078 6984 l 7084 7012 l 7090 7040 l 7096 7068 l + 7101 7095 l 7105 7122 l 7108 7148 l 7111 7174 l 7113 7200 l + 7114 7226 l 7114 7252 l 7113 7278 l 7112 7305 l 7110 7332 l + 7108 7360 l 7104 7388 l 7101 7416 l 7096 7445 l 7091 7474 l + 7086 7503 l 7081 7532 l 7075 7561 l 7069 7590 l 7062 7618 l + 7056 7645 l 7050 7672 l 7044 7698 l 7038 7723 l 7032 7747 l + 7027 7771 l 7022 7794 l 7017 7816 l 7013 7838 l 7008 7861 l + 7004 7884 l 7000 7907 l 6997 7930 l 6994 7954 l 6991 7979 l + 6989 8005 l 6987 8032 l 6985 8061 l 6983 8091 l 6981 8122 l + 6980 8154 l 6979 8186 l 6978 8217 l 6977 8246 l 6976 8270 l + 6976 8291 l 6975 8306 l 6975 8317 l 6975 8322 l + 6975 8325 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 10575 5175 m 10574 5178 l 10572 5186 l 10568 5199 l 10563 5218 l 10556 5243 l + 10548 5273 l 10539 5306 l 10531 5341 l 10523 5375 l 10515 5409 l + 10509 5442 l 10504 5472 l 10500 5501 l 10497 5528 l 10495 5554 l + 10495 5578 l 10495 5602 l 10497 5626 l 10500 5650 l 10503 5670 l + 10507 5691 l 10512 5712 l 10517 5734 l 10522 5756 l 10529 5779 l + 10535 5803 l 10543 5828 l 10550 5854 l 10558 5880 l 10565 5907 l + 10573 5934 l 10581 5961 l 10589 5989 l 10596 6017 l 10603 6045 l + 10609 6072 l 10615 6100 l 10621 6127 l 10626 6155 l 10630 6182 l + 10633 6208 l 10636 6235 l 10638 6263 l 10638 6286 l 10639 6310 l + 10639 6334 l 10638 6359 l 10637 6385 l 10635 6411 l 10633 6438 l + 10631 6466 l 10628 6494 l 10625 6523 l 10622 6552 l 10618 6582 l + 10615 6612 l 10611 6643 l 10607 6673 l 10603 6704 l 10599 6735 l + 10596 6765 l 10592 6795 l 10589 6825 l 10586 6855 l 10583 6884 l + 10581 6912 l 10579 6941 l 10577 6968 l 10576 6996 l 10575 7023 l + 10575 7050 l 10575 7079 l 10576 7108 l 10578 7138 l 10579 7168 l + 10582 7198 l 10585 7229 l 10588 7261 l 10592 7292 l 10596 7324 l + 10600 7357 l 10605 7389 l 10609 7422 l 10614 7454 l 10619 7486 l + 10624 7517 l 10629 7548 l 10634 7579 l 10638 7608 l 10643 7637 l + 10647 7665 l 10650 7691 l 10654 7717 l 10656 7742 l 10659 7766 l + 10661 7790 l 10663 7813 l 10664 7839 l 10664 7864 l 10664 7890 l + 10663 7915 l 10661 7941 l 10658 7968 l 10654 7995 l 10649 8024 l + 10643 8054 l 10637 8086 l 10630 8118 l 10622 8151 l 10614 8184 l + 10605 8215 l 10598 8244 l 10591 8270 l 10585 8290 l 10581 8306 l + 10577 8317 l 10576 8322 l + 10575 8325 l gs col0 s gr [] 0 sd +/Times-Roman ff 240.00 scf sf +150 4731 m +gs 1 -1 sc (Local data) col7 sh gr +% Polyline + [15 45] 45 sd +n 7875 975 m 7874 978 l 7872 986 l 7868 999 l 7863 1018 l 7856 1043 l + 7848 1073 l 7839 1106 l 7831 1141 l 7823 1175 l 7815 1209 l + 7809 1242 l 7804 1272 l 7800 1301 l 7797 1328 l 7795 1354 l + 7795 1378 l 7795 1402 l 7797 1426 l 7800 1450 l 7803 1470 l + 7807 1491 l 7812 1512 l 7817 1534 l 7822 1556 l 7829 1579 l + 7835 1603 l 7843 1628 l 7850 1654 l 7858 1680 l 7865 1707 l + 7873 1734 l 7881 1761 l 7889 1789 l 7896 1817 l 7903 1845 l + 7909 1872 l 7915 1900 l 7921 1927 l 7926 1955 l 7930 1982 l + 7933 2008 l 7936 2035 l 7938 2063 l 7938 2086 l 7939 2110 l + 7939 2134 l 7938 2159 l 7937 2185 l 7935 2211 l 7933 2238 l + 7931 2266 l 7928 2294 l 7925 2323 l 7922 2352 l 7918 2382 l + 7915 2412 l 7911 2443 l 7907 2473 l 7903 2504 l 7899 2535 l + 7896 2565 l 7892 2595 l 7889 2625 l 7886 2655 l 7883 2684 l + 7881 2712 l 7879 2741 l 7877 2768 l 7876 2796 l 7875 2823 l + 7875 2850 l 7875 2879 l 7876 2908 l 7878 2938 l 7879 2968 l + 7882 2998 l 7885 3029 l 7888 3061 l 7892 3092 l 7896 3124 l + 7900 3157 l 7905 3189 l 7909 3222 l 7914 3254 l 7919 3286 l + 7924 3317 l 7929 3348 l 7934 3379 l 7938 3408 l 7943 3437 l + 7947 3465 l 7950 3491 l 7954 3517 l 7956 3542 l 7959 3566 l + 7961 3590 l 7963 3613 l 7964 3639 l 7964 3664 l 7964 3690 l + 7963 3715 l 7961 3741 l 7958 3768 l 7954 3795 l 7949 3824 l + 7943 3854 l 7937 3886 l 7930 3918 l 7922 3951 l 7914 3984 l + 7905 4015 l 7898 4044 l 7891 4070 l 7885 4090 l 7881 4106 l + 7877 4117 l 7876 4122 l + 7875 4125 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 7125 975 m 7124 978 l 7120 985 l 7115 997 l 7108 1014 l 7098 1036 l + 7088 1060 l 7077 1087 l 7066 1114 l 7056 1141 l 7047 1167 l + 7039 1191 l 7032 1215 l 7026 1237 l 7022 1259 l 7018 1281 l + 7015 1302 l 7013 1325 l 7011 1344 l 7010 1364 l 7009 1384 l + 7009 1406 l 7009 1428 l 7009 1451 l 7010 1476 l 7010 1500 l + 7011 1526 l 7012 1552 l 7013 1578 l 7013 1605 l 7014 1632 l + 7015 1658 l 7015 1684 l 7016 1709 l 7016 1734 l 7016 1759 l + 7016 1782 l 7015 1805 l 7014 1828 l 7013 1850 l 7011 1872 l + 7009 1894 l 7006 1915 l 7003 1937 l 7000 1960 l 6997 1983 l + 6994 2006 l 6990 2029 l 6987 2053 l 6983 2077 l 6980 2102 l + 6977 2126 l 6975 2151 l 6972 2175 l 6971 2199 l 6969 2223 l + 6969 2246 l 6969 2270 l 6969 2293 l 6970 2316 l 6972 2339 l + 6975 2363 l 6978 2384 l 6982 2406 l 6987 2429 l 6992 2453 l + 6997 2477 l 7004 2502 l 7010 2528 l 7018 2555 l 7025 2582 l + 7033 2610 l 7040 2639 l 7048 2668 l 7056 2697 l 7064 2726 l + 7071 2755 l 7078 2784 l 7084 2812 l 7090 2840 l 7096 2868 l + 7101 2895 l 7105 2922 l 7108 2948 l 7111 2974 l 7113 3000 l + 7114 3026 l 7114 3052 l 7113 3078 l 7112 3105 l 7110 3132 l + 7108 3160 l 7104 3188 l 7101 3216 l 7096 3245 l 7091 3274 l + 7086 3303 l 7081 3332 l 7075 3361 l 7069 3390 l 7062 3418 l + 7056 3445 l 7050 3472 l 7044 3498 l 7038 3523 l 7032 3547 l + 7027 3571 l 7022 3594 l 7017 3616 l 7013 3638 l 7008 3661 l + 7004 3684 l 7000 3707 l 6997 3730 l 6994 3754 l 6991 3779 l + 6989 3805 l 6987 3832 l 6985 3861 l 6983 3891 l 6981 3922 l + 6980 3954 l 6979 3986 l 6978 4017 l 6977 4046 l 6976 4070 l + 6976 4091 l 6975 4106 l 6975 4117 l 6975 4122 l + 6975 4125 l gs col0 s gr [] 0 sd +% here ends figure; +% +% here starts figure with depth 35 +/Times-Roman ff 240.00 scf sf +3825 4731 m +gs 1 -1 sc (0) col7 sh gr +/Times-Roman ff 240.00 scf sf +7425 4731 m +gs 1 -1 sc (1) col7 sh gr +/Times-Roman ff 240.00 scf sf +11025 4731 m +gs 1 -1 sc (2) col7 sh gr +% here ends figure; +% +% here starts figure with depth 20 +/Courier ff 240.00 scf sf +300 1425 m +gs 1 -1 sc (vertglbnbr) col0 sh gr +/Courier ff 240.00 scf sf +300 3825 m +gs 1 -1 sc (procvrttab) col0 sh gr +/Courier ff 240.00 scf sf +300 9225 m +gs 1 -1 sc (vertlocnbr) col0 sh gr +% Polyline +0 slj +0 slc +7.500 slw +gs clippath +2520 11848 m 2520 12015 l 2580 12015 l 2580 11848 l 2580 11848 l 2550 11968 l 2520 11848 l cp +eoclip +n 2850 11100 m 2850 11550 l 2550 11550 l + 2550 12000 l gs col0 s gr gr + +% arrowhead +n 2520 11848 m 2550 11968 l 2580 11848 l 2520 11848 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4920 11848 m 4920 12015 l 4980 12015 l 4980 11848 l 4980 11848 l 4950 11968 l 4920 11848 l cp +eoclip +n 2550 11100 m 2550 11475 l 4950 11475 l + 4950 12000 l gs col0 s gr gr + +% arrowhead +n 4920 11848 m 4950 11968 l 4980 11848 l 4920 11848 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +10620 11848 m 10620 12015 l 10680 12015 l 10680 11848 l 10680 11848 l 10650 11968 l 10620 11848 l cp +eoclip +n 10050 11100 m 10050 11625 l 10650 11625 l + 10650 12000 l gs col0 s gr gr + +% arrowhead +n 10620 11848 m 10650 11968 l 10680 11848 l 10620 11848 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +11520 11848 m 11520 12015 l 11580 12015 l 11580 11848 l 11580 11848 l 11550 11968 l 11520 11848 l cp +eoclip +n 10350 11100 m 10350 11550 l 11550 11550 l + 11550 12000 l gs col0 s gr gr + +% arrowhead +n 11520 11848 m 11550 11968 l 11580 11848 l 11520 11848 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +10680 13052 m 10680 12885 l 10620 12885 l 10620 13052 l 10620 13052 l 10650 12932 l 10680 13052 l cp +eoclip +n 9750 13800 m 9750 13275 l 10650 13275 l + 10650 12900 l gs col0 s gr gr + +% arrowhead +n 10680 13052 m 10650 12932 l 10620 13052 l 10680 13052 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +11280 13052 m 11280 12885 l 11220 12885 l 11220 13052 l 11220 13052 l 11250 12932 l 11280 13052 l cp +eoclip +n 10050 13800 m 10050 13350 l 11250 13350 l + 11250 12900 l gs col0 s gr gr + +% arrowhead +n 11280 13052 m 11250 12932 l 11220 13052 l 11280 13052 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +12780 13052 m 12780 12885 l 12720 12885 l 12720 13052 l 12720 13052 l 12750 12932 l 12780 13052 l cp +eoclip +n 10350 13800 m 10350 13425 l 12750 13425 l + 12750 12900 l gs col0 s gr gr + +% arrowhead +n 12780 13052 m 12750 12932 l 12720 13052 l 12780 13052 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +7620 11848 m 7620 12015 l 7680 12015 l 7680 11848 l 7680 11848 l 7650 11968 l 7620 11848 l cp +eoclip +n 6150 11100 m 6150 11550 l 7650 11550 l + 7650 12000 l gs col0 s gr gr + +% arrowhead +n 7620 11848 m 7650 11968 l 7680 11848 l 7620 11848 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +9180 13052 m 9180 12885 l 9120 12885 l 9120 13052 l 9120 13052 l 9150 12932 l 9180 13052 l cp +eoclip +n 6150 13800 m 6150 13275 l 9150 13275 l + 9150 12900 l gs col0 s gr gr + +% arrowhead +n 9180 13052 m 9150 12932 l 9120 13052 l 9180 13052 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +7380 13052 m 7380 12885 l 7320 12885 l 7320 13052 l 7320 13052 l 7350 12932 l 7380 13052 l cp +eoclip +n 6450 13800 m 6450 13350 l 7350 13350 l + 7350 12900 l gs col0 s gr gr + +% arrowhead +n 7380 13052 m 7350 12932 l 7320 13052 l 7380 13052 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +5580 13052 m 5580 12885 l 5520 12885 l 5520 13052 l 5520 13052 l 5550 12932 l 5580 13052 l cp +eoclip +n 2550 13800 m 2550 13425 l 5550 13425 l + 5550 12900 l gs col0 s gr gr + +% arrowhead +n 5580 13052 m 5550 12932 l 5520 13052 l 5580 13052 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +3780 13052 m 3780 12885 l 3720 12885 l 3720 13052 l 3720 13052 l 3750 12932 l 3780 13052 l cp +eoclip +n 2850 13800 m 2850 13350 l 3750 13350 l + 3750 12900 l gs col0 s gr gr + +% arrowhead +n 3780 13052 m 3750 12932 l 3720 13052 l 3780 13052 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4980 13052 m 4980 12885 l 4920 12885 l 4920 13052 l 4920 13052 l 4950 12932 l 4980 13052 l cp +eoclip +n 3150 13800 m 3150 13275 l 4950 13275 l + 4950 12900 l gs col0 s gr gr + +% arrowhead +n 4980 13052 m 4950 12932 l 4920 13052 l 4980 13052 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4020 11848 m 4020 12015 l 4080 12015 l 4080 11848 l 4080 11848 l 4050 11968 l 4020 11848 l cp +eoclip +n 3150 11100 m 3150 11625 l 4050 11625 l + 4050 12000 l gs col0 s gr gr + +% arrowhead +n 4020 11848 m 4050 11968 l 4080 11848 l 4020 11848 l cp gs 0.00 setgray ef gr col0 s +/Courier ff 240.00 scf sf +300 9825 m +gs 1 -1 sc (vertgstnbr) col0 sh gr +/Courier ff 240.00 scf sf +300 10425 m +gs 1 -1 sc (edgelocnbr) col0 sh gr +/Courier ff 240.00 scf sf +300 12825 m +gs 1 -1 sc (edgegsttab) col0 sh gr +/Courier ff 240.00 scf sf +300 12225 m +gs 1 -1 sc (edgeloctab) col0 sh gr +/Courier ff 240.00 scf sf +300 11025 m +gs 1 -1 sc (vertloctab) col0 sh gr +/Courier ff 240.00 scf sf +300 14025 m +gs 1 -1 sc (vendloctab) col0 sh gr +/Courier ff 240.00 scf sf +300 825 m +gs 1 -1 sc (baseval) col0 sh gr +/Courier ff 240.00 scf sf +300 2025 m +gs 1 -1 sc (edgeglbnbr) col0 sh gr +/Courier ff 240.00 scf sf +300 3225 m +gs 1 -1 sc (proccnttab) col0 sh gr +/Courier ff 240.00 scf sf +300 2625 m +gs 1 -1 sc (procglbnbr) col0 sh gr +% here ends figure; +% +% here starts figure with depth 15 +% Polyline +0 slj +0 slc +7.500 slw +n 2400 600 m 2700 600 l 2700 900 l 2400 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 1800 m 2700 1800 l 2700 2100 l 2400 2100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2425 2040 m +gs 1 -1 sc (26) col0 sh gr +% Polyline +n 2400 3000 m 2700 3000 l 2700 3300 l 2400 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 3000 m 3300 3000 l 3300 3300 l 3000 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 3000 m 3000 3000 l 3000 3300 l 2700 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 2400 m 2700 2400 l 2700 2700 l 2400 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 1200 m 2700 1200 l 2700 1500 l 2400 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 3600 m 2700 3600 l 2700 3900 l 2400 3900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 3600 m 3000 3600 l 3000 3900 l 2700 3900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2725 3840 m +gs 1 -1 sc (11) col0 sh gr +% Polyline +n 3000 3600 m 3300 3600 l 3300 3900 l 3000 3900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3025 3840 m +gs 1 -1 sc (17) col0 sh gr +% Polyline +n 3300 3600 m 3600 3600 l 3600 3900 l 3300 3900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3325 3840 m +gs 1 -1 sc (99) col0 sh gr +% Polyline +n 2400 9600 m 2700 9600 l 2700 9900 l 2400 9900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 10200 m 2700 10200 l 2700 10500 l 2400 10500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6000 9600 m 6300 9600 l 6300 9900 l 6000 9900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6000 10200 m 6300 10200 l 6300 10500 l 6000 10500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 9600 10200 m 9900 10200 l 9900 10500 l 9600 10500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 9600 9600 m 9900 9600 l 9900 9900 l 9600 9900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 9000 m 2700 9000 l 2700 9300 l 2400 9300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6000 9000 m 6300 9000 l 6300 9300 l 6000 9300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 9600 9000 m 9900 9000 l 9900 9300 l 9600 9300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3600 12000 m 3900 12000 l 3900 12300 l 3600 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3600 12600 m 3900 12600 l 3900 12900 l 3600 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6000 12000 m 6300 12000 l 6300 12300 l 6000 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6000 12600 m 6300 12600 l 6300 12900 l 6000 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7200 12000 m 7500 12000 l 7500 12300 l 7200 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7200 12600 m 7500 12600 l 7500 12900 l 7200 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 11100 12000 m 11400 12000 l 11400 12300 l 11100 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 11100 12600 m 11400 12600 l 11400 12900 l 11100 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 10800 m 2700 10800 l 2700 11100 l 2400 11100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 10800 m 3000 10800 l 3000 11100 l 2700 11100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6000 10800 m 6300 10800 l 6300 11100 l 6000 11100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 9600 10800 m 9900 10800 l 9900 11100 l 9600 11100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 9900 10800 m 10200 10800 l 10200 11100 l 9900 11100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +10000 11040 m +gs 1 -1 sc (4) col0 sh gr +% Polyline +n 10200 10800 m 10500 10800 l 10500 11100 l 10200 11100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6300 10800 m 6600 10800 l 6600 11100 l 6300 11100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6300 13800 m 6600 13800 l 6600 14100 l 6300 14100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 9600 13800 m 9900 13800 l 9900 14100 l 9600 14100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +9700 14040 m +gs 1 -1 sc (4) col0 sh gr +% Polyline +n 9900 13800 m 10200 13800 l 10200 14100 l 9900 14100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 10200 13800 m 10500 13800 l 10500 14100 l 10200 14100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +10225 14040 m +gs 1 -1 sc (11) col0 sh gr +% Polyline +n 6000 13800 m 6300 13800 l 6300 14100 l 6000 14100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +6025 14040 m +gs 1 -1 sc (11) col0 sh gr +% Polyline +n 2400 12600 m 2700 12600 l 2700 12900 l 2400 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 12600 m 3000 12600 l 3000 12900 l 2700 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 12600 m 3300 12600 l 3300 12900 l 3000 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3300 12600 m 3600 12600 l 3600 12900 l 3300 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 12000 m 2700 12000 l 2700 12300 l 2400 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3300 12000 m 3600 12000 l 3600 12300 l 3300 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4800 12600 m 5100 12600 l 5100 12900 l 4800 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5100 12600 m 5400 12600 l 5400 12900 l 5100 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4800 12000 m 5100 12000 l 5100 12300 l 4800 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5100 12000 m 5400 12000 l 5400 12300 l 5100 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 12000 m 3300 12000 l 3300 12300 l 3000 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3025 12240 m +gs 1 -1 sc (11) col0 sh gr +% Polyline +n 2700 12000 m 3000 12000 l 3000 12300 l 2700 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2725 12240 m +gs 1 -1 sc (12) col0 sh gr +% Polyline +n 3900 12600 m 4200 12600 l 4200 12900 l 3900 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4200 12600 m 4500 12600 l 4500 12900 l 4200 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4500 12600 m 4800 12600 l 4800 12900 l 4500 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4200 12000 m 4500 12000 l 4500 12300 l 4200 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4500 12000 m 4800 12000 l 4800 12300 l 4500 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3900 12000 m 4200 12000 l 4200 12300 l 3900 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3925 12240 m +gs 1 -1 sc (11) col0 sh gr +% Polyline +n 2400 13800 m 2700 13800 l 2700 14100 l 2400 14100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2425 14040 m +gs 1 -1 sc (11) col0 sh gr +% Polyline +n 2700 13800 m 3000 13800 l 3000 14100 l 2700 14100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 13800 m 3300 13800 l 3300 14100 l 3000 14100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 10800 m 3300 10800 l 3300 11100 l 3000 11100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7500 12600 m 7800 12600 l 7800 12900 l 7500 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7800 12600 m 8100 12600 l 8100 12900 l 7800 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8100 12600 m 8400 12600 l 8400 12900 l 8100 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8400 12600 m 8700 12600 l 8700 12900 l 8400 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8700 12600 m 9000 12600 l 9000 12900 l 8700 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7500 12000 m 7800 12000 l 7800 12300 l 7500 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8100 12000 m 8400 12000 l 8400 12300 l 8100 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7800 12000 m 8100 12000 l 8100 12300 l 7800 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +7825 12240 m +gs 1 -1 sc (17) col0 sh gr +% Polyline +n 8400 12000 m 8700 12000 l 8700 12300 l 8400 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +8425 12240 m +gs 1 -1 sc (19) col0 sh gr +% Polyline +n 8700 12000 m 9000 12000 l 9000 12300 l 8700 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +8725 12240 m +gs 1 -1 sc (12) col0 sh gr +% Polyline +n 6600 12600 m 6900 12600 l 6900 12900 l 6600 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6300 12600 m 6600 12600 l 6600 12900 l 6300 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6900 12600 m 7200 12600 l 7200 12900 l 6900 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6600 12000 m 6900 12000 l 6900 12300 l 6600 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6300 12000 m 6600 12000 l 6600 12300 l 6300 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +6325 12240 m +gs 1 -1 sc (19) col0 sh gr +% Polyline +n 6900 12000 m 7200 12000 l 7200 12300 l 6900 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +6925 12240 m +gs 1 -1 sc (11) col0 sh gr +% Polyline +n 9600 12600 m 9900 12600 l 9900 12900 l 9600 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 9900 12600 m 10200 12600 l 10200 12900 l 9900 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 10200 12600 m 10500 12600 l 10500 12900 l 10200 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 9600 12000 m 9900 12000 l 9900 12300 l 9600 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +9625 12240 m +gs 1 -1 sc (11) col0 sh gr +% Polyline +n 10200 12000 m 10500 12000 l 10500 12300 l 10200 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +10225 12240 m +gs 1 -1 sc (19) col0 sh gr +% Polyline +n 9900 12000 m 10200 12000 l 10200 12300 l 9900 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +9925 12240 m +gs 1 -1 sc (18) col0 sh gr +% Polyline +n 10500 12600 m 10800 12600 l 10800 12900 l 10500 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 10800 12600 m 11100 12600 l 11100 12900 l 10800 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 10500 12000 m 10800 12000 l 10800 12300 l 10500 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +10525 12240 m +gs 1 -1 sc (17) col0 sh gr +% Polyline +n 10800 12000 m 11100 12000 l 11100 12300 l 10800 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +10825 12240 m +gs 1 -1 sc (19) col0 sh gr +% Polyline +n 11400 12600 m 11700 12600 l 11700 12900 l 11400 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +11500 12840 m +gs 1 -1 sc (4) col0 sh gr +% Polyline +n 11700 12600 m 12000 12600 l 12000 12900 l 11700 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 12000 12600 m 12300 12600 l 12300 12900 l 12000 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 12300 12600 m 12600 12600 l 12600 12900 l 12300 12900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 11400 12000 m 11700 12000 l 11700 12300 l 11400 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +11425 12240 m +gs 1 -1 sc (11) col0 sh gr +% Polyline +n 11700 12000 m 12000 12000 l 12000 12300 l 11700 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +11725 12240 m +gs 1 -1 sc (17) col0 sh gr +% Polyline +n 12000 12000 m 12300 12000 l 12300 12300 l 12000 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +12025 12240 m +gs 1 -1 sc (18) col0 sh gr +% Polyline +n 12300 12000 m 12600 12000 l 12600 12300 l 12300 12300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +12325 12240 m +gs 1 -1 sc (12) col0 sh gr +% Polyline +gs clippath +9720 11848 m 9720 12015 l 9780 12015 l 9780 11848 l 9780 11848 l 9750 11968 l 9720 11848 l cp +eoclip +n 9750 11100 m + 9750 12000 l gs col0 s gr gr + +% arrowhead +n 9720 11848 m 9750 11968 l 9780 11848 l 9720 11848 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6420 11848 m 6420 12015 l 6480 12015 l 6480 11848 l 6480 11848 l 6450 11968 l 6420 11848 l cp +eoclip +n 6450 11100 m + 6450 12000 l gs col0 s gr gr + +% arrowhead +n 6420 11848 m 6450 11968 l 6480 11848 l 6420 11848 l cp gs 0.00 setgray ef gr col0 s +% here ends figure; +% +% here starts figure with depth 12 +% Ellipse +7.500 slw +n 6600 3000 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6600 1200 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 5700 2100 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 7500 3900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 8400 1200 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 8400 3000 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 7500 2100 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 9300 2100 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 3900 7200 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 3900 5400 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 3000 6300 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 4800 6300 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 4800 8100 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 7500 6300 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 7500 8100 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6600 5400 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 6600 7200 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 8400 5400 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 8400 7200 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 11100 7200 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 11100 5400 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 12000 6300 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 10200 6300 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% Ellipse +n 10200 8100 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr + +% here ends figure; +% +% here starts figure with depth 10 +/Times-Roman ff 240.00 scf sf +6550 3090 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +6550 1290 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +5650 2190 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +7368 4008 m +gs 1 -1 sc (12) col0 sh gr +/Times-Roman ff 240.00 scf sf +8268 1308 m +gs 1 -1 sc (17) col0 sh gr +/Times-Roman ff 240.00 scf sf +8268 3108 m +gs 1 -1 sc (19) col0 sh gr +/Times-Roman ff 240.00 scf sf +7368 2208 m +gs 1 -1 sc (11) col0 sh gr +/Times-Roman ff 240.00 scf sf +9168 2208 m +gs 1 -1 sc (18) col0 sh gr +/Times-Roman ff 240.00 scf sf +3850 7290 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +3850 5490 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +2950 6390 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +4750 6390 m +gs 1 -1 sc (4) col7 sh gr +/Times-Roman ff 240.00 scf sf +4750 8190 m +gs 1 -1 sc (5) col7 sh gr +/Times-Roman ff 240.00 scf sf +7450 6390 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +7450 8190 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +6550 5490 m +gs 1 -1 sc (4) col7 sh gr +/Times-Roman ff 240.00 scf sf +6550 7290 m +gs 1 -1 sc (3) col7 sh gr +/Times-Roman ff 240.00 scf sf +8350 5490 m +gs 1 -1 sc (5) col7 sh gr +/Times-Roman ff 240.00 scf sf +11050 5490 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +10150 6390 m +gs 1 -1 sc (4) col7 sh gr +/Times-Roman ff 240.00 scf sf +10150 8190 m +gs 1 -1 sc (5) col7 sh gr +% here ends figure; +% +% here starts figure with depth 8 +/Times-Roman ff 240.00 scf sf +8350 7290 m +gs 1 -1 sc (6) col7 sh gr +/Times-Roman ff 240.00 scf sf +11050 7290 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +11950 6390 m +gs 1 -1 sc (2) col0 sh gr +% here ends figure; +% +% here starts figure with depth 5 +/Times-Roman ff 240.00 scf sf +2500 840 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 3240 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +3100 3240 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 3240 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 2640 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 1440 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 3840 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 9840 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 10440 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman ff 240.00 scf sf +6100 9840 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +6100 10440 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 240.00 scf sf +9700 10440 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman ff 240.00 scf sf +9700 9840 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 9240 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +6100 9240 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +9700 9240 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 11040 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 11040 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +6100 11040 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +9700 11040 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +10300 11040 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +6400 11040 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +6400 14040 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +10000 14040 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 12840 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 12840 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +3100 12840 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +3400 12840 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 12240 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +3400 12240 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +4900 12840 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +5200 12840 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +4900 12240 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +5200 12240 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +4000 12840 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +4300 12840 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +4600 12840 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +4300 12240 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +4600 12240 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 14040 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +3100 14040 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman ff 240.00 scf sf +3100 11040 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +7600 12840 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +7900 12840 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +8200 12840 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +8500 12840 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +8800 12840 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +7600 12240 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +8200 12240 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +6700 12840 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +6400 12840 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +7000 12840 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +6700 12240 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +9700 12840 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +10000 12840 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +10300 12840 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +10600 12840 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +10900 12840 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +11800 12840 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +12100 12840 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +12400 12840 m +gs 1 -1 sc (5) col0 sh gr +% here ends figure; +$F2psEnd +rs +showpage +%%Trailer +%EOF diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/p_f_gr2.fig scotch-6.0.6/doc/src/ptscotch/p_f_gr2.fig --- scotch-6.0.4.dfsg1/doc/src/ptscotch/p_f_gr2.fig 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/p_f_gr2.fig 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,703 @@ +#FIG 3.2 Produced by xfig version 3.2.5-alpha5 +Landscape +Center +Inches +Letter +100.00 +Single +0 +1200 2 +6 0 0 12900 300 +2 2 0 1 0 0 50 -1 10 0.000 0 0 -1 0 0 5 + 12900 300 0 300 0 0 12900 0 12900 300 +4 0 7 40 -1 0 19 0.0000 4 270 1995 174 231 Duplicated data\001 +-6 +6 2400 600 2700 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 600 2700 600 2700 900 2400 900 2400 600 +4 0 0 5 0 0 16 0.0000 4 195 135 2500 840 1\001 +-6 +6 2400 1800 2700 2100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 1800 2700 1800 2700 2100 2400 2100 2400 1800 +4 0 0 15 0 0 16 0.0000 4 195 270 2425 2040 26\001 +-6 +6 2400 3000 2700 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 3000 2700 3000 2700 3300 2400 3300 2400 3000 +4 0 0 5 0 0 16 0.0000 4 195 135 2500 3240 3\001 +-6 +6 3000 3000 3300 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 3000 3300 3000 3300 3300 3000 3300 3000 3000 +4 0 0 5 0 0 16 0.0000 4 195 135 3100 3240 3\001 +-6 +6 2700 3000 3000 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 3000 3000 3000 3000 3300 2700 3300 2700 3000 +4 0 0 5 0 0 16 0.0000 4 195 135 2800 3240 2\001 +-6 +6 2400 2400 2700 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 2400 2700 2400 2700 2700 2400 2700 2400 2400 +4 0 0 5 0 0 16 0.0000 4 195 135 2500 2640 3\001 +-6 +6 300 1200 2700 1500 +6 2400 1200 2700 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 1200 2700 1200 2700 1500 2400 1500 2400 1200 +4 0 0 5 0 0 16 0.0000 4 195 135 2500 1440 8\001 +-6 +4 0 0 20 0 12 16 0.0000 4 240 1650 300 1425 vertglbnbr\001 +-6 +6 6450 2850 6750 3150 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6600 3000 150 150 6600 3000 6750 3000 +4 0 0 10 0 0 16 0.0000 4 195 135 6550 3090 2\001 +-6 +6 6450 1050 6750 1350 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6600 1200 150 150 6600 1200 6750 1200 +4 0 0 10 0 0 16 0.0000 4 195 135 6550 1290 3\001 +-6 +6 5550 1950 5850 2250 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 5700 2100 150 150 5700 2100 5850 2100 +4 0 0 10 0 0 16 0.0000 4 195 135 5650 2190 1\001 +-6 +6 7350 3750 7650 4050 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7500 3900 150 150 7500 3900 7650 3900 +4 0 0 10 0 0 16 0.0000 4 195 270 7368 4008 12\001 +-6 +6 8250 1050 8550 1350 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8400 1200 150 150 8400 1200 8550 1200 +4 0 0 10 0 0 16 0.0000 4 195 270 8268 1308 17\001 +-6 +6 8250 2850 8550 3150 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8400 3000 150 150 8400 3000 8550 3000 +4 0 0 10 0 0 16 0.0000 4 195 270 8268 3108 19\001 +-6 +6 7350 1950 7650 2250 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7500 2100 150 150 7500 2100 7650 2100 +4 0 0 10 0 0 16 0.0000 4 195 270 7368 2208 11\001 +-6 +6 9150 1950 9450 2250 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 9300 2100 150 150 9300 2100 9450 2100 +4 0 0 10 0 0 16 0.0000 4 195 270 9168 2208 18\001 +-6 +6 300 3600 3600 3900 +6 2400 3600 2700 3900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 3600 2700 3600 2700 3900 2400 3900 2400 3600 +4 0 0 5 0 0 16 0.0000 4 195 135 2500 3840 1\001 +-6 +6 2700 3600 3000 3900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 3600 3000 3600 3000 3900 2700 3900 2700 3600 +4 0 0 15 0 0 16 0.0000 4 195 270 2725 3840 11\001 +-6 +6 3000 3600 3300 3900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 3600 3300 3600 3300 3900 3000 3900 3000 3600 +4 0 0 15 0 0 16 0.0000 4 195 270 3025 3840 17\001 +-6 +6 3300 3600 3600 3900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 3600 3600 3600 3600 3900 3300 3900 3300 3600 +4 0 0 15 0 0 16 0.0000 4 195 270 3325 3840 99\001 +-6 +4 0 0 20 0 12 16 0.0000 4 240 1650 300 3825 procvrttab\001 +-6 +6 0 4500 12900 14400 +6 2850 5175 4950 8325 +6 3750 7050 4050 7350 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 3900 7200 150 150 3900 7200 4050 7200 +4 0 0 10 0 0 16 0.0000 4 195 135 3850 7290 2\001 +-6 +6 3750 5250 4050 5550 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 3900 5400 150 150 3900 5400 4050 5400 +4 0 0 10 0 0 16 0.0000 4 195 135 3850 5490 3\001 +-6 +6 2850 6150 3150 6450 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 3000 6300 150 150 3000 6300 3150 6300 +4 0 0 10 0 0 16 0.0000 4 195 135 2950 6390 1\001 +-6 +1 3 0 1 0 0 12 0 20 0.000 1 0.0000 4800 6300 150 150 4800 6300 4950 6300 +1 3 0 1 0 0 12 0 20 0.000 1 0.0000 4800 8100 150 150 4800 8100 4950 8100 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 7 + 4800 8100 3900 7200 4800 6300 3900 5400 3900 7200 3000 6300 + 3900 5400 +3 0 2 1 0 7 40 -1 -1 3.000 0 0 0 7 + 4425 5175 4275 5475 4350 6075 4200 6525 4500 7200 4275 7875 + 4275 8325 + 0.000 1.000 1.000 1.000 1.000 1.000 0.000 +4 0 7 10 0 0 16 0.0000 4 195 135 4750 6390 4\001 +4 0 7 10 0 0 16 0.0000 4 195 135 4750 8190 5\001 +-6 +6 6450 5175 8550 8325 +6 7350 6150 7650 6450 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7500 6300 150 150 7500 6300 7650 6300 +4 0 0 10 0 0 16 0.0000 4 195 135 7450 6390 1\001 +-6 +6 7350 7950 7650 8250 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7500 8100 150 150 7500 8100 7650 8100 +4 0 0 10 0 0 16 0.0000 4 195 135 7450 8190 2\001 +-6 +6 6450 5250 6750 5550 +1 3 0 1 0 0 12 0 20 0.000 1 0.0000 6600 5400 150 150 6600 5400 6750 5400 +4 0 7 10 0 0 16 0.0000 4 195 135 6550 5490 4\001 +-6 +6 6450 7050 6750 7350 +1 3 0 1 0 0 12 0 20 0.000 1 0.0000 6600 7200 150 150 6600 7200 6750 7200 +4 0 7 10 0 0 16 0.0000 4 195 135 6550 7290 3\001 +-6 +6 8250 5250 8550 5550 +1 3 0 1 0 0 12 0 20 0.000 1 0.0000 8400 5400 150 150 8400 5400 8550 5400 +4 0 7 10 0 0 16 0.0000 4 195 135 8350 5490 5\001 +-6 +6 8250 7050 8550 7350 +1 3 0 1 0 0 12 0 20 0.000 1 0.0000 8400 7200 150 150 8400 7200 8550 7200 +4 0 7 8 0 0 16 0.0000 4 195 135 8350 7290 6\001 +-6 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 7 + 6600 5400 7500 6300 6600 7200 7500 8100 7500 6300 8400 7200 + 7500 8100 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 7500 6300 8400 5400 +3 0 2 1 0 7 40 -1 -1 3.000 0 0 0 6 + 7875 5175 7725 5625 8025 6225 7800 7050 8025 7875 7875 8325 + 0.000 1.000 1.000 1.000 1.000 0.000 +3 0 2 1 0 7 40 -1 -1 3.000 0 0 0 7 + 7125 5175 6975 5475 7050 6075 6900 6525 7200 7200 6975 7875 + 6975 8325 + 0.000 1.000 1.000 1.000 1.000 1.000 0.000 +-6 +6 10050 5175 12150 8325 +6 10950 7050 11250 7350 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 11100 7200 150 150 11100 7200 11250 7200 +4 0 0 8 0 0 16 0.0000 4 195 135 11050 7290 3\001 +-6 +6 10950 5250 11250 5550 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 11100 5400 150 150 11100 5400 11250 5400 +4 0 0 10 0 0 16 0.0000 4 195 135 11050 5490 1\001 +-6 +6 11850 6150 12150 6450 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 12000 6300 150 150 12000 6300 12150 6300 +4 0 0 8 0 0 16 0.0000 4 195 135 11950 6390 2\001 +-6 +1 3 0 1 0 0 12 0 20 0.000 1 0.0000 10200 6300 150 150 10200 6300 10350 6300 +1 3 0 1 0 0 12 0 20 0.000 1 0.0000 10200 8100 150 150 10200 8100 10350 8100 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 7 + 10200 8100 11100 7200 10200 6300 11100 5400 11100 7200 12000 6300 + 11100 5400 +3 0 2 1 0 7 40 -1 -1 3.000 0 0 0 6 + 10575 5175 10425 5625 10725 6225 10500 7050 10725 7875 10575 8325 + 0.000 1.000 1.000 1.000 1.000 0.000 +4 0 7 10 0 0 16 0.0000 4 195 135 10150 6390 4\001 +4 0 7 10 0 0 16 0.0000 4 195 135 10150 8190 5\001 +-6 +6 3750 4500 4050 4800 +2 2 0 0 -1 0 55 -1 10 0.000 0 0 -1 0 0 5 + 4050 4800 3750 4800 3750 4500 4050 4500 4050 4800 +4 0 7 35 -1 0 16 0.0000 4 195 135 3825 4731 0\001 +-6 +6 7350 4500 7650 4800 +2 2 0 0 -1 0 55 -1 10 0.000 0 0 -1 0 0 5 + 7650 4800 7350 4800 7350 4500 7650 4500 7650 4800 +4 0 7 35 -1 0 16 0.0000 4 195 135 7425 4731 1\001 +-6 +6 10950 4500 11250 4800 +2 2 0 0 -1 0 55 -1 10 0.000 0 0 -1 0 0 5 + 11250 4800 10950 4800 10950 4500 11250 4500 11250 4800 +4 0 7 35 -1 0 16 0.0000 4 195 135 11025 4731 2\001 +-6 +6 2400 9600 2700 9900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 9600 2700 9600 2700 9900 2400 9900 2400 9600 +4 0 0 5 0 0 16 0.0000 4 195 135 2500 9840 5\001 +-6 +6 2400 10200 2700 10500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 10200 2700 10200 2700 10500 2400 10500 2400 10200 +4 0 0 5 0 0 16 0.0000 4 195 135 2500 10440 9\001 +-6 +6 6000 9600 6300 9900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6000 9600 6300 9600 6300 9900 6000 9900 6000 9600 +4 0 0 5 0 0 16 0.0000 4 195 135 6100 9840 6\001 +-6 +6 6000 10200 6300 10500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6000 10200 6300 10200 6300 10500 6000 10500 6000 10200 +4 0 0 5 0 0 16 0.0000 4 195 135 6100 10440 8\001 +-6 +6 9600 10200 9900 10500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9600 10200 9900 10200 9900 10500 9600 10500 9600 10200 +4 0 0 5 0 0 16 0.0000 4 195 135 9700 10440 9\001 +-6 +6 9600 9600 9900 9900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9600 9600 9900 9600 9900 9900 9600 9900 9600 9600 +4 0 0 5 0 0 16 0.0000 4 195 135 9700 9840 5\001 +-6 +6 300 9000 9900 9300 +6 2400 9000 2700 9300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 9000 2700 9000 2700 9300 2400 9300 2400 9000 +4 0 0 5 0 0 16 0.0000 4 195 135 2500 9240 3\001 +-6 +6 6000 9000 6300 9300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6000 9000 6300 9000 6300 9300 6000 9300 6000 9000 +4 0 0 5 0 0 16 0.0000 4 195 135 6100 9240 2\001 +-6 +6 9600 9000 9900 9300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9600 9000 9900 9000 9900 9300 9600 9300 9600 9000 +4 0 0 5 0 0 16 0.0000 4 195 135 9700 9240 3\001 +-6 +4 0 0 20 0 12 16 0.0000 4 180 1650 300 9225 vertlocnbr\001 +-6 +6 3600 12000 3900 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 12000 3900 12000 3900 12300 3600 12300 3600 12000 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 12600 3900 12600 3900 12900 3600 12900 3600 12600 +-6 +6 6000 12000 6300 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6000 12000 6300 12000 6300 12300 6000 12300 6000 12000 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6000 12600 6300 12600 6300 12900 6000 12900 6000 12600 +-6 +6 7200 12000 7500 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7200 12000 7500 12000 7500 12300 7200 12300 7200 12000 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7200 12600 7500 12600 7500 12900 7200 12900 7200 12600 +-6 +6 11100 12000 11400 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 11100 12000 11400 12000 11400 12300 11100 12300 11100 12000 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 11100 12600 11400 12600 11400 12900 11100 12900 11100 12600 +-6 +6 2400 10800 2700 11100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 10800 2700 10800 2700 11100 2400 11100 2400 10800 +4 0 0 5 0 0 16 0.0000 4 195 135 2500 11040 9\001 +-6 +6 2700 10800 3000 11100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 10800 3000 10800 3000 11100 2700 11100 2700 10800 +4 0 0 5 0 0 16 0.0000 4 195 135 2800 11040 1\001 +-6 +6 6000 10800 6300 11100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6000 10800 6300 10800 6300 11100 6000 11100 6000 10800 +4 0 0 5 0 0 16 0.0000 4 195 135 6100 11040 6\001 +-6 +6 9600 10800 9900 11100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9600 10800 9900 10800 9900 11100 9600 11100 9600 10800 +4 0 0 5 0 0 16 0.0000 4 195 135 9700 11040 1\001 +-6 +6 9900 10800 10200 11100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9900 10800 10200 10800 10200 11100 9900 11100 9900 10800 +4 0 0 15 0 0 16 0.0000 4 195 135 10000 11040 4\001 +-6 +6 10200 10800 10500 11100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 10200 10800 10500 10800 10500 11100 10200 11100 10200 10800 +4 0 0 5 0 0 16 0.0000 4 195 135 10300 11040 7\001 +-6 +6 6300 10800 6600 11100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6300 10800 6600 10800 6600 11100 6300 11100 6300 10800 +4 0 0 5 0 0 16 0.0000 4 195 135 6400 11040 2\001 +-6 +6 6300 13800 6600 14100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6300 13800 6600 13800 6600 14100 6300 14100 6300 13800 +4 0 0 5 0 0 16 0.0000 4 195 135 6400 14040 5\001 +-6 +6 9600 13800 9900 14100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9600 13800 9900 13800 9900 14100 9600 14100 9600 13800 +4 0 0 15 0 0 16 0.0000 4 195 135 9700 14040 4\001 +-6 +6 9900 13800 10200 14100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9900 13800 10200 13800 10200 14100 9900 14100 9900 13800 +4 0 0 5 0 0 16 0.0000 4 195 135 10000 14040 6\001 +-6 +6 10200 13800 10500 14100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 10200 13800 10500 13800 10500 14100 10200 14100 10200 13800 +4 0 0 15 0 0 16 0.0000 4 195 270 10225 14040 11\001 +-6 +6 6000 13800 6300 14100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6000 13800 6300 13800 6300 14100 6000 14100 6000 13800 +4 0 0 15 0 0 16 0.0000 4 195 270 6025 14040 11\001 +-6 +6 2400 12600 2700 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 12600 2700 12600 2700 12900 2400 12900 2400 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 2500 12840 3\001 +-6 +6 2700 12600 3000 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 12600 3000 12600 3000 12900 2700 12900 2700 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 2800 12840 5\001 +-6 +6 3000 12600 3300 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 12600 3300 12600 3300 12900 3000 12900 3000 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 3100 12840 4\001 +-6 +6 3300 12600 3600 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 12600 3600 12600 3600 12900 3300 12900 3300 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 3400 12840 1\001 +-6 +6 2400 12000 2700 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 12000 2700 12000 2700 12300 2400 12300 2400 12000 +4 0 0 5 0 0 16 0.0000 4 195 135 2500 12240 3\001 +-6 +6 3300 12000 3600 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 12000 3600 12000 3600 12300 3300 12300 3300 12000 +4 0 0 5 0 0 16 0.0000 4 195 135 3400 12240 1\001 +-6 +6 4800 12600 5100 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4800 12600 5100 12600 5100 12900 4800 12900 4800 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 4900 12840 3\001 +-6 +6 5100 12600 5400 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5100 12600 5400 12600 5400 12900 5100 12900 5100 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 5200 12840 2\001 +-6 +6 4800 12000 5100 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4800 12000 5100 12000 5100 12300 4800 12300 4800 12000 +4 0 0 5 0 0 16 0.0000 4 195 135 4900 12240 3\001 +-6 +6 5100 12000 5400 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5100 12000 5400 12000 5400 12300 5100 12300 5100 12000 +4 0 0 5 0 0 16 0.0000 4 195 135 5200 12240 2\001 +-6 +6 3000 12000 3300 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 12000 3300 12000 3300 12300 3000 12300 3000 12000 +4 0 0 15 0 0 16 0.0000 4 195 270 3025 12240 11\001 +-6 +6 2700 12000 3000 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 12000 3000 12000 3000 12300 2700 12300 2700 12000 +4 0 0 15 0 0 16 0.0000 4 195 270 2725 12240 12\001 +-6 +6 3900 12600 4200 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3900 12600 4200 12600 4200 12900 3900 12900 3900 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 4000 12840 4\001 +-6 +6 4200 12600 4500 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4200 12600 4500 12600 4500 12900 4200 12900 4200 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 4300 12840 2\001 +-6 +6 4500 12600 4800 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4500 12600 4800 12600 4800 12900 4500 12900 4500 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 4600 12840 1\001 +-6 +6 4200 12000 4500 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4200 12000 4500 12000 4500 12300 4200 12300 4200 12000 +4 0 0 5 0 0 16 0.0000 4 195 135 4300 12240 2\001 +-6 +6 4500 12000 4800 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4500 12000 4800 12000 4800 12300 4500 12300 4500 12000 +4 0 0 5 0 0 16 0.0000 4 195 135 4600 12240 1\001 +-6 +6 3900 12000 4200 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3900 12000 4200 12000 4200 12300 3900 12300 3900 12000 +4 0 0 15 0 0 16 0.0000 4 195 270 3925 12240 11\001 +-6 +6 2400 13800 2700 14100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 13800 2700 13800 2700 14100 2400 14100 2400 13800 +4 0 0 15 0 0 16 0.0000 4 195 270 2425 14040 11\001 +-6 +6 2700 13800 3000 14100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 13800 3000 13800 3000 14100 2700 14100 2700 13800 +4 0 0 5 0 0 16 0.0000 4 195 135 2800 14040 5\001 +-6 +6 3000 13800 3300 14100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 13800 3300 13800 3300 14100 3000 14100 3000 13800 +4 0 0 5 0 0 16 0.0000 4 195 135 3100 14040 9\001 +-6 +6 3000 10800 3300 11100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 10800 3300 10800 3300 11100 3000 11100 3000 10800 +4 0 0 5 0 0 16 0.0000 4 195 135 3100 11040 6\001 +-6 +6 7500 12600 7800 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7500 12600 7800 12600 7800 12900 7500 12900 7500 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 7600 12840 4\001 +-6 +6 7800 12600 8100 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7800 12600 8100 12600 8100 12900 7800 12900 7800 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 7900 12840 5\001 +-6 +6 8100 12600 8400 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8100 12600 8400 12600 8400 12900 8100 12900 8100 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 8200 12840 3\001 +-6 +6 8400 12600 8700 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8400 12600 8700 12600 8700 12900 8400 12900 8400 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 8500 12840 6\001 +-6 +6 8700 12600 9000 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8700 12600 9000 12600 9000 12900 8700 12900 8700 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 8800 12840 2\001 +-6 +6 7500 12000 7800 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7500 12000 7800 12000 7800 12300 7500 12300 7500 12000 +4 0 0 5 0 0 16 0.0000 4 195 135 7600 12240 3\001 +-6 +6 8100 12000 8400 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8100 12000 8400 12000 8400 12300 8100 12300 8100 12000 +4 0 0 5 0 0 16 0.0000 4 195 135 8200 12240 2\001 +-6 +6 7800 12000 8100 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7800 12000 8100 12000 8100 12300 7800 12300 7800 12000 +4 0 0 15 0 0 16 0.0000 4 195 270 7825 12240 17\001 +-6 +6 8400 12000 8700 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8400 12000 8700 12000 8700 12300 8400 12300 8400 12000 +4 0 0 15 0 0 16 0.0000 4 195 270 8425 12240 19\001 +-6 +6 8700 12000 9000 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8700 12000 9000 12000 9000 12300 8700 12300 8700 12000 +4 0 0 15 0 0 16 0.0000 4 195 270 8725 12240 12\001 +-6 +6 6600 12600 6900 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6600 12600 6900 12600 6900 12900 6600 12900 6600 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 6700 12840 3\001 +-6 +6 6300 12600 6600 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6300 12600 6600 12600 6600 12900 6300 12900 6300 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 6400 12840 6\001 +-6 +6 6900 12600 7200 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6900 12600 7200 12600 7200 12900 6900 12900 6900 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 7000 12840 1\001 +-6 +6 6600 12000 6900 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6600 12000 6900 12000 6900 12300 6600 12300 6600 12000 +4 0 0 5 0 0 16 0.0000 4 195 135 6700 12240 2\001 +-6 +6 6300 12000 6600 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6300 12000 6600 12000 6600 12300 6300 12300 6300 12000 +4 0 0 15 0 0 16 0.0000 4 195 270 6325 12240 19\001 +-6 +6 6900 12000 7200 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6900 12000 7200 12000 7200 12300 6900 12300 6900 12000 +4 0 0 15 0 0 16 0.0000 4 195 270 6925 12240 11\001 +-6 +6 9600 12600 9900 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9600 12600 9900 12600 9900 12900 9600 12900 9600 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 9700 12840 4\001 +-6 +6 9900 12600 10200 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9900 12600 10200 12600 10200 12900 9900 12900 9900 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 10000 12840 2\001 +-6 +6 10200 12600 10500 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 10200 12600 10500 12600 10500 12900 10200 12900 10200 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 10300 12840 3\001 +-6 +6 9600 12000 9900 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9600 12000 9900 12000 9900 12300 9600 12300 9600 12000 +4 0 0 15 0 0 16 0.0000 4 195 270 9625 12240 11\001 +-6 +6 10200 12000 10500 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 10200 12000 10500 12000 10500 12300 10200 12300 10200 12000 +4 0 0 15 0 0 16 0.0000 4 195 270 10225 12240 19\001 +-6 +6 9900 12000 10200 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9900 12000 10200 12000 10200 12300 9900 12300 9900 12000 +4 0 0 15 0 0 16 0.0000 4 195 270 9925 12240 18\001 +-6 +6 10500 12600 10800 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 10500 12600 10800 12600 10800 12900 10500 12900 10500 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 10600 12840 1\001 +-6 +6 10800 12600 11100 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 10800 12600 11100 12600 11100 12900 10800 12900 10800 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 10900 12840 3\001 +-6 +6 10500 12000 10800 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 10500 12000 10800 12000 10800 12300 10500 12300 10500 12000 +4 0 0 15 0 0 16 0.0000 4 195 270 10525 12240 17\001 +-6 +6 10800 12000 11100 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 10800 12000 11100 12000 11100 12300 10800 12300 10800 12000 +4 0 0 15 0 0 16 0.0000 4 195 270 10825 12240 19\001 +-6 +6 11400 12600 11700 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 11400 12600 11700 12600 11700 12900 11400 12900 11400 12600 +4 0 0 15 0 0 16 0.0000 4 195 135 11500 12840 4\001 +-6 +6 11700 12600 12000 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 11700 12600 12000 12600 12000 12900 11700 12900 11700 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 11800 12840 1\001 +-6 +6 12000 12600 12300 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 12000 12600 12300 12600 12300 12900 12000 12900 12000 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 12100 12840 2\001 +-6 +6 12300 12600 12600 12900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 12300 12600 12600 12600 12600 12900 12300 12900 12300 12600 +4 0 0 5 0 0 16 0.0000 4 195 135 12400 12840 5\001 +-6 +6 11400 12000 11700 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 11400 12000 11700 12000 11700 12300 11400 12300 11400 12000 +4 0 0 15 0 0 16 0.0000 4 195 270 11425 12240 11\001 +-6 +6 11700 12000 12000 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 11700 12000 12000 12000 12000 12300 11700 12300 11700 12000 +4 0 0 15 0 0 16 0.0000 4 195 270 11725 12240 17\001 +-6 +6 12000 12000 12300 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 12000 12000 12300 12000 12300 12300 12000 12300 12000 12000 +4 0 0 15 0 0 16 0.0000 4 195 270 12025 12240 18\001 +-6 +6 12300 12000 12600 12300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 12300 12000 12600 12000 12600 12300 12300 12300 12300 12000 +4 0 0 15 0 0 16 0.0000 4 195 270 12325 12240 12\001 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 2100 14400 2100 4800 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5700 14400 5700 4800 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 9300 14400 9300 4800 +2 2 0 1 0 0 50 -1 10 0.000 0 0 -1 0 0 5 + 12900 4800 0 4800 0 4500 12900 4500 12900 4800 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2850 11100 2850 11550 2550 11550 2550 12000 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2550 11100 2550 11475 4950 11475 4950 12000 +2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 2 + 1 1 1.00 60.00 120.00 + 9750 11100 9750 12000 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 10050 11100 10050 11625 10650 11625 10650 12000 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 10350 11100 10350 11550 11550 11550 11550 12000 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 9750 13800 9750 13275 10650 13275 10650 12900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 10050 13800 10050 13350 11250 13350 11250 12900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 10350 13800 10350 13425 12750 13425 12750 12900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 6150 11100 6150 11550 7650 11550 7650 12000 +2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 2 + 1 1 1.00 60.00 120.00 + 6450 11100 6450 12000 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 6150 13800 6150 13275 9150 13275 9150 12900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 6450 13800 6450 13350 7350 13350 7350 12900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2550 13800 2550 13425 5550 13425 5550 12900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2850 13800 2850 13350 3750 13350 3750 12900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3150 13800 3150 13275 4950 13275 4950 12900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3150 11100 3150 11625 4050 11625 4050 12000 +4 0 7 40 -1 0 16 0.0000 4 195 1140 150 4731 Local data\001 +4 0 0 20 0 12 16 0.0000 4 240 1650 300 9825 vertgstnbr\001 +4 0 0 20 0 12 16 0.0000 4 240 1650 300 10425 edgelocnbr\001 +4 0 0 20 0 12 16 0.0000 4 240 1650 300 12825 edgegsttab\001 +4 0 0 20 0 12 16 0.0000 4 240 1650 300 12225 edgeloctab\001 +4 0 0 20 0 12 16 0.0000 4 180 1650 300 11025 vertloctab\001 +4 0 0 20 0 12 16 0.0000 4 180 1650 300 14025 vendloctab\001 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 8400 1200 7500 2100 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 13 + 6600 1200 7500 2100 6600 3000 5700 2100 6600 1200 6600 3000 + 7500 3900 7500 2100 8400 3000 9300 2100 8400 1200 8400 3000 + 7500 3900 +3 0 2 1 0 7 40 -1 -1 3.000 0 0 0 6 + 7875 975 7725 1425 8025 2025 7800 2850 8025 3675 7875 4125 + 0.000 1.000 1.000 1.000 1.000 0.000 +3 0 2 1 0 7 40 -1 -1 3.000 0 0 0 7 + 7125 975 6975 1275 7050 1875 6900 2325 7200 3000 6975 3675 + 6975 4125 + 0.000 1.000 1.000 1.000 1.000 1.000 0.000 +4 0 0 20 0 12 16 0.0000 4 180 1155 300 825 baseval\001 +4 0 0 20 0 12 16 0.0000 4 240 1650 300 2025 edgeglbnbr\001 +4 0 0 20 0 12 16 0.0000 4 240 1650 300 3225 proccnttab\001 +4 0 0 20 0 12 16 0.0000 4 240 1650 300 2625 procglbnbr\001 diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/p_f_logo.ps scotch-6.0.6/doc/src/ptscotch/p_f_logo.ps --- scotch-6.0.4.dfsg1/doc/src/ptscotch/p_f_logo.ps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/p_f_logo.ps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,4965 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: /home/pelegrin/tex/paral/scotch/puser_5.0/p_f_logo.ps +%%Creator: XV Version 3.10a Rev: 12/29/94 (PNG patch 1.2) - by John Bradley +%%BoundingBox: 74 357 522 485 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% define string to hold a scanline's worth of data +/pix 1344 string def + +% define space for color conversions +/grays 448 string def % space for gray scale line +/npixls 0 def +/rgbindx 0 def + +% lower left corner +74 357 translate + +% size of image (on paper, in 1/72inch coords) +447.98400 128.01600 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays 0 npixls getinterval + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +448 128 8 % dimensions of data +[448 0 0 -128 0 128] % mapping matrix +{currentfile pix readhexstring pop} +false 3 colorimage + +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e5000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e5000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e5000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 +c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 +c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001 +c00001c00001bfbf32c00001000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 +000000000000c7c700000000c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcf +cfcfcfc00001bfbf32c00001c00001c00001bfbf32c00001000000000000c7c700000000 +000000000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000 +000000000000c7c700000000000000000000c7c700000000c00001c00001bfbf32c00001 +c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001c00001c00001bfbf32c00001 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 +c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 +c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 +c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001 +c00001c00001bfbf32c00001000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 +000000000000c7c700000000c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcf +cfcfcfc00001bfbf32c00001c00001c00001bfbf32c00001000000000000c7c700000000 +000000000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000 +000000000000c7c700000000000000000000c7c700000000c00001c00001bfbf32c00001 +c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001c00001c00001bfbf32c00001 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 +c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 +c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 +c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001 +c00001c00001bfbf32c00001000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 +000000000000c7c700000000 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 +bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 +bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32 +bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 +bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 +bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32 +bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 +bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 +bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 +bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32 +bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 +bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 +bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32 +bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 +bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700 +000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 +c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001 +c00001bfbf32c00001c00001000000c7c700000000000000000000c7c700000000000000 +000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcf +cfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001000000c7c700000000000000 +000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000000000 +000000c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000000000 +000000c7c700000000000000000000c7c700000000000000c00001bfbf32c00001c00001 +c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001 +000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 +c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 +c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001 +c00001bfbf32c00001c00001000000c7c700000000000000000000c7c700000000000000 +000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcf +cfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001000000c7c700000000000000 +000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000000000 +000000c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000000000 +000000c7c700000000000000000000c7c700000000000000c00001bfbf32c00001c00001 +c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001 +000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 +c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 +c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001 +c00001bfbf32c00001c00001000000c7c700000000000000000000c7c700000000000000 +000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e5000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e5000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 +c00001c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e5000c00001c00001c00001c00001c00001c00001c000010e5000 +0e5000c00001c00001c00001c00001c00001c00001c000010e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e5000c00001c00001c00001c00001 +c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 +c00001c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e5000c00001c00001c00001c00001c00001c00001c000010e5000 +0e5000c00001c00001c00001c00001c00001c00001c000010e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e5000c00001c00001c00001c00001 +c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 +c00001c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e5000 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 +bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 +c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e5000c00001c00001c00001c00001c00001c00001c000010e5000 +0e5000c00001c00001c00001c00001c00001c00001c000010e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e5000c00001c00001c00001c00001 +c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 +bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 +bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 +c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e5000c00001c00001c00001c00001c00001c00001c000010e5000 +0e5000c00001c00001c00001c00001c00001c00001c000010e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e5000c00001c00001c00001c00001 +c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 +bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 +bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 +c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 +c00001c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e5000c00001c00001c00001c00001c00001c00001c000010e5000 +0e5000c00001c00001c00001c00001c00001c00001c000010e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e5000c00001c00001c00001c00001 +c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 +c00001c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e5000c00001c00001c00001c00001c00001c00001c000010e5000 +0e5000c00001c00001c00001c00001c00001c00001c000010e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e5000c00001c00001c00001c00001 +c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 +c00001c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e5000 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +f47c25f47c25f47c25f47c25f47c250e5000c00001c00001c000010e5000c00001c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25c000010e5000c00001c00001c000010e5000c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32 +bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e5000cfcfcfcfcfcfcfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000cfcfcf +cfcfcfcfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e5000cfcfcfcfcfcfcfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32 +bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32 +bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e5000cfcfcfcfcfcfcfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000cfcfcf +cfcfcfcfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e5000cfcfcfcfcfcfcfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32 +bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e5000f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c250e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e5000cfcfcfcfcfcfcfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32 +bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c250e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e5000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25bfbf32cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcfcfcfcfcfcfcf0e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32 +bfbf32bfbf32f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c250e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32 +bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcfcfcfcfcfcfcf0e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfcfcfcf +cfcfcf0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcfcfcfcfcfcfcf0e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32 +bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e5000f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c250e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcfcfcfcfcfcfcf0e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e5000 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25bfbf32c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25c000010e5000c00001c00001c000010e5000c00001c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25ffb953ffb953ffa041f47c25f47c25f47c25f47c25f47c25c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 +bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +ffa041f47c25ffa041f47c25f47c25f47c25f47c25f47c25f47c25c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e5000c00001c00001c00001c00001 +c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 +0e5000c000010e50000e50000e5000c000010e5000f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 +c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e5000c00001c00001c00001c00001c00001c00001c000010e5000 +0e5000c00001c00001c00001c00001c00001c00001c000010e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e5000c00001c00001c00001c00001 +c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 +bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c250e50000e5000c000010e50000e50000e5000c000010e50000e5000 +c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 +c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25bfbf32c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e5000c00001c00001c00001c00001 +c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 +0e50000e5000c000010e50000e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c250e5000c000010e50000e50000e5000c000010e5000 +0e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 +c00001c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e5000c00001c00001c00001c00001c00001c00001c000010e5000 +0e5000c00001c00001c00001c00001c00001c00001c000010e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e5000c00001c00001c00001c00001 +c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c250e50000e50000e5000c000010e50000e50000e5000c000010e5000 +c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 +c00001c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e5000 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001c00001c00001c00001c00001c00001c00001f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001 +c000010e5000c00001c00001c00001bfbf32f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c250e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25bfbf32c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +c000010e5000c00001c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001c00001c00001c00001c00001c00001f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +f47c25f47c25f47c25f47c25f47c25c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001f47c25f47c25f47c25f47c25f47c25c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +c00001c000010e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001f47c25f47c25c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 +bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +c00001c00001c00001c00001c00001c00001c00001f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c00001f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +f47c25f47c25f47c25f47c25f47c25c00001c00001c00001c00001c00001c000010e5000 +0e5000c00001c00001c00001c00001c00001c00001c000010e5000f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e5000f47c25f47c25f47c25f47c25f47c25c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e5000c00001c00001c00001c00001 +c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 +0e5000c000010e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c250e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c250e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 +c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e5000c00001c00001c00001c00001c00001c00001c000010e5000 +0e5000c00001c00001c00001c00001c00001c00001c000010e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000f47c25 +f47c25f47c25f47c250e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e5000c00001c00001c00001c00001 +c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 +bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c250e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 +c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c00001f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e5000000000f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +f47c25f47c25f47c25f47c25f47c250e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e5000f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25ffa041ffa041f47c25f47c25 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e5000f47c25f47c25f47c25f47c25f47c25c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000f47c25f47c25f47c25f47c25ffa041ffa041 +f47c25f47c250000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e5000f47c25f47c25f47c25 +f47c25f47c25f47c250e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c250000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e5000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25000000c7c7000000000000000000000e5000000000000000 +f47c25f47c25f47c25f47c25f47c250e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c00001000000f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000f47c25f47c25f47c25f47c25f47c25c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25c7c7000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000f47c25f47c25f47c25f47c25f47c25 +f47c25f47c250000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c250000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c250000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c250000000000000e50000000000000000000000e5000000000 +f47c25f47c25f47c25f47c25f47c25c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c00001000000f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000f47c25f47c25f47c25f47c25f47c250000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000f47c25f47c25f47c25f47c25f47c25 +f47c25f47c250e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e5000000000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c250e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c250e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e5000f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25c7c7000000000e50000e50000e50000000000e50000e5000 +f47c25f47c25f47c25f47c25f47c25c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000f47c25f47c25f47c25 +f47c25ffa041ffa041ffa041f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e5000f47c25f47c25f47c25f47c25f47c250000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +f47c25f47c25f47c25f47c25ffa041ffa041ffa041f47c25f47c25f47c25f47c25f47c25 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e5000ffa041f47c25f47c25ffb953 +ffa041f47c250e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c250e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c250000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c00001f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25c7c7000000000e50000e50000e50000000000e5000 +ffa041f47c25f47c25ffa041f47c250e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e5000f47c25f47c25f47c25 +f47c25ffa041ffa041ffa041f47c25ffa041ffa041f47c25f47c25ffa041f47c25f47c25 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e5000ffa041f47c25f47c25ffa041f47c25c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +f47c25f47c25f47c25f47c25ffa041ffa041ffa041f47c25ffa041ffa041f47c25f47c25 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e5000f47c25f47c25ffb953ffb953 +f47c25c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c250000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e5000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25c7c7000000000000000000000e5000000000000000 +f47c25ffa041ffa041f47c25ffa0410e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c00001000000f47c25ffa041ffa041 +ffa041ffa041ffb953ffa041f47c25ffa041f47c25ffa041ffa041f47c25ffa041ffa041 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000f47c25ffa041ffa041f47c25ffa041c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +f47c25ffa041ffa041ffa041f47c25ffb953ffa041f47c25ffa041f47c25ffa041ffa041 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000f47c25ffb953ffe6a6f47c25 +f47c25c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c250e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000f47c25f47c25f47c25f47c25ffb953 +ffb953ffb953ffb953f47c25f47c25f47c25ffb953f47c25f47c25f47c250e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +000000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25ffb953ffb953 +ffb953ffb953f47c25f47c25f47c25ffb9530e50000000000000000000000e5000000000 +ffe6a6ffa041f47c25ffe6a6ffa041c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c00001000000ffb953ffb953ffa041 +ffb953ffe6a6ffe6a6ffb953ffa041ffb953ffe6a6ffb953ffa041ffe6a6ffb953ffa041 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000ffe6a6ffa041f47c25ffe6a6ffa0410000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000f47c25 +f47c25f47c25ffa041ffb953ffe6a6ffe6a6ffb953ffa041ffb953ffe6a6ffa041f47c25 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000ffa041ffa041f47c25ffa041 +f47c250000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +f47c25f47c25f47c25f47c25ffb953ffb953ffb953ffb953f47c25f47c25f47c25f47c25 +f47c250000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +f47c25f47c25f47c25f47c25f47c25f47c25ffa041f47c25f47c25f47c25f47c25f47c25 +f47c250000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e5000f47c25f47c25f47c25ffb953ffb953 +f47c25ffa041f47c25f47c25ffb953f47c25f47c25f47c25ffb953f47c250e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e5000000000f47c25f47c25f47c25ffb953f47c25f47c25f47c25ffb953ffb953f47c25 +ffa041f47c25f47c25f47c25ffb953ffb9530e50000e50000e50000000000e50000e5000 +f47c25ffa041f47c25f47c25ffa041c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000ffa041ffb953ffb953 +ffa041ffa041ffb953ffa041ffa041ffa041ffb953ffa041ffa041ffb953ffb953ffa041 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e5000f47c25ffa041f47c25f47c25ffa0410000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000f47c25 +ffa041f47c25ffb953f47c25f47c25f47c25ffa041ffa041f47c25f47c25ffa041f47c25 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000f47c25f47c25f47c25 +f47c250000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +f47c25f47c25f47c25ffb953ffb953f47c25ffa041f47c25f47c25ffb953f47c25f47c25 +f47c250000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +f47c25f47c25f47c25f47c25f47c25ffa041ffa041f47c25ffa041f47c25f47c25f47c25 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c00001f47c25ffa041ffb953ffe6a6ffa041 +ffa041ffa041ffb953ffb953ffa041ffa041ffb953ffb953ffa041ffa0410000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e5000f47c25ffa041ffb953ffe6a6f47c25ffa041ffb953ffe6a6ffa041ffa041 +ffa041ffb953ffb953ffa041ffa041ffb9530000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e5000ffb953ffa041ffb953 +f47c25ffa041ffa041f47c25f47c25ffa041ffa041f47c25ffa041ffa041ffa041f47c25 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001ffa041 +ffb953ffa041f47c25f47c25ffa041ffa041f47c25f47c25f47c25f47c25f47c25f47c25 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e5000f47c25f47c25f47c25 +f47c25c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +f47c25ffa041ffb953ffe6a6ffa041ffa041ffa041ffb953ffb953ffa041ffa041ffb953 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +f47c25ffa041ffa041f47c25ffa041ffa041f47c25ffa041ffa041f47c25f47c25f47c25 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e5000 +000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 +c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +c00001bfbf32c00001c00001c00001bfbf32c00001ffb953ffa041ffb953ffd07bffe6a6 +ffd07bffe6a6ffd07bffd07bffa041ffb953ffd07bffd07bffa041ffb953000000000000 +000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 +000000c7c700ffb953ffa041ffb953ffd07bffb953ffa041ffb953ffd07bffe6a6ffd07b +ffe6a6ffd07bffd07bffa041ffe6a6ffd07b000000000000000000c7c700000000000000 +000000c7c700000000000000c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcf +cfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001000000ffa041f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25ffa041f47c25ffa041 +000000c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000000000 +000000c7c700000000000000000000c7c700000000000000c00001bfbf32c00001c00001 +c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001c00001bfbf32c00001f47c25 +ffa041f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000000000c7c700000000000000000000f47c25f47c25f47c25 +c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001 +c00001bfbf32c00001c00001000000c7c700000000000000000000c7c700000000000000 +000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcf +cfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001000000c7c700000000000000 +000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000ffb953 +ffb953ffa041ffb953ffd07bffe6a6ffd07bffe6a6ffd07bffd07bffa041ffb953ffb953 +000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000000000 +000000c7c700000000000000000000c7c700000000000000c00001bfbf32c00001c00001 +c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001 +000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 +c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000f47c25 +f47c25ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffb953ffb953f47c25 +c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001 +c00001bfbf32c00001c00001000000c7c700000000000000000000c7c700000000000000 +000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 +c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 +c00001c00001bfbf32c00001c00001c00001bfbf32f47c25ffa041ffe6a6ffb953ffa041 +ffb953ffb953ffb953ffb953ffa041f47c25ffb953ffb953ffa041f47c25c7c700000000 +000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 +000000000000f47c25ffa041ffe6a6ffb953f47c25ffa041ffe6a6ffb953ffa041ffb953 +ffb953ffb953ffb953ffa041ffb953ffb953c7c700000000000000000000c7c700000000 +000000000000c7c700000000c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcf +cfcfcfc00001bfbf32c00001c00001c00001bfbf32c00001000000f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000 +000000000000c7c700000000000000000000c7c700000000c00001c00001bfbf32c00001 +c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001c00001c00001bfbf32f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700000000000000000000c7c700000000000000f47c25f47c25f47c25 +c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 +c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001 +c00001c00001bfbf32f47c25ffb953ffb953f47c25f47c25ffb953f47c25ffb953f47c25 +f47c25000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700c7c700c7c700c7c700c7c700f47c25ffb953ffb953f47c25f47c25 +ffb953f47c25f47c25ffb953ffb953f47c25f47c25c00001c00001c00001bfbf32cfcfcf +cfcfcfc00001bfbf32c00001c00001c00001bfbf32c00001000000000000c7c700000000 +000000000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700f47c25 +f47c25ffa041ffe6a6ffb953ffa041ffb953ffb953ffb953ffb953ffa041f47c25f47c25 +000000000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000 +000000000000c7c700000000000000000000c7c700000000c00001c00001bfbf32c00001 +c00001c00001bfbf32cfcfcfcfcfcfc00001f47c25f47c25ffe6a6f47c25ffb953f47c25 +f47c25f47c25f47c25f47c25000000000000c7c700000000000000000000c7c700c7c700 +c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700ffb953 +f47c25ffa041ffa041f47c25ffa041f47c25ffa041f47c25ffb953f47c25ffa041f47c25 +c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 +c00001f47c25ffb953ffa041f47c25ffa041f47c25f47c25ffb953c00001bfbf32c00001 +c00001c00001bfbf32c00001000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 +000000000000c7c700000000 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32ffa041ffa041ffa041f47c25f47c25 +ffa041ffa041ffa041ffa041ffa041f47c25ffa041ffa041ffa041f47c25c7c700c7c700 +c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000ffa041ffa041ffa041f47c25ffa041ffa041ffa041ffb953ffb953ffb953 +ffb953ffa041ffa041ffa041ffa041ffa041c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 +bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32c7c700f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32 +bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32f47c25 +f47c25f47c25f47c25ffa041f47c25ffa041ffe6a6ffb953ffe6a6ffb953ffa041ffd07b +ffd07bf47c25f47c25f47c25c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700f47c25f47c25f47c25f47c25f47c25ffd07bffe6a6ffb953 +ffb953ffb953ffe6a6ffa041ffe6a6ffb953ffa041f47c25f47c25f47c25bfbf32bfbf32 +bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700f47c25f47c25f47c25f47c25f47c25f47c25f47c25ffa041 +ffa041ffa041ffa041f47c25f47c25f47c25ffa041ffa041ffa041ffa041f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32 +bfbf32c00001f47c25f47c25f47c25ffb953ffb953f47c25ffa041ffd07bffe6a6ffa041 +ffb953ffe6a6ffb953f47c25f47c25f47c25f47c25c7c700c7c700000000c7c700c7c700 +c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700f47c25 +ffb953ffb953ffb953ffb953ffa041ffb953ffb953ffd07bffa041ffa041f47c25c7c700 +c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700ffd07b +f47c25ffb953ffb953ffb953ffa041ffa041ffb953ffb953f47c25ffa041bfbf32bfbf32 +bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001ffb953f47c25f47c25f47c25ffa041 +f47c25f47c25f47c25ffa041ffa041ffb953f47c25ffa041ffa041ffb953000000c7c700 +c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700ffb953f47c25f47c25f47c25ffb953f47c25f47c25f47c25ffa041ffa041 +ffa041f47c25ffa041ffa041ffb953f47c25000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 +bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32c7c700f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32 +bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25ffe6a6ffe6a6 +f47c25f47c25f47c25f47c25f47c25f47c25000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700f47c25f47c25f47c25f47c25ffa041ffa041ffb953ffd07bffa041f47c25ffe6a6 +f47c25f47c25f47c25f47c25f47c25ffb953ffb953ffb953ffb953f47c25f47c25f47c25 +bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700 +c7c700c7c700000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +ffb953f47c25f47c25f47c25ffa041f47c25f47c25f47c25ffa041ffa041ffb953f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32 +f47c25f47c25f47c25f47c25f47c25ffa041f47c25ffa041f47c25f47c25ffe6a6ffe6a6 +ffd07bffd07bffa041ffd07bffb953ffb953f47c25f47c25f47c25c7c700c7c700c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000ffb953 +ffb953ffd07bffe6a6ffe6a6ffd07bffd07bffd07bffb953ffb953ffa041f47c25c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700f47c25ffb953ffb953 +ffd07bffd07bffd07bffb953ffe6a6ffb953ffb953ffd07bffb953ffb953ffa041bfbf32 +bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001f47c25f47c25f47c25ffb953f47c25 +ffb953f47c25f47c25ffa041f47c25f47c25f47c25ffa041f47c25f47c25000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000f47c25f47c25f47c25ffb953f47c25f47c25f47c25ffb953f47c25ffb953 +f47c25f47c25f47c25ffb953f47c25ffb9530000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c00001000000f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c250000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25ffb953f47c25f47c25f47c25 +f47c25f47c25c00001c00001c000010e5000c00001c000010000000e5000000000000000 +0000000e5000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25ffb953 +f47c25f47c25f47c25ffb953f47c25ffb953f47c25f47c25ffa041f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000f47c25ffb953 +ffa041ffb953ffb953ffb953ffb953ffe6a6ffa041ffb953ffb953ffb953f47c25000000 +000000c7c7000000000000000000000e5000000000f47c25f47c25f47c25ffb953ffb953 +ffb953f47c25ffb953ffd07bf47c25f47c25ffe6a6f47c25f47c25ffb953f47c25f47c25 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +000000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c250e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c00001000000f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c250000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c00001f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c250000000000000e5000000000f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000000000000000f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000 +0000000000000e5000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25c00001c00001c000010e5000c000010000000000000e5000000000 +0000000000000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001c000010e5000f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000 +0000000000000e50000000000000000000000e5000000000000000000000f47c25ffb953 +ffa041ffa041f47c25ffa041ffb953ffb953f47c25ffb953ffb953f47c25f47c25000000 +0000000000000e5000000000000000000000f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e5000f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e5000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c250000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c250e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c250e50000e50000000000e50000e5000f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e5000 +0e50000000000e50000e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c250e5000c000010e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c700000000f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e5000f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c250e50000e50000e5000c000010e5000f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +c7c7000000000e50000e50000e50000000000e50000e50000e5000000000f47c25f47c25 +ffb953f47c25ffa041ffa041ffa041f47c25f47c25f47c25f47c25f47c25c7c700c7c700 +c7c7000000000e50000e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c00001f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e5000f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25c000010e50000e50000e50000000000e50000e5000f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e5000f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000000000e5000 +0e50000e50000000000e50000e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c250e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c700f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c250e5000c000010e50000e50000e5000c000010e5000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e5000f47c25f47c25 +ffb953f47c25ffa041ffa041f47c25f47c25f47c25ffa041f47c25f47c25000000c7c700 +c7c700c7c7000000000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c250e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e5000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c00001000000f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c250e5000c00001c000010000000e5000000000000000000000f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000000000000000 +0000000e50000000000000000000000e5000000000f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000e5000000000000000 +0000000e5000000000000000c000010e5000f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c250e5000c00001c000010000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e5000000000000000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25cfcfcf0e5000c00001c00001c000010e5000c00001c00001 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +000000c7c7000000000000000000000e50000000000000000000000e5000f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000000000 +000000c7c700000000f47c25f47c25f47c25f47c25f47c250000000e5000000000000000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c250e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c250000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c00001000000f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +c00001c000010e5000c000010000000000000e5000000000000000000000f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000e5000000000 +0000000000000e5000000000000000000000f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c250e5000c000010000000000000e5000000000 +0000000000000e5000000000000000000000c7c700000000000000f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e5000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +0000000000000e50000000000000000000000e5000000000000000f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c7c700000000 +000000000000f47c25f47c25f47c25f47c25f47c250000000000000000000e5000000000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e5000f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000f47c25f47c25ffa041 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25ffa041f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c250000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +0e5000c000010e50000e50000e50000000000e50000e50000e5000000000f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000e50000e5000 +0e50000000000e50000e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c250e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e5000f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c700f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c250e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +c7c7000000000e50000e50000e50000000000e50000e50000e5000f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000c7c700c7c700 +c7c700000000f47c25f47c25f47c25f47c250e50000e50000e50000000000e50000e5000 +0e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c00001f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e5000000000f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e5000f47c25ffa041ffa041 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25ffa041ffa041f47c25f47c25f47c25 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000000000f47c25f47c25f47c25f47c25f47c25ffa041ffa041f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25ffa041ffa041f47c25f47c25f47c25f47c25f47c25 +f47c25f47c250000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e5000f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000000000e5000 +0e50000e50000000000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c250000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c00001f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e5000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +c7c700c7c7000000000e50000e50000e50000000000e50000e5000f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000000000c7c700 +c7c700f47c25f47c25f47c25f47c250e50000000000e50000e50000e50000000000e5000 +0e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c250e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e5000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c00001000000ffa041ffa041ffa041 +ffa041ffa041f47c25f47c25f47c25f47c25ffa041ffa041ffa041ffa041f47c25f47c25 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e5000000000000000f47c25f47c25f47c25ffa041ffa041ffa041ffa041ffa041 +ffa041f47c25ffa041ffa041ffa041ffa041ffa041ffa041ffa041f47c25f47c25ffa041 +f47c25f47c25f47c25f47c250000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000e5000000000000000 +0000000e5000000000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25c000010000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000 +000000c7c7000000000000000000000e5000000000000000000000f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000000000000000 +f47c25f47c25f47c25f47c250000000e50000000000000000000000e5000000000000000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c250e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000000000 +000000000000c7c7000000000000000000000e5000000000000000f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c00001000000ffa041f47c25f47c25 +ffa041ffa041ffa041f47c25ffa041ffa041ffa041f47c25ffa041ffa041ffa041f47c25 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e5000000000000000f47c25ffa041ffa041f47c25f47c25ffa041ffa041 +ffa041f47c25ffa041ffa041ffa041f47c25ffa041ffa041ffa041ffa041ffa041ffa041 +f47c25f47c25f47c25f47c25f47c250000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e5000000000000000000000f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000000000000000e5000000000 +0000000000000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c250000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25c000010000000000000e5000000000 +0000000000000e5000000000000000000000c7c700000000f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +000000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c7c700000000 +0000000000000e50000000000000000000000e5000000000f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000c7c700f47c25 +f47c25f47c25f47c250000000000000000000e50000000000000000000000e5000000000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e5000f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25ffa041f47c25f47c25f47c25f47c25f47c250e50000e5000 +0e5000000000c7c700c7c700c7c700000000f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +ffa041000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000f47c25ffa041ffa041 +ffa041f47c25ffa041ffa041f47c25ffa041f47c25f47c25ffa041ffa041ffa041f47c25 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e5000000000f47c25f47c25ffa041ffa041ffa041f47c25 +ffa041ffa041f47c25ffa041f47c25f47c25ffa041ffa041ffa041ffa041f47c25ffa041 +ffa041ffa041f47c25f47c25f47c25f47c250e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e5000000000f47c25f47c25 +f47c25ffa041f47c25f47c25f47c25f47c25ffa041f47c25f47c25f47c250e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000f47c25 +f47c25f47c25f47c25f47c25f47c25f47c250e50000e50000e50000000000e50000e5000 +0e5000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e5000f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25ffa041f47c25f47c25f47c250e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700f47c25f47c25f47c25f47c25 +ffa041f47c25f47c25ffa041f47c25f47c25f47c25f47c25f47c250000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e5000f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000000000c7c700f47c25 +f47c25f47c250e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c00001f47c25ffa041f47c25f47c25f47c25 +f47c25ffa041f47c25f47c25ffa041ffa041ffa041f47c25f47c25f47c25f47c25f47c25 +ffa041f47c25ffa041f47c25f47c25f47c25f47c25ffa041ffa041ffa041f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25ffa041ffa041 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e5000f47c25ffa041ffa041 +ffa041f47c25f47c25f47c25ffa041ffa041f47c25f47c25f47c25ffa041ffa041ffa041 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e5000000000f47c25ffa041ffa041ffa041f47c25 +f47c25f47c25ffa041ffa041f47c25f47c25f47c25f47c25ffa041f47c25f47c25f47c25 +f47c25f47c25f47c25ffa041f47c25ffa041f47c250e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e5000f47c25f47c25f47c25 +ffa041ffa041ffa041f47c25ffa041ffa041ffa041f47c25f47c250e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e5000f47c25000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e5000f47c25f47c25f47c25ffa041f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c00001f47c25f47c25f47c25f47c25ffa041 +f47c25ffa041ffa041ffa041ffa041ffa041f47c25f47c250e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700f47c25ffa041f47c25f47c25 +ffa041ffa041f47c25ffa041ffa041f47c25f47c25f47c250e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e5000f47c250e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e5000f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25ffa041ffa041ffa041f47c250e50000e5000f47c25f47c25 +f47c25c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e5000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001f47c25ffa041ffa041f47c25f47c25 +f47c25ffa041f47c25ffa041ffa041ffa041ffa041ffa041ffa041ffa041f47c25ffa041 +ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041f47c25ffa041f47c25f47c25 +f47c25f47c25ffa041f47c25ffa041ffa041ffa041ffa041f47c25ffa041000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c00001000000f47c25f47c25ffa041 +f47c25f47c25f47c25f47c25f47c25ffa041ffa041f47c25ffa041f47c25f47c25ffa041 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e5000000000000000f47c25f47c25f47c25ffa041 +ffa041ffa041ffa041ffa041ffa041f47c25ffa041ffa041ffa041ffa041f47c25f47c25 +ffa041ffa041f47c25ffa041f47c25f47c25f47c250000000000000e5000000000000000 +000000c7c7000000000000000000000e5000000000000000000000f47c25ffa041ffa041 +ffa041ffa041ffa041ffa041ffa041ffa041ffa041f47c25f47c250e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +000000f47c25ffa041f47c25f47c25ffa041ffa041f47c25f47c25ffa041ffa041f47c25 +f47c25f47c25f47c25000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001f47c25f47c25f47c25f47c25ffa041 +f47c25ffa041ffa041f47c25ffa041f47c25f47c25f47c250000000e5000000000000000 +0000000e50000000000000000000000e5000000000f47c25f47c25f47c25ffa041ffa041 +ffa041f47c25ffa041ffa041ffa041f47c25f47c25f47c250000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +f47c25f47c25ffa041ffa041f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e5000000000000000ffa041ffa041ffa041ffa041 +ffa041ffa041ffa041ffa041ffa041f47c25ffa041f47c25000000f47c25f47c25ffa041 +f47c25c7c7000000000000000000000e50000000000000000000000e5000000000f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000ffa041f47c25ffa041f47c25f47c25 +ffa041ffa041ffa041ffa041f47c25ffa041ffa041ffa041ffa041ffa041f47c25ffa041 +ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041 +ffa041f47c25ffa041ffa041f47c25ffa041ffa041f47c25ffa0410000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c00001000000f47c25ffa041ffa041 +ffa041f47c25f47c25ffa041ffa041ffa041ffa041ffa041ffa041ffa041f47c25ffa041 +0000000000000e50000000000000000000000e50000000000000000000000e5000ffa041 +ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041f47c25ffa041ffa041ffa041 +ffa041ffa041ffa041ffa041ffa041ffa041f47c25ffa041c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000ffa041f47c25 +ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041 +ffa041ffa041ffa041ffa041ffa041f47c25ffa041ffa041000000000000c7c700000000 +0000000000000e50000000000000000000000e5000000000ffa041ffa041ffa041ffa041 +f47c25f47c25ffa041f47c25f47c25ffa041ffa041f47c25cfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +000000f47c25f47c25ffa041ffa041f47c25ffa041f47c25ffa041ffa041ffa041f47c25 +f47c25f47c25f47c250000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000f47c25f47c25ffa041ffa041ffa041 +f47c25ffa041ffa041ffa041ffa041ffa041f47c25ffa0410000000000000e5000000000 +0000000000000e5000000000000000000000c7c700f47c25f47c25ffa041ffa041ffa041 +ffa041ffa041ffa041f47c25f47c25f47c25f47c25f47c250000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000f47c25 +f47c25ffa041ffa041ffa041ffa041ffa041f47c25ffa041f47c25f47c25f47c25c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e5000000000f47c25f47c25ffa041ffa041 +ffa041ffa041ffa041ffa041ffa041ffa041ffa041f47c25000000f47c25ffa041f47c25 +0000000000000e50000000000000000000000e50000000000000000000000e5000f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e5000ffa041f47c25ffa041ffa041ffa041 +ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041 +f47c25ffa041ffa041ffa041ffa041f47c25ffa041f47c25ffa041ffa041f47c25ffa041 +ffa041ffa041ffa041f47c25ffa041ffa0410e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000ffa041ffa041ffa041 +ffa041ffa041f47c25ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000ffa041 +ffb953ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041 +ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa0410e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffb953ffa041ffa041 +ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e5000ffa041ffa041ffa041ffa041 +ffa041ffa041f47c25ffa041ffa041ffa041ffa041ffa0410e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +f47c25f47c25ffa041ffa041ffa041f47c25ffa041ffa041ffa041ffa041ffa041ffa041 +ffa041f47c25c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c00001f47c25f47c25ffa041ffa041ffa041ffa041 +f47c25ffa041ffb953ffa041ffa041ffb953ffa041f47c250e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700f47c25ffa041ffa041ffa041f47c25 +ffa041f47c25ffa041f47c25f47c25f47c25ffa041f47c250e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000f47c25 +ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041f47c25f47c25ffa0410e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e5000ffa041f47c25f47c25ffa041ffa041 +ffa041ffa041f47c25ffa041f47c25ffa041ffa041f47c25ffa041f47c25ffa041c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000f47c25 +ffa041f47c25ffa041f47c25ffa041ffa041f47c25ffa041f47c25f47c25f47c250e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c00001ffa041f47c25ffa041ffa041f47c25 +ffa041ffa041ffa041f47c25ffa041ffa041ffa041ffa041ffa041ffa041ffa041f47c25 +ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041 +ffa041ffa041ffa0410e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e5000ffa041ffa041ffa041 +ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffb953ffa041ffa041ffa041ffa041 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000ffa041 +ffb953ffa041ffa041ffa041ffa041ffb953ffa041ffa041ffa041ffa041ffa041ffa041 +ffa041ffa041ffa041ffb953ffa041ffa041ffa041ffa0410e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700ffa041ffa041ffa041ffa041ffa041ffa041ffb953ffa041ffb953ffa041ffa041 +ffa041ffa041ffb953ffa041ffa041ffa041ffa041ffa041ffa0410e5000000000c7c700 +c7c700c7c7000000000e50000e50000e5000000000ffa041ffa041ffa041ffa041ffa041 +ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa0410e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +ffa041f47c25ffa041ffa041ffa041f47c25ffa041f47c25f47c25ffa041ffa041ffa041 +ffa041ffa041000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000f47c25ffa041ffa041ffa041ffa041ffa041 +f47c25ffa041f47c25ffa041ffa041ffb953ffa041ffa0410e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000f47c25ffa041ffa041ffa041ffa041 +ffa041f47c25ffa041ffa041ffa041f47c25f47c250e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c700f47c25f47c25 +ffa041ffa041ffb953ffb953ffa041ffa041ffa041f47c25f47c25f47c25f47c250e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e5000000000f47c25f47c25ffa041ffa041ffa041 +ffa041ffa041ffa041ffa041f47c25ffa041ffa041ffa041f47c25ffa041f47c25c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e5000f47c25f47c25 +ffa041ffa041ffa041ffa041ffa041f47c25ffa041ffa041f47c25f47c25f47c250e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e5000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001ffa041ffa041ffa041ffa041f47c25 +ffa041ffa041ffa041ffa041ffb953ffa041ffa041ffb953ffb953ffa041000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c00001000000ffb953ffb953ffb953 +ffa041ffb953ffa041ffb953ffa041ffb953ffa041ffb953ffb953ffa041ffb953ffa041 +0000000e50000000000000000000000e50000000000000000000000e5000000000ffa041 +ffb953ffb953ffa041ffb953ffa041ffb953ffb953ffa041ffb953ffa041ffa041ffb953 +ffa041ffb953ffa041ffb953ffb953ffa041ffb953ffa041c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c700000000ffa041ffb953ffa041ffb953ffb953ffa041ffb953ffb953ffa041 +ffb953ffa041ffb953ffb953ffa041ffb953ffa041ffa041ffa041ffa041000000000000 +000000c7c7000000000000000000000e5000000000ffb953ffb953ffb953ffa041ffb953 +ffa041ffb953ffa041ffa041ffa041ffa041ffa041ffa041cfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +ffa041ffa041ffa041ffa041ffa041ffa041ffa041f47c25ffa041ffa041ffa041ffa041 +ffa041ffa041000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000ffa041ffa041ffa041ffa041ffa041ffa041 +ffa041ffa041ffb953f47c25ffa041ffa041ffa041f47c250000000e5000000000000000 +0000000e50000000000000000000000e5000ffb953ffb953ffb953ffa041ffa041ffa041 +ffa041ffa041ffa041ffa041ffa041ffa041ffa0410000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700ffa041ffa041 +ffa041ffa041ffb953ffa041ffa041ffa041f47c25f47c25f47c25f47c25f47c25c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e5000000000ffa041ffa041ffb953ffa041ffa041 +ffb953ffb953ffa041ffa041f47c25f47c25ffa041f47c25f47c25ffa041000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000f47c25ffa041 +ffa041ffa041f47c25ffa041ffa041f47c25ffa041ffa041f47c25f47c25c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000ffa041ffa041ffa041ffa041ffa041 +ffa041ffb953ffb953ffa041ffb953f47c25ffb953ffb953ffb953ffb9530e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c00001000000ffb953ffb953ffb953 +ffb953ffb953ffa041ffb953ffb953ffb953ffb953ffb953ffb953ffa041ffb953ffb953 +0000000000000e50000000000000000000000e50000000000000000000000e5000ffb953 +ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffa041ffb953ffb953ffa041ffb953 +ffb953ffb953ffb953ffb953ffb953ffa041ffb953ffb953c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e5000000000ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953 +ffb953ffb953ffb953ffb953ffa041ffb953ffb953ffa041ffb953ffb953c7c700000000 +0000000000000e50000000000000000000000e5000ffb953ffb953ffb953ffb953ffb953 +ffa041ffb953ffb953ffb953ffa041ffb953ffa041cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000ffa041 +ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041 +ffa041000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c00001ffa041ffa041ffa041ffa041ffa041ffb953 +ffb953f47c25ffa041ffa041ffa041ffa041ffa041ffa0410000000000000e5000000000 +0000000000000e5000000000000000000000ffb953ffb953ffb953ffa041ffa041ffa041 +ffa041ffa041ffb953ffa041ffa041ffa041ffa0410000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c700000000000000000000ffa041ffa041 +ffb953ffa041ffa041ffa041ffa041f47c25ffa041ffa041f47c25ffa0410e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e5000ffb953ffa041ffb953f47c25ffb953 +ffb953ffb953ffb953ffb953ffa041ffa041ffa041f47c25f47c25f47c25c7c700000000 +0000000000000e50000000000000000000000e5000000000000000000000f47c25ffa041 +ffa041ffa041ffa041ffb953ffa041ffa041ffa041ffa041f47c25f47c250e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e5000ffa041ffa041ffb953ffb953ffb953 +ffa041ffb953ffa041ffa041ffa041ffa041ffb953ffa041ffb953f47c250e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000ffb953ffd07bffb953 +ffb953ffa041ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffa041ffb953ffb953 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000ffb953 +ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffa041ffb953ffb953ffb953ffb953 +ffb953ffb953ffb953ffb953ffb953ffa041ffb953ffb9530e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e5000ffb953ffb953ffb953ffb953ffb953ffb953ffb953 +ffb953ffb953ffb953ffb953ffa041ffb953ffb953ffb953ffb953ffb953c7c700c7c700 +c7c7000000000e50000e50000e5000000000ffb953ffb953ffd07bffb953ffb953ffa041 +ffb953ffa041ffb953ffb953ffa041ffb953ffb9530e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000ffa041 +ffa041ffb953ffb953ffb953ffa041ffa041ffb953ffa041ffa041ffa041ffb953ffa041 +ffa041000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000ffa041ffa041ffb953ffa041ffa041ffa041ffb953 +ffa041ffa041ffb953ffa041ffa041ffb953ffb953ffa0410e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000ffb953ffb953ffb953ffb953ffb953ffa041 +ffb953ffa041ffb953ffa041ffb953ffa041ffa0410e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c700ffa041ffa041ffa041 +ffa041ffb953ffa041ffb953ffa041f47c25ffb953ffa041ffa041ffa0410e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e5000000000ffa041ffb953ffa041ffa041ffa041ffb953 +ffa041ffb953f47c25ffa041ffb953ffb953ffb953ffa041f47c25000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e5000000000ffa041ffa041 +ffa041f47c25ffb953ffb953ffb953ffb953ffa041f47c25ffa041f47c250e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c00001ffb953ffb953ffb953ffb953ffb953 +ffa041ffa041ffb953ffb953ffb953ffa041ffb953ffb953ffb953ffb9530000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e5000ffb953ffd07bffb953 +ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000ffb953 +ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953 +ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb9530e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e5000ffb953ffb953ffb953ffb953ffb953ffb953 +ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953c7c700 +c7c700c7c7000000000e50000e50000e5000ffb953ffb953ffd07bffb953ffb953ffb953 +ffb953ffb953ffb953ffb953ffb953ffb953ffb9530e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e5000000000ffb953 +ffa041ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffa041ffb953ffa041 +ffa0410e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e5000ffa041ffb953ffb953ffa041ffb953ffa041ffa041 +ffb953ffb953ffb953ffb953ffb953ffb953ffa0410e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000ffb953ffb953ffb953ffb953ffb953ffb953 +ffb953ffb953ffb953ffa041ffb953ffa0410000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700ffa041ffa041ffb953 +ffa041ffb953ffa041ffb953ffa041ffb953ffb953ffa041ffa041ffa041c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e5000ffb953ffb953ffb953ffb953ffa041ffb953 +ffb953ffb953ffb953ffb953ffd07bffb953ffb953ffb953ffb9530e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e5000ffa041ffa041ffb953 +ffa041ffb953ffb953ffb953ffb953ffb953ffb953ffa041ffa041f47c25c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e5000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001ffb953ffb953ffb953ffb953ffb953 +ffb953ffb953ffb953ffb953ffa041ffb953ffb953ffd07bffb953ffb953000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c00001000000ffb953ffb953ffb953 +ffd07bffd07bffd07bffb953ffd07bffd07bffb953ffb953ffb953ffb953ffb953ffb953 +0000000e50000000000000000000000e50000000000000000000000e5000000000ffb953 +ffb953ffb953ffd07bffd07bffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953 +ffd07bffd07bffb953ffb953ffb953ffb953ffb953ffb953c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcfffd07bffd07bffd07bc000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e5000000000ffb953ffb953ffb953ffb953ffd07b +ffd07bffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953000000 +000000c7c7000000000000000000000e5000ffb953ffb953ffb953ffb953ffd07bffd07b +ffd07bffd07bffd07bffd07bffb953ffb953ffb953cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000ffb953 +ffb953ffb953ffa041ffa041ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953 +ffb9530e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c00001ffb953ffb953ffb953ffb953ffb953ffb953ffb953 +ffb953ffb953ffb953ffb953ffb953ffb953ffb953c000010000000e5000000000000000 +0000000e5000000000000000000000ffb953ffb953ffb953ffb953ffb953ffb953ffb953 +ffb953ffb953ffb953ffb953ffb953ffb9530000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000ffb953ffb953ffb953 +ffb953ffb953ffb953ffb953ffa041ffb953ffb953ffb953ffa041ffa041c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e5000ffb953ffb953ffb953ffa041ffb953ffb953 +ffd07bffb953ffb953ffd07bffb953ffa041ffb953ffb9530000000e5000000000000000 +000000c7c7000000000000000000000e5000000000000000000000ffb953ffb953ffb953 +ffd07bffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb9530e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 +c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 +c00001c00001bfbf32c00001c00001c00001bfbf32ffb953ffb953ffb953ffd07bffb953 +ffb953ffb953ffb953ffd07bffd07bffd07bffb953ffd07bffb953ffd07bc7c700000000 +000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 +000000000000c7c700000000c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcf +cfcfcfc00001bfbf32c00001c00001c00001bfbf32c00001000000ffd07bffd07bffb953 +ffb953ffd07bffb953ffd07bffd07bffd07bffb953ffd07bffb953ffd07bffd07bffb953 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700ffd07b +ffb953ffd07bffd07bffd07bffb953ffd07bffb953ffd07bffd07bffb953ffb953ffd07b +ffd07bffd07bffb953ffd07bffb953ffd07bffd07bffb953c00001c00001bfbf32c00001 +c00001c00001bfbf32cfcfcfcfcfcfffd07bffd07bffd07bc00001c00001bfbf32c00001 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 +c7c700c7c700c7c700000000000000000000c7c700000000ffd07bffb953ffd07bffd07b +ffd07bffb953ffd07bffb953ffd07bffd07bffb953ffb953ffb953ffb953ffb953c7c700 +c7c700c7c700c7c700000000000000000000ffd07bffd07bffd07bffb953ffb953ffd07b +ffb953ffd07bffd07bffd07bffd07bffb953bfbf32cfcfcfcfcfcfc00001bfbf32c00001 +c00001c00001bfbf32c00001000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000ffb953ffb953 +ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffd07bffb953ffb953ffb953 +000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 +000000000000c7c700000000ffd07bffd07bffd07bffd07bffb953ffb953ffb953ffb953 +ffb953ffd07bffd07bffb953ffd07bffb953ffb953c00001000000000000c7c700000000 +000000000000c7c700000000000000ffd07bffd07bffd07bffd07bffb953ffb953ffd07b +ffb953ffd07bffb953ffb953ffb953ffb953c7c700000000000000000000c7c700000000 +000000000000c7c700000000000000000000c7c700c7c700c7c700ffb953ffb953ffb953 +ffd07bffb953ffb953ffd07bffb953ffb953ffb953ffb953ffb953c00001bfbf32c00001 +c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001c00001c00001bfbf32c00001 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 +c7c700c7c700c7c700000000000000000000ffb953ffb953ffd07bffd07bffd07bffb953 +ffd07bffb953ffd07bffb953ffd07bffb953ffb953ffa041000000000000c7c700c7c700 +c7c700c7c700c7c700000000000000000000c7c700000000000000ffb953ffb953ffd07b +ffd07bffb953ffd07bffd07bffd07bffb953ffd07bffb953ffb953c00001bfbf32c00001 +c00001c00001bfbf32c00001000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 +000000000000c7c700000000 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32ffb953ffb953ffb953ffd07bffd07b +ffd07bffd07bffd07bffd07bffd07bffd07bffb953ffd07bffd07bffd07bc7c700c7c700 +c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 +bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32c7c700ffd07bffd07bffd07b +ffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07b +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32 +bfbf32c00001bfbf32bfbf32bfbf32ffe6a6ffd07bffa041ffd07bc00001bfbf32bfbf32 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700ffd07bffd07bffd07bffd07b +ffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffb953ffb953c7c700 +c7c700c7c700c7c700c7c700c7c700ffd07bffd07bffd07bffd07bffd07bffd07bffd07b +ffd07bffe6a6ffe6a6ffd07bffd07bffd07bbfbf32bfbf32bfbf32c00001bfbf32bfbf32 +bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000ffb953ffb953 +ffb953ffb953ffb953ffd07bffb953ffb953ffb953ffb953ffd07bffd07bffb953ffb953 +c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700ffd07bffd07bffd07bffd07bffd07bffe6a6ffd07bffd07b +ffd07bffd07bffd07bffd07bffd07bffd07bffd07bbfbf32c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700ffd07bffd07bffd07bffd07bffb953ffd07bffd07b +ffd07bffd07bffb953ffb953ffb953ffb953c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700ffb953ffb953ffb953ffb953 +ffd07bffd07bffb953ffb953ffb953ffd07bffb953ffb953ffb953c00001bfbf32bfbf32 +bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700c7c700c7c700c7c700c7c700000000ffb953ffb953ffd07bffd07bffd07bffb953 +ffd07bffd07bffd07bffd07bffd07bffd07bffd07bc7c700c7c700000000c7c700c7c700 +c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700ffb953ffd07bffd07bffd07b +ffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffa041c00001bfbf32bfbf32 +bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001ffb953ffd07bffd07bffd07bffd07b +ffd07bffd07bffe6a6ffd07bffd07bffe6a6ffd07bffd07bffd07bffd07b000000c7c700 +c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 +bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32c7c700ffd07bffd07bffd07b +ffd07bffe6a6ffe6a6ffd07bffd07bffd07bffe6a6ffd07bffd07bffd07bffd07bffd07b +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32 +bfbf32bfbf32c00001bfbf32f47c25ffd07bffe6a6ffd07bffd07bbfbf32c00001bfbf32 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700ffd07bffd07bffd07b +ffd07bffe6a6ffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bc7c700 +c7c700c7c700000000c7c700c7c700ffe6a6ffd07bffd07bffd07bffd07bffd07bffe6a6 +ffe6a6ffe6a6ffd07bffd07bffd07bffd07bc00001bfbf32bfbf32bfbf32c00001bfbf32 +bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700ffd07bffd07b +ffd07bffd07bffb953ffd07bffb953ffd07bffd07bffd07bffd07bffd07bffd07bffd07b +c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700ffe6a6ffe6a6ffe6a6ffd07bffe6a6ffd07bffd07bffd07b +ffe6a6ffd07bffe6a6ffe6a6ffd07bffd07bc00001bfbf32c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700ffd07bffe6a6ffd07bffd07bffd07bffd07bffd07b +ffd07bffd07bffb953ffd07bffd07bc7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700ffd07bffd07bffb953ffd07b +ffd07bffd07bffd07bffd07bffd07bffd07bffb953ffd07bffb953bfbf32c00001bfbf32 +bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 +c7c700c7c700000000c7c700c7c700ffd07bffd07bffd07bffd07bffd07bffe6a6ffd07b +ffd07bffd07bffd07bffd07bffd07bffd07bffd07bc7c700c7c700c7c700c7c700c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700ffd07bffd07bffd07bffd07b +ffd07bffe6a6ffd07bffd07bffd07bffd07bffd07bffd07bbfbf32bfbf32c00001bfbf32 +bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700 +000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 +c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +c00001bfbf32c00001c00001c00001bfbf32c00001ffb953ffd07bffd07bffd07bffd07b +ffd07bffd07bffd07bffe6a6ffe6a6ffe6a6ffe6a6ffd07bffd07bffe6a6000000000000 +000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcf +cfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001000000ffe6a6ffd07bffd07b +ffe6a6ffd07bffe6a6ffd07bffd07bffe6a6ffe6a6ffe6a6ffd07bffe6a6ffd07bffd07b +000000c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000000000 +000000c7c700000000000000000000c7c700000000000000c00001bfbf32c00001c00001 +c00001bfbf32c00001cfcfcff47c25ffd07bffe6a6ffd07bffd07bbfbf32c00001c00001 +000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 +c7c700c7c700000000000000000000c7c700000000000000000000ffd07bffd07bffd07b +ffe6a6ffe6a6ffe6a6ffd07bffe6a6ffd07bffd07bffd07bffd07bffd07bffd07bc7c700 +c7c700c7c700000000000000000000ffd07bffd07bffe6a6ffd07bffd07bffe6a6ffd07b +ffe6a6ffd07bffe6a6ffd07bffd07bffd07bc00001cfcfcfcfcfcfbfbf32c00001c00001 +c00001bfbf32c00001c00001000000c7c700000000000000000000c7c700000000000000 +000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700ffd07bffd07b +ffd07bffd07bffd07bffb953ffb953ffd07bffd07bffe6a6ffd07bffd07bffd07bffd07b +000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000ffe6a6ffe6a6ffe6a6ffd07bffd07bffe6a6ffd07bffd07b +ffd07bffe6a6ffd07bffe6a6ffe6a6ffd07bc00001c00001000000c7c700000000000000 +000000c7c700000000000000ffd07bffd07bffd07bffe6a6ffd07bffd07bffd07bffe6a6 +ffd07bffd07bffd07bffd07bffd07bc7c700000000000000000000c7c700000000000000 +000000c7c700000000000000000000c7c700c7c700c7c700ffd07bffd07bffd07bffd07b +ffe6a6ffd07bffd07bffd07bffd07bffd07bffd07bffd07bffb953bfbf32c00001c00001 +c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001 +000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 +c7c700c7c700000000000000000000ffd07bffd07bffe6a6ffe6a6ffe6a6ffe6a6ffe6a6 +ffd07bffd07bffe6a6ffd07bffe6a6ffd07bffd07b000000000000c7c700c7c700c7c700 +c7c700c7c700000000000000000000c7c700000000000000ffd07bffd07bffd07bffd07b +ffd07bffe6a6ffd07bffd07bffd07bffd07bffd07bffd07bcfcfcfbfbf32c00001c00001 +c00001bfbf32c00001c00001000000c7c700000000000000000000c7c700000000000000 +000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000ffd07bffd07bffd07bffe6a6ffd07b +ffd07bffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffd07bffe6a60e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c00001000000ffe6a6ffe6a6ffe6a6 +ffe6a6ffe6a6ffe6a6ffd07bffe6a6ffe6a6ffe6a6ffe6a6ffd07bffe6a6ffe6a6ffe6a6 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcff47c25f47c25ffd07bffd07bffd07bc000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e5000000000000000000000ffd07bffe6a6 +ffe6a6ffe6a6ffe6a6ffd07bffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffd07b000000 +0000000000000e5000000000000000ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6 +ffe6a6ffe6a6ffe6a6ffd07bffe6a6ffd07b0e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e5000000000000000000000ffd07bffe6a6 +ffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffe6a6ffd07bffd07b +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000ffd07bffd07bffe6a6ffe6a6ffd07bffe6a6ffe6a6ffd07bffe6a6 +ffe6a6ffe6a6ffd07bffe6a6ffe6a6ffd07b0e5000c000010000000000000e5000000000 +0000000000000e5000000000ffd07bffd07bffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6 +ffe6a6ffe6a6ffe6a6ffe6a6ffe6a60000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c700000000ffd07bffd07bffe6a6ffd07b +ffe6a6ffd07bffe6a6ffe6a6ffe6a6ffd07bffd07bffd07bffd07bc000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e5000000000000000ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6 +ffe6a6ffd07bffe6a6ffe6a6ffe6a6ffe6a60e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e5000000000ffe6a6ffe6a6ffe6a6ffe6a6 +ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffd07bffe6a6ffd07bcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e5000ffd07bffe6a6ffd07bffe6a6ffe6a6 +ffe6a6ffe6a6ffe6a6ffe6a6ffd07bffe6a6ffe6a6ffe6a6ffe6a6ffe6a60e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000ffe6a6ffd07bffe6a6 +ffe6a6ffd07bffe6a6ffd07bffe6a6ffd07bffd07bffe6a6ffe6a6ffe6a6ffd07bffe6a6 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e5000ffa041ffd07bffd07bffd07bffa041f47c250e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e5000000000ffd07bffe6a6 +ffd07bffd07bffe6a6ffe6a6ffe6a6ffd07bffe6a6ffe6a6ffd07bffe6a6ffd07bc7c700 +c7c7000000000e50000e50000e5000ffd07bffe6a6ffe6a6ffd07bffe6a6ffe6a6ffd07b +ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffd07b0e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000f47c25c7c700c7c7000000000e50000e50000e5000000000ffe6a6ffe6a6 +ffe6a6ffe6a6ffe6a6ffd07bffd07bffe6a6ffd07bffd07bffe6a6ffe6a6ffe6a60e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e5000ffd07bffd07bffd07bffe6a6ffe6a6ffe6a6ffd07bffe6a6ffe6a6 +ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6c000010e50000e50000e50000000000e50000e5000 +0e50000000000e50000e5000ffd07bffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6 +ffd07bffe6a6ffd07bffe6a6ffd07b0000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700ffe6a6ffe6a6ffe6a6ffe6a6 +ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffd07bffe6a6ffe6a6ffd07bc000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e5000f47c250e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e5000ffe6a6ffe6a6ffd07bffe6a6ffd07bffe6a6ffe6a6 +ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a60e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e5000ffd07bffe6a6ffe6a6ffe6a6ffe6a6 +ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a60e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c00001ffe6a6ffd07bffd07bffe6a6ffe6a6 +ffe6a6ffe6a6ffe6a6ffe6a6ffd07bffd07bffe6a6ffe6a6ffd07bffe6a60000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e5000ffe6a6ffd07bffd07b +ffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07b +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e5000f47c25ffd07bffd07bffd07bffd07bffd07bc000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e5000ffd07bffd07b +ffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bc7c700 +c7c700c7c7000000000e50000e5000ffd07bffe6a6ffe6a6ffd07bffd07bffd07bffd07b +ffd07bffd07bffd07bffd07bffd07bffd07bc000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e5000f47c25f47c25f47c25c7c700c7c7000000000e50000e50000e5000ffd07bffe6a6 +ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffd07bffd07bffe6a6ffe6a6ffd07bffd07b0e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e5000000000ffb953ffb953ffb953ffd07bffe6a6ffd07bffd07bffe6a6ffe6a6 +ffe6a6ffe6a6ffe6a6ffd07bffd07b0e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e5000ffe6a6ffe6a6ffe6a6ffd07bffd07bffe6a6ffd07bffd07b +ffd07bffe6a6ffe6a6ffe6a60e50000e50000000000e50000e50000e50000000000e5000 +0e5000f47c250000000e50000e50000e5000000000c7c700ffe6a6ffe6a6ffe6a6ffe6a6 +ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a60e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e5000f47c25f47c25f47c250e50000e50000e5000000000c7c700 +c7c700c7c7000000000e5000ffd07bffd07bffd07bffe6a6ffe6a6ffd07bffd07bffe6a6 +ffe6a6ffd07bffe6a6ffd07bffe6a6ffe6a60000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e5000000000ffe6a6ffe6a6ffd07bffe6a6ffe6a6 +ffe6a6ffe6a6ffd07bffd07bffe6a6ffe6a6ffd07b0e50000e50000e5000c000010e5000 +0e50000e5000f47c250e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e5000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001ffd07bffe6a6ffe6a6ffd07bffd07b +ffe6a6ffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07b000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c00001000000ffd07bffd07bffd07b +ffd07bffa041ffd07bffd07bffd07bffd07bffd07bffb953ffd07bffd07bffd07bffd07b +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcff47c25ffb953ffd07bffa041ffd07bffd07bc00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000ffd07bffd07b +ffd07bffd07bffb953ffd07bffd07bffd07bffd07bffd07bffd07bffd07b000000000000 +000000c7c700000000000000000000ffd07bffe6a6ffd07bffd07bffd07bffd07bffa041 +ffd07bffb953ffa041ffd07bffd07bffd07bc00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +f47c25f47c25f47c25f47c25000000c7c7000000000000000000000e5000ffd07bffd07b +ffe6a6ffe6a6ffe6a6ffe6a6ffd07bffe6a6ffe6a6ffd07bffd07bffd07bffd07b000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000ffb953ffb953ffb953ffb953ffb953ffd07bffd07bffd07bffe6a6ffd07b +ffd07bffe6a6ffd07bffd07bc000010e5000c00001c000010000000e5000000000000000 +0000000e5000000000ffd07bffd07bffe6a6ffd07bffd07bffd07bffd07bffd07bffd07b +ffd07bffd07bffe6a6ffe6a60000000e50000000000000000000000e5000000000000000 +000000f47c25f47c250000000000000e5000000000000000ffd07bffd07bffe6a6ffd07b +ffd07bffd07bffe6a6ffd07bffd07bffd07bffd07bffd07bffd07b0e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e5000000000f47c25f47c25f47c25f47c250000000000000e5000000000000000 +000000c7c700000000000000ffd07bffd07bffd07bffe6a6ffd07bffd07bffd07bffd07b +ffd07bffd07bffd07bffd07bffe6a6ffe6a60000000000000000000e5000000000000000 +000000c7c7000000000000000000000e5000000000ffd07bffe6a6ffe6a6ffd07bffd07b +ffd07bffd07bffd07bffe6a6ffd07bffd07bffd07bcfcfcfcfcfcf0e5000c00001c00001 +c000010e5000f47c25f47c25f47c250e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000ffd07bffd07bffd07bffd07bffd07b +ffb953ffb953ffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07b0e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c00001000000ffd07bffd07bffb953 +ffb953ffa041ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffd07b +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfffa041ffd07bffb953ffd07bffa041ffa041f47c25c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e5000000000000000000000ffb953ffb953 +ffb953ffb953ffb953ffb953ffb953ffb953ffd07bffd07bffb953ffb953c7c700000000 +0000000000000e5000000000000000ffd07bffd07bffd07bffd07bffb953ffb953ffa041 +ffb953ffb953ffa041ffb953ffb953ffb9530e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +f47c25f47c25f47c25f47c250000000000000e5000000000000000000000ffd07bffd07b +ffe6a6ffd07bffd07bffd07bffd07bffd07bffe6a6ffd07bffd07bffd07bffd07b000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +000000000000ffa041ffa041ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953 +ffd07bffd07bffd07bffd07bc00001c000010e5000c000010000000000000e5000000000 +0000000000000e5000ffd07bffd07bffe6a6ffe6a6ffd07bffa041ffd07bffd07bffd07b +ffd07bffd07bffe6a6ffe6a60000000000000e50000000000000000000000e5000000000 +f47c25f47c25f47c25f47c25000000000000c7c700000000ffd07bffd07bffd07bffd07b +ffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bc000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e5000f47c25f47c25f47c25f47c25000000000000000000c7c700000000 +0000000000000e5000000000ffd07bffb953ffd07bffd07bffd07bffd07bffd07bffd07b +ffd07bffd07bffd07bffd07bffd07b0000000e5000000000000000000000c7c700000000 +0000000000000e5000000000000000000000ffd07bffd07bffd07bffe6a6ffd07bffd07b +ffd07bffd07bffd07bffd07bffd07bffd07bffd07bcfcfcfcfcfcfc000010e5000c00001 +c00001f47c25f47c25f47c25f47c250000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e5000ffd07bffd07bffd07bffd07bffd07b +ffb953ffb953ffb953ffb953ffa041ffd07bffa041ffa041ffd07bffb9530e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000ffd07bf47c25f47c25 +ffa041ffa041ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e5000ffa041ffd07bffa041ffd07bf47c25ffa041ffa0410e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e5000000000ffb953ffb953 +ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953c7c700c7c700 +c7c7000000000e50000e50000e5000ffa041ffa041ffd07bf47c25f47c25ffa041ffa041 +ffb953ffa041ffb953ffb953ffb953ffb9530e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000f47c25 +f47c25f47c25f47c25c7c700c7c7000000000e50000e50000e5000000000ffa041ffa041 +ffb953ffa041ffb953ffb953ffd07bffd07bffa041ffa041ffb953ffb953ffb9530e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e5000f47c25ffa041ffa041ffa041ffa041ffb953ffb953ffa041ffb953ffb953ffb953 +ffb953ffb953ffb9530e50000e5000c000010e50000e50000e50000000000e50000e5000 +0e50000000000e5000ffd07bffd07bffd07bffd07bffd07bffd07bffa041ffd07bffb953 +ffa041ffd07bffd07bffe6a60e50000000000e50000e50000e50000000000e5000f47c25 +f47c25f47c25f47c250e50000e5000000000c7c700c7c700ffd07bffd07bffb953ffa041 +ffd07bffd07bffd07bffd07bffb953ffb953ffb953ffd07bffb953c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000000000f47c25f47c25f47c25f47c250e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e5000ffb953ffb953ffb953ffb953ffb953ffa041ffd07bffa041 +ffa041ffd07bffb953ffb953ffd07b0000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e5000000000ffd07bffd07bffd07bffd07bffd07bffd07b +ffd07bffd07bffd07bffd07bffd07bffd07b0e50000e50000e5000c000010e50000e5000 +0e5000f47c25f47c25f47c250e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c00001ffb953ffd07bffb953ffd07bffd07b +f47c25ffb953f47c25ffb953ffb953ffb953ffb953ffb953ffa041ffa0410000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e5000ffa041ffa041ffa041 +f47c25ffa041ffa041ffb953ffb953ffb953ffa041ffb953ffb953ffb953ffb953ffa041 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c00001f47c25ffa041ffb953ffa041ffa041ffa041f47c25f47c25f47c25 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e5000ffb953ffb953 +ffb953ffa041ffb953ffb953ffb953ffb953ffa041ffb953ffb9530e5000000000c7c700 +c7c700c7c7000000000e50000e5000ffa041ffa041ffa041ffa041ffa041f47c25ffa041 +ffa041f47c25ffa041ffa041ffa041ffa041c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e5000f47c25f47c25 +f47c25f47c25000000c7c700c7c700c7c7000000000e50000e50000e5000000000ffa041 +ffb953ffb953ffb953ffa041ffa041ffa041ffa041ffa041ffa041ffb953ffa0410e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e5000ffa041ffa041ffa041ffa041ffa041f47c25ffa041ffa041ffa041f47c25ffb953 +f47c25ffa041ffb9530e50000e50000e5000c000010e50000e50000e50000000000e5000 +0e50000e5000000000ffb953ffb953ffd07bffd07bffb953ffa041ffb953ffa041ffb953 +ffa041ffb953ffa0410e50000e50000e50000000000e50000e50000e5000f47c25f47c25 +f47c25f47c250000000e50000e50000e5000000000c7c700ffd07bffd07bffb953ffb953 +ffb953ffa041ffb953ffb953ffb953ffb953ffb953ffa041ffb9530e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e5000f47c25f47c25f47c25f47c250e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e5000ffb953ffa041ffb953ffb953ffb953ffb953ffb953ffb953 +ffb953ffa041ffa041ffb9530e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e5000ffd07bffd07bffd07bffd07bffb953ffd07b +ffb953ffb953ffd07bffb953ffd07bffd07bc000010e50000e50000e5000c000010e5000 +f47c25f47c25f47c25f47c250e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e5000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001ffb953ffb953ffb953ffb953ffb953 +ffa041ffa041ffa041ffb953ffa041ffa041ffb953ffb953ffa041ffa041000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c00001000000f47c25f47c25ffa041 +f47c25f47c25f47c25f47c25ffb953f47c25ffa041ffa041ffa041f47c25ffa041ffa041 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001f47c25f47c25f47c25f47c25ffa041f47c25f47c25f47c25f47c25 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e5000000000000000000000f47c25f47c25ffb953 +f47c25ffa041ffa041ffa041f47c25ffa041ffa041ffa041f47c250e5000000000000000 +000000c7c700000000000000000000ffa041ffa041f47c25f47c25ffa041f47c25f47c25 +f47c25f47c25ffa041ffa041ffa041f47c25f47c25cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e5000000000000000000000f47c25f47c25f47c25 +f47c25f47c25000000000000000000c7c7000000000000000000000e5000000000ffa041 +ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +f47c25ffa041ffa041ffa041ffa041ffa041f47c25ffa041ffa041ffa041ffa041ffa041 +ffa041f47c25c00001c00001c000010e5000c00001c000010000000e5000000000000000 +0000000e5000ffa041ffa041ffa041f47c25ffa041ffa041ffa041ffa041ffa041f47c25 +ffa041ffa041ffa0410000000000000e50000000000000000000000e5000f47c25f47c25 +f47c25f47c250000000000000000000e5000000000000000ffb953ffb953ffb953ffa041 +ffb953ffa041ffb953ffb953ffb953ffa041ffb953ffb953ffb953ffa041c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +f47c25f47c25f47c25f47c25f47c250e50000000000000000000000e5000000000000000 +000000c7c700000000f47c25ffa041ffa041ffa041ffa041ffb953ffa041ffa041ffb953 +ffb953ffa041ffa041ffb9530000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e5000ffb953ffb953ffb953ffd07bffb953ffd07b +ffa041ffb953ffb953ffb953ffb953ffb953c00001cfcfcfcfcfcf0e5000c00001f47c25 +f47c25f47c25f47c25c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000ffa041ffa041ffa041ffa041ffa041 +ffa041f47c25f47c25ffa041ffa041ffb953ffa041ffa041ffa041ffa0410e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c00001000000f47c25f47c25f47c25 +f47c25f47c25ffa041ffb953ffb953f47c25f47c25ffa041ffa041f47c25ffa041ffa041 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c250000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e5000000000000000f47c25ffb953ffb953 +f47c25f47c25ffa041ffa041f47c25ffa041ffa041f47c25000000000000c7c700000000 +0000000000000e5000000000000000000000f47c25f47c25f47c25f47c25f47c25f47c25 +ffa041f47c25f47c25ffa041f47c25f47c25f47c25cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e5000000000f47c25f47c25f47c25f47c25 +f47c25000000c7c7000000000000000000000e50000000000000000000000e5000f47c25 +ffa041f47c25f47c25f47c25ffa041ffa041f47c25f47c25f47c25f47c25ffa041000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25ffa041ffa041ffa041ffa041f47c25 +f47c25c000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 +000000000000ffa041ffa041ffa041ffa041f47c25ffa041f47c25ffa041f47c25ffa041 +f47c25ffa041f47c250000000000000000000e5000000000000000f47c25f47c25f47c25 +f47c250000000e5000000000000000000000c7c700000000000000ffa041ffa041ffa041 +ffb953ffa041ffb953ffb953ffa041ffb953ffb953ffb953ffa041ffa0410e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000f47c25 +f47c25f47c25f47c25f47c250000000000000e5000000000000000000000c7c700000000 +0000000000000e5000f47c25f47c25ffa041ffa041ffa041ffa041ffa041ffb953ffa041 +ffa041ffa041ffa041ffb9530000000000000e5000000000000000000000c7c700000000 +0000000000000e5000000000000000ffa041ffa041ffa041ffa041ffa041ffa041ffa041 +ffa041ffa041ffa041ffa041ffa041ffa0410e5000cfcfcfcfcfcfc00001f47c25f47c25 +f47c25f47c25f47c25c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e5000ffa041ffa041ffa041f47c25ffa041 +f47c25f47c25f47c25f47c25ffa041ffa041f47c25ffa041ffa041f47c250e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000f47c25f47c25f47c25 +f47c25f47c25f47c25ffb953f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c250e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e5000f47c25ffb953f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000000000c7c700c7c700 +c7c7000000000e50000e50000e5000000000f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e5000f47c25f47c25f47c25f47c25f47c25 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +f47c25f47c25ffa041ffa041f47c25f47c25ffa041ffa041ffa041f47c25f47c250e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25ffa041f47c25f47c25f47c25 +f47c25c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 +0e5000000000f47c25f47c25f47c25ffa041ffa041f47c25f47c25ffa041ffa041f47c25 +ffa041f47c25f47c250e50000e50000000000e50000e5000f47c25f47c25f47c25f47c25 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c700ffa041f47c25ffa041 +ffb953ffb953ffb953ffb953ffb953ffa041ffa041ffa041ffa041ffa041f47c250e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001f47c25f47c25 +f47c25f47c25f47c250e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e5000f47c25f47c25f47c25f47c25f47c25f47c25ffa041ffa041f47c25 +ffa041ffa041f47c250e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e5000ffa041ffa041ffa041ffa041ffa041ffa041ffa041 +f47c25ffa041ffa041ffa041f47c25ffa0410e50000e50000e5000c00001f47c25f47c25 +f47c25f47c250e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +c00001c00001c00001c00001c00001c00001c00001ffa041f47c25ffa041ffa041f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c000010e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e5000c00001c00001c00001c00001c00001c00001c000010e5000 +0e5000c00001c00001c00001c00001c00001c00001c000010e5000f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e5000c00001c00001c00001c00001 +c00001c00001c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c250e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c000010e50000e50000e5000c000010e5000f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c000010e50000e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000c00001c00001c00001 +c00001c00001c00001c000010e50000e5000f47c25f47c25f47c25f47c25f47c250e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +f47c25f47c25f47c25f47c25f47c25f47c25ffa041f47c25f47c25f47c25f47c250e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +0e5000c00001c00001c00001c00001c00001c00001c000010e50000e5000c000010e5000 +0e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c250e50000e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25 +0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32f47c25f47c25f47c25 +ffb953ffb953ffb953ffa041ffa041ffa041ffa041f47c25f47c25f47c25f47c25c00001 +c00001c00001c000010e50000e5000c00001c00001c00001c00001f47c25f47c25f47c25 +f47c25f47c25c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c250e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c000010e50000e5000f47c25ffa041ffa041ffa041ffa041f47c25ffa041 +ffa041ffa041f47c25ffa041ffa041f47c25c000010e5000f47c25f47c25f47c25f47c25 +f47c25c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e5000 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001c00001c00001c00001c00001c00001c00001ffa041f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcff47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001 +c00001c00001c00001c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +c000010e5000c00001c00001c00001bfbf32c00001c00001c00001f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c000010e5000c00001c00001 +c000010e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32f47c25f47c25 +ffa041f47c25ffa041f47c25f47c25f47c25f47c25f47c25f47c25ffa041f47c25f47c25 +f47c25c00001c00001cfcfcfcfcfcfc00001c00001f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c00001f47c25f47c25f47c25f47c25ffa041ffa041ffa041 +ffa041ffa041f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001c00001c00001c00001c00001c00001f47c25ffa041f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcff47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c00001f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +c00001c00001bfbf32c00001c00001c000010e5000c00001f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001c000010e5000c00001 +c00001c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000c00001 +c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c00001f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25ffa041f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 +bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e5000c00001c00001c00001c00001c00001c00001c000010e5000 +0e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e5000c00001c00001c00001c00001 +c00001c00001c000010e50000e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e5000c00001bfbf32bfbf32 +bfbf32c000010e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c250e5000c000010e50000e50000e5000c00001bfbf32bfbf32 +bfbf32c000010e50000e50000e5000c000010e50000e5000f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000c000010e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25bfbf32bfbf32bfbf32c000010e5000f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001c000010e5000 +0e5000c00001c00001c00001c00001c00001c00001c000010e5000c000010e50000e5000 +0e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c000010e50000e5000 +0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 +bfbf32c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c250e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 +bfbf32c000010e50000e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001 +c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e5000c00001c00001c00001c00001c00001c00001c000010e5000 +0e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e5000c00001c00001c00001c00001 +c00001c00001c000010e50000e5000c00001c00001f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c250e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e50000e5000c000010e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001c00001c000010e5000 +0e5000c00001c00001c00001c00001c00001c00001c000010e50000e5000c000010e5000 +0e50000e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c000010e50000e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001 +c00001c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e5000 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c250e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c250e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c000010e5000c00001c00001 +c000010e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 +c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25cfcfcfc00001c00001c00001 +c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c250e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001c000010e5000c00001 +c00001c000010e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 +c00001c000010e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001c00001c00001c00001c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c250e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32 +bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000cfcfcf +cfcfcfcfcfcff47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e5000cfcfcfcfcfcfcfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32 +bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcff47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcff47c25f47c25 +f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000cfcfcf +cfcfcfcfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcff47c25f47c25f47c25f47c25f47c25f47c25 +f47c25cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25 +f47c25f47c25f47c25cfcfcfcfcfcfcfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32 +bfbf32f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32 +bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000f47c25f47c25f47c25 +f47c25f47c25f47c25f47c250e5000cfcfcf0e5000cfcfcfcfcfcfcfcfcf0e50000e5000 +0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 +0e5000cfcfcf0e50000e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32 +bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcfcfcfcfcfcfcf0e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfcfcfcf +cfcfcf0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcfcfcfcfcfcfcf0e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32 +bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32 +bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcfcfcfcfcfcfcf0e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfcfcfcf +cfcfcf0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcfcfcfcfcfcfcf0e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32 +bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32 +bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcfcfcfcfcfcfcf0e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e5000 +0e50000e5000cfcfcf0e5000 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 +bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 +c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e5000c00001c00001c00001c00001c00001c00001c000010e5000 +0e5000c00001c00001c00001c00001c00001c00001c000010e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e5000c00001c00001c00001c00001 +c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 +bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 +bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 +c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e5000c00001c00001c00001c00001c00001c00001c000010e5000 +0e5000c00001c00001c00001c00001c00001c00001c000010e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e5000c00001c00001c00001c00001 +c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 +bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 +bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 +c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 +c00001c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e5000c00001c00001c00001c00001c00001c00001c000010e5000 +0e5000c00001c00001c00001c00001c00001c00001c000010e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e5000c00001c00001c00001c00001 +c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 +c00001c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e5000c00001c00001c00001c00001c00001c00001c000010e5000 +0e5000c00001c00001c00001c00001c00001c00001c000010e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e5000c00001c00001c00001c00001 +c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 +bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 +c00001c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e5000 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 +c000010e5000c00001c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf +cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 +c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 +c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 +c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 +c00001c000010e5000c00001 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 +bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 +c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e5000c00001c00001c00001c00001c00001c00001c000010e5000 +0e5000c00001c00001c00001c00001c00001c00001c000010e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e5000c00001c00001c00001c00001 +c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 +bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 +bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 +c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e5000c00001c00001c00001c00001c00001c00001c000010e5000 +0e5000c00001c00001c00001c00001c00001c00001c000010e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e5000c00001c00001c00001c00001 +c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 +bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 +bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 +c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e5000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e5000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e5000 +000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 +c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001 +c00001bfbf32c00001c00001000000c7c700000000000000000000c7c700000000000000 +000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcf +cfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001000000c7c700000000000000 +000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000000000 +000000c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000000000 +000000c7c700000000000000000000c7c700000000000000c00001bfbf32c00001c00001 +c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001 +000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 +c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 +c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001 +c00001bfbf32c00001c00001000000c7c700000000000000000000c7c700000000000000 +000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcf +cfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001000000c7c700000000000000 +000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000000000 +000000c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000000000 +000000c7c700000000000000000000c7c700000000000000c00001bfbf32c00001c00001 +c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001 +000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 +c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 +c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 +c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001 +c00001bfbf32c00001c00001000000c7c700000000000000000000c7c700000000000000 +000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 +000000c7c700000000000000 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 +c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 +c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001 +c00001c00001bfbf32c00001000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 +000000000000c7c700000000c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcf +cfcfcfc00001bfbf32c00001c00001c00001bfbf32c00001000000000000c7c700000000 +000000000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000 +000000000000c7c700000000000000000000c7c700000000c00001c00001bfbf32c00001 +c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001c00001c00001bfbf32c00001 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 +c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 +c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 +c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001 +c00001c00001bfbf32c00001000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 +000000000000c7c700000000c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcf +cfcfcfc00001bfbf32c00001c00001c00001bfbf32c00001000000000000c7c700000000 +000000000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000 +000000000000c7c700000000000000000000c7c700000000c00001c00001bfbf32c00001 +c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001c00001c00001bfbf32c00001 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 +c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 +c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 +c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001 +c00001c00001bfbf32c00001000000000000c7c700000000000000000000c7c700000000 +000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 +000000000000c7c700000000 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 +bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 +bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32 +bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 +bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 +bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32 +bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 +bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 +c7c700000000c7c700c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 +bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 +bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32 +bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 +bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 +bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32 +bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 +c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 +bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 +c7c700c7c700000000c7c700 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e5000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 +c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 +0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 +0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 +0e50000e50000000000e5000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf +cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 +0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 +c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +0000000e50000000000000000000000e50000000000000000000000e5000000000000000 +000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 +c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 +c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 +0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 +0000000e5000000000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf +cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 +c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 +0000000000000e50000000000000000000000e50000000000000000000000e5000000000 +c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 +c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 +000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 +0000000000000e5000000000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 +c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 +0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 +0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 +0e50000000000e50000e5000 + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/p_f_multi.eps scotch-6.0.6/doc/src/ptscotch/p_f_multi.eps --- scotch-6.0.4.dfsg1/doc/src/ptscotch/p_f_multi.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/p_f_multi.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,1251 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: stdin +%%Creator: fig2dev Version 3.2 Patchlevel 5-alpha5 +%%CreationDate: Sun Apr 30 19:15:23 2006 +%%For: pelegrin@brol.labri.fr (Francois PELLEGRINI) +%%BoundingBox: 0 0 1199 478 +%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 478 moveto 0 0 lineto 1199 0 lineto 1199 478 lineto closepath clip newpath +-268.3 634.6 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +% +% Fig objects follow +% +% +% here starts figure with depth 50 +% Ellipse +7.500 slw +n 6638 6658 2159 863 0 360 DrawEllipse gs col0 s gr + +% Polyline +2 slj +0 slc + [15 45] 45 sd +n 7393 5849 m 7393 5850 l 7392 5853 l 7391 5858 l 7388 5865 l 7385 5875 l + 7381 5888 l 7376 5904 l 7369 5923 l 7361 5944 l 7352 5967 l + 7342 5991 l 7330 6017 l 7317 6045 l 7303 6073 l 7287 6101 l + 7269 6131 l 7248 6161 l 7225 6193 l 7199 6225 l 7170 6258 l + 7137 6293 l 7099 6329 l 7058 6366 l 7011 6404 l 6961 6442 l + 6915 6474 l 6869 6503 l 6825 6531 l 6782 6554 l 6743 6575 l + 6707 6592 l 6675 6606 l 6647 6617 l 6622 6625 l 6600 6630 l + 6581 6634 l 6564 6636 l 6549 6636 l 6534 6636 l 6520 6635 l + 6507 6635 l 6492 6635 l 6476 6635 l 6459 6637 l 6439 6640 l + 6416 6646 l 6389 6653 l 6359 6664 l 6325 6677 l 6287 6693 l + 6244 6713 l 6198 6736 l 6148 6762 l 6096 6790 l 6044 6820 l + 5989 6853 l 5937 6886 l 5887 6918 l 5842 6949 l 5800 6980 l + 5761 7009 l 5725 7036 l 5692 7063 l 5661 7089 l 5632 7115 l + 5605 7139 l 5579 7163 l 5555 7187 l 5533 7209 l 5512 7231 l + 5492 7251 l 5474 7271 l 5458 7288 l 5443 7305 l 5431 7319 l + 5420 7330 l 5412 7340 l 5406 7348 l 5401 7353 l 5398 7356 l + 5397 7358 l + 5396 7359 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5558 5903 m 5558 5905 l 5557 5908 l 5556 5915 l 5554 5925 l 5551 5939 l + 5548 5956 l 5545 5977 l 5542 6000 l 5539 6025 l 5536 6053 l + 5534 6082 l 5533 6112 l 5533 6143 l 5535 6175 l 5538 6208 l + 5543 6243 l 5551 6280 l 5561 6318 l 5575 6358 l 5592 6400 l + 5612 6442 l 5635 6483 l 5661 6521 l 5687 6556 l 5714 6587 l + 5740 6616 l 5767 6641 l 5794 6665 l 5821 6686 l 5848 6706 l + 5874 6724 l 5901 6741 l 5926 6756 l 5950 6770 l 5972 6783 l + 5992 6793 l 6009 6802 l 6022 6809 l 6032 6814 l 6039 6817 l + 6042 6819 l + 6044 6820 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 7069 6334 m 7070 6335 l 7072 6336 l 7077 6339 l 7084 6344 l 7093 6350 l + 7105 6359 l 7119 6369 l 7136 6381 l 7155 6395 l 7176 6411 l + 7198 6427 l 7221 6445 l 7245 6465 l 7269 6485 l 7294 6507 l + 7319 6529 l 7344 6553 l 7370 6579 l 7396 6607 l 7422 6636 l + 7449 6668 l 7476 6703 l 7503 6740 l 7529 6779 l 7555 6820 l + 7581 6865 l 7604 6909 l 7624 6952 l 7641 6992 l 7655 7031 l + 7667 7067 l 7678 7102 l 7686 7135 l 7693 7167 l 7699 7197 l + 7703 7227 l 7707 7255 l 7710 7282 l 7712 7307 l 7714 7330 l + 7715 7350 l 7716 7368 l 7716 7383 l 7717 7395 l 7717 7403 l + 7717 7409 l 7717 7412 l + 7717 7413 l gs col0 s gr [] 0 sd +% Polyline +15.000 slw +n 6638 5795 m 6639 5796 l 6642 5797 l 6646 5800 l 6651 5804 l 6658 5810 l + 6664 5816 l 6671 5825 l 6676 5834 l 6680 5846 l 6683 5860 l + 6683 5878 l 6681 5900 l 6675 5925 l 6667 5949 l 6657 5972 l + 6647 5991 l 6636 6007 l 6625 6020 l 6614 6029 l 6604 6037 l + 6594 6043 l 6583 6050 l 6573 6057 l 6563 6067 l 6554 6080 l + 6545 6098 l 6537 6119 l 6532 6145 l 6530 6173 l 6533 6204 l + 6540 6229 l 6550 6248 l 6562 6260 l 6575 6266 l 6589 6269 l + 6603 6270 l 6617 6270 l 6630 6273 l 6644 6280 l 6656 6293 l + 6666 6313 l 6673 6341 l 6675 6375 l 6673 6403 l 6668 6430 l + 6660 6454 l 6650 6474 l 6639 6491 l 6627 6505 l 6614 6517 l + 6600 6527 l 6587 6536 l 6574 6544 l 6561 6554 l 6549 6565 l + 6538 6577 l 6529 6593 l 6522 6611 l 6519 6631 l 6519 6653 l + 6525 6675 l 6537 6696 l 6554 6713 l 6573 6724 l 6592 6730 l + 6611 6732 l 6629 6730 l 6647 6727 l 6665 6723 l 6682 6718 l + 6701 6714 l 6720 6712 l 6740 6713 l 6762 6716 l 6784 6724 l + 6806 6735 l 6825 6750 l 6840 6766 l 6849 6782 l 6855 6796 l + 6857 6807 l 6857 6816 l 6855 6824 l 6851 6830 l 6847 6835 l + 6843 6840 l 6838 6847 l 6833 6854 l 6827 6864 l 6822 6876 l + 6815 6892 l 6808 6909 l 6799 6928 l 6785 6951 l 6771 6969 l + 6756 6980 l 6742 6985 l 6729 6986 l 6716 6985 l 6704 6984 l + 6692 6985 l 6682 6991 l 6674 7003 l 6671 7023 l 6675 7050 l + 6684 7072 l 6696 7093 l 6712 7110 l 6728 7124 l 6746 7134 l + 6764 7142 l 6781 7148 l 6799 7152 l 6817 7157 l 6834 7163 l + 6851 7171 l 6866 7183 l 6880 7200 l 6892 7221 l 6899 7246 l + 6900 7275 l 6895 7301 l 6885 7326 l 6872 7349 l 6856 7370 l + 6837 7390 l 6817 7409 l 6795 7426 l 6772 7442 l 6749 7458 l + 6726 7472 l 6704 7485 l 6684 7496 l 6668 7505 l 6655 7512 l + 6646 7517 l 6640 7520 l + 6638 7521 l gs col0 s gr +% Ellipse +7.500 slw +n 11813 6658 2159 863 0 360 DrawEllipse gs col0 s gr + +% Polyline + [15 45] 45 sd +n 12568 5849 m 12568 5850 l 12567 5853 l 12566 5858 l 12563 5865 l 12560 5875 l + 12556 5888 l 12551 5904 l 12544 5923 l 12536 5944 l 12527 5967 l + 12517 5991 l 12505 6017 l 12492 6045 l 12478 6073 l 12462 6101 l + 12444 6131 l 12423 6161 l 12400 6193 l 12374 6225 l 12345 6258 l + 12312 6293 l 12274 6329 l 12233 6366 l 12186 6404 l 12136 6442 l + 12090 6474 l 12044 6503 l 12000 6531 l 11957 6554 l 11918 6575 l + 11882 6592 l 11850 6606 l 11822 6617 l 11797 6625 l 11775 6630 l + 11756 6634 l 11739 6636 l 11724 6636 l 11709 6636 l 11695 6635 l + 11682 6635 l 11667 6635 l 11651 6635 l 11634 6637 l 11614 6640 l + 11591 6646 l 11564 6653 l 11534 6664 l 11500 6677 l 11462 6693 l + 11419 6713 l 11373 6736 l 11323 6762 l 11271 6790 l 11219 6820 l + 11164 6853 l 11112 6886 l 11062 6918 l 11017 6949 l 10975 6980 l + 10936 7009 l 10900 7036 l 10867 7063 l 10836 7089 l 10807 7115 l + 10780 7139 l 10754 7163 l 10730 7187 l 10708 7209 l 10687 7231 l + 10667 7251 l 10649 7271 l 10633 7288 l 10618 7305 l 10606 7319 l + 10595 7330 l 10587 7340 l 10581 7348 l 10576 7353 l 10573 7356 l + 10572 7358 l + 10571 7359 l gs col0 s gr [] 0 sd +% Polyline +15.000 slw +n 11813 5795 m 11814 5796 l 11817 5797 l 11821 5800 l 11826 5804 l 11833 5810 l + 11839 5816 l 11846 5825 l 11851 5834 l 11855 5846 l 11858 5860 l + 11858 5878 l 11856 5900 l 11850 5925 l 11842 5949 l 11832 5972 l + 11822 5991 l 11811 6007 l 11800 6020 l 11789 6029 l 11779 6037 l + 11769 6043 l 11758 6050 l 11748 6057 l 11738 6067 l 11729 6080 l + 11720 6098 l 11712 6119 l 11707 6145 l 11705 6173 l 11708 6204 l + 11715 6229 l 11725 6248 l 11737 6260 l 11750 6266 l 11764 6269 l + 11778 6270 l 11792 6270 l 11805 6273 l 11819 6280 l 11831 6293 l + 11841 6313 l 11848 6341 l 11850 6375 l 11848 6403 l 11843 6430 l + 11835 6454 l 11825 6474 l 11814 6491 l 11802 6505 l 11789 6517 l + 11775 6527 l 11762 6536 l 11749 6544 l 11736 6554 l 11724 6565 l + 11713 6577 l 11704 6593 l 11697 6611 l 11694 6631 l 11694 6653 l + 11700 6675 l 11712 6696 l 11729 6713 l 11748 6724 l 11767 6730 l + 11786 6732 l 11804 6730 l 11822 6727 l 11840 6723 l 11857 6718 l + 11876 6714 l 11895 6712 l 11915 6713 l 11937 6716 l 11959 6724 l + 11981 6735 l 12000 6750 l 12015 6766 l 12024 6782 l 12030 6796 l + 12032 6807 l 12032 6816 l 12030 6824 l 12026 6830 l 12022 6835 l + 12018 6840 l 12013 6847 l 12008 6854 l 12002 6864 l 11997 6876 l + 11990 6892 l 11983 6909 l 11974 6928 l 11960 6951 l 11946 6969 l + 11931 6980 l 11917 6985 l 11904 6986 l 11891 6985 l 11879 6984 l + 11867 6985 l 11857 6991 l 11849 7003 l 11846 7023 l 11850 7050 l + 11859 7072 l 11871 7093 l 11887 7110 l 11903 7124 l 11921 7134 l + 11939 7142 l 11956 7148 l 11974 7152 l 11992 7157 l 12009 7163 l + 12026 7171 l 12041 7183 l 12055 7200 l 12067 7221 l 12074 7246 l + 12075 7275 l 12070 7301 l 12060 7326 l 12047 7349 l 12031 7370 l + 12012 7390 l 11992 7409 l 11970 7426 l 11947 7442 l 11924 7458 l + 11901 7472 l 11879 7485 l 11859 7496 l 11843 7505 l 11830 7512 l + 11821 7517 l 11815 7520 l + 11813 7521 l gs col0 s gr +% Ellipse +7.500 slw +n 6728 9000 1412 565 0 360 DrawEllipse gs col0 s gr + +% Polyline + [15 45] 45 sd +n 7222 8471 m 7222 8473 l 7221 8476 l 7219 8483 l 7216 8492 l 7211 8505 l + 7206 8521 l 7199 8539 l 7191 8559 l 7181 8581 l 7170 8604 l + 7157 8629 l 7142 8654 l 7124 8679 l 7104 8706 l 7080 8735 l + 7052 8764 l 7019 8795 l 6981 8827 l 6939 8859 l 6902 8885 l + 6864 8908 l 6829 8929 l 6796 8946 l 6768 8960 l 6743 8970 l + 6721 8977 l 6703 8982 l 6688 8985 l 6674 8986 l 6662 8986 l + 6651 8985 l 6639 8985 l 6627 8985 l 6613 8986 l 6597 8988 l + 6578 8993 l 6556 9000 l 6529 9010 l 6498 9023 l 6463 9040 l + 6424 9059 l 6382 9082 l 6339 9106 l 6293 9133 l 6251 9161 l + 6212 9187 l 6177 9212 l 6145 9236 l 6116 9259 l 6090 9281 l + 6066 9302 l 6044 9322 l 6023 9342 l 6004 9361 l 5987 9379 l + 5971 9396 l 5957 9411 l 5945 9424 l 5935 9436 l 5927 9445 l + 5922 9451 l 5918 9455 l 5916 9458 l + 5915 9459 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 6021 8506 m 6021 8508 l 6020 8512 l 6018 8520 l 6016 8531 l 6014 8545 l + 6012 8563 l 6009 8582 l 6007 8604 l 6005 8627 l 6005 8652 l + 6006 8677 l 6008 8704 l 6012 8731 l 6019 8761 l 6028 8792 l + 6041 8825 l 6057 8859 l 6076 8891 l 6096 8921 l 6118 8947 l + 6139 8971 l 6160 8991 l 6182 9009 l 6203 9026 l 6225 9041 l + 6245 9054 l 6266 9066 l 6284 9077 l 6301 9086 l 6315 9094 l + 6326 9099 l 6333 9103 l 6337 9105 l + 6339 9106 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 7010 8788 m 7012 8789 l 7015 8791 l 7021 8795 l 7029 8801 l 7041 8810 l + 7055 8820 l 7072 8832 l 7090 8846 l 7109 8861 l 7130 8877 l + 7151 8895 l 7172 8914 l 7193 8935 l 7215 8957 l 7237 8982 l + 7260 9009 l 7283 9039 l 7306 9071 l 7328 9106 l 7348 9141 l + 7365 9176 l 7380 9208 l 7392 9239 l 7402 9268 l 7409 9295 l + 7416 9320 l 7421 9345 l 7424 9368 l 7427 9390 l 7430 9411 l + 7431 9431 l 7432 9448 l 7433 9463 l 7434 9474 l 7434 9483 l + 7434 9489 l 7434 9492 l + 7434 9494 l gs col0 s gr [] 0 sd +% Polyline +15.000 slw +n 6728 8435 m 6727 8435 l 6726 8436 l 6723 8438 l 6719 8441 l 6714 8445 l + 6708 8451 l 6702 8457 l 6694 8465 l 6687 8474 l 6680 8484 l + 6673 8496 l 6667 8509 l 6661 8525 l 6657 8543 l 6653 8563 l + 6651 8587 l 6651 8615 l 6653 8647 l 6657 8683 l 6663 8717 l + 6670 8751 l 6678 8783 l 6687 8811 l 6696 8835 l 6705 8856 l + 6713 8873 l 6722 8887 l 6731 8899 l 6739 8909 l 6748 8918 l + 6756 8928 l 6765 8938 l 6773 8951 l 6782 8966 l 6790 8984 l + 6799 9006 l 6807 9032 l 6815 9063 l 6823 9098 l 6829 9137 l + 6833 9177 l 6835 9220 l 6835 9261 l 6832 9298 l 6828 9331 l + 6823 9361 l 6816 9388 l 6808 9414 l 6799 9437 l 6790 9458 l + 6781 9478 l 6771 9496 l 6762 9513 l 6753 9527 l 6745 9539 l + 6739 9549 l 6734 9556 l 6731 9561 l 6729 9564 l + 6728 9565 l gs col0 s gr +% Ellipse +7.500 slw +n 15563 7633 2159 863 0 360 DrawEllipse gs col0 s gr + +% Polyline +15.000 slw +n 15563 6770 m 15564 6771 l 15567 6772 l 15571 6775 l 15576 6779 l 15583 6785 l + 15589 6791 l 15596 6800 l 15601 6809 l 15605 6821 l 15608 6835 l + 15608 6853 l 15606 6875 l 15600 6900 l 15592 6924 l 15582 6947 l + 15572 6966 l 15561 6982 l 15550 6995 l 15539 7004 l 15529 7012 l + 15519 7018 l 15508 7025 l 15498 7032 l 15488 7042 l 15479 7055 l + 15470 7073 l 15462 7094 l 15457 7120 l 15455 7148 l 15458 7179 l + 15465 7204 l 15475 7223 l 15487 7235 l 15500 7241 l 15514 7244 l + 15528 7245 l 15542 7245 l 15555 7248 l 15569 7255 l 15581 7268 l + 15591 7288 l 15598 7316 l 15600 7350 l 15598 7378 l 15593 7405 l + 15585 7429 l 15575 7449 l 15564 7466 l 15552 7480 l 15539 7492 l + 15525 7502 l 15512 7511 l 15499 7519 l 15486 7529 l 15474 7540 l + 15463 7552 l 15454 7568 l 15447 7586 l 15444 7606 l 15444 7628 l + 15450 7650 l 15462 7671 l 15479 7688 l 15498 7699 l 15517 7705 l + 15536 7707 l 15554 7705 l 15572 7702 l 15590 7698 l 15607 7693 l + 15626 7689 l 15645 7687 l 15665 7688 l 15687 7691 l 15709 7699 l + 15731 7710 l 15750 7725 l 15765 7741 l 15774 7757 l 15780 7771 l + 15782 7782 l 15782 7791 l 15780 7799 l 15776 7805 l 15772 7810 l + 15768 7815 l 15763 7822 l 15758 7829 l 15752 7839 l 15747 7851 l + 15740 7867 l 15733 7884 l 15724 7903 l 15710 7926 l 15696 7944 l + 15681 7955 l 15667 7960 l 15654 7961 l 15641 7960 l 15629 7959 l + 15617 7960 l 15607 7966 l 15599 7978 l 15596 7998 l 15600 8025 l + 15609 8047 l 15621 8068 l 15637 8085 l 15653 8099 l 15671 8109 l + 15689 8117 l 15706 8123 l 15724 8127 l 15742 8132 l 15759 8138 l + 15776 8146 l 15791 8158 l 15805 8175 l 15817 8196 l 15824 8221 l + 15825 8250 l 15820 8276 l 15810 8301 l 15797 8324 l 15781 8345 l + 15762 8365 l 15742 8384 l 15720 8401 l 15697 8417 l 15674 8433 l + 15651 8447 l 15629 8460 l 15609 8471 l 15593 8480 l 15580 8487 l + 15571 8492 l 15565 8495 l + 15563 8496 l gs col0 s gr +% Ellipse +7.500 slw +n 15563 5608 2159 863 0 360 DrawEllipse gs col0 s gr + +% Polyline +15.000 slw +n 15563 4745 m 15564 4746 l 15567 4747 l 15571 4750 l 15576 4754 l 15583 4760 l + 15589 4766 l 15596 4775 l 15601 4784 l 15605 4796 l 15608 4810 l + 15608 4828 l 15606 4850 l 15600 4875 l 15592 4899 l 15582 4922 l + 15572 4941 l 15561 4957 l 15550 4970 l 15539 4979 l 15529 4987 l + 15519 4993 l 15508 5000 l 15498 5007 l 15488 5017 l 15479 5030 l + 15470 5048 l 15462 5069 l 15457 5095 l 15455 5123 l 15458 5154 l + 15465 5179 l 15475 5198 l 15487 5210 l 15500 5216 l 15514 5219 l + 15528 5220 l 15542 5220 l 15555 5223 l 15569 5230 l 15581 5243 l + 15591 5263 l 15598 5291 l 15600 5325 l 15598 5353 l 15593 5380 l + 15585 5404 l 15575 5424 l 15564 5441 l 15552 5455 l 15539 5467 l + 15525 5477 l 15512 5486 l 15499 5494 l 15486 5504 l 15474 5515 l + 15463 5527 l 15454 5543 l 15447 5561 l 15444 5581 l 15444 5603 l + 15450 5625 l 15462 5646 l 15479 5663 l 15498 5674 l 15517 5680 l + 15536 5682 l 15554 5680 l 15572 5677 l 15590 5673 l 15607 5668 l + 15626 5664 l 15645 5662 l 15665 5663 l 15687 5666 l 15709 5674 l + 15731 5685 l 15750 5700 l 15765 5716 l 15774 5732 l 15780 5746 l + 15782 5757 l 15782 5766 l 15780 5774 l 15776 5780 l 15772 5785 l + 15768 5790 l 15763 5797 l 15758 5804 l 15752 5814 l 15747 5826 l + 15740 5842 l 15733 5859 l 15724 5878 l 15710 5901 l 15696 5919 l + 15681 5930 l 15667 5935 l 15654 5936 l 15641 5935 l 15629 5934 l + 15617 5935 l 15607 5941 l 15599 5953 l 15596 5973 l 15600 6000 l + 15609 6022 l 15621 6043 l 15637 6060 l 15653 6074 l 15671 6084 l + 15689 6092 l 15706 6098 l 15724 6102 l 15742 6107 l 15759 6113 l + 15776 6121 l 15791 6133 l 15805 6150 l 15817 6171 l 15824 6196 l + 15825 6225 l 15820 6251 l 15810 6276 l 15797 6299 l 15781 6320 l + 15762 6340 l 15742 6359 l 15720 6376 l 15697 6392 l 15674 6408 l + 15651 6422 l 15629 6435 l 15609 6446 l 15593 6455 l 15580 6462 l + 15571 6467 l 15565 6470 l + 15563 6471 l gs col0 s gr +% Ellipse +7.500 slw +n 15563 3583 2159 863 0 360 DrawEllipse gs col0 s gr + +% Polyline +15.000 slw +n 15563 2720 m 15564 2721 l 15567 2722 l 15571 2725 l 15576 2729 l 15583 2735 l + 15589 2741 l 15596 2750 l 15601 2759 l 15605 2771 l 15608 2785 l + 15608 2803 l 15606 2825 l 15600 2850 l 15592 2874 l 15582 2897 l + 15572 2916 l 15561 2932 l 15550 2945 l 15539 2954 l 15529 2962 l + 15519 2968 l 15508 2975 l 15498 2982 l 15488 2992 l 15479 3005 l + 15470 3023 l 15462 3044 l 15457 3070 l 15455 3098 l 15458 3129 l + 15465 3154 l 15475 3173 l 15487 3185 l 15500 3191 l 15514 3194 l + 15528 3195 l 15542 3195 l 15555 3198 l 15569 3205 l 15581 3218 l + 15591 3238 l 15598 3266 l 15600 3300 l 15598 3328 l 15593 3355 l + 15585 3379 l 15575 3399 l 15564 3416 l 15552 3430 l 15539 3442 l + 15525 3452 l 15512 3461 l 15499 3469 l 15486 3479 l 15474 3490 l + 15463 3502 l 15454 3518 l 15447 3536 l 15444 3556 l 15444 3578 l + 15450 3600 l 15462 3621 l 15479 3638 l 15498 3649 l 15517 3655 l + 15536 3657 l 15554 3655 l 15572 3652 l 15590 3648 l 15607 3643 l + 15626 3639 l 15645 3637 l 15665 3638 l 15687 3641 l 15709 3649 l + 15731 3660 l 15750 3675 l 15765 3691 l 15774 3707 l 15780 3721 l + 15782 3732 l 15782 3741 l 15780 3749 l 15776 3755 l 15772 3760 l + 15768 3765 l 15763 3772 l 15758 3779 l 15752 3789 l 15747 3801 l + 15740 3817 l 15733 3834 l 15724 3853 l 15710 3876 l 15696 3894 l + 15681 3905 l 15667 3910 l 15654 3911 l 15641 3910 l 15629 3909 l + 15617 3910 l 15607 3916 l 15599 3928 l 15596 3948 l 15600 3975 l + 15609 3997 l 15621 4018 l 15637 4035 l 15653 4049 l 15671 4059 l + 15689 4067 l 15706 4073 l 15724 4077 l 15742 4082 l 15759 4088 l + 15776 4096 l 15791 4108 l 15805 4125 l 15817 4146 l 15824 4171 l + 15825 4200 l 15820 4226 l 15810 4251 l 15797 4274 l 15781 4295 l + 15762 4315 l 15742 4334 l 15720 4351 l 15697 4367 l 15674 4383 l + 15651 4397 l 15629 4410 l 15609 4421 l 15593 4430 l 15580 4437 l + 15571 4442 l 15565 4445 l + 15563 4446 l gs col0 s gr +% Ellipse +7.500 slw +n 15563 9658 2159 863 0 360 DrawEllipse gs col0 s gr + +% Polyline +15.000 slw +n 15563 8795 m 15564 8796 l 15567 8797 l 15571 8800 l 15576 8804 l 15583 8810 l + 15589 8816 l 15596 8825 l 15601 8834 l 15605 8846 l 15608 8860 l + 15608 8878 l 15606 8900 l 15600 8925 l 15592 8949 l 15582 8972 l + 15572 8991 l 15561 9007 l 15550 9020 l 15539 9029 l 15529 9037 l + 15519 9043 l 15508 9050 l 15498 9057 l 15488 9067 l 15479 9080 l + 15470 9098 l 15462 9119 l 15457 9145 l 15455 9173 l 15458 9204 l + 15465 9229 l 15475 9248 l 15487 9260 l 15500 9266 l 15514 9269 l + 15528 9270 l 15542 9270 l 15555 9273 l 15569 9280 l 15581 9293 l + 15591 9313 l 15598 9341 l 15600 9375 l 15598 9403 l 15593 9430 l + 15585 9454 l 15575 9474 l 15564 9491 l 15552 9505 l 15539 9517 l + 15525 9527 l 15512 9536 l 15499 9544 l 15486 9554 l 15474 9565 l + 15463 9577 l 15454 9593 l 15447 9611 l 15444 9631 l 15444 9653 l + 15450 9675 l 15462 9696 l 15479 9713 l 15498 9724 l 15517 9730 l + 15536 9732 l 15554 9730 l 15572 9727 l 15590 9723 l 15607 9718 l + 15626 9714 l 15645 9712 l 15665 9713 l 15687 9716 l 15709 9724 l + 15731 9735 l 15750 9750 l 15765 9766 l 15774 9782 l 15780 9796 l + 15782 9807 l 15782 9816 l 15780 9824 l 15776 9830 l 15772 9835 l + 15768 9840 l 15763 9847 l 15758 9854 l 15752 9864 l 15747 9876 l + 15740 9892 l 15733 9909 l 15724 9928 l 15710 9951 l 15696 9969 l + 15681 9980 l 15667 9985 l 15654 9986 l 15641 9985 l 15629 9984 l + 15617 9985 l 15607 9991 l 15599 10003 l 15596 10023 l 15600 10050 l + 15609 10072 l 15621 10093 l 15637 10110 l 15653 10124 l 15671 10134 l + 15689 10142 l 15706 10148 l 15724 10152 l 15742 10157 l 15759 10163 l + 15776 10171 l 15791 10183 l 15805 10200 l 15817 10221 l 15824 10246 l + 15825 10275 l 15820 10301 l 15810 10326 l 15797 10349 l 15781 10370 l + 15762 10390 l 15742 10409 l 15720 10426 l 15697 10442 l 15674 10458 l + 15651 10472 l 15629 10485 l 15609 10496 l 15593 10505 l 15580 10512 l + 15571 10517 l 15565 10520 l + 15563 10521 l gs col0 s gr +% Ellipse +7.500 slw +n 18263 5608 2159 863 0 360 DrawEllipse gs col0 s gr + +% Polyline +15.000 slw +n 18300 4725 m 18299 4726 l 18297 4727 l 18294 4729 l 18290 4732 l 18284 4737 l + 18276 4744 l 18267 4751 l 18258 4761 l 18248 4772 l 18238 4784 l + 18228 4798 l 18218 4814 l 18209 4832 l 18201 4853 l 18194 4876 l + 18189 4903 l 18185 4933 l 18183 4968 l 18183 5008 l 18186 5053 l + 18192 5103 l 18199 5144 l 18207 5185 l 18216 5225 l 18226 5262 l + 18236 5295 l 18247 5325 l 18258 5352 l 18269 5375 l 18279 5394 l + 18290 5411 l 18300 5426 l 18311 5439 l 18321 5451 l 18331 5463 l + 18341 5474 l 18351 5486 l 18361 5500 l 18372 5515 l 18382 5533 l + 18392 5554 l 18403 5579 l 18413 5607 l 18423 5640 l 18433 5677 l + 18442 5718 l 18449 5763 l 18456 5810 l 18461 5858 l 18464 5913 l + 18464 5966 l 18462 6015 l 18458 6060 l 18452 6101 l 18445 6139 l + 18436 6174 l 18427 6207 l 18416 6237 l 18405 6266 l 18393 6293 l + 18381 6318 l 18368 6341 l 18356 6363 l 18345 6383 l 18334 6400 l + 18325 6415 l 18317 6427 l 18310 6436 l 18306 6443 l 18302 6448 l + 18301 6450 l + 18300 6451 l gs col0 s gr +% Ellipse +7.500 slw +n 18263 9658 2159 863 0 360 DrawEllipse gs col0 s gr + +% Ellipse +n 18263 7633 2159 863 0 360 DrawEllipse gs col0 s gr + +% Ellipse +n 18263 3583 2159 863 0 360 DrawEllipse gs col0 s gr + +% Polyline +0 slj +30.000 slw +gs clippath +6735 8030 m 6735 7710 l 6615 7710 l 6615 8030 l 6615 8030 l 6675 7790 l 6735 8030 l cp +eoclip +n 6675 8250 m + 6675 7725 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 6735 8030 m 6675 7790 l 6615 8030 l 6735 8030 l cp gs 0.00 setgray ef gr col0 s +% Polyline +2 slj +n 18300 2700 m 18299 2702 l 18296 2707 l 18292 2715 l 18285 2728 l 18277 2744 l + 18267 2763 l 18257 2785 l 18246 2809 l 18235 2835 l 18224 2861 l + 18215 2889 l 18206 2917 l 18199 2947 l 18194 2978 l 18190 3010 l + 18190 3044 l 18192 3078 l 18199 3114 l 18208 3143 l 18218 3164 l + 18229 3177 l 18239 3183 l 18249 3184 l 18258 3181 l 18267 3176 l + 18277 3171 l 18287 3169 l 18298 3171 l 18311 3179 l 18325 3195 l + 18341 3221 l 18358 3256 l 18375 3300 l 18387 3335 l 18397 3370 l + 18407 3404 l 18415 3434 l 18422 3461 l 18428 3484 l 18433 3503 l + 18437 3520 l 18441 3535 l 18444 3548 l 18447 3561 l 18449 3573 l + 18452 3587 l 18454 3601 l 18457 3619 l 18459 3639 l 18461 3663 l + 18463 3691 l 18464 3722 l 18464 3757 l 18463 3795 l 18461 3833 l + 18455 3877 l 18448 3914 l 18439 3945 l 18431 3967 l 18422 3982 l + 18413 3992 l 18404 3997 l 18396 3998 l 18388 3998 l 18379 3998 l + 18371 3999 l 18362 4003 l 18352 4010 l 18342 4022 l 18331 4040 l + 18320 4064 l 18310 4093 l 18300 4125 l 18291 4162 l 18285 4196 l + 18281 4228 l 18279 4256 l 18279 4282 l 18280 4306 l 18282 4329 l + 18285 4350 l 18288 4369 l 18291 4386 l 18294 4401 l 18297 4412 l + 18298 4420 l 18299 4424 l + 18300 4426 l gs col0 s gr +% Polyline +n 18075 6750 m 18076 6752 l 18077 6757 l 18079 6766 l 18082 6780 l 18087 6797 l + 18092 6817 l 18098 6841 l 18105 6866 l 18112 6893 l 18120 6920 l + 18128 6948 l 18137 6977 l 18146 7006 l 18157 7036 l 18168 7067 l + 18180 7098 l 18192 7128 l 18210 7167 l 18224 7196 l 18234 7212 l + 18240 7218 l 18242 7218 l 18243 7214 l 18244 7210 l 18247 7209 l + 18253 7213 l 18264 7225 l 18280 7246 l 18300 7275 l 18316 7298 l + 18332 7319 l 18345 7336 l 18357 7348 l 18367 7356 l 18376 7360 l + 18383 7362 l 18390 7362 l 18397 7363 l 18404 7366 l 18411 7372 l + 18419 7384 l 18427 7402 l 18436 7427 l 18444 7460 l 18450 7500 l + 18453 7534 l 18453 7568 l 18452 7599 l 18450 7626 l 18446 7649 l + 18441 7668 l 18436 7684 l 18431 7697 l 18425 7708 l 18419 7719 l + 18413 7729 l 18407 7741 l 18401 7754 l 18395 7770 l 18390 7790 l + 18385 7814 l 18381 7843 l 18378 7876 l 18376 7912 l 18375 7950 l + 18376 7995 l 18379 8033 l 18382 8064 l 18386 8086 l 18389 8101 l + 18393 8110 l 18396 8115 l 18400 8119 l 18404 8122 l 18408 8126 l + 18413 8134 l 18418 8146 l 18425 8164 l 18432 8188 l 18441 8217 l + 18450 8250 l 18461 8286 l 18470 8318 l 18479 8346 l 18487 8370 l + 18494 8391 l 18500 8409 l 18506 8426 l 18512 8440 l 18516 8453 l + 18520 8462 l 18523 8469 l 18524 8473 l + 18525 8475 l gs col0 s gr +% Polyline +n 18075 8775 m 18073 8778 l 18069 8783 l 18062 8792 l 18053 8805 l 18042 8820 l + 18031 8838 l 18020 8857 l 18010 8878 l 18002 8899 l 17996 8922 l + 17993 8946 l 17994 8973 l 18000 9000 l 18010 9025 l 18023 9045 l + 18035 9059 l 18045 9065 l 18054 9066 l 18061 9063 l 18068 9058 l + 18076 9054 l 18085 9052 l 18097 9055 l 18113 9065 l 18134 9084 l + 18161 9114 l 18192 9153 l 18213 9181 l 18232 9209 l 18251 9236 l + 18267 9261 l 18282 9283 l 18294 9301 l 18305 9317 l 18314 9331 l + 18322 9343 l 18329 9354 l 18336 9364 l 18343 9374 l 18349 9385 l + 18357 9397 l 18365 9412 l 18374 9429 l 18385 9449 l 18397 9473 l + 18409 9501 l 18423 9532 l 18437 9566 l 18450 9600 l 18465 9645 l + 18475 9684 l 18481 9714 l 18482 9735 l 18481 9749 l 18477 9756 l + 18472 9759 l 18465 9761 l 18459 9762 l 18453 9765 l 18449 9772 l + 18446 9784 l 18445 9804 l 18447 9832 l 18453 9867 l 18461 9908 l + 18470 9945 l 18480 9980 l 18491 10010 l 18502 10035 l 18513 10055 l + 18524 10070 l 18535 10081 l 18546 10090 l 18556 10098 l 18567 10106 l + 18577 10115 l 18586 10126 l 18594 10141 l 18601 10159 l 18606 10182 l + 18608 10210 l 18606 10242 l 18600 10275 l 18589 10307 l 18573 10335 l + 18555 10361 l 18535 10382 l 18513 10401 l 18490 10418 l 18466 10433 l + 18441 10446 l 18416 10458 l 18392 10468 l 18369 10477 l 18348 10485 l + 18331 10491 l 18317 10496 l 18308 10499 l 18302 10500 l + 18300 10501 l gs col0 s gr +% here ends figure; +% +% here starts figure with depth 40 +% Polyline +0 slj +0 slc +0.000 slw +n 9600 7575 m 11400 7575 l 11400 5700 l 9600 5700 l + cp gs col7 1.00 shd ef gr +% Polyline +n 12300 7575 m 14025 7575 l 14025 5700 l 12300 5700 l + cp gs col7 1.00 shd ef gr +% Polyline +n 5351 8471 m 5280 8471 l 5280 8400 l 5351 8400 l + cp gs col7 1.00 shd ef gr +% Polyline +n 8175 9600 m 8104 9600 l 8104 9529 l 8175 9529 l + cp gs col7 1.00 shd ef gr +% Polyline +n 13350 8550 m 15150 8550 l 15150 6675 l 13350 6675 l + cp gs col7 1.00 shd ef gr +% Polyline +n 16050 8550 m 17775 8550 l 17775 6675 l 16050 6675 l + cp gs col7 1.00 shd ef gr +% Polyline +n 13350 6525 m 15150 6525 l 15150 4650 l 13350 4650 l + cp gs col7 1.00 shd ef gr +% Polyline +n 16050 6525 m 17775 6525 l 17775 4650 l 16050 4650 l + cp gs col7 1.00 shd ef gr +% Polyline +n 13350 4500 m 15150 4500 l 15150 2625 l 13350 2625 l + cp gs col7 1.00 shd ef gr +% Polyline +n 16050 4500 m 17775 4500 l 17775 2625 l 16050 2625 l + cp gs col7 1.00 shd ef gr +% Polyline +n 13350 10575 m 15150 10575 l 15150 8700 l 13350 8700 l + cp gs col7 1.00 shd ef gr +% Polyline +n 16050 10575 m 17775 10575 l 17775 8700 l 16050 8700 l + cp gs col7 1.00 shd ef gr +% Polyline +n 16050 6525 m 17850 6525 l 17850 4650 l 16050 4650 l + cp gs col7 1.00 shd ef gr +% Polyline +n 18750 6525 m 20475 6525 l 20475 4650 l 18750 4650 l + cp gs col7 1.00 shd ef gr +% Polyline +n 16050 10575 m 17850 10575 l 17850 8700 l 16050 8700 l + cp gs col7 1.00 shd ef gr +% Polyline +n 18750 10575 m 20475 10575 l 20475 8700 l 18750 8700 l + cp gs col7 1.00 shd ef gr +% Polyline +n 16050 8550 m 17850 8550 l 17850 6675 l 16050 6675 l + cp gs col7 1.00 shd ef gr +% Polyline +n 18750 8550 m 20475 8550 l 20475 6675 l 18750 6675 l + cp gs col7 1.00 shd ef gr +% Polyline +n 16050 4500 m 17850 4500 l 17850 2625 l 16050 2625 l + cp gs col7 1.00 shd ef gr +% Polyline +n 18750 4500 m 20475 4500 l 20475 2625 l 18750 2625 l + cp gs col7 1.00 shd ef gr +% here ends figure; +% +% here starts figure with depth 20 +% Polyline +2 slj +0 slc +7.500 slw +n 11400 7500 m 11400 7499 l 11401 7495 l 11404 7486 l 11409 7470 l 11414 7449 l + 11420 7425 l 11426 7400 l 11431 7376 l 11435 7354 l 11438 7333 l + 11440 7314 l 11440 7297 l 11439 7280 l 11438 7263 l 11435 7247 l + 11432 7232 l 11428 7215 l 11423 7198 l 11418 7180 l 11412 7162 l + 11406 7143 l 11400 7123 l 11394 7104 l 11388 7084 l 11382 7065 l + 11377 7046 l 11372 7028 l 11368 7010 l 11365 6992 l 11363 6975 l + 11361 6958 l 11360 6940 l 11359 6922 l 11360 6904 l 11360 6885 l + 11362 6866 l 11364 6846 l 11366 6827 l 11369 6807 l 11371 6788 l + 11374 6770 l 11377 6752 l 11380 6735 l 11383 6718 l 11385 6703 l + 11388 6688 l 11390 6673 l 11391 6658 l 11393 6642 l 11394 6627 l + 11395 6611 l 11395 6594 l 11395 6578 l 11395 6561 l 11394 6544 l + 11393 6526 l 11391 6509 l 11388 6492 l 11386 6475 l 11383 6459 l + 11379 6442 l 11375 6425 l 11371 6409 l 11367 6393 l 11362 6377 l + 11357 6359 l 11351 6341 l 11346 6321 l 11340 6302 l 11334 6281 l + 11328 6261 l 11323 6240 l 11318 6219 l 11314 6199 l 11310 6179 l + 11306 6160 l 11304 6141 l 11302 6123 l 11300 6105 l 11300 6088 l + 11300 6070 l 11302 6053 l 11304 6036 l 11308 6018 l 11312 5999 l + 11318 5978 l 11325 5956 l 11334 5933 l 11343 5908 l 11353 5882 l + 11364 5857 l 11374 5833 l 11383 5813 l 11390 5796 l 11396 5785 l + 11399 5778 l + 11400 5775 l gs col0 s gr +% Polyline +n 12300 7500 m 12300 7499 l 12301 7496 l 12305 7488 l 12310 7474 l 12317 7453 l + 12327 7428 l 12337 7399 l 12348 7368 l 12359 7337 l 12369 7306 l + 12378 7278 l 12386 7252 l 12393 7227 l 12399 7205 l 12403 7184 l + 12407 7164 l 12410 7144 l 12413 7125 l 12414 7106 l 12415 7086 l + 12416 7067 l 12415 7046 l 12415 7025 l 12414 7003 l 12412 6981 l + 12410 6959 l 12407 6936 l 12404 6913 l 12401 6890 l 12398 6867 l + 12394 6844 l 12390 6822 l 12386 6801 l 12383 6779 l 12379 6758 l + 12375 6738 l 12372 6718 l 12368 6699 l 12365 6679 l 12361 6659 l + 12357 6638 l 12353 6617 l 12349 6595 l 12346 6573 l 12342 6551 l + 12337 6528 l 12333 6506 l 12329 6485 l 12326 6464 l 12322 6443 l + 12318 6424 l 12314 6405 l 12310 6387 l 12307 6370 l 12303 6353 l + 12300 6338 l 12296 6318 l 12291 6300 l 12287 6282 l 12283 6264 l + 12278 6245 l 12274 6228 l 12270 6210 l 12266 6193 l 12262 6176 l + 12259 6160 l 12256 6144 l 12254 6129 l 12252 6115 l 12251 6101 l + 12250 6088 l 12250 6075 l 12250 6060 l 12252 6045 l 12254 6029 l + 12257 6012 l 12261 5992 l 12266 5971 l 12272 5948 l 12278 5924 l + 12285 5901 l 12291 5880 l 12296 5864 l 12299 5855 l 12300 5851 l + + 12300 5850 l gs col0 s gr +% Polyline +n 15150 8475 m 15150 8474 l 15151 8470 l 15154 8461 l 15159 8445 l 15164 8424 l + 15170 8400 l 15176 8375 l 15181 8351 l 15185 8329 l 15188 8308 l + 15190 8289 l 15190 8272 l 15189 8255 l 15188 8238 l 15185 8222 l + 15182 8207 l 15178 8190 l 15173 8173 l 15168 8155 l 15162 8137 l + 15156 8118 l 15150 8098 l 15144 8079 l 15138 8059 l 15132 8040 l + 15127 8021 l 15122 8003 l 15118 7985 l 15115 7967 l 15113 7950 l + 15111 7933 l 15110 7915 l 15109 7897 l 15110 7879 l 15110 7860 l + 15112 7841 l 15114 7821 l 15116 7802 l 15119 7782 l 15121 7763 l + 15124 7745 l 15127 7727 l 15130 7710 l 15133 7693 l 15135 7678 l + 15138 7663 l 15140 7648 l 15141 7633 l 15143 7617 l 15144 7602 l + 15145 7586 l 15145 7569 l 15145 7553 l 15145 7536 l 15144 7519 l + 15143 7501 l 15141 7484 l 15138 7467 l 15136 7450 l 15133 7434 l + 15129 7417 l 15125 7400 l 15121 7384 l 15117 7368 l 15112 7352 l + 15107 7334 l 15101 7316 l 15096 7296 l 15090 7277 l 15084 7256 l + 15078 7236 l 15073 7215 l 15068 7194 l 15064 7174 l 15060 7154 l + 15056 7135 l 15054 7116 l 15052 7098 l 15050 7080 l 15050 7063 l + 15050 7045 l 15052 7028 l 15054 7011 l 15058 6993 l 15062 6974 l + 15068 6953 l 15075 6931 l 15084 6908 l 15093 6883 l 15103 6857 l + 15114 6832 l 15124 6808 l 15133 6788 l 15140 6771 l 15146 6760 l + 15149 6753 l + 15150 6750 l gs col0 s gr +% Polyline +n 16050 8475 m 16050 8474 l 16051 8471 l 16055 8463 l 16060 8449 l 16067 8428 l + 16077 8403 l 16087 8374 l 16098 8343 l 16109 8312 l 16119 8281 l + 16128 8253 l 16136 8227 l 16143 8202 l 16149 8180 l 16153 8159 l + 16157 8139 l 16160 8119 l 16163 8100 l 16164 8081 l 16165 8061 l + 16166 8042 l 16165 8021 l 16165 8000 l 16164 7978 l 16162 7956 l + 16160 7934 l 16157 7911 l 16154 7888 l 16151 7865 l 16148 7842 l + 16144 7819 l 16140 7797 l 16136 7776 l 16133 7754 l 16129 7733 l + 16125 7713 l 16122 7693 l 16118 7674 l 16115 7654 l 16111 7634 l + 16107 7613 l 16103 7592 l 16099 7570 l 16096 7548 l 16092 7526 l + 16087 7503 l 16083 7481 l 16079 7460 l 16076 7439 l 16072 7418 l + 16068 7399 l 16064 7380 l 16060 7362 l 16057 7345 l 16053 7328 l + 16050 7313 l 16046 7293 l 16041 7275 l 16037 7257 l 16033 7239 l + 16028 7220 l 16024 7203 l 16020 7185 l 16016 7168 l 16012 7151 l + 16009 7135 l 16006 7119 l 16004 7104 l 16002 7090 l 16001 7076 l + 16000 7063 l 16000 7050 l 16000 7035 l 16002 7020 l 16004 7004 l + 16007 6987 l 16011 6967 l 16016 6946 l 16022 6923 l 16028 6899 l + 16035 6876 l 16041 6855 l 16046 6839 l 16049 6830 l 16050 6826 l + + 16050 6825 l gs col0 s gr +% Polyline +n 15150 6450 m 15150 6449 l 15151 6445 l 15154 6436 l 15159 6420 l 15164 6399 l + 15170 6375 l 15176 6350 l 15181 6326 l 15185 6304 l 15188 6283 l + 15190 6264 l 15190 6247 l 15189 6230 l 15188 6213 l 15185 6197 l + 15182 6182 l 15178 6165 l 15173 6148 l 15168 6130 l 15162 6112 l + 15156 6093 l 15150 6073 l 15144 6054 l 15138 6034 l 15132 6015 l + 15127 5996 l 15122 5978 l 15118 5960 l 15115 5942 l 15113 5925 l + 15111 5908 l 15110 5890 l 15109 5872 l 15110 5854 l 15110 5835 l + 15112 5816 l 15114 5796 l 15116 5777 l 15119 5757 l 15121 5738 l + 15124 5720 l 15127 5702 l 15130 5685 l 15133 5668 l 15135 5653 l + 15138 5638 l 15140 5623 l 15141 5608 l 15143 5592 l 15144 5577 l + 15145 5561 l 15145 5544 l 15145 5528 l 15145 5511 l 15144 5494 l + 15143 5476 l 15141 5459 l 15138 5442 l 15136 5425 l 15133 5409 l + 15129 5392 l 15125 5375 l 15121 5359 l 15117 5343 l 15112 5327 l + 15107 5309 l 15101 5291 l 15096 5271 l 15090 5252 l 15084 5231 l + 15078 5211 l 15073 5190 l 15068 5169 l 15064 5149 l 15060 5129 l + 15056 5110 l 15054 5091 l 15052 5073 l 15050 5055 l 15050 5038 l + 15050 5020 l 15052 5003 l 15054 4986 l 15058 4968 l 15062 4949 l + 15068 4928 l 15075 4906 l 15084 4883 l 15093 4858 l 15103 4832 l + 15114 4807 l 15124 4783 l 15133 4763 l 15140 4746 l 15146 4735 l + 15149 4728 l + 15150 4725 l gs col0 s gr +% Polyline +n 16050 6450 m 16050 6449 l 16051 6446 l 16055 6438 l 16060 6424 l 16067 6403 l + 16077 6378 l 16087 6349 l 16098 6318 l 16109 6287 l 16119 6256 l + 16128 6228 l 16136 6202 l 16143 6177 l 16149 6155 l 16153 6134 l + 16157 6114 l 16160 6094 l 16163 6075 l 16164 6056 l 16165 6036 l + 16166 6017 l 16165 5996 l 16165 5975 l 16164 5953 l 16162 5931 l + 16160 5909 l 16157 5886 l 16154 5863 l 16151 5840 l 16148 5817 l + 16144 5794 l 16140 5772 l 16136 5751 l 16133 5729 l 16129 5708 l + 16125 5688 l 16122 5668 l 16118 5649 l 16115 5629 l 16111 5609 l + 16107 5588 l 16103 5567 l 16099 5545 l 16096 5523 l 16092 5501 l + 16087 5478 l 16083 5456 l 16079 5435 l 16076 5414 l 16072 5393 l + 16068 5374 l 16064 5355 l 16060 5337 l 16057 5320 l 16053 5303 l + 16050 5288 l 16046 5268 l 16041 5250 l 16037 5232 l 16033 5214 l + 16028 5195 l 16024 5178 l 16020 5160 l 16016 5143 l 16012 5126 l + 16009 5110 l 16006 5094 l 16004 5079 l 16002 5065 l 16001 5051 l + 16000 5038 l 16000 5025 l 16000 5010 l 16002 4995 l 16004 4979 l + 16007 4962 l 16011 4942 l 16016 4921 l 16022 4898 l 16028 4874 l + 16035 4851 l 16041 4830 l 16046 4814 l 16049 4805 l 16050 4801 l + + 16050 4800 l gs col0 s gr +% Polyline +n 15150 4425 m 15150 4424 l 15151 4420 l 15154 4411 l 15159 4395 l 15164 4374 l + 15170 4350 l 15176 4325 l 15181 4301 l 15185 4279 l 15188 4258 l + 15190 4239 l 15190 4222 l 15189 4205 l 15188 4188 l 15185 4172 l + 15182 4157 l 15178 4140 l 15173 4123 l 15168 4105 l 15162 4087 l + 15156 4068 l 15150 4048 l 15144 4029 l 15138 4009 l 15132 3990 l + 15127 3971 l 15122 3953 l 15118 3935 l 15115 3917 l 15113 3900 l + 15111 3883 l 15110 3865 l 15109 3847 l 15110 3829 l 15110 3810 l + 15112 3791 l 15114 3771 l 15116 3752 l 15119 3732 l 15121 3713 l + 15124 3695 l 15127 3677 l 15130 3660 l 15133 3643 l 15135 3628 l + 15138 3613 l 15140 3598 l 15141 3583 l 15143 3567 l 15144 3552 l + 15145 3536 l 15145 3519 l 15145 3503 l 15145 3486 l 15144 3469 l + 15143 3451 l 15141 3434 l 15138 3417 l 15136 3400 l 15133 3384 l + 15129 3367 l 15125 3350 l 15121 3334 l 15117 3318 l 15112 3302 l + 15107 3284 l 15101 3266 l 15096 3246 l 15090 3227 l 15084 3206 l + 15078 3186 l 15073 3165 l 15068 3144 l 15064 3124 l 15060 3104 l + 15056 3085 l 15054 3066 l 15052 3048 l 15050 3030 l 15050 3013 l + 15050 2995 l 15052 2978 l 15054 2961 l 15058 2943 l 15062 2924 l + 15068 2903 l 15075 2881 l 15084 2858 l 15093 2833 l 15103 2807 l + 15114 2782 l 15124 2758 l 15133 2738 l 15140 2721 l 15146 2710 l + 15149 2703 l + 15150 2700 l gs col0 s gr +% Polyline +n 16050 4425 m 16050 4424 l 16051 4421 l 16055 4413 l 16060 4399 l 16067 4378 l + 16077 4353 l 16087 4324 l 16098 4293 l 16109 4262 l 16119 4231 l + 16128 4203 l 16136 4177 l 16143 4152 l 16149 4130 l 16153 4109 l + 16157 4089 l 16160 4069 l 16163 4050 l 16164 4031 l 16165 4011 l + 16166 3992 l 16165 3971 l 16165 3950 l 16164 3928 l 16162 3906 l + 16160 3884 l 16157 3861 l 16154 3838 l 16151 3815 l 16148 3792 l + 16144 3769 l 16140 3747 l 16136 3726 l 16133 3704 l 16129 3683 l + 16125 3663 l 16122 3643 l 16118 3624 l 16115 3604 l 16111 3584 l + 16107 3563 l 16103 3542 l 16099 3520 l 16096 3498 l 16092 3476 l + 16087 3453 l 16083 3431 l 16079 3410 l 16076 3389 l 16072 3368 l + 16068 3349 l 16064 3330 l 16060 3312 l 16057 3295 l 16053 3278 l + 16050 3263 l 16046 3243 l 16041 3225 l 16037 3207 l 16033 3189 l + 16028 3170 l 16024 3153 l 16020 3135 l 16016 3118 l 16012 3101 l + 16009 3085 l 16006 3069 l 16004 3054 l 16002 3040 l 16001 3026 l + 16000 3013 l 16000 3000 l 16000 2985 l 16002 2970 l 16004 2954 l + 16007 2937 l 16011 2917 l 16016 2896 l 16022 2873 l 16028 2849 l + 16035 2826 l 16041 2805 l 16046 2789 l 16049 2780 l 16050 2776 l + + 16050 2775 l gs col0 s gr +% Polyline +n 15150 10500 m 15150 10499 l 15151 10495 l 15154 10486 l 15159 10470 l 15164 10449 l + 15170 10425 l 15176 10400 l 15181 10376 l 15185 10354 l 15188 10333 l + 15190 10314 l 15190 10297 l 15189 10280 l 15188 10263 l 15185 10247 l + 15182 10232 l 15178 10215 l 15173 10198 l 15168 10180 l 15162 10162 l + 15156 10143 l 15150 10123 l 15144 10104 l 15138 10084 l 15132 10065 l + 15127 10046 l 15122 10028 l 15118 10010 l 15115 9992 l 15113 9975 l + 15111 9958 l 15110 9940 l 15109 9922 l 15110 9904 l 15110 9885 l + 15112 9866 l 15114 9846 l 15116 9827 l 15119 9807 l 15121 9788 l + 15124 9770 l 15127 9752 l 15130 9735 l 15133 9718 l 15135 9703 l + 15138 9688 l 15140 9673 l 15141 9658 l 15143 9642 l 15144 9627 l + 15145 9611 l 15145 9594 l 15145 9578 l 15145 9561 l 15144 9544 l + 15143 9526 l 15141 9509 l 15138 9492 l 15136 9475 l 15133 9459 l + 15129 9442 l 15125 9425 l 15121 9409 l 15117 9393 l 15112 9377 l + 15107 9359 l 15101 9341 l 15096 9321 l 15090 9302 l 15084 9281 l + 15078 9261 l 15073 9240 l 15068 9219 l 15064 9199 l 15060 9179 l + 15056 9160 l 15054 9141 l 15052 9123 l 15050 9105 l 15050 9088 l + 15050 9070 l 15052 9053 l 15054 9036 l 15058 9018 l 15062 8999 l + 15068 8978 l 15075 8956 l 15084 8933 l 15093 8908 l 15103 8882 l + 15114 8857 l 15124 8833 l 15133 8813 l 15140 8796 l 15146 8785 l + 15149 8778 l + 15150 8775 l gs col0 s gr +% Polyline +n 16050 10500 m 16050 10499 l 16051 10496 l 16055 10488 l 16060 10474 l 16067 10453 l + 16077 10428 l 16087 10399 l 16098 10368 l 16109 10337 l 16119 10306 l + 16128 10278 l 16136 10252 l 16143 10227 l 16149 10205 l 16153 10184 l + 16157 10164 l 16160 10144 l 16163 10125 l 16164 10106 l 16165 10086 l + 16166 10067 l 16165 10046 l 16165 10025 l 16164 10003 l 16162 9981 l + 16160 9959 l 16157 9936 l 16154 9913 l 16151 9890 l 16148 9867 l + 16144 9844 l 16140 9822 l 16136 9801 l 16133 9779 l 16129 9758 l + 16125 9738 l 16122 9718 l 16118 9699 l 16115 9679 l 16111 9659 l + 16107 9638 l 16103 9617 l 16099 9595 l 16096 9573 l 16092 9551 l + 16087 9528 l 16083 9506 l 16079 9485 l 16076 9464 l 16072 9443 l + 16068 9424 l 16064 9405 l 16060 9387 l 16057 9370 l 16053 9353 l + 16050 9338 l 16046 9318 l 16041 9300 l 16037 9282 l 16033 9264 l + 16028 9245 l 16024 9228 l 16020 9210 l 16016 9193 l 16012 9176 l + 16009 9160 l 16006 9144 l 16004 9129 l 16002 9115 l 16001 9101 l + 16000 9088 l 16000 9075 l 16000 9060 l 16002 9045 l 16004 9029 l + 16007 9012 l 16011 8992 l 16016 8971 l 16022 8948 l 16028 8924 l + 16035 8901 l 16041 8880 l 16046 8864 l 16049 8855 l 16050 8851 l + + 16050 8850 l gs col0 s gr +% Polyline +n 17850 6450 m 17850 6449 l 17851 6445 l 17854 6436 l 17859 6420 l 17864 6399 l + 17870 6375 l 17876 6350 l 17881 6326 l 17885 6304 l 17888 6283 l + 17890 6264 l 17890 6247 l 17889 6230 l 17888 6213 l 17885 6197 l + 17882 6182 l 17878 6165 l 17873 6148 l 17868 6130 l 17862 6112 l + 17856 6093 l 17850 6073 l 17844 6054 l 17838 6034 l 17832 6015 l + 17827 5996 l 17822 5978 l 17818 5960 l 17815 5942 l 17813 5925 l + 17811 5908 l 17810 5890 l 17809 5872 l 17810 5854 l 17810 5835 l + 17812 5816 l 17814 5796 l 17816 5777 l 17819 5757 l 17821 5738 l + 17824 5720 l 17827 5702 l 17830 5685 l 17833 5668 l 17835 5653 l + 17838 5638 l 17840 5623 l 17841 5608 l 17843 5592 l 17844 5577 l + 17845 5561 l 17845 5544 l 17845 5528 l 17845 5511 l 17844 5494 l + 17843 5476 l 17841 5459 l 17838 5442 l 17836 5425 l 17833 5409 l + 17829 5392 l 17825 5375 l 17821 5359 l 17817 5343 l 17812 5327 l + 17807 5309 l 17801 5291 l 17796 5271 l 17790 5252 l 17784 5231 l + 17778 5211 l 17773 5190 l 17768 5169 l 17764 5149 l 17760 5129 l + 17756 5110 l 17754 5091 l 17752 5073 l 17750 5055 l 17750 5038 l + 17750 5020 l 17752 5003 l 17754 4986 l 17758 4968 l 17762 4949 l + 17768 4928 l 17775 4906 l 17784 4883 l 17793 4858 l 17803 4832 l + 17814 4807 l 17824 4783 l 17833 4763 l 17840 4746 l 17846 4735 l + 17849 4728 l + 17850 4725 l gs col0 s gr +% Polyline +n 18750 6450 m 18750 6449 l 18751 6446 l 18755 6438 l 18760 6424 l 18767 6403 l + 18777 6378 l 18787 6349 l 18798 6318 l 18809 6287 l 18819 6256 l + 18828 6228 l 18836 6202 l 18843 6177 l 18849 6155 l 18853 6134 l + 18857 6114 l 18860 6094 l 18863 6075 l 18864 6056 l 18865 6036 l + 18866 6017 l 18865 5996 l 18865 5975 l 18864 5953 l 18862 5931 l + 18860 5909 l 18857 5886 l 18854 5863 l 18851 5840 l 18848 5817 l + 18844 5794 l 18840 5772 l 18836 5751 l 18833 5729 l 18829 5708 l + 18825 5688 l 18822 5668 l 18818 5649 l 18815 5629 l 18811 5609 l + 18807 5588 l 18803 5567 l 18799 5545 l 18796 5523 l 18792 5501 l + 18787 5478 l 18783 5456 l 18779 5435 l 18776 5414 l 18772 5393 l + 18768 5374 l 18764 5355 l 18760 5337 l 18757 5320 l 18753 5303 l + 18750 5288 l 18746 5268 l 18741 5250 l 18737 5232 l 18733 5214 l + 18728 5195 l 18724 5178 l 18720 5160 l 18716 5143 l 18712 5126 l + 18709 5110 l 18706 5094 l 18704 5079 l 18702 5065 l 18701 5051 l + 18700 5038 l 18700 5025 l 18700 5010 l 18702 4995 l 18704 4979 l + 18707 4962 l 18711 4942 l 18716 4921 l 18722 4898 l 18728 4874 l + 18735 4851 l 18741 4830 l 18746 4814 l 18749 4805 l 18750 4801 l + + 18750 4800 l gs col0 s gr +% Ellipse +n 22238 6733 2159 863 0 360 DrawEllipse gs col0 s gr + +% Polyline + [15 45] 45 sd +n 22993 5924 m 22993 5925 l 22992 5928 l 22991 5933 l 22988 5940 l 22985 5950 l + 22981 5963 l 22976 5979 l 22969 5998 l 22961 6019 l 22952 6042 l + 22942 6066 l 22930 6092 l 22917 6120 l 22903 6148 l 22887 6176 l + 22869 6206 l 22848 6236 l 22825 6268 l 22799 6300 l 22770 6333 l + 22737 6368 l 22699 6404 l 22658 6441 l 22611 6479 l 22561 6517 l + 22515 6549 l 22469 6578 l 22425 6606 l 22382 6629 l 22343 6650 l + 22307 6667 l 22275 6681 l 22247 6692 l 22222 6700 l 22200 6705 l + 22181 6709 l 22164 6711 l 22149 6711 l 22134 6711 l 22120 6710 l + 22107 6710 l 22092 6710 l 22076 6710 l 22059 6712 l 22039 6715 l + 22016 6721 l 21989 6728 l 21959 6739 l 21925 6752 l 21887 6768 l + 21844 6788 l 21798 6811 l 21748 6837 l 21696 6865 l 21644 6895 l + 21589 6928 l 21537 6961 l 21487 6993 l 21442 7024 l 21400 7055 l + 21361 7084 l 21325 7111 l 21292 7138 l 21261 7164 l 21232 7190 l + 21205 7214 l 21179 7238 l 21155 7262 l 21133 7284 l 21112 7306 l + 21092 7326 l 21074 7346 l 21058 7363 l 21043 7380 l 21031 7394 l + 21020 7405 l 21012 7415 l 21006 7423 l 21001 7428 l 20998 7431 l + 20997 7433 l + 20996 7434 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 21158 5978 m 21158 5980 l 21157 5983 l 21156 5990 l 21154 6000 l 21151 6014 l + 21148 6031 l 21145 6052 l 21142 6075 l 21139 6100 l 21136 6128 l + 21134 6157 l 21133 6187 l 21133 6218 l 21135 6250 l 21138 6283 l + 21143 6318 l 21151 6355 l 21161 6393 l 21175 6433 l 21192 6475 l + 21212 6517 l 21235 6558 l 21261 6596 l 21287 6631 l 21314 6662 l + 21340 6691 l 21367 6716 l 21394 6740 l 21421 6761 l 21448 6781 l + 21474 6799 l 21501 6816 l 21526 6831 l 21550 6845 l 21572 6858 l + 21592 6868 l 21609 6877 l 21622 6884 l 21632 6889 l 21639 6892 l + 21642 6894 l + 21644 6895 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 22669 6409 m 22670 6410 l 22672 6411 l 22677 6414 l 22684 6419 l 22693 6425 l + 22705 6434 l 22719 6444 l 22736 6456 l 22755 6470 l 22776 6486 l + 22798 6502 l 22821 6520 l 22845 6540 l 22869 6560 l 22894 6582 l + 22919 6604 l 22944 6628 l 22970 6654 l 22996 6682 l 23022 6711 l + 23049 6743 l 23076 6778 l 23103 6815 l 23129 6854 l 23155 6895 l + 23181 6940 l 23204 6984 l 23224 7027 l 23241 7067 l 23255 7106 l + 23267 7142 l 23278 7177 l 23286 7210 l 23293 7242 l 23299 7272 l + 23303 7302 l 23307 7330 l 23310 7357 l 23312 7382 l 23314 7405 l + 23315 7425 l 23316 7443 l 23316 7458 l 23317 7470 l 23317 7478 l + 23317 7484 l 23317 7487 l + 23317 7488 l gs col0 s gr [] 0 sd +% Polyline +15.000 slw +n 22238 5870 m 22237 5871 l 22235 5872 l 22232 5874 l 22228 5877 l 22222 5882 l + 22214 5889 l 22205 5896 l 22196 5906 l 22186 5917 l 22176 5929 l + 22166 5943 l 22156 5959 l 22147 5977 l 22139 5998 l 22132 6021 l + 22127 6048 l 22123 6078 l 22121 6113 l 22121 6153 l 22124 6198 l + 22130 6248 l 22137 6289 l 22145 6330 l 22154 6370 l 22164 6407 l + 22174 6440 l 22185 6470 l 22196 6497 l 22207 6520 l 22217 6539 l + 22228 6556 l 22238 6571 l 22249 6584 l 22259 6596 l 22269 6608 l + 22279 6619 l 22289 6631 l 22299 6645 l 22310 6660 l 22320 6678 l + 22330 6699 l 22341 6724 l 22351 6752 l 22361 6785 l 22371 6822 l + 22380 6863 l 22387 6908 l 22394 6955 l 22399 7003 l 22402 7058 l + 22402 7111 l 22400 7160 l 22396 7205 l 22390 7246 l 22383 7284 l + 22374 7319 l 22365 7352 l 22354 7382 l 22343 7411 l 22331 7438 l + 22319 7463 l 22306 7486 l 22294 7508 l 22283 7528 l 22272 7545 l + 22263 7560 l 22255 7572 l 22248 7581 l 22244 7588 l 22240 7593 l + 22239 7595 l + 22238 7596 l gs col0 s gr +% Polyline +7.500 slw +n 17850 10500 m 17850 10499 l 17851 10495 l 17854 10486 l 17859 10470 l 17864 10449 l + 17870 10425 l 17876 10400 l 17881 10376 l 17885 10354 l 17888 10333 l + 17890 10314 l 17890 10297 l 17889 10280 l 17888 10263 l 17885 10247 l + 17882 10232 l 17878 10215 l 17873 10198 l 17868 10180 l 17862 10162 l + 17856 10143 l 17850 10123 l 17844 10104 l 17838 10084 l 17832 10065 l + 17827 10046 l 17822 10028 l 17818 10010 l 17815 9992 l 17813 9975 l + 17811 9958 l 17810 9940 l 17809 9922 l 17810 9904 l 17810 9885 l + 17812 9866 l 17814 9846 l 17816 9827 l 17819 9807 l 17821 9788 l + 17824 9770 l 17827 9752 l 17830 9735 l 17833 9718 l 17835 9703 l + 17838 9688 l 17840 9673 l 17841 9658 l 17843 9642 l 17844 9627 l + 17845 9611 l 17845 9594 l 17845 9578 l 17845 9561 l 17844 9544 l + 17843 9526 l 17841 9509 l 17838 9492 l 17836 9475 l 17833 9459 l + 17829 9442 l 17825 9425 l 17821 9409 l 17817 9393 l 17812 9377 l + 17807 9359 l 17801 9341 l 17796 9321 l 17790 9302 l 17784 9281 l + 17778 9261 l 17773 9240 l 17768 9219 l 17764 9199 l 17760 9179 l + 17756 9160 l 17754 9141 l 17752 9123 l 17750 9105 l 17750 9088 l + 17750 9070 l 17752 9053 l 17754 9036 l 17758 9018 l 17762 8999 l + 17768 8978 l 17775 8956 l 17784 8933 l 17793 8908 l 17803 8882 l + 17814 8857 l 17824 8833 l 17833 8813 l 17840 8796 l 17846 8785 l + 17849 8778 l + 17850 8775 l gs col0 s gr +% Polyline +n 18750 10500 m 18750 10499 l 18751 10496 l 18755 10488 l 18760 10474 l 18767 10453 l + 18777 10428 l 18787 10399 l 18798 10368 l 18809 10337 l 18819 10306 l + 18828 10278 l 18836 10252 l 18843 10227 l 18849 10205 l 18853 10184 l + 18857 10164 l 18860 10144 l 18863 10125 l 18864 10106 l 18865 10086 l + 18866 10067 l 18865 10046 l 18865 10025 l 18864 10003 l 18862 9981 l + 18860 9959 l 18857 9936 l 18854 9913 l 18851 9890 l 18848 9867 l + 18844 9844 l 18840 9822 l 18836 9801 l 18833 9779 l 18829 9758 l + 18825 9738 l 18822 9718 l 18818 9699 l 18815 9679 l 18811 9659 l + 18807 9638 l 18803 9617 l 18799 9595 l 18796 9573 l 18792 9551 l + 18787 9528 l 18783 9506 l 18779 9485 l 18776 9464 l 18772 9443 l + 18768 9424 l 18764 9405 l 18760 9387 l 18757 9370 l 18753 9353 l + 18750 9338 l 18746 9318 l 18741 9300 l 18737 9282 l 18733 9264 l + 18728 9245 l 18724 9228 l 18720 9210 l 18716 9193 l 18712 9176 l + 18709 9160 l 18706 9144 l 18704 9129 l 18702 9115 l 18701 9101 l + 18700 9088 l 18700 9075 l 18700 9060 l 18702 9045 l 18704 9029 l + 18707 9012 l 18711 8992 l 18716 8971 l 18722 8948 l 18728 8924 l + 18735 8901 l 18741 8880 l 18746 8864 l 18749 8855 l 18750 8851 l + + 18750 8850 l gs col0 s gr +% Polyline +n 17850 8475 m 17850 8474 l 17851 8470 l 17854 8461 l 17859 8445 l 17864 8424 l + 17870 8400 l 17876 8375 l 17881 8351 l 17885 8329 l 17888 8308 l + 17890 8289 l 17890 8272 l 17889 8255 l 17888 8238 l 17885 8222 l + 17882 8207 l 17878 8190 l 17873 8173 l 17868 8155 l 17862 8137 l + 17856 8118 l 17850 8098 l 17844 8079 l 17838 8059 l 17832 8040 l + 17827 8021 l 17822 8003 l 17818 7985 l 17815 7967 l 17813 7950 l + 17811 7933 l 17810 7915 l 17809 7897 l 17810 7879 l 17810 7860 l + 17812 7841 l 17814 7821 l 17816 7802 l 17819 7782 l 17821 7763 l + 17824 7745 l 17827 7727 l 17830 7710 l 17833 7693 l 17835 7678 l + 17838 7663 l 17840 7648 l 17841 7633 l 17843 7617 l 17844 7602 l + 17845 7586 l 17845 7569 l 17845 7553 l 17845 7536 l 17844 7519 l + 17843 7501 l 17841 7484 l 17838 7467 l 17836 7450 l 17833 7434 l + 17829 7417 l 17825 7400 l 17821 7384 l 17817 7368 l 17812 7352 l + 17807 7334 l 17801 7316 l 17796 7296 l 17790 7277 l 17784 7256 l + 17778 7236 l 17773 7215 l 17768 7194 l 17764 7174 l 17760 7154 l + 17756 7135 l 17754 7116 l 17752 7098 l 17750 7080 l 17750 7063 l + 17750 7045 l 17752 7028 l 17754 7011 l 17758 6993 l 17762 6974 l + 17768 6953 l 17775 6931 l 17784 6908 l 17793 6883 l 17803 6857 l + 17814 6832 l 17824 6808 l 17833 6788 l 17840 6771 l 17846 6760 l + 17849 6753 l + 17850 6750 l gs col0 s gr +% Polyline +n 18750 8475 m 18750 8474 l 18751 8471 l 18755 8463 l 18760 8449 l 18767 8428 l + 18777 8403 l 18787 8374 l 18798 8343 l 18809 8312 l 18819 8281 l + 18828 8253 l 18836 8227 l 18843 8202 l 18849 8180 l 18853 8159 l + 18857 8139 l 18860 8119 l 18863 8100 l 18864 8081 l 18865 8061 l + 18866 8042 l 18865 8021 l 18865 8000 l 18864 7978 l 18862 7956 l + 18860 7934 l 18857 7911 l 18854 7888 l 18851 7865 l 18848 7842 l + 18844 7819 l 18840 7797 l 18836 7776 l 18833 7754 l 18829 7733 l + 18825 7713 l 18822 7693 l 18818 7674 l 18815 7654 l 18811 7634 l + 18807 7613 l 18803 7592 l 18799 7570 l 18796 7548 l 18792 7526 l + 18787 7503 l 18783 7481 l 18779 7460 l 18776 7439 l 18772 7418 l + 18768 7399 l 18764 7380 l 18760 7362 l 18757 7345 l 18753 7328 l + 18750 7313 l 18746 7293 l 18741 7275 l 18737 7257 l 18733 7239 l + 18728 7220 l 18724 7203 l 18720 7185 l 18716 7168 l 18712 7151 l + 18709 7135 l 18706 7119 l 18704 7104 l 18702 7090 l 18701 7076 l + 18700 7063 l 18700 7050 l 18700 7035 l 18702 7020 l 18704 7004 l + 18707 6987 l 18711 6967 l 18716 6946 l 18722 6923 l 18728 6899 l + 18735 6876 l 18741 6855 l 18746 6839 l 18749 6830 l 18750 6826 l + + 18750 6825 l gs col0 s gr +% Polyline +n 17850 4425 m 17850 4424 l 17851 4420 l 17854 4411 l 17859 4395 l 17864 4374 l + 17870 4350 l 17876 4325 l 17881 4301 l 17885 4279 l 17888 4258 l + 17890 4239 l 17890 4222 l 17889 4205 l 17888 4188 l 17885 4172 l + 17882 4157 l 17878 4140 l 17873 4123 l 17868 4105 l 17862 4087 l + 17856 4068 l 17850 4048 l 17844 4029 l 17838 4009 l 17832 3990 l + 17827 3971 l 17822 3953 l 17818 3935 l 17815 3917 l 17813 3900 l + 17811 3883 l 17810 3865 l 17809 3847 l 17810 3829 l 17810 3810 l + 17812 3791 l 17814 3771 l 17816 3752 l 17819 3732 l 17821 3713 l + 17824 3695 l 17827 3677 l 17830 3660 l 17833 3643 l 17835 3628 l + 17838 3613 l 17840 3598 l 17841 3583 l 17843 3567 l 17844 3552 l + 17845 3536 l 17845 3519 l 17845 3503 l 17845 3486 l 17844 3469 l + 17843 3451 l 17841 3434 l 17838 3417 l 17836 3400 l 17833 3384 l + 17829 3367 l 17825 3350 l 17821 3334 l 17817 3318 l 17812 3302 l + 17807 3284 l 17801 3266 l 17796 3246 l 17790 3227 l 17784 3206 l + 17778 3186 l 17773 3165 l 17768 3144 l 17764 3124 l 17760 3104 l + 17756 3085 l 17754 3066 l 17752 3048 l 17750 3030 l 17750 3013 l + 17750 2995 l 17752 2978 l 17754 2961 l 17758 2943 l 17762 2924 l + 17768 2903 l 17775 2881 l 17784 2858 l 17793 2833 l 17803 2807 l + 17814 2782 l 17824 2758 l 17833 2738 l 17840 2721 l 17846 2710 l + 17849 2703 l + 17850 2700 l gs col0 s gr +% Polyline +n 18750 4425 m 18750 4424 l 18751 4421 l 18755 4413 l 18760 4399 l 18767 4378 l + 18777 4353 l 18787 4324 l 18798 4293 l 18809 4262 l 18819 4231 l + 18828 4203 l 18836 4177 l 18843 4152 l 18849 4130 l 18853 4109 l + 18857 4089 l 18860 4069 l 18863 4050 l 18864 4031 l 18865 4011 l + 18866 3992 l 18865 3971 l 18865 3950 l 18864 3928 l 18862 3906 l + 18860 3884 l 18857 3861 l 18854 3838 l 18851 3815 l 18848 3792 l + 18844 3769 l 18840 3747 l 18836 3726 l 18833 3704 l 18829 3683 l + 18825 3663 l 18822 3643 l 18818 3624 l 18815 3604 l 18811 3584 l + 18807 3563 l 18803 3542 l 18799 3520 l 18796 3498 l 18792 3476 l + 18787 3453 l 18783 3431 l 18779 3410 l 18776 3389 l 18772 3368 l + 18768 3349 l 18764 3330 l 18760 3312 l 18757 3295 l 18753 3278 l + 18750 3263 l 18746 3243 l 18741 3225 l 18737 3207 l 18733 3189 l + 18728 3170 l 18724 3153 l 18720 3135 l 18716 3118 l 18712 3101 l + 18709 3085 l 18706 3069 l 18704 3054 l 18702 3040 l 18701 3026 l + 18700 3013 l 18700 3000 l 18700 2985 l 18702 2970 l 18704 2954 l + 18707 2937 l 18711 2917 l 18716 2896 l 18722 2873 l 18728 2849 l + 18735 2826 l 18741 2805 l 18746 2789 l 18749 2780 l 18750 2776 l + + 18750 2775 l gs col0 s gr +% here ends figure; +% +% here starts figure with depth 10 +% Polyline +0 slj +0 slc +7.500 slw +n 10575 6525 m + 10875 6825 l gs col0 s gr +% Polyline +n 10875 6525 m + 10575 6825 l gs col0 s gr +% Polyline +n 12900 6450 m + 13200 6750 l gs col0 s gr +% Polyline +n 13200 6450 m + 12900 6750 l gs col0 s gr +/Times-Roman ff 600.00 scf sf +10425 6300 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 360.00 scf sf +10725 6375 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 600.00 scf sf +12750 6300 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 360.00 scf sf +13050 6375 m +gs 1 -1 sc (3) col0 sh gr +% Polyline +0.000 slw +n 20133 5924 m 20025 5924 l 20025 5816 l 20133 5816 l + cp gs col7 1.00 shd ef gr +% Polyline +n 24450 7650 m 24342 7650 l 24342 7542 l 24450 7542 l + cp gs col7 1.00 shd ef gr +% Polyline +30.000 slw +gs clippath +9595 6660 m 9915 6660 l 9915 6540 l 9595 6540 l 9595 6540 l 9835 6600 l 9595 6660 l cp +eoclip +n 9150 6600 m + 9900 6600 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 9595 6660 m 9835 6600 l 9595 6540 l 9595 6660 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +14547 4095 m 14755 3852 l 14664 3774 l 14456 4017 l 14456 4017 l 14658 3874 l 14547 4095 l cp +eoclip +n 13350 5400 m + 14700 3825 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 14547 4095 m 14658 3874 l 14456 4017 l 14547 4095 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +14460 5747 m 14741 5595 l 14684 5490 l 14403 5641 l 14403 5641 l 14643 5581 l 14460 5747 l cp +eoclip +n 13725 6075 m + 14700 5550 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 14460 5747 m 14643 5581 l 14403 5641 l 14460 5747 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +14403 7558 m 14684 7709 l 14741 7604 l 14460 7452 l 14460 7452 l 14643 7619 l 14403 7558 l cp +eoclip +n 13725 7125 m + 14700 7650 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 14403 7558 m 14643 7619 l 14460 7452 l 14403 7558 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +14456 9182 m 14664 9425 l 14755 9347 l 14547 9104 l 14547 9104 l 14658 9326 l 14456 9182 l cp +eoclip +n 13350 7800 m + 14700 9375 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 14456 9182 m 14658 9326 l 14547 9104 l 14456 9182 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +17095 3660 m 17415 3660 l 17415 3540 l 17095 3540 l 17095 3540 l 17335 3600 l 17095 3660 l cp +eoclip +n 16650 3600 m + 17400 3600 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 17095 3660 m 17335 3600 l 17095 3540 l 17095 3660 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +17095 5610 m 17415 5610 l 17415 5490 l 17095 5490 l 17095 5490 l 17335 5550 l 17095 5610 l cp +eoclip +n 16650 5550 m + 17400 5550 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 17095 5610 m 17335 5550 l 17095 5490 l 17095 5610 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +17095 7710 m 17415 7710 l 17415 7590 l 17095 7590 l 17095 7590 l 17335 7650 l 17095 7710 l cp +eoclip +n 16650 7650 m + 17400 7650 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 17095 7710 m 17335 7650 l 17095 7590 l 17095 7710 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +17095 9660 m 17415 9660 l 17415 9540 l 17095 9540 l 17095 9540 l 17335 9600 l 17095 9660 l cp +eoclip +n 16650 9600 m + 17400 9600 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 17095 9660 m 17335 9600 l 17095 9540 l 17095 9660 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +20135 5454 m 20278 5740 l 20385 5686 l 20242 5400 l 20242 5400 l 20296 5642 l 20135 5454 l cp +eoclip +n 19275 3600 m + 20325 5700 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 20135 5454 m 20296 5642 l 20242 5400 l 20135 5454 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +19749 6006 m 19999 6206 l 20074 6112 l 19824 5913 l 19824 5913 l 19974 6110 l 19749 6006 l cp +eoclip +n 19275 5550 m + 20025 6150 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 19749 6006 m 19974 6110 l 19824 5913 l 19749 6006 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +19794 7407 m 20068 7243 l 20006 7140 l 19732 7305 l 19732 7305 l 19969 7233 l 19794 7407 l cp +eoclip +n 19275 7650 m + 20025 7200 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 19794 7407 m 19969 7233 l 19732 7305 l 19794 7407 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +20222 8093 m 20384 7817 l 20280 7756 l 20119 8033 l 20119 8033 l 20292 7856 l 20222 8093 l cp +eoclip +n 19275 9600 m + 20325 7800 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 20222 8093 m 20292 7856 l 20119 8033 l 20222 8093 l cp gs 0.00 setgray ef gr col0 s +% here ends figure; +$F2psEnd +rs +showpage +%%Trailer +%EOF diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/p_f_nedi.eps scotch-6.0.6/doc/src/ptscotch/p_f_nedi.eps --- scotch-6.0.4.dfsg1/doc/src/ptscotch/p_f_nedi.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/p_f_nedi.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,651 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: stdin +%%Creator: fig2dev Version 3.2 Patchlevel 5-alpha5 +%%CreationDate: Thu Aug 17 01:43:45 2006 +%%For: pelegrin@brol (Francois PELLEGRINI) +%%BoundingBox: 0 0 1024 226 +%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 226 moveto 0 0 lineto 1024 0 lineto 1024 226 lineto closepath clip newpath +-13.4 274.6 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +% +% Fig objects follow +% +% +% here starts figure with depth 70 +% Ellipse +7.500 slw +n 14197 1500 1588 635 0 360 DrawEllipse gs col0 s gr + +% here ends figure; +% +% here starts figure with depth 60 +% Polyline +0 slj +0 slc +0.000 slw +n 12570 1262 m 14197 1262 l 14197 825 l 12570 825 l + cp gs col7 1.00 shd ef gr +% Polyline +n 12570 2175 m 14197 2175 l 14197 1738 l 12570 1738 l + cp gs col7 1.00 shd ef gr +% Polyline +n 12848 1818 m 12570 1818 l 12570 1182 l 12848 1182 l + cp gs col7 1.00 shd ef gr +% here ends figure; +% +% here starts figure with depth 50 +/Times-Roman ff 315.00 scf sf +1535 2462 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 195.00 scf sf +1694 2501 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 315.00 scf sf +1852 3097 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 195.00 scf sf +2011 3137 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 315.00 scf sf +582 2819 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 195.00 scf sf +741 2859 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 315.00 scf sf +2845 2819 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 195.00 scf sf +3004 2859 m +gs 1 -1 sc (3) col0 sh gr +% Ellipse +7.500 slw +n 1852 2700 1588 635 0 360 DrawEllipse gs col0 s gr + +% Polyline +2 slj +0 slc + [15 45] 45 sd +n 2408 2104 m 2408 2105 l 2407 2108 l 2405 2114 l 2403 2122 l 2399 2134 l + 2394 2148 l 2388 2165 l 2381 2184 l 2372 2206 l 2362 2228 l + 2351 2252 l 2338 2276 l 2323 2302 l 2306 2328 l 2287 2355 l + 2264 2383 l 2238 2413 l 2208 2443 l 2174 2475 l 2134 2508 l + 2091 2541 l 2052 2568 l 2013 2593 l 1976 2615 l 1941 2633 l + 1910 2649 l 1883 2661 l 1859 2670 l 1838 2677 l 1820 2681 l + 1805 2683 l 1791 2684 l 1779 2684 l 1767 2683 l 1755 2683 l + 1742 2683 l 1728 2684 l 1712 2686 l 1694 2690 l 1672 2696 l + 1646 2705 l 1617 2716 l 1583 2731 l 1545 2749 l 1504 2770 l + 1460 2794 l 1416 2819 l 1369 2847 l 1325 2876 l 1284 2903 l + 1246 2929 l 1212 2954 l 1181 2978 l 1153 3001 l 1127 3024 l + 1103 3045 l 1081 3066 l 1060 3086 l 1040 3106 l 1022 3124 l + 1006 3142 l 991 3158 l 978 3172 l 967 3185 l 958 3195 l + 951 3203 l 946 3209 l 943 3213 l 941 3215 l + 940 3216 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1059 2144 m 1059 2146 l 1058 2151 l 1056 2159 l 1054 2172 l 1051 2188 l + 1048 2208 l 1045 2230 l 1043 2254 l 1041 2280 l 1040 2308 l + 1041 2336 l 1043 2366 l 1048 2398 l 1055 2431 l 1066 2466 l + 1080 2503 l 1098 2541 l 1117 2574 l 1138 2604 l 1159 2632 l + 1181 2656 l 1202 2678 l 1224 2698 l 1246 2716 l 1268 2732 l + 1289 2747 l 1310 2761 l 1331 2773 l 1350 2784 l 1368 2794 l + 1383 2802 l 1395 2809 l 1405 2813 l 1411 2816 l 1414 2818 l + + 1416 2819 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2170 2462 m 2171 2463 l 2174 2465 l 2179 2468 l 2187 2474 l 2197 2481 l + 2210 2490 l 2226 2501 l 2243 2514 l 2262 2528 l 2282 2544 l + 2302 2561 l 2323 2578 l 2345 2598 l 2367 2618 l 2389 2640 l + 2412 2664 l 2435 2690 l 2458 2719 l 2481 2750 l 2505 2783 l + 2527 2819 l 2549 2859 l 2569 2897 l 2585 2934 l 2599 2969 l + 2610 3001 l 2618 3031 l 2625 3060 l 2631 3088 l 2635 3114 l + 2639 3139 l 2641 3163 l 2643 3185 l 2644 3204 l 2645 3221 l + 2646 3234 l 2646 3244 l 2646 3251 l 2646 3254 l + 2646 3256 l gs col0 s gr [] 0 sd +% Ellipse +n 6652 2700 1588 635 0 360 DrawEllipse gs col0 s gr + +% Polyline + [15 45] 45 sd +n 7208 2104 m 7208 2105 l 7207 2108 l 7205 2114 l 7203 2122 l 7199 2134 l + 7194 2148 l 7188 2165 l 7181 2184 l 7172 2206 l 7162 2228 l + 7151 2252 l 7138 2276 l 7123 2302 l 7106 2328 l 7087 2355 l + 7064 2383 l 7038 2413 l 7008 2443 l 6974 2475 l 6934 2508 l + 6891 2541 l 6852 2568 l 6813 2593 l 6776 2615 l 6741 2633 l + 6710 2649 l 6683 2661 l 6659 2670 l 6638 2677 l 6620 2681 l + 6605 2683 l 6591 2684 l 6579 2684 l 6567 2683 l 6555 2683 l + 6542 2683 l 6528 2684 l 6512 2686 l 6494 2690 l 6472 2696 l + 6446 2705 l 6417 2716 l 6383 2731 l 6345 2749 l 6304 2770 l + 6260 2794 l 6216 2819 l 6169 2847 l 6125 2876 l 6084 2903 l + 6046 2929 l 6012 2954 l 5981 2978 l 5953 3001 l 5927 3024 l + 5903 3045 l 5881 3066 l 5860 3086 l 5840 3106 l 5822 3124 l + 5806 3142 l 5791 3158 l 5778 3172 l 5767 3185 l 5758 3195 l + 5751 3203 l 5746 3209 l 5743 3213 l 5741 3215 l + 5740 3216 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5859 2144 m 5859 2146 l 5858 2151 l 5856 2159 l 5854 2172 l 5851 2188 l + 5848 2208 l 5845 2230 l 5843 2254 l 5841 2280 l 5840 2308 l + 5841 2336 l 5843 2366 l 5848 2398 l 5855 2431 l 5866 2466 l + 5880 2503 l 5898 2541 l 5917 2574 l 5938 2604 l 5959 2632 l + 5981 2656 l 6002 2678 l 6024 2698 l 6046 2716 l 6068 2732 l + 6089 2747 l 6110 2761 l 6131 2773 l 6150 2784 l 6168 2794 l + 6183 2802 l 6195 2809 l 6205 2813 l 6211 2816 l 6214 2818 l + + 6216 2819 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 6970 2462 m 6971 2463 l 6974 2465 l 6979 2468 l 6987 2474 l 6997 2481 l + 7010 2490 l 7026 2501 l 7043 2514 l 7062 2528 l 7082 2544 l + 7102 2561 l 7123 2578 l 7145 2598 l 7167 2618 l 7189 2640 l + 7212 2664 l 7235 2690 l 7258 2719 l 7281 2750 l 7305 2783 l + 7327 2819 l 7349 2859 l 7369 2897 l 7385 2934 l 7399 2969 l + 7410 3001 l 7418 3031 l 7425 3060 l 7431 3088 l 7435 3114 l + 7439 3139 l 7441 3163 l 7443 3185 l 7444 3204 l 7445 3221 l + 7446 3234 l 7446 3244 l 7446 3251 l 7446 3254 l + 7446 3256 l gs col0 s gr [] 0 sd +% Polyline +15.000 slw +n 6652 2065 m 6651 2066 l 6650 2067 l 6647 2069 l 6642 2072 l 6637 2077 l + 6630 2082 l 6623 2090 l 6614 2098 l 6606 2108 l 6598 2120 l + 6590 2133 l 6583 2148 l 6577 2165 l 6572 2185 l 6569 2209 l + 6567 2236 l 6566 2267 l 6568 2303 l 6573 2343 l 6579 2378 l + 6586 2413 l 6594 2446 l 6603 2477 l 6613 2503 l 6622 2526 l + 6631 2546 l 6640 2562 l 6649 2576 l 6658 2588 l 6667 2598 l + 6676 2608 l 6685 2618 l 6693 2628 l 6702 2641 l 6711 2655 l + 6720 2673 l 6729 2693 l 6738 2718 l 6746 2747 l 6754 2781 l + 6762 2818 l 6768 2858 l 6772 2899 l 6774 2948 l 6774 2993 l + 6771 3035 l 6766 3072 l 6760 3106 l 6752 3137 l 6743 3165 l + 6733 3191 l 6723 3215 l 6712 3237 l 6701 3258 l 6690 3276 l + 6680 3293 l 6672 3306 l 6664 3317 l 6659 3325 l 6655 3331 l + 6653 3334 l + 6652 3335 l gs col0 s gr +/Times-Roman ff 315.00 scf sf +9579 4019 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 195.00 scf sf +9736 4059 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 315.00 scf sf +11821 4019 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 195.00 scf sf +11978 4059 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 315.00 scf sf +10287 3701 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 195.00 scf sf +10445 3741 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 315.00 scf sf +10445 4337 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 195.00 scf sf +10601 4376 m +gs 1 -1 sc (2) col0 sh gr +% Ellipse +7.500 slw +n 10837 3900 1573 635 0 360 DrawEllipse gs col0 s gr + +% Polyline +0 slj +n 11781 3900 m + 11624 4059 l gs col0 s gr +% Polyline +n 11624 3900 m + 11781 4059 l gs col0 s gr +% Polyline +2 slj + [15 45] 45 sd +n 10051 3344 m 10051 3346 l 10050 3351 l 10048 3359 l 10046 3372 l 10043 3388 l + 10040 3408 l 10037 3430 l 10035 3454 l 10033 3480 l 10032 3508 l + 10033 3536 l 10036 3566 l 10040 3598 l 10048 3631 l 10058 3666 l + 10072 3703 l 10090 3741 l 10109 3774 l 10129 3804 l 10150 3832 l + 10172 3856 l 10193 3878 l 10215 3898 l 10236 3916 l 10258 3932 l + 10279 3947 l 10300 3961 l 10321 3973 l 10340 3984 l 10357 3994 l + 10372 4002 l 10384 4009 l 10394 4013 l 10400 4016 l 10403 4018 l + + 10405 4019 l gs col0 s gr [] 0 sd +% Polyline +0 slj +n 10051 1494 m + 9894 1651 l gs col0 s gr +% Polyline +n 9894 1494 m + 10051 1651 l gs col0 s gr +/Times-Roman ff 315.00 scf sf +9579 1611 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 195.00 scf sf +9736 1651 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 315.00 scf sf +11821 1611 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 195.00 scf sf +11978 1651 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 315.00 scf sf +10877 1179 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 195.00 scf sf +11034 1218 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 315.00 scf sf +11113 1887 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 195.00 scf sf +11270 1926 m +gs 1 -1 sc (2) col0 sh gr +% Ellipse +n 10837 1494 1573 629 0 360 DrawEllipse gs col0 s gr + +% Polyline +2 slj + [15 45] 45 sd +n 11152 1258 m 11153 1259 l 11156 1261 l 11161 1264 l 11169 1269 l 11179 1277 l + 11192 1286 l 11207 1297 l 11224 1309 l 11243 1323 l 11263 1339 l + 11283 1355 l 11304 1373 l 11326 1392 l 11347 1412 l 11369 1434 l + 11392 1458 l 11414 1484 l 11437 1512 l 11461 1543 l 11484 1576 l + 11506 1611 l 11528 1650 l 11548 1689 l 11564 1725 l 11577 1759 l + 11588 1791 l 11597 1821 l 11604 1850 l 11609 1877 l 11613 1903 l + 11617 1928 l 11619 1952 l 11621 1973 l 11622 1992 l 11623 2009 l + 11624 2022 l 11624 2032 l 11624 2039 l 11624 2042 l + 11624 2044 l gs col0 s gr [] 0 sd +/Times-Roman ff 315.00 scf sf +14475 1897 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 195.00 scf sf +14634 1937 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 315.00 scf sf +15097 3701 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 195.00 scf sf +15256 3741 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 315.00 scf sf +14400 4010 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 195.00 scf sf +14558 4050 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 315.00 scf sf +15300 1610 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 195.00 scf sf +15458 1650 m +gs 1 -1 sc (3) col0 sh gr +% Ellipse +n 15652 3900 1588 635 0 360 DrawEllipse gs col0 s gr + +% Polyline +0 slj +30.000 slw +gs clippath +4420 2760 m 4740 2760 l 4740 2640 l 4420 2640 l 4420 2640 l 4660 2700 l 4420 2760 l cp +eoclip +n 3825 2700 m + 4725 2700 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 4420 2760 m 4660 2700 l 4420 2640 l 4420 2760 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +13420 1560 m 13740 1560 l 13740 1440 l 13420 1440 l 13420 1440 l 13660 1500 l 13420 1560 l cp +eoclip +n 12825 1500 m + 13725 1500 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 13420 1560 m 13660 1500 l 13420 1440 l 13420 1560 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +13420 3960 m 13740 3960 l 13740 3840 l 13420 3840 l 13420 3840 l 13660 3900 l 13420 3960 l cp +eoclip +n 12825 3900 m + 13725 3900 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 13420 3960 m 13660 3900 l 13420 3840 l 13420 3960 l cp gs 0.00 setgray ef gr col0 s +% Polyline +2 slj +7.500 slw + [15 45] 45 sd +n 14859 3344 m 14859 3346 l 14858 3351 l 14856 3359 l 14854 3372 l 14851 3388 l + 14848 3408 l 14845 3430 l 14843 3454 l 14841 3480 l 14840 3508 l + 14841 3536 l 14843 3566 l 14848 3598 l 14855 3631 l 14866 3666 l + 14880 3703 l 14898 3741 l 14917 3774 l 14938 3804 l 14959 3832 l + 14981 3856 l 15002 3878 l 15024 3898 l 15046 3916 l 15068 3932 l + 15089 3947 l 15110 3961 l 15131 3973 l 15150 3984 l 15168 3994 l + 15183 4002 l 15195 4009 l 15205 4013 l 15211 4016 l 15214 4018 l + + 15216 4019 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 15300 1050 m 15298 1050 l 15294 1050 l 15288 1051 l 15277 1051 l 15262 1052 l + 15244 1053 l 15222 1054 l 15197 1056 l 15169 1057 l 15139 1059 l + 15108 1062 l 15075 1064 l 15042 1067 l 15009 1070 l 14975 1074 l + 14941 1078 l 14906 1082 l 14872 1088 l 14837 1093 l 14802 1100 l + 14767 1108 l 14733 1116 l 14700 1125 l 14670 1135 l 14645 1144 l + 14622 1154 l 14604 1163 l 14589 1172 l 14577 1181 l 14567 1190 l + 14560 1199 l 14554 1207 l 14550 1215 l 14547 1223 l 14545 1230 l + 14545 1238 l 14544 1245 l 14545 1251 l 14546 1257 l 14546 1262 l + 14547 1266 l 14548 1270 l 14549 1272 l 14550 1274 l + 14550 1275 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 14550 1275 m 14552 1276 l 14556 1278 l 14563 1281 l 14573 1287 l 14586 1294 l + 14602 1303 l 14620 1313 l 14639 1324 l 14660 1337 l 14681 1351 l + 14703 1366 l 14726 1383 l 14749 1401 l 14773 1422 l 14799 1445 l + 14824 1472 l 14850 1500 l 14874 1529 l 14894 1556 l 14911 1580 l + 14924 1600 l 14934 1616 l 14940 1628 l 14945 1637 l 14948 1644 l + 14950 1650 l 14952 1656 l 14954 1663 l 14957 1672 l 14961 1684 l + 14966 1700 l 14973 1720 l 14982 1744 l 14991 1771 l 15000 1800 l + 15009 1836 l 15015 1868 l 15018 1896 l 15019 1920 l 15019 1941 l + 15017 1959 l 15014 1976 l 15011 1990 l 15007 2003 l 15004 2012 l + 15002 2019 l 15001 2023 l + 15000 2025 l gs col0 s gr [] 0 sd +% here ends figure; +% +% here starts figure with depth 47 +% Polyline +2 slj +0 slc +7.500 slw + [15 90] 90 sd +n 11365 923 m 11365 925 l 11364 928 l 11363 935 l 11362 944 l 11360 955 l + 11356 969 l 11352 985 l 11346 1003 l 11339 1021 l 11330 1042 l + 11318 1064 l 11303 1089 l 11283 1116 l 11259 1146 l 11231 1179 l + 11206 1205 l 11180 1231 l 11154 1255 l 11128 1277 l 11103 1297 l + 11079 1317 l 11055 1335 l 11032 1352 l 11009 1368 l 10986 1383 l + 10965 1398 l 10945 1411 l 10927 1423 l 10911 1433 l 10898 1441 l + 10889 1447 l 10882 1451 l 10879 1453 l + 10877 1454 l gs col0 s gr [] 0 sd +% here ends figure; +% +% here starts figure with depth 40 +% Polyline +0 slj +0 slc +0.000 slw +n 304 2104 m 225 2104 l 225 2025 l 304 2025 l + cp gs col7 1.00 shd ef gr +% Polyline +n 3480 3375 m 3401 3375 l 3401 3296 l 3480 3296 l + cp gs col7 1.00 shd ef gr +% Polyline +n 5104 2104 m 5025 2104 l 5025 2025 l 5104 2025 l + cp gs col7 1.00 shd ef gr +% Polyline +n 8280 3375 m 8201 3375 l 8201 3296 l 8280 3296 l + cp gs col7 1.00 shd ef gr +% Polyline +n 10837 4575 m 12450 4575 l 12450 4138 l 10837 4138 l + cp gs col7 1.00 shd ef gr +% Polyline +n 10837 3662 m 12450 3662 l 12450 3225 l 10837 3225 l + cp gs col7 1.00 shd ef gr +% Polyline +n 12450 4218 m 12175 4218 l 12175 3582 l 12450 3582 l + cp gs col7 1.00 shd ef gr +% Polyline +n 9303 3304 m 9225 3304 l 9225 3225 l 9303 3225 l + cp gs col7 1.00 shd ef gr +% Polyline +2 slj +7.500 slw + [15 90] 90 sd +n 10877 3860 m 10875 3860 l 10870 3860 l 10861 3860 l 10850 3861 l 10835 3861 l + 10818 3863 l 10799 3864 l 10779 3867 l 10757 3870 l 10732 3875 l + 10705 3881 l 10674 3890 l 10641 3900 l 10612 3910 l 10587 3919 l + 10568 3926 l 10554 3931 l 10546 3933 l 10543 3933 l 10542 3932 l + 10543 3930 l 10543 3928 l 10541 3928 l 10536 3931 l 10525 3937 l + 10507 3948 l 10481 3966 l 10447 3989 l 10405 4019 l 10375 4041 l + 10344 4065 l 10314 4088 l 10284 4112 l 10256 4135 l 10228 4158 l + 10200 4181 l 10174 4203 l 10148 4226 l 10122 4248 l 10097 4269 l + 10073 4291 l 10050 4311 l 10028 4331 l 10008 4349 l 9989 4365 l + 9973 4380 l 9960 4392 l 9950 4401 l 9942 4408 l 9937 4412 l + 9934 4415 l + 9933 4416 l gs col0 s gr [] 0 sd +% Polyline +0 slj +0.000 slw +n 12450 2162 m 12371 2162 l 12371 2083 l 12450 2083 l + cp gs col7 1.00 shd ef gr +% Polyline +n 9225 1258 m 10837 1258 l 10837 825 l 9225 825 l + cp gs col7 1.00 shd ef gr +% Polyline +n 9225 2162 m 10837 2162 l 10837 1729 l 9225 1729 l + cp gs col7 1.00 shd ef gr +% Polyline +n 9500 1808 m 9225 1808 l 9225 1179 l 9500 1179 l + cp gs col7 1.00 shd ef gr +% Polyline +n 15825 2175 m 15746 2175 l 15746 2096 l 15825 2096 l + cp gs col7 1.00 shd ef gr +% Polyline +n 15652 4575 m 17280 4575 l 17280 4138 l 15652 4138 l + cp gs col7 1.00 shd ef gr +% Polyline +n 15652 3662 m 17280 3662 l 17280 3225 l 15652 3225 l + cp gs col7 1.00 shd ef gr +% Polyline +n 17280 4218 m 17002 4218 l 17002 3582 l 17280 3582 l + cp gs col7 1.00 shd ef gr +% Polyline +n 14104 3304 m 14025 3304 l 14025 3225 l 14104 3225 l + cp gs col7 1.00 shd ef gr +% here ends figure; +% +% here starts figure with depth 37 +% Polyline +2 slj +0 slc +7.500 slw + [15 90] 90 sd +n 14850 4425 m 14852 4425 l 14856 4423 l 14864 4422 l 14875 4419 l 14889 4415 l + 14907 4410 l 14926 4404 l 14947 4397 l 14969 4390 l 14991 4381 l + 15014 4372 l 15036 4361 l 15059 4348 l 15083 4333 l 15106 4316 l + 15129 4297 l 15150 4275 l 15171 4249 l 15187 4224 l 15200 4199 l + 15209 4176 l 15215 4154 l 15219 4133 l 15221 4112 l 15221 4093 l + 15221 4075 l 15220 4058 l 15219 4044 l 15218 4033 l 15217 4026 l + 15216 4021 l + 15216 4019 l gs col0 s gr [] 0 sd +% here ends figure; +% +% here starts figure with depth 30 +% Polyline +2 slj +0 slc +15.000 slw +n 10837 3265 m 10836 3266 l 10835 3267 l 10832 3269 l 10828 3272 l 10822 3277 l + 10815 3282 l 10808 3290 l 10800 3298 l 10792 3308 l 10784 3320 l + 10776 3333 l 10769 3348 l 10763 3365 l 10758 3385 l 10755 3409 l + 10753 3436 l 10752 3467 l 10754 3503 l 10759 3543 l 10765 3578 l + 10772 3613 l 10780 3646 l 10789 3677 l 10798 3703 l 10807 3726 l + 10817 3746 l 10826 3762 l 10835 3776 l 10843 3788 l 10852 3798 l + 10861 3808 l 10870 3818 l 10878 3828 l 10887 3841 l 10896 3855 l + 10905 3873 l 10913 3893 l 10922 3918 l 10931 3947 l 10939 3981 l + 10946 4018 l 10952 4058 l 10956 4099 l 10958 4148 l 10958 4193 l + 10955 4235 l 10950 4272 l 10944 4306 l 10936 4337 l 10927 4365 l + 10918 4391 l 10907 4415 l 10896 4437 l 10886 4458 l 10875 4476 l + 10865 4493 l 10856 4506 l 10849 4517 l 10844 4525 l 10840 4531 l + 10838 4534 l + 10837 4535 l gs col0 s gr +% Polyline +n 10837 864 m 10836 865 l 10835 866 l 10832 868 l 10828 871 l 10822 876 l + 10815 881 l 10808 889 l 10800 897 l 10792 907 l 10784 919 l + 10776 932 l 10769 947 l 10763 964 l 10758 984 l 10755 1007 l + 10753 1034 l 10752 1065 l 10754 1100 l 10759 1140 l 10765 1175 l + 10772 1210 l 10780 1242 l 10789 1272 l 10798 1299 l 10807 1321 l + 10816 1341 l 10825 1357 l 10834 1370 l 10843 1382 l 10852 1392 l + 10860 1402 l 10869 1412 l 10878 1422 l 10886 1434 l 10895 1449 l + 10904 1466 l 10913 1486 l 10921 1511 l 10930 1540 l 10938 1573 l + 10945 1609 l 10951 1649 l 10955 1690 l 10957 1738 l 10957 1783 l + 10954 1824 l 10949 1862 l 10943 1895 l 10935 1926 l 10927 1954 l + 10917 1980 l 10907 2004 l 10896 2026 l 10885 2046 l 10875 2065 l + 10865 2081 l 10856 2094 l 10849 2105 l 10844 2113 l 10840 2119 l + 10838 2122 l + 10837 2123 l gs col0 s gr +% Polyline +0 slj +30.000 slw +gs clippath +8559 3564 m 8830 3733 l 8894 3632 l 8623 3462 l 8623 3462 l 8795 3641 l 8559 3564 l cp +eoclip +n 8250 3300 m + 8850 3675 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 8559 3564 m 8795 3641 l 8623 3462 l 8559 3564 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +8623 1937 m 8894 1767 l 8830 1666 l 8559 1835 l 8559 1835 l 8795 1759 l 8623 1937 l cp +eoclip +n 8250 2100 m + 8850 1725 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 8623 1937 m 8795 1759 l 8559 1835 l 8623 1937 l cp gs 0.00 setgray ef gr col0 s +% Polyline +2 slj +n 14197 865 m 14196 866 l 14195 867 l 14192 869 l 14187 872 l 14182 877 l + 14175 882 l 14168 890 l 14159 898 l 14151 908 l 14143 920 l + 14135 933 l 14128 948 l 14122 965 l 14117 985 l 14114 1009 l + 14112 1036 l 14111 1067 l 14113 1103 l 14118 1143 l 14124 1178 l + 14131 1213 l 14139 1246 l 14148 1277 l 14158 1303 l 14167 1326 l + 14176 1346 l 14185 1362 l 14194 1376 l 14203 1388 l 14212 1398 l + 14221 1408 l 14230 1418 l 14238 1428 l 14247 1441 l 14256 1455 l + 14265 1473 l 14274 1493 l 14283 1518 l 14291 1547 l 14299 1581 l + 14307 1618 l 14313 1658 l 14317 1699 l 14319 1748 l 14319 1793 l + 14316 1835 l 14311 1872 l 14305 1906 l 14297 1937 l 14288 1965 l + 14278 1991 l 14268 2015 l 14257 2037 l 14246 2058 l 14235 2076 l + 14225 2093 l 14217 2106 l 14209 2117 l 14204 2125 l 14200 2131 l + 14198 2134 l + 14197 2135 l gs col0 s gr +% Polyline +n 15652 3265 m 15651 3266 l 15650 3267 l 15647 3269 l 15642 3272 l 15637 3277 l + 15630 3282 l 15623 3290 l 15614 3298 l 15606 3308 l 15598 3320 l + 15590 3333 l 15583 3348 l 15577 3365 l 15572 3385 l 15569 3409 l + 15567 3436 l 15566 3467 l 15568 3503 l 15573 3543 l 15579 3578 l + 15586 3613 l 15594 3646 l 15603 3677 l 15613 3703 l 15622 3726 l + 15631 3746 l 15640 3762 l 15649 3776 l 15658 3788 l 15667 3798 l + 15676 3808 l 15685 3818 l 15693 3828 l 15702 3841 l 15711 3855 l + 15720 3873 l 15729 3893 l 15738 3918 l 15746 3947 l 15754 3981 l + 15762 4018 l 15768 4058 l 15772 4099 l 15774 4148 l 15774 4193 l + 15771 4235 l 15766 4272 l 15760 4306 l 15752 4337 l 15743 4365 l + 15733 4391 l 15723 4415 l 15712 4437 l 15701 4458 l 15690 4476 l + 15680 4493 l 15672 4506 l 15664 4517 l 15659 4525 l 15655 4531 l + 15653 4534 l + 15652 4535 l gs col0 s gr +% here ends figure; +$F2psEnd +rs +showpage +%%Trailer +%EOF diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/p_f_orb.eps scotch-6.0.6/doc/src/ptscotch/p_f_orb.eps --- scotch-6.0.4.dfsg1/doc/src/ptscotch/p_f_orb.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/p_f_orb.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,762 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: s_f_orb.fig +%%Creator: fig2dev Version 3.2 Patchlevel 4 +%%CreationDate: Thu Dec 30 03:01:42 2004 +%%For: pelegrin@localhost (Francois PELLEGRINI) +%%BoundingBox: 0 0 775 164 +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 164 moveto 0 0 lineto 775 0 lineto 775 164 lineto closepath clip newpath +-36.0 198.7 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/reencdict 12 dict def /ReEncode { reencdict begin +/newcodesandnames exch def /newfontname exch def /basefontname exch def +/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def +basefontdict { exch dup /FID ne { dup /Encoding eq +{ exch dup length array copy newfont 3 1 roll put } +{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall +newfont /FontName newfontname put newcodesandnames aload pop +128 1 255 { newfont /Encoding get exch /.notdef put } for +newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat +newfontname newfont definefont pop end } def +/isovec [ +8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde +8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis +8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron +8#220 /dotlessi 8#230 /oe 8#231 /OE +8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling +8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis +8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot +8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus +8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph +8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine +8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf +8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute +8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring +8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute +8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute +8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve +8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply +8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex +8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave +8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring +8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute +8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute +8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve +8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide +8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex +8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def +/Courier /Courier-iso isovec ReEncode +/Times-Bold /Times-Bold-iso isovec ReEncode +/Times-Roman /Times-Roman-iso isovec ReEncode + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +% +% Fig objects follow +% +% +% here starts figure with depth 50 +% Polyline +7.500 slw +n 10080 1725 m 9975 1725 9975 2070 105 arcto 4 {pop} repeat + 9975 2175 10320 2175 105 arcto 4 {pop} repeat + 10425 2175 10425 1830 105 arcto 4 {pop} repeat + 10425 1725 10080 1725 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +2 slj +n 11138 3213 m 11150 3215 l 11164 3217 l 11180 3218 l 11196 3220 l 11213 3221 l + 11231 3221 l 11250 3222 l 11269 3221 l 11287 3221 l 11304 3220 l + 11320 3218 l 11336 3217 l 11350 3215 l 11363 3213 l 11371 3211 l + 11379 3208 l 11386 3206 l 11394 3202 l 11401 3198 l 11407 3193 l + 11414 3186 l 11420 3178 l 11425 3168 l 11431 3156 l 11435 3143 l + 11440 3128 l 11444 3111 l 11448 3092 l 11451 3071 l 11454 3049 l + 11456 3024 l 11459 2998 l 11461 2969 l 11463 2938 l 11464 2915 l + 11465 2891 l 11466 2866 l 11467 2840 l 11467 2812 l 11468 2783 l + 11469 2753 l 11470 2721 l 11471 2688 l 11471 2654 l 11472 2620 l + 11473 2584 l 11474 2548 l 11474 2512 l 11475 2475 l 11476 2438 l + 11476 2402 l 11477 2366 l 11478 2330 l 11479 2296 l 11479 2262 l + 11480 2229 l 11481 2197 l 11482 2167 l 11483 2138 l 11483 2110 l + 11484 2084 l 11485 2059 l 11486 2035 l 11488 2013 l 11489 1984 l + 11491 1957 l 11493 1933 l 11496 1909 l 11499 1887 l 11503 1867 l + 11507 1847 l 11512 1829 l 11518 1812 l 11525 1795 l 11533 1780 l + 11542 1765 l 11552 1751 l 11563 1738 l 11575 1725 l 11588 1713 l + 11602 1701 l 11617 1689 l 11633 1676 l 11650 1664 l 11668 1651 l + 11688 1638 l 11705 1625 l 11724 1612 l 11744 1599 l 11765 1584 l + 11788 1569 l 11811 1553 l 11836 1536 l 11862 1519 l 11888 1501 l + 11916 1482 l 11943 1463 l 11972 1444 l 12000 1425 l 12028 1406 l + 12057 1387 l 12084 1368 l 12112 1349 l 12138 1331 l 12164 1314 l + 12189 1297 l 12212 1281 l 12235 1266 l 12256 1251 l 12276 1238 l + 12295 1225 l 12313 1213 l 12339 1194 l 12363 1177 l 12385 1161 l + 12405 1146 l 12424 1132 l 12440 1119 l 12454 1106 l 12467 1094 l + 12477 1083 l 12486 1072 l 12493 1062 l 12499 1052 l 12504 1043 l + 12507 1033 l 12510 1023 l 12513 1013 l 12515 1000 l 12517 986 l + 12518 970 l 12520 954 l 12521 937 l 12521 919 l 12522 900 l + 12521 881 l 12521 863 l 12520 846 l 12518 830 l 12517 814 l + 12515 800 l 12513 788 l 12510 776 l 12507 765 l 12503 754 l + 12499 745 l 12493 735 l 12487 727 l 12481 719 l 12473 713 l + 12465 707 l 12455 701 l 12446 697 l 12435 693 l 12424 690 l + 12413 688 l 12400 685 l 12386 683 l 12370 682 l 12354 680 l + 12337 679 l 12319 679 l 12300 678 l 12281 679 l 12263 679 l + 12246 680 l 12230 682 l 12214 683 l 12200 685 l 12188 688 l + 12176 690 l 12165 693 l 12154 697 l 12145 701 l 12135 707 l + 12127 713 l 12119 719 l 12113 727 l 12107 735 l 12101 745 l + 12097 754 l 12093 765 l 12090 776 l 12088 788 l 12085 800 l + 12083 814 l 12081 830 l 12080 846 l 12078 863 l 12076 881 l + 12075 900 l 12074 919 l 12072 937 l 12070 954 l 12069 970 l + 12067 986 l 12065 1000 l 12063 1013 l 12060 1023 l 12057 1033 l + 12054 1043 l 12049 1052 l 12043 1062 l 12036 1072 l 12027 1083 l + 12017 1094 l 12004 1106 l 11990 1119 l 11974 1132 l 11955 1146 l + 11935 1161 l 11913 1177 l 11889 1194 l 11863 1213 l 11845 1225 l + 11826 1238 l 11806 1251 l 11785 1266 l 11762 1281 l 11739 1297 l + 11714 1314 l 11688 1331 l 11662 1349 l 11634 1368 l 11607 1387 l + 11578 1406 l 11550 1425 l 11522 1444 l 11493 1463 l 11466 1482 l + 11438 1501 l 11412 1519 l 11386 1536 l 11361 1553 l 11338 1569 l + 11315 1584 l 11294 1599 l 11274 1612 l 11255 1625 l 11238 1638 l + 11218 1651 l 11200 1664 l 11183 1676 l 11167 1689 l 11152 1701 l + 11138 1713 l 11125 1725 l 11113 1738 l 11102 1751 l 11092 1765 l + 11083 1780 l 11075 1795 l 11068 1812 l 11062 1829 l 11057 1847 l + 11053 1867 l 11049 1887 l 11046 1909 l 11043 1933 l 11041 1957 l + 11039 1984 l 11038 2013 l 11036 2035 l 11035 2059 l 11034 2084 l + 11033 2110 l 11033 2138 l 11032 2167 l 11031 2197 l 11031 2229 l + 11030 2262 l 11030 2296 l 11029 2330 l 11029 2366 l 11029 2402 l + 11029 2438 l 11028 2475 l 11029 2512 l 11029 2548 l 11029 2584 l + 11029 2620 l 11030 2654 l 11030 2688 l 11031 2721 l 11031 2753 l + 11032 2783 l 11033 2812 l 11033 2840 l 11034 2866 l 11035 2891 l + 11036 2915 l 11038 2938 l 11039 2969 l 11041 2998 l 11044 3024 l + 11046 3049 l 11049 3072 l 11052 3092 l 11056 3111 l 11060 3128 l + 11065 3143 l 11069 3156 l 11075 3168 l 11080 3178 l 11086 3186 l + 11093 3193 l 11099 3198 l 11106 3202 l 11114 3206 l 11121 3208 l + 11129 3211 l + cp gs col0 s gr +% Polyline +n 12413 1738 m 12422 1740 l 12431 1742 l 12440 1745 l 12449 1749 l 12458 1753 l + 12468 1759 l 12478 1766 l 12489 1775 l 12501 1785 l 12514 1797 l + 12529 1810 l 12544 1825 l 12560 1841 l 12578 1860 l 12597 1879 l + 12617 1901 l 12639 1924 l 12663 1950 l 12678 1966 l 12694 1984 l + 12711 2002 l 12729 2022 l 12748 2042 l 12767 2063 l 12788 2085 l + 12809 2109 l 12832 2132 l 12854 2157 l 12878 2182 l 12902 2208 l + 12926 2234 l 12950 2261 l 12975 2288 l 13000 2314 l 13024 2341 l + 13048 2367 l 13072 2393 l 13096 2418 l 13118 2443 l 13141 2466 l + 13162 2490 l 13183 2512 l 13202 2533 l 13221 2553 l 13239 2573 l + 13256 2591 l 13272 2609 l 13288 2625 l 13311 2651 l 13333 2674 l + 13353 2696 l 13372 2716 l 13389 2735 l 13404 2752 l 13418 2768 l + 13431 2783 l 13442 2797 l 13451 2810 l 13459 2821 l 13466 2832 l + 13472 2842 l 13476 2851 l 13480 2860 l 13483 2869 l 13485 2878 l + 13488 2888 l 13490 2900 l 13492 2914 l 13493 2930 l 13495 2946 l + 13496 2963 l 13496 2981 l 13497 3000 l 13496 3019 l 13496 3037 l + 13495 3054 l 13493 3070 l 13492 3086 l 13490 3100 l 13488 3113 l + 13485 3124 l 13482 3135 l 13478 3146 l 13474 3155 l 13468 3165 l + 13462 3173 l 13456 3181 l 13448 3187 l 13440 3193 l 13430 3199 l + 13421 3203 l 13410 3207 l 13399 3210 l 13388 3213 l 13375 3215 l + 13361 3217 l 13345 3218 l 13329 3220 l 13312 3221 l 13294 3221 l + 13275 3222 l 13256 3221 l 13238 3221 l 13221 3220 l 13205 3218 l + 13189 3217 l 13175 3215 l 13163 3213 l 13153 3210 l 13144 3208 l + 13135 3205 l 13126 3201 l 13117 3197 l 13107 3191 l 13097 3184 l + 13086 3175 l 13074 3165 l 13061 3153 l 13046 3140 l 13031 3125 l + 13015 3109 l 12997 3090 l 12978 3071 l 12958 3049 l 12936 3026 l + 12913 3000 l 12897 2984 l 12881 2966 l 12864 2948 l 12846 2928 l + 12827 2908 l 12808 2887 l 12787 2865 l 12766 2841 l 12743 2818 l + 12721 2793 l 12697 2768 l 12673 2742 l 12649 2716 l 12625 2689 l + 12600 2662 l 12575 2636 l 12551 2609 l 12527 2583 l 12503 2557 l + 12479 2532 l 12457 2507 l 12434 2484 l 12413 2460 l 12392 2438 l + 12373 2417 l 12354 2397 l 12336 2377 l 12319 2359 l 12303 2341 l + 12288 2325 l 12264 2299 l 12242 2276 l 12222 2254 l 12203 2234 l + 12186 2215 l 12171 2198 l 12157 2182 l 12144 2167 l 12133 2153 l + 12124 2140 l 12116 2129 l 12109 2118 l 12103 2108 l 12099 2099 l + 12095 2090 l 12092 2081 l 12090 2072 l 12088 2063 l 12085 2050 l + 12083 2036 l 12082 2020 l 12080 2004 l 12079 1987 l 12079 1969 l + 12078 1950 l 12079 1931 l 12079 1913 l 12080 1896 l 12082 1880 l + 12083 1864 l 12085 1850 l 12088 1838 l 12090 1826 l 12093 1815 l + 12097 1804 l 12101 1795 l 12107 1785 l 12113 1777 l 12119 1769 l + 12127 1763 l 12135 1757 l 12145 1751 l 12154 1747 l 12165 1743 l + 12176 1740 l 12188 1738 l 12200 1735 l 12214 1733 l 12230 1732 l + 12246 1730 l 12263 1729 l 12281 1729 l 12300 1728 l 12319 1729 l + 12337 1729 l 12354 1730 l 12370 1732 l 12386 1733 l 12400 1735 l + + cp gs col0 s gr +% here ends figure; +% +% here starts figure with depth 20 +% Polyline +7.500 slw +n 10200 900 m + 10200 1950 l gs col0 s gr +% Polyline +n 10200 900 m 13275 900 l 13275 3000 l 10200 3000 l 10200 1950 l + 13275 1950 l gs col0 s gr +% Polyline +n 11250 900 m + 11250 3000 l gs col0 s gr +% Polyline +n 12300 900 m + 12300 3000 l gs col0 s gr +% Polyline +n 6375 900 m + 6375 1950 l gs col0 s gr +% Polyline +n 6300 900 m 9450 900 l 9450 3000 l 6375 3000 l 6375 1950 l + 9450 1950 l gs col0 s gr +% Polyline +n 7425 900 m + 7425 3000 l gs col0 s gr +% Polyline +n 8475 900 m + 8475 3000 l gs col0 s gr +/Courier-iso ff 210.00 scf sf +600 1425 m +gs 1 -1 sc (peritab) col0 sh gr +/Courier-iso ff 210.00 scf sf +600 2025 m +gs 1 -1 sc (cblknbr) col0 sh gr +/Courier-iso ff 210.00 scf sf +600 2625 m +gs 1 -1 sc (rangtab) col0 sh gr +/Courier-iso ff 210.00 scf sf +600 3225 m +gs 1 -1 sc (treetab) col0 sh gr +/Courier-iso ff 210.00 scf sf +600 825 m +gs 1 -1 sc (permtab) col0 sh gr +% here ends figure; +% +% here starts figure with depth 15 +% Polyline +7.500 slw +n 1800 2400 m 2100 2400 l 2100 2700 l 1800 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2100 2400 m 2400 2400 l 2400 2700 l 2100 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 2400 m 2700 2400 l 2700 2700 l 2400 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3300 2400 m 3600 2400 l 3600 2700 l 3300 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4200 2400 m 4500 2400 l 4500 2700 l 4200 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 2400 m 3000 2400 l 3000 2700 l 2700 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 2400 m 3300 2400 l 3300 2700 l 3000 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 1800 m 2100 1800 l 2100 2100 l 1800 2100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 600 m 2100 600 l 2100 900 l 1800 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2100 600 m 2400 600 l 2400 900 l 2100 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 600 m 3300 600 l 3300 900 l 3000 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3600 600 m 3900 600 l 3900 900 l 3600 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3900 600 m 4200 600 l 4200 900 l 3900 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4200 600 m 4500 600 l 4500 900 l 4200 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 600 m 3000 600 l 3000 900 l 2700 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2100 1200 m 2400 1200 l 2400 1500 l 2100 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 1200 m 2700 1200 l 2700 1500 l 2400 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3300 1200 m 3600 1200 l 3600 1500 l 3300 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 1200 m 3000 1200 l 3000 1500 l 2700 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3900 2400 m 4200 2400 l 4200 2700 l 3900 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman-iso ff 240.00 scf sf +3925 2640 m +gs 1 -1 sc (13) col0 sh gr +% Polyline +n 4500 2400 m 4800 2400 l 4800 2700 l 4500 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 3000 m 2100 3000 l 2100 3300 l 1800 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2100 3000 m 2400 3000 l 2400 3300 l 2100 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 3000 m 2700 3000 l 2700 3300 l 2400 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 3000 m 3300 3000 l 3300 3300 l 3000 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3300 3000 m 3600 3000 l 3600 3300 l 3300 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 3000 m 3000 3000 l 3000 3300 l 2700 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4800 600 m 5100 600 l 5100 900 l 4800 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5100 600 m 5400 600 l 5400 900 l 5100 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4800 2400 m 5100 2400 l 5100 2700 l 4800 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5100 2400 m 5400 2400 l 5400 2700 l 5100 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5400 2400 m 5700 2400 l 5700 2700 l 5400 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 600 m 2700 600 l 2700 900 l 2400 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman-iso ff 240.00 scf sf +2425 840 m +gs 1 -1 sc (10) col0 sh gr +% Polyline +n 3300 600 m 3600 600 l 3600 900 l 3300 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman-iso ff 240.00 scf sf +3325 840 m +gs 1 -1 sc (11) col0 sh gr +% Polyline +n 4500 600 m 4800 600 l 4800 900 l 4500 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman-iso ff 240.00 scf sf +4525 840 m +gs 1 -1 sc (12) col0 sh gr +% Polyline +n 4500 1200 m 4800 1200 l 4800 1500 l 4500 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4800 1200 m 5100 1200 l 5100 1500 l 4800 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3900 1200 m 4200 1200 l 4200 1500 l 3900 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3600 1200 m 3900 1200 l 3900 1500 l 3600 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 1200 m 2100 1200 l 2100 1500 l 1800 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5100 1200 m 5400 1200 l 5400 1500 l 5100 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman-iso ff 240.00 scf sf +5125 1440 m +gs 1 -1 sc (10) col0 sh gr +% Polyline +n 3000 1200 m 3300 1200 l 3300 1500 l 3000 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman-iso ff 240.00 scf sf +3025 1440 m +gs 1 -1 sc (11) col0 sh gr +% Polyline +n 4200 1200 m 4500 1200 l 4500 1500 l 4200 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman-iso ff 240.00 scf sf +4225 1440 m +gs 1 -1 sc (12) col0 sh gr +% Polyline +n 3600 2400 m 3900 2400 l 3900 2700 l 3600 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman-iso ff 240.00 scf sf +3625 2640 m +gs 1 -1 sc (10) col0 sh gr +% Polyline +n 3600 3000 m 3900 3000 l 3900 3300 l 3600 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman-iso ff 240.00 scf sf +3625 3240 m +gs 1 -1 sc (-1) col0 sh gr +% Polyline +n 3900 3000 m 4200 3000 l 4200 3300 l 3900 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4200 3000 m 4500 3000 l 4500 3300 l 4200 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4500 3000 m 4800 3000 l 4800 3300 l 4500 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4800 3000 m 5100 3000 l 5100 3300 l 4800 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5100 3000 m 5400 3000 l 5400 3300 l 5100 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% here ends figure; +% +% here starts figure with depth 12 +% Ellipse +7.500 slw +n 12300 900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 11257 1943 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 11257 2993 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 10200 3000 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 10200 900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 11250 900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 13282 2993 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 12307 1943 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 13282 1943 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 13282 893 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 12307 2993 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 10207 1943 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6375 900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6375 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 7425 900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 7425 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6375 3000 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 9450 900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 9450 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 8475 900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 8475 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 7425 3000 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 8475 3000 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 9450 3000 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% here ends figure; +% +% here starts figure with depth 10 +/Times-Roman-iso ff 240.00 scf sf +1900 2640 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +2200 2640 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +2500 2640 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +3400 2640 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +2800 2640 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +3100 2640 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +1900 2040 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +1900 840 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +2200 840 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +3100 840 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +3700 840 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +4000 840 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +4300 840 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +2800 840 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +2200 1440 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +2500 1440 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +3400 1440 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +2800 1440 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +1900 3240 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +2200 3240 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +2500 3240 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +3100 3240 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +3400 3240 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +2800 3240 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +4900 840 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +5200 840 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +10150 3090 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +10150 990 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +11200 990 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +13232 3083 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +12257 2033 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +13232 2033 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +13232 983 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +12257 3083 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +10157 2033 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +6325 990 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +6325 2040 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +7375 990 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +7375 2040 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +6325 3090 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +9400 990 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +9400 2040 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +8425 990 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +8425 2040 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +4600 1440 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +4900 1440 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +4000 1440 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +3700 1440 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +1900 1440 m +gs 1 -1 sc (9) col0 sh gr +/Times-Bold-iso ff 240.00 scf sf +9900 3150 m +gs 1 -1 sc (1) col0 sh gr +/Times-Bold-iso ff 240.00 scf sf +9900 1050 m +gs 1 -1 sc (2) col0 sh gr +/Times-Bold-iso ff 240.00 scf sf +9900 2325 m +gs 1 -1 sc (3) col0 sh gr +/Times-Bold-iso ff 240.00 scf sf +12000 3300 m +gs 1 -1 sc (4) col0 sh gr +/Times-Bold-iso ff 240.00 scf sf +12975 1200 m +gs 1 -1 sc (5) col0 sh gr +/Times-Bold-iso ff 240.00 scf sf +11925 2250 m +gs 1 -1 sc (6) col0 sh gr +/Times-Bold-iso ff 240.00 scf sf +10950 1725 m +gs 1 -1 sc (7) col0 sh gr +% here ends figure; +% +% here starts figure with depth 8 +/Times-Roman-iso ff 240.00 scf sf +12170 990 m +gs 1 -1 sc (10) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +11127 2033 m +gs 1 -1 sc (11) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +11127 3083 m +gs 1 -1 sc (12) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +7295 3090 m +gs 1 -1 sc (10) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +8345 3090 m +gs 1 -1 sc (11) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +9320 3090 m +gs 1 -1 sc (12) col0 sh gr +% here ends figure; +$F2psEnd +rs +showpage diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/p_f_orb.fig scotch-6.0.6/doc/src/ptscotch/p_f_orb.fig --- scotch-6.0.4.dfsg1/doc/src/ptscotch/p_f_orb.fig 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/p_f_orb.fig 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,386 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +0 +1200 2 +6 1800 2400 2100 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 2400 2100 2400 2100 2700 1800 2700 1800 2400 +4 0 0 10 0 0 16 0.0000 4 165 120 1900 2640 1\001 +-6 +6 2100 2400 2400 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 2400 2400 2400 2400 2700 2100 2700 2100 2400 +4 0 0 10 0 0 16 0.0000 4 150 120 2200 2640 2\001 +-6 +6 2400 2400 2700 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 2400 2700 2400 2700 2700 2400 2700 2400 2400 +4 0 0 10 0 0 16 0.0000 4 150 120 2500 2640 4\001 +-6 +6 3300 2400 3600 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 2400 3600 2400 3600 2700 3300 2700 3300 2400 +4 0 0 10 0 0 16 0.0000 4 150 120 3400 2640 8\001 +-6 +6 4200 2400 4500 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4200 2400 4500 2400 4500 2700 4200 2700 4200 2400 +-6 +6 2700 2400 3000 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 2400 3000 2400 3000 2700 2700 2700 2700 2400 +4 0 0 10 0 0 16 0.0000 4 150 120 2800 2640 5\001 +-6 +6 3000 2400 3300 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 2400 3300 2400 3300 2700 3000 2700 3000 2400 +4 0 0 10 0 0 16 0.0000 4 165 120 3100 2640 6\001 +-6 +6 1800 1800 2100 2100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 1800 2100 1800 2100 2100 1800 2100 1800 1800 +4 0 0 10 0 0 16 0.0000 4 150 120 1900 2040 7\001 +-6 +6 1800 600 2100 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 600 2100 600 2100 900 1800 900 1800 600 +4 0 0 10 0 0 16 0.0000 4 150 120 1900 840 2\001 +-6 +6 2100 600 2400 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 600 2400 600 2400 900 2100 900 2100 600 +4 0 0 10 0 0 16 0.0000 4 150 120 2200 840 3\001 +-6 +6 3000 600 3300 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 600 3300 600 3300 900 3000 900 3000 600 +4 0 0 10 0 0 16 0.0000 4 150 120 3100 840 4\001 +-6 +6 3600 600 3900 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 600 3900 600 3900 900 3600 900 3600 600 +4 0 0 10 0 0 16 0.0000 4 150 120 3700 840 8\001 +-6 +6 3900 600 4200 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3900 600 4200 600 4200 900 3900 900 3900 600 +4 0 0 10 0 0 16 0.0000 4 150 120 4000 840 7\001 +-6 +6 4200 600 4500 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4200 600 4500 600 4500 900 4200 900 4200 600 +4 0 0 10 0 0 16 0.0000 4 165 120 4300 840 1\001 +-6 +6 2700 600 3000 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 600 3000 600 3000 900 2700 900 2700 600 +4 0 0 10 0 0 16 0.0000 4 165 120 2800 840 6\001 +-6 +6 2100 1200 2400 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 1200 2400 1200 2400 1500 2100 1500 2100 1200 +4 0 0 10 0 0 16 0.0000 4 165 120 2200 1440 1\001 +-6 +6 2400 1200 2700 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 1200 2700 1200 2700 1500 2400 1500 2400 1200 +4 0 0 10 0 0 16 0.0000 4 150 120 2500 1440 2\001 +-6 +6 3300 1200 3600 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 1200 3600 1200 3600 1500 3300 1500 3300 1200 +4 0 0 10 0 0 16 0.0000 4 150 120 3400 1440 4\001 +-6 +6 2700 1200 3000 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 1200 3000 1200 3000 1500 2700 1500 2700 1200 +4 0 0 10 0 0 16 0.0000 4 150 120 2800 1440 5\001 +-6 +6 3900 2400 4200 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3900 2400 4200 2400 4200 2700 3900 2700 3900 2400 +4 0 0 15 0 0 16 0.0000 4 165 240 3925 2640 13\001 +-6 +6 4500 2400 4800 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4500 2400 4800 2400 4800 2700 4500 2700 4500 2400 +-6 +6 1800 3000 2100 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 3000 2100 3000 2100 3300 1800 3300 1800 3000 +4 0 0 10 0 0 16 0.0000 4 150 120 1900 3240 3\001 +-6 +6 2100 3000 2400 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 3000 2400 3000 2400 3300 2100 3300 2100 3000 +4 0 0 10 0 0 16 0.0000 4 150 120 2200 3240 3\001 +-6 +6 2400 3000 2700 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 3000 2700 3000 2700 3300 2400 3300 2400 3000 +4 0 0 10 0 0 16 0.0000 4 150 120 2500 3240 7\001 +-6 +6 3000 3000 3300 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 3000 3300 3000 3300 3300 3000 3300 3000 3000 +4 0 0 10 0 0 16 0.0000 4 165 120 3100 3240 6\001 +-6 +6 3300 3000 3600 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 3000 3600 3000 3600 3300 3300 3300 3300 3000 +4 0 0 10 0 0 16 0.0000 4 150 120 3400 3240 7\001 +-6 +6 2700 3000 3000 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 3000 3000 3000 3000 3300 2700 3300 2700 3000 +4 0 0 10 0 0 16 0.0000 4 165 120 2800 3240 6\001 +-6 +6 4800 600 5100 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4800 600 5100 600 5100 900 4800 900 4800 600 +4 0 0 10 0 0 16 0.0000 4 150 120 4900 840 5\001 +-6 +6 5100 600 5400 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5100 600 5400 600 5400 900 5100 900 5100 600 +4 0 0 10 0 0 16 0.0000 4 150 120 5200 840 9\001 +-6 +6 4800 2400 5100 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4800 2400 5100 2400 5100 2700 4800 2700 4800 2400 +-6 +6 5100 2400 5400 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5100 2400 5400 2400 5400 2700 5100 2700 5100 2400 +-6 +6 5400 2400 5700 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5400 2400 5700 2400 5700 2700 5400 2700 5400 2400 +-6 +6 12150 750 12450 1050 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 12300 900 150 150 12300 900 12450 900 +4 0 0 8 0 0 16 0.0000 4 165 240 12170 990 10\001 +-6 +6 11100 1786 11414 2100 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 11257 1943 150 150 11257 1943 11407 1943 +4 0 0 8 0 0 16 0.0000 4 165 240 11127 2033 11\001 +-6 +6 11100 2836 11414 3150 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 11257 2993 150 150 11257 2993 11407 2993 +4 0 0 8 0 0 16 0.0000 4 165 240 11127 3083 12\001 +-6 +6 10050 2850 10350 3150 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 10200 3000 150 150 10200 3000 10350 3000 +4 0 0 10 0 0 16 0.0000 4 165 120 10150 3090 1\001 +-6 +6 10050 750 10350 1050 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 10200 900 150 150 10200 900 10350 900 +4 0 0 10 0 0 16 0.0000 4 150 120 10150 990 2\001 +-6 +6 11100 750 11400 1050 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 11250 900 150 150 11250 900 11400 900 +4 0 0 10 0 0 16 0.0000 4 150 120 11200 990 3\001 +-6 +6 13125 2836 13439 3150 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 13282 2993 150 150 13282 2993 13432 2993 +4 0 0 10 0 0 16 0.0000 4 150 120 13232 3083 9\001 +-6 +6 12150 1786 12464 2100 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 12307 1943 150 150 12307 1943 12457 1943 +4 0 0 10 0 0 16 0.0000 4 150 120 12257 2033 8\001 +-6 +6 13125 1786 13439 2100 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 13282 1943 150 150 13282 1943 13432 1943 +4 0 0 10 0 0 16 0.0000 4 150 120 13232 2033 7\001 +-6 +6 13125 736 13439 1050 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 13282 893 150 150 13282 893 13432 893 +4 0 0 10 0 0 16 0.0000 4 165 120 13232 983 6\001 +-6 +6 12150 2836 12464 3150 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 12307 2993 150 150 12307 2993 12457 2993 +4 0 0 10 0 0 16 0.0000 4 150 120 12257 3083 5\001 +-6 +6 10050 1786 10364 2100 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 10207 1943 150 150 10207 1943 10357 1943 +4 0 0 10 0 0 16 0.0000 4 150 120 10157 2033 4\001 +-6 +6 6225 750 6525 1050 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6375 900 150 150 6375 900 6525 900 +4 0 0 10 0 0 16 0.0000 4 165 120 6325 990 1\001 +-6 +6 6218 1793 6532 2107 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6375 1950 150 150 6375 1950 6525 1950 +4 0 0 10 0 0 16 0.0000 4 150 120 6325 2040 5\001 +-6 +6 7275 750 7575 1050 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7425 900 150 150 7425 900 7575 900 +4 0 0 10 0 0 16 0.0000 4 150 120 7375 990 2\001 +-6 +6 7268 1793 7582 2107 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7425 1950 150 150 7425 1950 7575 1950 +4 0 0 10 0 0 16 0.0000 4 165 120 7375 2040 6\001 +-6 +6 6218 2843 6532 3157 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6375 3000 150 150 6375 3000 6525 3000 +4 0 0 10 0 0 16 0.0000 4 150 120 6325 3090 9\001 +-6 +6 9293 743 9607 1057 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 9450 900 150 150 9450 900 9600 900 +4 0 0 10 0 0 16 0.0000 4 150 120 9400 990 4\001 +-6 +6 9293 1793 9607 2107 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 9450 1950 150 150 9450 1950 9600 1950 +4 0 0 10 0 0 16 0.0000 4 150 120 9400 2040 8\001 +-6 +6 8325 750 8625 1050 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8475 900 150 150 8475 900 8625 900 +4 0 0 10 0 0 16 0.0000 4 150 120 8425 990 3\001 +-6 +6 8318 1793 8632 2107 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8475 1950 150 150 8475 1950 8625 1950 +4 0 0 10 0 0 16 0.0000 4 150 120 8425 2040 7\001 +-6 +6 7275 2850 7575 3150 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7425 3000 150 150 7425 3000 7575 3000 +4 0 0 8 0 0 16 0.0000 4 165 240 7295 3090 10\001 +-6 +6 8318 2843 8632 3157 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8475 3000 150 150 8475 3000 8625 3000 +4 0 0 8 0 0 16 0.0000 4 165 240 8345 3090 11\001 +-6 +6 9293 2843 9607 3157 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 9450 3000 150 150 9450 3000 9600 3000 +4 0 0 8 0 0 16 0.0000 4 165 240 9320 3090 12\001 +-6 +6 2400 600 2700 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 600 2700 600 2700 900 2400 900 2400 600 +4 0 0 15 0 0 16 0.0000 4 165 240 2425 840 10\001 +-6 +6 3300 600 3600 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 600 3600 600 3600 900 3300 900 3300 600 +4 0 0 15 0 0 16 0.0000 4 165 240 3325 840 11\001 +-6 +6 4500 600 4800 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4500 600 4800 600 4800 900 4500 900 4500 600 +4 0 0 15 0 0 16 0.0000 4 165 240 4525 840 12\001 +-6 +6 4500 1200 4800 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4500 1200 4800 1200 4800 1500 4500 1500 4500 1200 +4 0 0 10 0 0 16 0.0000 4 150 120 4600 1440 3\001 +-6 +6 4800 1200 5100 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4800 1200 5100 1200 5100 1500 4800 1500 4800 1200 +4 0 0 10 0 0 16 0.0000 4 165 120 4900 1440 6\001 +-6 +6 3900 1200 4200 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3900 1200 4200 1200 4200 1500 3900 1500 3900 1200 +4 0 0 10 0 0 16 0.0000 4 150 120 4000 1440 7\001 +-6 +6 3600 1200 3900 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 1200 3900 1200 3900 1500 3600 1500 3600 1200 +4 0 0 10 0 0 16 0.0000 4 150 120 3700 1440 8\001 +-6 +6 1800 1200 2100 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 1200 2100 1200 2100 1500 1800 1500 1800 1200 +4 0 0 10 0 0 16 0.0000 4 150 120 1900 1440 9\001 +-6 +6 5100 1200 5400 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5100 1200 5400 1200 5400 1500 5100 1500 5100 1200 +4 0 0 15 0 0 16 0.0000 4 165 240 5125 1440 10\001 +-6 +6 3000 1200 3300 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 1200 3300 1200 3300 1500 3000 1500 3000 1200 +4 0 0 15 0 0 16 0.0000 4 165 240 3025 1440 11\001 +-6 +6 4200 1200 4500 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4200 1200 4500 1200 4500 1500 4200 1500 4200 1200 +4 0 0 15 0 0 16 0.0000 4 165 240 4225 1440 12\001 +-6 +6 3600 2400 3900 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 2400 3900 2400 3900 2700 3600 2700 3600 2400 +4 0 0 15 0 0 16 0.0000 4 165 240 3625 2640 10\001 +-6 +6 3600 3000 3900 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 3000 3900 3000 3900 3300 3600 3300 3600 3000 +4 0 0 15 0 0 16 0.0000 4 165 195 3625 3240 -1\001 +-6 +6 3900 3000 4200 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3900 3000 4200 3000 4200 3300 3900 3300 3900 3000 +-6 +6 4200 3000 4500 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4200 3000 4500 3000 4500 3300 4200 3300 4200 3000 +-6 +6 4500 3000 4800 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4500 3000 4800 3000 4800 3300 4500 3300 4500 3000 +-6 +6 4800 3000 5100 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4800 3000 5100 3000 5100 3300 4800 3300 4800 3000 +-6 +6 5100 3000 5400 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5100 3000 5400 3000 5400 3300 5100 3300 5100 3000 +-6 +2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 + 10425 2175 10425 1725 9975 1725 9975 2175 10425 2175 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 + 10200 900 10200 1950 +2 1 0 1 0 7 20 0 -1 0.000 0 0 7 0 0 6 + 10200 900 13275 900 13275 3000 10200 3000 10200 1950 13275 1950 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 + 11250 900 11250 3000 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 + 12300 900 12300 3000 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 + 6375 900 6375 1950 +2 1 0 1 0 7 20 0 -1 0.000 0 0 7 0 0 6 + 6300 900 9450 900 9450 3000 6375 3000 6375 1950 9450 1950 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 + 7425 900 7425 3000 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 + 8475 900 8475 3000 +3 1 0 1 0 7 50 -1 -1 0.000 0 0 0 16 + 11025 3150 11100 3225 11400 3225 11475 3150 11475 1800 11550 1725 + 12450 1125 12525 1050 12525 750 12450 675 12150 675 12075 750 + 12075 1050 12000 1125 11100 1725 11025 1800 + 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 + 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 +3 1 0 1 0 7 50 -1 -1 0.000 0 0 0 12 + 12150 1725 12450 1725 12525 1800 13425 2775 13500 2850 13500 3150 + 13425 3225 13125 3225 13050 3150 12150 2175 12075 2100 12075 1800 + 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 + 1.000 1.000 1.000 1.000 +4 0 0 20 0 12 14 0.0000 4 195 945 600 1425 peritab\001 +4 0 0 20 0 12 14 0.0000 4 150 945 600 2025 cblknbr\001 +4 0 0 20 0 12 14 0.0000 4 195 945 600 2625 rangtab\001 +4 0 0 20 0 12 14 0.0000 4 150 945 600 3225 treetab\001 +4 0 0 20 0 12 14 0.0000 4 195 945 600 825 permtab\001 +4 0 0 10 0 2 16 0.0000 4 150 120 9900 3150 1\001 +4 0 0 10 0 2 16 0.0000 4 150 120 9900 1050 2\001 +4 0 0 10 0 2 16 0.0000 4 150 120 9900 2325 3\001 +4 0 0 10 0 2 16 0.0000 4 150 120 12000 3300 4\001 +4 0 0 10 0 2 16 0.0000 4 150 120 12975 1200 5\001 +4 0 0 10 0 2 16 0.0000 4 165 120 11925 2250 6\001 +4 0 0 10 0 2 16 0.0000 4 150 120 10950 1725 7\001 diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/p_f_sepa.eps scotch-6.0.6/doc/src/ptscotch/p_f_sepa.eps --- scotch-6.0.4.dfsg1/doc/src/ptscotch/p_f_sepa.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/p_f_sepa.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,1357 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: stdin +%%Creator: fig2dev Version 3.2 Patchlevel 5-alpha5 +%%CreationDate: Tue May 2 09:11:11 2006 +%%For: pelegrin@portablepelegrin (Francois PELLEGRINI) +%%BoundingBox: 0 0 1198 483 +%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 483 moveto 0 0 lineto 1198 0 lineto 1198 483 lineto closepath clip newpath +-233.9 545.4 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +% +% Fig objects follow +% +% +% here starts figure with depth 50 +/Times-Roman ff 285.00 scf sf +7996 8289 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 165.00 scf sf +8141 8325 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 300.00 scf sf +6900 8213 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 165.00 scf sf +7045 8250 m +gs 1 -1 sc (2) col0 sh gr +% Ellipse +7.500 slw +n 7575 8179 1025 409 0 360 DrawEllipse gs col0 s gr + +% Polyline +2 slj +0 slc + [15 45] 45 sd +n 7933 7797 m 7933 7799 l 7932 7802 l 7930 7808 l 7927 7817 l 7923 7829 l + 7918 7843 l 7911 7859 l 7904 7877 l 7895 7895 l 7884 7915 l + 7872 7935 l 7857 7956 l 7839 7978 l 7818 8001 l 7793 8026 l + 7763 8051 l 7729 8077 l 7696 8099 l 7664 8119 l 7634 8135 l + 7608 8148 l 7586 8157 l 7568 8163 l 7553 8167 l 7540 8168 l + 7529 8168 l 7519 8168 l 7509 8168 l 7498 8168 l 7485 8169 l + 7469 8173 l 7449 8178 l 7426 8187 l 7398 8200 l 7365 8215 l + 7329 8234 l 7292 8255 l 7252 8279 l 7215 8303 l 7183 8326 l + 7154 8347 l 7128 8368 l 7106 8387 l 7085 8405 l 7067 8423 l + 7050 8440 l 7035 8455 l 7022 8470 l 7010 8483 l 7001 8493 l + 6994 8501 l 6990 8507 l 6987 8510 l + 6986 8511 l gs col0 s gr [] 0 sd +/Times-Roman ff 285.00 scf sf +8371 7164 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 165.00 scf sf +8516 7200 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 300.00 scf sf +7275 7088 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 165.00 scf sf +7420 7125 m +gs 1 -1 sc (0) col0 sh gr +% Ellipse +n 7950 7054 1025 409 0 360 DrawEllipse gs col0 s gr + +% Polyline + [15 45] 45 sd +n 8308 6672 m 8308 6674 l 8307 6677 l 8305 6683 l 8302 6692 l 8298 6704 l + 8293 6718 l 8286 6734 l 8279 6752 l 8270 6770 l 8259 6790 l + 8247 6810 l 8232 6831 l 8214 6853 l 8193 6876 l 8168 6901 l + 8138 6926 l 8104 6952 l 8071 6974 l 8039 6994 l 8009 7010 l + 7983 7023 l 7961 7032 l 7943 7038 l 7928 7042 l 7915 7043 l + 7904 7043 l 7894 7043 l 7884 7043 l 7873 7043 l 7860 7044 l + 7844 7048 l 7824 7053 l 7801 7062 l 7773 7075 l 7740 7090 l + 7704 7109 l 7667 7130 l 7627 7154 l 7590 7178 l 7558 7201 l + 7529 7222 l 7503 7243 l 7481 7262 l 7460 7280 l 7442 7298 l + 7425 7315 l 7410 7330 l 7397 7345 l 7385 7358 l 7376 7368 l + 7369 7376 l 7365 7382 l 7362 7385 l + 7361 7386 l gs col0 s gr [] 0 sd +/Times-Roman ff 285.00 scf sf +5196 6027 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 165.00 scf sf +5336 6062 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 285.00 scf sf +5475 6582 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 165.00 scf sf +5614 6617 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 285.00 scf sf +4363 6339 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 165.00 scf sf +4502 6374 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 285.00 scf sf +6344 6339 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 165.00 scf sf +6483 6374 m +gs 1 -1 sc (3) col0 sh gr +% Ellipse +n 5475 6235 1391 556 0 360 DrawEllipse gs col0 s gr + +% Polyline + [15 45] 45 sd +n 5961 5715 m 5961 5717 l 5960 5720 l 5958 5726 l 5955 5736 l 5951 5748 l + 5945 5764 l 5939 5782 l 5931 5802 l 5921 5823 l 5910 5846 l + 5898 5870 l 5883 5894 l 5866 5920 l 5846 5946 l 5822 5974 l + 5795 6003 l 5763 6033 l 5726 6064 l 5684 6096 l 5647 6121 l + 5610 6144 l 5575 6165 l 5543 6181 l 5515 6195 l 5490 6205 l + 5469 6212 l 5451 6217 l 5436 6220 l 5423 6221 l 5411 6221 l + 5400 6220 l 5388 6220 l 5376 6220 l 5362 6221 l 5347 6223 l + 5328 6228 l 5305 6235 l 5279 6245 l 5249 6257 l 5214 6274 l + 5175 6293 l 5134 6315 l 5092 6339 l 5047 6366 l 5005 6393 l + 4967 6419 l 4932 6443 l 4901 6467 l 4873 6489 l 4847 6511 l + 4824 6532 l 4802 6552 l 4782 6571 l 4763 6590 l 4746 6607 l + 4731 6624 l 4717 6639 l 4706 6652 l 4696 6663 l 4688 6672 l + 4683 6678 l 4679 6683 l 4677 6685 l + 4676 6686 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4780 5749 m 4780 5751 l 4779 5755 l 4777 5762 l 4775 5773 l 4773 5787 l + 4771 5805 l 4768 5824 l 4766 5846 l 4765 5868 l 4764 5892 l + 4765 5917 l 4767 5943 l 4771 5971 l 4778 6000 l 4787 6031 l + 4799 6063 l 4815 6096 l 4834 6128 l 4854 6157 l 4874 6183 l + 4895 6206 l 4916 6226 l 4938 6244 l 4959 6260 l 4980 6275 l + 5000 6288 l 5020 6300 l 5038 6311 l 5055 6320 l 5068 6327 l + 5079 6332 l 5086 6336 l 5090 6338 l + 5092 6339 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5754 6027 m 5755 6028 l 5759 6030 l 5764 6034 l 5773 6040 l 5784 6048 l + 5798 6058 l 5814 6070 l 5832 6084 l 5851 6098 l 5871 6115 l + 5891 6132 l 5912 6151 l 5933 6171 l 5955 6193 l 5976 6217 l + 5998 6244 l 6021 6273 l 6043 6305 l 6065 6339 l 6087 6378 l + 6105 6415 l 6120 6450 l 6132 6483 l 6142 6513 l 6149 6542 l + 6155 6569 l 6160 6595 l 6163 6619 l 6166 6642 l 6167 6663 l + 6168 6681 l 6169 6696 l 6170 6707 l 6170 6715 l 6170 6719 l + + 6170 6721 l gs col0 s gr [] 0 sd +% Ellipse +n 13842 6644 260 104 0 360 DrawEllipse gs col0 s gr + +% Polyline +15.000 slw +n 13968 6553 m 13966 6554 l 13963 6557 l 13957 6561 l 13950 6567 l 13941 6573 l + 13930 6580 l 13918 6588 l 13903 6598 l 13884 6609 l 13865 6620 l + 13850 6628 l 13840 6633 l 13834 6636 l 13830 6638 l 13827 6639 l + 13821 6642 l 13810 6647 l 13793 6655 l 13772 6666 l 13750 6677 l + 13731 6687 l 13715 6695 l 13700 6702 l 13687 6708 l 13676 6714 l + 13668 6718 l 13662 6721 l + 13659 6722 l gs col0 s gr +% Ellipse +7.500 slw +n 13851 7390 270 108 0 360 DrawEllipse gs col0 s gr + +% Polyline +15.000 slw +n 13851 7282 m 13850 7283 l 13848 7284 l 13846 7286 l 13843 7289 l 13841 7294 l + 13839 7299 l 13837 7306 l 13837 7316 l 13838 7329 l 13842 7346 l + 13846 7360 l 13851 7368 l 13856 7374 l 13860 7379 l 13865 7388 l + 13869 7403 l 13872 7423 l 13872 7443 l 13870 7458 l 13866 7470 l + 13861 7480 l 13857 7488 l 13853 7494 l + 13851 7497 l gs col0 s gr +% Ellipse +7.500 slw +n 13842 8069 260 104 0 360 DrawEllipse gs col0 s gr + +% Polyline +15.000 slw +n 13744 7978 m 13745 7978 l 13751 7978 l 13763 7979 l 13779 7981 l 13795 7985 l + 13810 7990 l 13822 7998 l 13829 8010 l 13828 8024 l 13822 8035 l + 13812 8042 l 13802 8046 l 13791 8051 l 13781 8059 l 13774 8072 l + 13772 8091 l 13776 8107 l 13782 8120 l 13791 8132 l 13802 8143 l + 13813 8152 l 13823 8160 l 13833 8166 l 13839 8170 l + 13842 8172 l gs col0 s gr +% Ellipse +7.500 slw +n 13842 8744 260 104 0 360 DrawEllipse gs col0 s gr + +% Polyline +15.000 slw +n 13912 8653 m 13911 8653 l 13908 8654 l 13900 8656 l 13889 8659 l 13876 8663 l + 13862 8668 l 13846 8675 l 13829 8685 l 13818 8692 l 13809 8698 l + 13801 8702 l 13796 8704 l 13791 8705 l 13788 8705 l 13784 8705 l + 13781 8707 l 13778 8710 l 13775 8716 l 13772 8726 l 13772 8738 l + 13776 8755 l 13782 8771 l 13791 8786 l 13802 8801 l 13813 8815 l + 13823 8827 l 13833 8837 l 13839 8844 l + 13842 8847 l gs col0 s gr +% Polyline +0 slj +30.000 slw +gs clippath +14545 6735 m 14865 6735 l 14865 6615 l 14545 6615 l 14545 6615 l 14785 6675 l 14545 6735 l cp +eoclip +n 14325 6675 m + 14850 6675 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 14545 6735 m 14785 6675 l 14545 6615 l 14545 6735 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +14545 7410 m 14865 7410 l 14865 7290 l 14545 7290 l 14545 7290 l 14785 7350 l 14545 7410 l cp +eoclip +n 14325 7350 m + 14850 7350 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 14545 7410 m 14785 7350 l 14545 7290 l 14545 7410 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +14545 8760 m 14865 8760 l 14865 8640 l 14545 8640 l 14545 8640 l 14785 8700 l 14545 8760 l cp +eoclip +n 14325 8700 m + 14850 8700 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 14545 8760 m 14785 8700 l 14545 8640 l 14545 8760 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +14545 8085 m 14865 8085 l 14865 7965 l 14545 7965 l 14545 7965 l 14785 8025 l 14545 8085 l cp +eoclip +n 14325 8025 m + 14850 8025 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 14545 8085 m 14785 8025 l 14545 7965 l 14545 8085 l cp gs 0.00 setgray ef gr col0 s +% Ellipse +7.500 slw +n 15450 6721 439 175 0 360 DrawEllipse gs col0 s gr + +% Polyline +2 slj +15.000 slw +n 15663 6569 m 15661 6570 l 15657 6573 l 15651 6578 l 15642 6585 l 15632 6593 l + 15620 6602 l 15606 6612 l 15589 6622 l 15570 6635 l 15547 6649 l + 15521 6664 l 15498 6677 l 15477 6688 l 15460 6697 l 15448 6703 l + 15440 6707 l 15435 6709 l 15430 6711 l 15426 6713 l 15421 6715 l + 15412 6719 l 15399 6725 l 15381 6734 l 15358 6745 l 15332 6758 l + 15305 6771 l 15281 6784 l 15259 6795 l 15239 6804 l 15221 6813 l + 15205 6822 l 15190 6829 l 15176 6836 l 15164 6842 l 15155 6847 l + 15148 6850 l 15144 6852 l + 15142 6853 l gs col0 s gr +% Ellipse +7.500 slw +n 15461 7391 450 179 0 360 DrawEllipse gs col0 s gr + +% Polyline +15.000 slw +n 15461 7211 m 15460 7212 l 15458 7213 l 15456 7215 l 15452 7219 l 15448 7223 l + 15444 7229 l 15441 7236 l 15439 7245 l 15437 7257 l 15437 7272 l + 15439 7290 l 15443 7310 l 15448 7328 l 15453 7342 l 15458 7352 l + 15463 7359 l 15468 7365 l 15473 7371 l 15478 7378 l 15483 7389 l + 15488 7404 l 15492 7424 l 15495 7447 l 15496 7474 l 15493 7496 l + 15489 7514 l 15484 7529 l 15478 7542 l 15472 7553 l 15467 7562 l + 15463 7567 l + 15461 7570 l gs col0 s gr +% Ellipse +7.500 slw +n 15450 8071 439 175 0 360 DrawEllipse gs col0 s gr + +% Polyline +15.000 slw +n 15284 7919 m 15285 7919 l 15288 7919 l 15296 7920 l 15308 7921 l 15324 7923 l + 15343 7925 l 15361 7928 l 15379 7933 l 15395 7939 l 15410 7947 l + 15421 7959 l 15428 7973 l 15429 7989 l 15424 8004 l 15416 8015 l + 15406 8023 l 15394 8029 l 15382 8034 l 15370 8038 l 15358 8044 l + 15347 8054 l 15339 8068 l 15333 8086 l 15332 8108 l 15336 8130 l + 15345 8151 l 15357 8168 l 15370 8184 l 15385 8198 l 15400 8211 l + 15416 8223 l 15429 8232 l 15440 8240 l 15447 8244 l + 15450 8246 l gs col0 s gr +% Ellipse +7.500 slw +n 15450 8746 439 175 0 360 DrawEllipse gs col0 s gr + +% Polyline +15.000 slw +n 15568 8594 m 15566 8595 l 15561 8596 l 15552 8598 l 15542 8601 l 15529 8604 l + 15515 8609 l 15500 8614 l 15484 8620 l 15467 8628 l 15448 8637 l + 15428 8648 l 15412 8658 l 15398 8667 l 15386 8674 l 15377 8678 l + 15370 8680 l 15364 8681 l 15358 8681 l 15354 8681 l 15349 8683 l + 15344 8687 l 15340 8693 l 15335 8703 l 15332 8718 l 15332 8736 l + 15336 8756 l 15342 8776 l 15351 8796 l 15362 8814 l 15374 8832 l + 15387 8849 l 15400 8866 l 15414 8881 l 15426 8895 l 15436 8906 l + 15443 8914 l 15448 8919 l + 15450 8921 l gs col0 s gr +% Polyline +0 slj +30.000 slw +gs clippath +16270 6735 m 16590 6735 l 16590 6615 l 16270 6615 l 16270 6615 l 16510 6675 l 16270 6735 l cp +eoclip +n 16050 6675 m + 16575 6675 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 16270 6735 m 16510 6675 l 16270 6615 l 16270 6735 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +16270 7410 m 16590 7410 l 16590 7290 l 16270 7290 l 16270 7290 l 16510 7350 l 16270 7410 l cp +eoclip +n 16050 7350 m + 16575 7350 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 16270 7410 m 16510 7350 l 16270 7290 l 16270 7410 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +16270 8760 m 16590 8760 l 16590 8640 l 16270 8640 l 16270 8640 l 16510 8700 l 16270 8760 l cp +eoclip +n 16050 8700 m + 16575 8700 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 16270 8760 m 16510 8700 l 16270 8640 l 16270 8760 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +16270 8085 m 16590 8085 l 16590 7965 l 16270 7965 l 16270 7965 l 16510 8025 l 16270 8085 l cp +eoclip +n 16050 8025 m + 16575 8025 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 16270 8085 m 16510 8025 l 16270 7965 l 16270 8085 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +13120 6735 m 13440 6735 l 13440 6615 l 13120 6615 l 13120 6615 l 13360 6675 l 13120 6735 l cp +eoclip +n 12900 6675 m + 13425 6675 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 13120 6735 m 13360 6675 l 13120 6615 l 13120 6735 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +13120 7410 m 13440 7410 l 13440 7290 l 13120 7290 l 13120 7290 l 13360 7350 l 13120 7410 l cp +eoclip +n 12900 7350 m + 13425 7350 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 13120 7410 m 13360 7350 l 13120 7290 l 13120 7410 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +13120 8760 m 13440 8760 l 13440 8640 l 13120 8640 l 13120 8640 l 13360 8700 l 13120 8760 l cp +eoclip +n 12900 8700 m + 13425 8700 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 13120 8760 m 13360 8700 l 13120 8640 l 13120 8760 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +13120 8085 m 13440 8085 l 13440 7965 l 13120 7965 l 13120 7965 l 13360 8025 l 13120 8085 l cp +eoclip +n 12900 8025 m + 13425 8025 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 13120 8085 m 13360 8025 l 13120 7965 l 13120 8085 l cp gs 0.00 setgray ef gr col0 s +% Ellipse +7.500 slw +n 17437 8116 695 277 0 360 DrawEllipse gs col0 s gr + +% Polyline +2 slj +15.000 slw +n 17175 7875 m 17176 7875 l 17179 7875 l 17187 7876 l 17201 7877 l 17220 7878 l + 17243 7881 l 17268 7884 l 17293 7888 l 17317 7894 l 17340 7902 l + 17361 7911 l 17380 7924 l 17394 7940 l 17403 7960 l 17405 7979 l + 17402 7998 l 17394 8014 l 17384 8027 l 17372 8037 l 17359 8045 l + 17344 8051 l 17330 8056 l 17315 8062 l 17301 8068 l 17287 8077 l + 17275 8089 l 17264 8105 l 17255 8125 l 17250 8148 l 17250 8175 l + 17255 8202 l 17263 8227 l 17275 8250 l 17289 8270 l 17305 8289 l + 17322 8307 l 17340 8323 l 17358 8338 l 17377 8352 l 17394 8364 l + 17409 8375 l 17421 8383 l 17430 8388 l 17435 8392 l + 17437 8393 l gs col0 s gr +% Ellipse +7.500 slw +n 17437 8791 695 277 0 360 DrawEllipse gs col0 s gr + +% Polyline +15.000 slw +n 17625 8550 m 17622 8551 l 17617 8552 l 17608 8554 l 17596 8557 l 17580 8561 l + 17563 8566 l 17544 8572 l 17524 8578 l 17503 8586 l 17480 8595 l + 17456 8606 l 17430 8620 l 17403 8635 l 17383 8648 l 17364 8659 l + 17348 8669 l 17335 8677 l 17323 8682 l 17314 8685 l 17306 8687 l + 17299 8687 l 17292 8688 l 17286 8688 l 17281 8689 l 17275 8692 l + 17269 8697 l 17263 8705 l 17258 8717 l 17253 8733 l 17250 8752 l + 17250 8775 l 17254 8800 l 17261 8825 l 17271 8849 l 17282 8873 l + 17296 8896 l 17310 8918 l 17326 8939 l 17342 8960 l 17358 8980 l + 17375 9000 l 17390 9017 l 17404 9033 l 17416 9046 l 17425 9056 l + 17432 9062 l 17435 9066 l + 17437 9068 l gs col0 s gr +% Ellipse +7.500 slw +n 17437 7441 695 277 0 360 DrawEllipse gs col0 s gr + +% Polyline +15.000 slw +n 17437 7163 m 17436 7164 l 17434 7165 l 17431 7167 l 17427 7171 l 17422 7176 l + 17417 7182 l 17412 7190 l 17408 7199 l 17404 7210 l 17401 7223 l + 17400 7240 l 17400 7261 l 17403 7285 l 17407 7308 l 17412 7330 l + 17418 7349 l 17424 7365 l 17431 7377 l 17436 7387 l 17442 7394 l + 17448 7401 l 17454 7407 l 17460 7415 l 17465 7425 l 17471 7438 l + 17477 7455 l 17482 7476 l 17487 7501 l 17490 7528 l 17491 7558 l + 17490 7585 l 17487 7608 l 17482 7628 l 17477 7646 l 17470 7661 l + 17463 7675 l 17457 7688 l 17450 7699 l 17445 7707 l 17441 7713 l + 17438 7716 l + 17437 7718 l gs col0 s gr +% Ellipse +7.500 slw +n 17437 6766 695 277 0 360 DrawEllipse gs col0 s gr + +% Polyline +15.000 slw +n 17775 6525 m 17774 6526 l 17771 6528 l 17766 6532 l 17759 6537 l 17750 6545 l + 17739 6553 l 17726 6563 l 17711 6573 l 17696 6584 l 17678 6596 l + 17658 6609 l 17636 6623 l 17611 6639 l 17582 6656 l 17550 6675 l + 17521 6691 l 17494 6706 l 17470 6719 l 17451 6729 l 17436 6736 l + 17425 6742 l 17417 6746 l 17411 6748 l 17406 6750 l 17401 6752 l + 17395 6754 l 17387 6758 l 17375 6764 l 17359 6771 l 17338 6781 l + 17313 6794 l 17283 6809 l 17250 6825 l 17217 6841 l 17186 6857 l + 17157 6872 l 17130 6885 l 17106 6897 l 17084 6908 l 17063 6919 l + 17043 6928 l 17025 6938 l 17008 6946 l 16993 6954 l 16979 6960 l + 16968 6966 l 16960 6970 l 16955 6973 l 16951 6974 l + 16950 6975 l gs col0 s gr +% Ellipse +7.500 slw +n 10375 6678 683 273 0 360 DrawEllipse gs col0 s gr + +/Times-Roman ff 300.00 scf sf +10200 6749 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 165.00 scf sf +10345 6786 m +gs 1 -1 sc (0) col0 sh gr +% Ellipse +n 10375 7353 683 273 0 360 DrawEllipse gs col0 s gr + +/Times-Roman ff 300.00 scf sf +10200 7424 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 165.00 scf sf +10345 7461 m +gs 1 -1 sc (1) col0 sh gr +% Ellipse +n 10375 8028 683 273 0 360 DrawEllipse gs col0 s gr + +/Times-Roman ff 300.00 scf sf +10200 8099 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 165.00 scf sf +10345 8136 m +gs 1 -1 sc (2) col0 sh gr +% Ellipse +n 10375 8703 683 273 0 360 DrawEllipse gs col0 s gr + +/Times-Roman ff 300.00 scf sf +10200 8774 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 165.00 scf sf +10345 8811 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 435.00 scf sf +5681 3860 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 270.00 scf sf +5896 3914 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 435.00 scf sf +6113 4723 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 270.00 scf sf +6329 4777 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 435.00 scf sf +4386 4345 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 270.00 scf sf +4601 4399 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 435.00 scf sf +7462 4345 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 270.00 scf sf +7677 4399 m +gs 1 -1 sc (3) col0 sh gr +% Ellipse +n 6113 4183 2158 863 0 360 DrawEllipse gs col0 s gr + +% Polyline + [15 45] 45 sd +n 6868 3375 m 6868 3376 l 6867 3379 l 6866 3384 l 6863 3391 l 6860 3401 l + 6856 3414 l 6851 3430 l 6844 3449 l 6836 3470 l 6827 3493 l + 6817 3517 l 6805 3544 l 6792 3571 l 6778 3599 l 6762 3628 l + 6744 3657 l 6723 3687 l 6700 3719 l 6674 3751 l 6645 3785 l + 6612 3819 l 6574 3855 l 6533 3892 l 6486 3930 l 6436 3968 l + 6390 4000 l 6344 4029 l 6300 4056 l 6257 4080 l 6218 4101 l + 6182 4118 l 6150 4132 l 6122 4142 l 6097 4150 l 6075 4156 l + 6056 4159 l 6039 4161 l 6024 4162 l 6009 4162 l 5995 4161 l + 5982 4160 l 5967 4160 l 5951 4161 l 5933 4162 l 5914 4166 l + 5891 4171 l 5864 4178 l 5834 4189 l 5800 4202 l 5762 4218 l + 5719 4238 l 5673 4261 l 5623 4287 l 5571 4315 l 5519 4345 l + 5464 4378 l 5412 4411 l 5363 4443 l 5317 4475 l 5275 4505 l + 5236 4534 l 5200 4562 l 5167 4589 l 5136 4615 l 5107 4640 l + 5080 4665 l 5055 4689 l 5031 4712 l 5008 4735 l 4987 4756 l + 4968 4777 l 4950 4796 l 4934 4814 l 4919 4830 l 4907 4844 l + 4896 4856 l 4888 4866 l 4882 4874 l 4877 4879 l 4874 4882 l + 4873 4884 l + 4872 4885 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5033 3429 m 5033 3431 l 5032 3434 l 5031 3441 l 5029 3451 l 5026 3465 l + 5023 3482 l 5020 3503 l 5017 3526 l 5014 3552 l 5011 3579 l + 5009 3608 l 5008 3638 l 5008 3669 l 5010 3701 l 5013 3734 l + 5018 3769 l 5026 3806 l 5036 3844 l 5050 3884 l 5067 3926 l + 5087 3968 l 5110 4009 l 5136 4047 l 5162 4081 l 5189 4113 l + 5215 4141 l 5242 4167 l 5269 4190 l 5296 4211 l 5323 4231 l + 5349 4249 l 5376 4266 l 5401 4281 l 5425 4295 l 5447 4308 l + 5467 4318 l 5484 4327 l 5497 4334 l 5507 4339 l 5514 4342 l + 5517 4344 l + 5519 4345 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 6544 3860 m 6545 3861 l 6547 3862 l 6552 3865 l 6559 3870 l 6568 3876 l + 6580 3885 l 6594 3895 l 6611 3907 l 6630 3921 l 6651 3936 l + 6673 3953 l 6696 3971 l 6720 3990 l 6744 4011 l 6769 4032 l + 6794 4055 l 6819 4079 l 6845 4105 l 6871 4132 l 6897 4162 l + 6924 4193 l 6951 4228 l 6978 4265 l 7004 4304 l 7030 4345 l + 7056 4390 l 7079 4434 l 7099 4477 l 7116 4517 l 7130 4556 l + 7142 4592 l 7153 4627 l 7161 4660 l 7168 4691 l 7174 4722 l + 7178 4751 l 7182 4780 l 7185 4806 l 7187 4832 l 7189 4855 l + 7190 4875 l 7191 4893 l 7191 4908 l 7192 4920 l 7192 4928 l + 7192 4934 l 7192 4937 l + 7192 4938 l gs col0 s gr [] 0 sd +% Ellipse +n 19875 7011 1024 407 0 360 DrawEllipse gs col0 s gr + +% Polyline + [15 45] 45 sd +n 20233 6597 m 20233 6599 l 20232 6602 l 20230 6608 l 20227 6617 l 20223 6629 l + 20218 6643 l 20211 6659 l 20204 6677 l 20195 6695 l 20184 6715 l + 20172 6735 l 20157 6756 l 20139 6778 l 20118 6801 l 20093 6826 l + 20063 6851 l 20029 6877 l 19996 6899 l 19964 6919 l 19934 6935 l + 19908 6948 l 19886 6957 l 19868 6963 l 19853 6967 l 19840 6968 l + 19829 6968 l 19819 6968 l 19809 6968 l 19798 6968 l 19785 6969 l + 19769 6973 l 19749 6978 l 19726 6987 l 19698 7000 l 19665 7015 l + 19629 7034 l 19592 7055 l 19552 7079 l 19515 7103 l 19483 7126 l + 19454 7147 l 19428 7168 l 19406 7187 l 19385 7205 l 19367 7223 l + 19350 7240 l 19335 7255 l 19322 7270 l 19310 7283 l 19301 7293 l + 19294 7301 l 19290 7307 l 19287 7310 l + 19286 7311 l gs col0 s gr [] 0 sd +% Polyline +15.000 slw +n 19875 6602 m 19874 6603 l 19872 6604 l 19869 6607 l 19864 6610 l 19858 6616 l + 19852 6622 l 19845 6630 l 19839 6640 l 19833 6651 l 19828 6664 l + 19823 6680 l 19821 6699 l 19820 6722 l 19821 6750 l 19824 6782 l + 19829 6812 l 19836 6842 l 19844 6868 l 19852 6890 l 19860 6909 l + 19868 6923 l 19875 6935 l 19883 6944 l 19891 6953 l 19898 6961 l + 19906 6971 l 19914 6983 l 19921 6999 l 19929 7018 l 19936 7043 l + 19943 7072 l 19949 7105 l 19953 7140 l 19955 7179 l 19954 7214 l + 19950 7245 l 19945 7272 l 19939 7297 l 19931 7318 l 19923 7338 l + 19914 7356 l 19905 7372 l 19897 7386 l 19889 7398 l 19883 7407 l + 19879 7413 l 19876 7416 l + 19875 7418 l gs col0 s gr +% Ellipse +7.500 slw +n 20118 8199 1042 416 0 360 DrawEllipse gs col0 s gr + +% Polyline + [15 45] 45 sd +n 20458 7797 m 20458 7799 l 20457 7802 l 20455 7808 l 20452 7817 l 20448 7829 l + 20443 7843 l 20436 7859 l 20429 7877 l 20420 7895 l 20409 7915 l + 20397 7935 l 20382 7956 l 20364 7978 l 20343 8001 l 20318 8026 l + 20288 8051 l 20254 8077 l 20221 8099 l 20189 8119 l 20159 8135 l + 20133 8148 l 20111 8157 l 20093 8163 l 20078 8167 l 20065 8168 l + 20054 8168 l 20044 8168 l 20034 8168 l 20023 8168 l 20010 8169 l + 19994 8173 l 19974 8178 l 19951 8187 l 19923 8200 l 19890 8215 l + 19854 8234 l 19817 8255 l 19777 8279 l 19740 8303 l 19708 8326 l + 19679 8347 l 19653 8368 l 19631 8387 l 19610 8405 l 19592 8423 l + 19575 8440 l 19560 8455 l 19547 8470 l 19535 8483 l 19526 8493 l + 19519 8501 l 19515 8507 l 19512 8510 l + 19511 8511 l gs col0 s gr [] 0 sd +% Polyline +15.000 slw +n 20400 7838 m 20398 7838 l 20394 7839 l 20387 7841 l 20377 7844 l 20363 7847 l + 20347 7851 l 20328 7856 l 20307 7862 l 20285 7869 l 20262 7876 l + 20238 7884 l 20213 7893 l 20187 7904 l 20159 7916 l 20130 7931 l + 20099 7947 l 20067 7965 l 20040 7982 l 20014 7998 l 19992 8012 l + 19972 8023 l 19956 8032 l 19941 8037 l 19929 8041 l 19919 8043 l + 19909 8044 l 19901 8044 l 19893 8044 l 19885 8046 l 19877 8049 l + 19869 8055 l 19861 8064 l 19853 8077 l 19846 8094 l 19840 8117 l + 19837 8144 l 19837 8175 l 19841 8205 l 19849 8236 l 19860 8266 l + 19873 8296 l 19887 8325 l 19904 8353 l 19921 8380 l 19940 8407 l + 19959 8433 l 19980 8459 l 20000 8483 l 20020 8507 l 20039 8529 l + 20058 8550 l 20074 8568 l 20088 8583 l 20099 8595 l 20108 8604 l + 20113 8610 l 20117 8614 l + 20118 8615 l gs col0 s gr +% Polyline +0 slj +30.000 slw +gs clippath +9248 6816 m 9555 6728 l 9522 6613 l 9215 6701 l 9215 6701 l 9463 6693 l 9248 6816 l cp +eoclip +n 9000 6825 m + 9525 6675 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 9248 6816 m 9463 6693 l 9215 6701 l 9248 6816 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +9214 7366 m 9531 7411 l 9548 7292 l 9231 7247 l 9231 7247 l 9461 7341 l 9214 7366 l cp +eoclip +n 9000 7275 m + 9525 7350 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 9214 7366 m 9461 7341 l 9231 7247 l 9214 7366 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +9153 8114 m 9470 8083 l 9458 7963 l 9141 7995 l 9141 7995 l 9386 8031 l 9153 8114 l cp +eoclip +n 8700 8100 m + 9450 8025 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 9153 8114 m 9386 8031 l 9141 7995 l 9153 8114 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +9139 8629 m 9454 8686 l 9475 8568 l 9160 8511 l 9160 8511 l 9386 8613 l 9139 8629 l cp +eoclip +n 8625 8475 m + 9450 8625 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 9139 8629 m 9386 8613 l 9160 8511 l 9139 8629 l cp gs 0.00 setgray ef gr col0 s +/Times-Roman ff 600.00 scf sf +9600 1875 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 360.00 scf sf +9900 1950 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 600.00 scf sf +10200 3075 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 360.00 scf sf +10500 3150 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 600.00 scf sf +7800 2550 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 360.00 scf sf +8100 2625 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 600.00 scf sf +12075 2550 m +gs 1 -1 sc (P) col0 sh gr +/Times-Roman ff 360.00 scf sf +12375 2625 m +gs 1 -1 sc (3) col0 sh gr +% Ellipse +7.500 slw +n 10200 2325 3000 1200 0 360 DrawEllipse gs col0 s gr + +% Polyline +2 slj + [15 45] 45 sd +n 11250 1200 m 11250 1201 l 11249 1203 l 11248 1208 l 11246 1215 l 11243 1225 l + 11239 1237 l 11234 1253 l 11227 1272 l 11220 1294 l 11211 1318 l + 11201 1344 l 11190 1373 l 11177 1403 l 11163 1434 l 11148 1467 l + 11131 1501 l 11112 1535 l 11091 1570 l 11068 1606 l 11043 1643 l + 11015 1681 l 10984 1720 l 10949 1760 l 10910 1802 l 10867 1845 l + 10820 1889 l 10768 1934 l 10711 1980 l 10650 2025 l 10597 2062 l + 10544 2097 l 10491 2130 l 10440 2160 l 10392 2186 l 10347 2210 l + 10305 2230 l 10267 2247 l 10233 2261 l 10202 2272 l 10174 2280 l + 10149 2287 l 10126 2291 l 10106 2293 l 10087 2295 l 10070 2295 l + 10054 2294 l 10037 2294 l 10021 2293 l 10005 2293 l 9987 2293 l + 9968 2294 l 9947 2296 l 9924 2300 l 9897 2306 l 9868 2314 l + 9835 2325 l 9798 2338 l 9757 2355 l 9712 2374 l 9664 2396 l + 9611 2422 l 9555 2450 l 9496 2482 l 9436 2515 l 9375 2550 l + 9312 2588 l 9251 2626 l 9193 2663 l 9138 2699 l 9087 2735 l + 9039 2770 l 8994 2803 l 8952 2835 l 8912 2867 l 8875 2897 l + 8840 2927 l 8807 2956 l 8776 2984 l 8746 3012 l 8717 3039 l + 8690 3066 l 8665 3091 l 8641 3116 l 8618 3140 l 8596 3163 l + 8576 3185 l 8558 3205 l 8542 3223 l 8527 3239 l 8515 3254 l + 8504 3266 l 8495 3276 l 8488 3285 l 8483 3291 l 8479 3295 l + 8477 3298 l 8476 3299 l + 8475 3300 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 8700 1275 m 8700 1276 l 8699 1280 l 8698 1285 l 8696 1295 l 8694 1307 l + 8691 1323 l 8687 1343 l 8684 1366 l 8680 1392 l 8676 1421 l + 8673 1451 l 8670 1484 l 8667 1517 l 8666 1552 l 8665 1589 l + 8666 1626 l 8668 1664 l 8672 1704 l 8679 1745 l 8687 1787 l + 8698 1832 l 8712 1878 l 8730 1926 l 8751 1976 l 8775 2025 l + 8800 2070 l 8827 2112 l 8856 2152 l 8884 2190 l 8913 2224 l + 8943 2255 l 8972 2284 l 9001 2311 l 9031 2336 l 9060 2360 l + 9089 2382 l 9118 2402 l 9147 2422 l 9176 2440 l 9204 2457 l + 9230 2473 l 9256 2487 l 9279 2500 l 9301 2512 l 9320 2522 l + 9336 2530 l 9349 2537 l 9359 2542 l 9367 2546 l 9371 2548 l + 9374 2549 l + 9375 2550 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 10800 1875 m 10801 1876 l 10803 1877 l 10807 1880 l 10814 1884 l 10823 1890 l + 10834 1898 l 10849 1909 l 10866 1921 l 10885 1935 l 10907 1951 l + 10931 1968 l 10956 1987 l 10983 2008 l 11011 2030 l 11040 2053 l + 11069 2077 l 11098 2102 l 11128 2129 l 11159 2157 l 11189 2187 l + 11220 2218 l 11251 2251 l 11283 2286 l 11315 2324 l 11347 2364 l + 11380 2407 l 11412 2453 l 11444 2501 l 11475 2550 l 11506 2604 l + 11534 2657 l 11559 2708 l 11581 2758 l 11600 2805 l 11617 2850 l + 11631 2894 l 11643 2935 l 11654 2975 l 11663 3013 l 11670 3050 l + 11676 3086 l 11682 3121 l 11686 3155 l 11689 3187 l 11692 3217 l + 11695 3246 l 11696 3272 l 11698 3295 l 11698 3316 l 11699 3333 l + 11700 3348 l 11700 3358 l 11700 3366 l 11700 3371 l 11700 3374 l + + 11700 3375 l gs col0 s gr [] 0 sd +% Ellipse +n 21638 4258 2159 863 0 360 DrawEllipse gs col0 s gr + +% Polyline + [15 45] 45 sd +n 22393 3449 m 22393 3450 l 22392 3453 l 22391 3458 l 22388 3465 l 22385 3475 l + 22381 3488 l 22376 3504 l 22369 3523 l 22361 3544 l 22352 3567 l + 22342 3591 l 22330 3617 l 22317 3645 l 22303 3673 l 22287 3701 l + 22269 3731 l 22248 3761 l 22225 3793 l 22199 3825 l 22170 3858 l + 22137 3893 l 22099 3929 l 22058 3966 l 22011 4004 l 21961 4042 l + 21915 4074 l 21869 4103 l 21825 4131 l 21782 4154 l 21743 4175 l + 21707 4192 l 21675 4206 l 21647 4217 l 21622 4225 l 21600 4230 l + 21581 4234 l 21564 4236 l 21549 4236 l 21534 4236 l 21520 4235 l + 21507 4235 l 21492 4235 l 21476 4235 l 21459 4237 l 21439 4240 l + 21416 4246 l 21389 4253 l 21359 4264 l 21325 4277 l 21287 4293 l + 21244 4313 l 21198 4336 l 21148 4362 l 21096 4390 l 21044 4420 l + 20989 4453 l 20937 4486 l 20887 4518 l 20842 4549 l 20800 4580 l + 20761 4609 l 20725 4636 l 20692 4663 l 20661 4689 l 20632 4715 l + 20605 4739 l 20579 4763 l 20555 4787 l 20533 4809 l 20512 4831 l + 20492 4851 l 20474 4871 l 20458 4888 l 20443 4905 l 20431 4919 l + 20420 4930 l 20412 4940 l 20406 4948 l 20401 4953 l 20398 4956 l + 20397 4958 l + 20396 4959 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 20558 3503 m 20558 3505 l 20557 3508 l 20556 3515 l 20554 3525 l 20551 3539 l + 20548 3556 l 20545 3577 l 20542 3600 l 20539 3625 l 20536 3653 l + 20534 3682 l 20533 3712 l 20533 3743 l 20535 3775 l 20538 3808 l + 20543 3843 l 20551 3880 l 20561 3918 l 20575 3958 l 20592 4000 l + 20612 4042 l 20635 4083 l 20661 4121 l 20687 4156 l 20714 4187 l + 20740 4216 l 20767 4241 l 20794 4265 l 20821 4286 l 20848 4306 l + 20874 4324 l 20901 4341 l 20926 4356 l 20950 4370 l 20972 4383 l + 20992 4393 l 21009 4402 l 21022 4409 l 21032 4414 l 21039 4417 l + 21042 4419 l + 21044 4420 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 22069 3934 m 22070 3935 l 22072 3936 l 22077 3939 l 22084 3944 l 22093 3950 l + 22105 3959 l 22119 3969 l 22136 3981 l 22155 3995 l 22176 4011 l + 22198 4027 l 22221 4045 l 22245 4065 l 22269 4085 l 22294 4107 l + 22319 4129 l 22344 4153 l 22370 4179 l 22396 4207 l 22422 4236 l + 22449 4268 l 22476 4303 l 22503 4340 l 22529 4379 l 22555 4420 l + 22581 4465 l 22604 4509 l 22624 4552 l 22641 4592 l 22655 4631 l + 22667 4667 l 22678 4702 l 22686 4735 l 22693 4767 l 22699 4797 l + 22703 4827 l 22707 4855 l 22710 4882 l 22712 4907 l 22714 4930 l + 22715 4950 l 22716 4968 l 22716 4983 l 22717 4995 l 22717 5003 l + 22717 5009 l 22717 5012 l + 22717 5013 l gs col0 s gr [] 0 sd +% Polyline +15.000 slw +n 21638 3395 m 21637 3396 l 21635 3397 l 21632 3399 l 21628 3402 l 21622 3407 l + 21614 3414 l 21605 3421 l 21596 3431 l 21586 3442 l 21576 3454 l + 21566 3468 l 21556 3484 l 21547 3502 l 21539 3523 l 21532 3546 l + 21527 3573 l 21523 3603 l 21521 3638 l 21521 3678 l 21524 3723 l + 21530 3773 l 21537 3814 l 21545 3855 l 21554 3895 l 21564 3932 l + 21574 3965 l 21585 3995 l 21596 4022 l 21607 4045 l 21617 4064 l + 21628 4081 l 21638 4096 l 21649 4109 l 21659 4121 l 21669 4133 l + 21679 4144 l 21689 4156 l 21699 4170 l 21710 4185 l 21720 4203 l + 21730 4224 l 21741 4249 l 21751 4277 l 21761 4310 l 21771 4347 l + 21780 4388 l 21787 4433 l 21794 4480 l 21799 4528 l 21802 4583 l + 21802 4636 l 21800 4685 l 21796 4730 l 21790 4771 l 21783 4809 l + 21774 4844 l 21765 4877 l 21754 4907 l 21743 4936 l 21731 4963 l + 21719 4988 l 21706 5011 l 21694 5033 l 21683 5053 l 21672 5070 l + 21663 5085 l 21655 5097 l 21648 5106 l 21644 5113 l 21640 5118 l + 21639 5120 l + 21638 5121 l gs col0 s gr +% Ellipse +7.500 slw +n 22373 6375 1412 565 0 360 DrawEllipse gs col0 s gr + +% Polyline + [15 45] 45 sd +n 22867 5846 m 22867 5848 l 22866 5851 l 22864 5858 l 22861 5867 l 22856 5880 l + 22851 5896 l 22844 5914 l 22836 5934 l 22826 5956 l 22815 5979 l + 22802 6004 l 22787 6029 l 22769 6054 l 22749 6081 l 22725 6110 l + 22697 6139 l 22664 6170 l 22626 6202 l 22584 6234 l 22547 6260 l + 22509 6283 l 22474 6304 l 22441 6321 l 22413 6335 l 22388 6345 l + 22366 6352 l 22348 6357 l 22333 6360 l 22319 6361 l 22307 6361 l + 22296 6360 l 22284 6360 l 22272 6360 l 22258 6361 l 22242 6363 l + 22223 6368 l 22201 6375 l 22174 6385 l 22143 6398 l 22108 6415 l + 22069 6434 l 22027 6457 l 21984 6481 l 21938 6508 l 21896 6536 l + 21857 6562 l 21822 6587 l 21790 6611 l 21761 6634 l 21735 6656 l + 21711 6677 l 21689 6697 l 21668 6717 l 21649 6736 l 21632 6754 l + 21616 6771 l 21602 6786 l 21590 6799 l 21580 6811 l 21572 6820 l + 21567 6826 l 21563 6830 l 21561 6833 l + 21560 6834 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 21666 5881 m 21666 5883 l 21665 5887 l 21663 5895 l 21661 5906 l 21659 5920 l + 21657 5938 l 21654 5957 l 21652 5979 l 21650 6002 l 21650 6027 l + 21651 6052 l 21653 6079 l 21657 6106 l 21664 6136 l 21673 6167 l + 21686 6200 l 21702 6234 l 21721 6266 l 21741 6296 l 21763 6322 l + 21784 6346 l 21805 6366 l 21827 6384 l 21848 6401 l 21870 6416 l + 21890 6429 l 21911 6441 l 21929 6452 l 21946 6461 l 21960 6469 l + 21971 6474 l 21978 6478 l 21982 6480 l + 21984 6481 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 22655 6163 m 22657 6164 l 22660 6166 l 22666 6170 l 22674 6176 l 22686 6185 l + 22700 6195 l 22717 6207 l 22735 6221 l 22754 6236 l 22775 6252 l + 22796 6270 l 22817 6289 l 22838 6310 l 22860 6332 l 22882 6357 l + 22905 6384 l 22928 6414 l 22951 6446 l 22973 6481 l 22993 6516 l + 23010 6551 l 23025 6583 l 23037 6614 l 23047 6643 l 23054 6670 l + 23061 6695 l 23066 6720 l 23069 6743 l 23072 6765 l 23075 6786 l + 23076 6806 l 23077 6823 l 23078 6838 l 23079 6849 l 23079 6858 l + 23079 6864 l 23079 6867 l + 23079 6869 l gs col0 s gr [] 0 sd +% Polyline +15.000 slw +n 22373 5810 m 22372 5810 l 22371 5811 l 22368 5813 l 22364 5816 l 22359 5820 l + 22353 5826 l 22347 5832 l 22339 5840 l 22332 5849 l 22325 5859 l + 22318 5871 l 22312 5884 l 22306 5900 l 22302 5918 l 22298 5938 l + 22296 5962 l 22296 5990 l 22298 6022 l 22302 6058 l 22308 6092 l + 22315 6126 l 22323 6158 l 22332 6186 l 22341 6210 l 22350 6231 l + 22358 6248 l 22367 6262 l 22376 6274 l 22384 6284 l 22393 6293 l + 22401 6303 l 22410 6313 l 22418 6326 l 22427 6341 l 22435 6359 l + 22444 6381 l 22452 6407 l 22460 6438 l 22468 6473 l 22474 6512 l + 22478 6552 l 22480 6595 l 22480 6636 l 22477 6673 l 22473 6706 l + 22468 6736 l 22461 6763 l 22453 6789 l 22444 6812 l 22435 6833 l + 22426 6853 l 22416 6871 l 22407 6888 l 22398 6902 l 22390 6914 l + 22384 6924 l 22379 6931 l 22376 6936 l 22374 6939 l + 22373 6940 l gs col0 s gr +% Ellipse +7.500 slw +n 17550 2325 3000 1200 0 360 DrawEllipse gs col0 s gr + +% Polyline + [15 45] 45 sd +n 18600 1200 m 18600 1201 l 18599 1203 l 18598 1208 l 18596 1215 l 18593 1225 l + 18589 1237 l 18584 1253 l 18577 1272 l 18570 1294 l 18561 1318 l + 18551 1344 l 18540 1373 l 18527 1403 l 18513 1434 l 18498 1467 l + 18481 1501 l 18462 1535 l 18441 1570 l 18418 1606 l 18393 1643 l + 18365 1681 l 18334 1720 l 18299 1760 l 18260 1802 l 18217 1845 l + 18170 1889 l 18118 1934 l 18061 1980 l 18000 2025 l 17947 2062 l + 17894 2097 l 17841 2130 l 17790 2160 l 17742 2186 l 17697 2210 l + 17655 2230 l 17617 2247 l 17583 2261 l 17552 2272 l 17524 2280 l + 17499 2287 l 17476 2291 l 17456 2293 l 17437 2295 l 17420 2295 l + 17404 2294 l 17387 2294 l 17371 2293 l 17355 2293 l 17337 2293 l + 17318 2294 l 17297 2296 l 17274 2300 l 17247 2306 l 17218 2314 l + 17185 2325 l 17148 2338 l 17107 2355 l 17062 2374 l 17014 2396 l + 16961 2422 l 16905 2450 l 16846 2482 l 16786 2515 l 16725 2550 l + 16662 2588 l 16601 2626 l 16543 2663 l 16488 2699 l 16437 2735 l + 16389 2770 l 16344 2803 l 16302 2835 l 16262 2867 l 16225 2897 l + 16190 2927 l 16157 2956 l 16126 2984 l 16096 3012 l 16067 3039 l + 16040 3066 l 16015 3091 l 15991 3116 l 15968 3140 l 15946 3163 l + 15926 3185 l 15908 3205 l 15892 3223 l 15877 3239 l 15865 3254 l + 15854 3266 l 15845 3276 l 15838 3285 l 15833 3291 l 15829 3295 l + 15827 3298 l 15826 3299 l + 15825 3300 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 16050 1275 m 16050 1276 l 16049 1280 l 16048 1285 l 16046 1295 l 16044 1307 l + 16041 1323 l 16037 1343 l 16034 1366 l 16030 1392 l 16026 1421 l + 16023 1451 l 16020 1484 l 16017 1517 l 16016 1552 l 16015 1589 l + 16016 1626 l 16018 1664 l 16022 1704 l 16029 1745 l 16037 1787 l + 16048 1832 l 16062 1878 l 16080 1926 l 16101 1976 l 16125 2025 l + 16150 2070 l 16177 2112 l 16206 2152 l 16234 2190 l 16263 2224 l + 16293 2255 l 16322 2284 l 16351 2311 l 16381 2336 l 16410 2360 l + 16439 2382 l 16468 2402 l 16497 2422 l 16526 2440 l 16554 2457 l + 16580 2473 l 16606 2487 l 16629 2500 l 16651 2512 l 16670 2522 l + 16686 2530 l 16699 2537 l 16709 2542 l 16717 2546 l 16721 2548 l + 16724 2549 l + 16725 2550 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 18150 1875 m 18151 1876 l 18153 1877 l 18157 1880 l 18164 1884 l 18173 1890 l + 18184 1898 l 18199 1909 l 18216 1921 l 18235 1935 l 18257 1951 l + 18281 1968 l 18306 1987 l 18333 2008 l 18361 2030 l 18390 2053 l + 18419 2077 l 18448 2102 l 18478 2129 l 18509 2157 l 18539 2187 l + 18570 2218 l 18601 2251 l 18633 2286 l 18665 2324 l 18697 2364 l + 18730 2407 l 18762 2453 l 18794 2501 l 18825 2550 l 18856 2604 l + 18884 2657 l 18909 2708 l 18931 2758 l 18950 2805 l 18967 2850 l + 18981 2894 l 18993 2935 l 19004 2975 l 19013 3013 l 19020 3050 l + 19026 3086 l 19032 3121 l 19036 3155 l 19039 3187 l 19042 3217 l + 19045 3246 l 19046 3272 l 19048 3295 l 19048 3316 l 19049 3333 l + 19050 3348 l 19050 3358 l 19050 3366 l 19050 3371 l 19050 3374 l + + 19050 3375 l gs col0 s gr [] 0 sd +% Polyline +15.000 slw +n 17550 1125 m 17549 1125 l 17548 1126 l 17545 1128 l 17541 1131 l 17535 1136 l + 17528 1141 l 17519 1148 l 17510 1157 l 17499 1167 l 17487 1179 l + 17475 1192 l 17463 1207 l 17451 1223 l 17440 1242 l 17429 1262 l + 17419 1284 l 17410 1309 l 17402 1337 l 17396 1368 l 17391 1404 l + 17388 1443 l 17387 1487 l 17389 1537 l 17393 1591 l 17400 1650 l + 17408 1700 l 17418 1750 l 17429 1799 l 17440 1845 l 17453 1889 l + 17466 1928 l 17479 1964 l 17492 1996 l 17505 2024 l 17518 2049 l + 17531 2070 l 17544 2089 l 17556 2106 l 17569 2122 l 17581 2136 l + 17594 2150 l 17606 2164 l 17618 2179 l 17631 2194 l 17643 2212 l + 17656 2232 l 17669 2255 l 17681 2281 l 17694 2311 l 17706 2346 l + 17719 2385 l 17730 2428 l 17742 2476 l 17752 2528 l 17761 2584 l + 17769 2641 l 17775 2700 l 17779 2766 l 17780 2830 l 17778 2890 l + 17775 2946 l 17769 2998 l 17761 3046 l 17752 3091 l 17742 3133 l + 17731 3173 l 17719 3210 l 17705 3245 l 17692 3278 l 17677 3310 l + 17662 3340 l 17648 3368 l 17633 3394 l 17619 3418 l 17606 3440 l + 17594 3460 l 17583 3477 l 17573 3491 l 17565 3503 l 17559 3512 l + 17555 3518 l 17552 3522 l 17551 3524 l + 17550 3525 l gs col0 s gr +% Ellipse +7.500 slw +n 12300 6721 439 175 0 360 DrawEllipse gs col0 s gr + +% Ellipse +n 12300 8071 439 175 0 360 DrawEllipse gs col0 s gr + +% Ellipse +n 12300 8746 439 175 0 360 DrawEllipse gs col0 s gr + +% Ellipse +n 12311 7391 450 179 0 360 DrawEllipse gs col0 s gr + +% Polyline +0 slj +30.000 slw +gs clippath +11395 6735 m 11715 6735 l 11715 6615 l 11395 6615 l 11395 6615 l 11635 6675 l 11395 6735 l cp +eoclip +n 11175 6675 m + 11700 6675 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 11395 6735 m 11635 6675 l 11395 6615 l 11395 6735 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +11395 7410 m 11715 7410 l 11715 7290 l 11395 7290 l 11395 7290 l 11635 7350 l 11395 7410 l cp +eoclip +n 11175 7350 m + 11700 7350 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 11395 7410 m 11635 7350 l 11395 7290 l 11395 7410 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +11395 8085 m 11715 8085 l 11715 7965 l 11395 7965 l 11395 7965 l 11635 8025 l 11395 8085 l cp +eoclip +n 11175 8025 m + 11700 8025 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 11395 8085 m 11635 8025 l 11395 7965 l 11395 8085 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +11395 8760 m 11715 8760 l 11715 8640 l 11395 8640 l 11395 8640 l 11635 8700 l 11395 8760 l cp +eoclip +n 11175 8700 m + 11700 8700 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 11395 8760 m 11635 8700 l 11395 8640 l 11395 8760 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +7245 3059 m 7000 3263 l 7076 3355 l 7322 3151 l 7322 3151 l 7100 3259 l 7245 3059 l cp +eoclip +n 7500 2925 m + 7050 3300 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 7245 3059 m 7100 3259 l 7322 3151 l 7245 3059 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +5633 5257 m 5533 5560 l 5647 5598 l 5747 5295 l 5747 5295 l 5615 5504 l 5633 5257 l cp +eoclip +n 5745 5115 m + 5595 5565 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 5633 5257 m 5615 5504 l 5747 5295 l 5633 5257 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +20619 3023 m 20341 2865 l 20282 2969 l 20559 3128 l 20559 3128 l 20381 2957 l 20619 3023 l cp +eoclip +n 20850 3225 m + 20325 2925 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 20619 3023 m 20381 2957 l 20559 3128 l 20619 3023 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +22191 5451 m 22103 5144 l 21988 5177 l 22076 5484 l 22076 5484 l 22068 5237 l 22191 5451 l cp +eoclip +n 22200 5700 m + 22050 5175 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 22191 5451 m 22068 5237 l 22076 5484 l 22191 5451 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +18514 6841 m 18831 6886 l 18848 6767 l 18531 6722 l 18531 6722 l 18761 6816 l 18514 6841 l cp +eoclip +n 18300 6750 m + 18825 6825 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 18514 6841 m 18761 6816 l 18531 6722 l 18514 6841 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +18568 7375 m 18862 7249 l 18815 7138 l 18520 7265 l 18520 7265 l 18765 7226 l 18568 7375 l cp +eoclip +n 18300 7425 m + 18825 7200 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 18568 7375 m 18765 7226 l 18520 7265 l 18568 7375 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +18670 8160 m 18990 8160 l 18990 8040 l 18670 8040 l 18670 8040 l 18910 8100 l 18670 8160 l cp +eoclip +n 18300 8100 m + 18975 8100 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 18670 8160 m 18910 8100 l 18670 8040 l 18670 8160 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +18789 8643 m 19086 8525 l 19041 8413 l 18744 8532 l 18744 8532 l 18990 8499 l 18789 8643 l cp +eoclip +n 18300 8775 m + 19050 8475 l gs col0 s gr gr + +% arrowhead +15.000 slw +n 18789 8643 m 18990 8499 l 18744 8532 l 18789 8643 l cp gs 0.00 setgray ef gr col0 s +% Polyline +2 slj +30.000 slw +gs clippath +6078 7933 m 6359 8084 l 6416 7979 l 6134 7827 l 6134 7827 l 6318 7994 l 6078 7933 l cp +eoclip +n 5400 6900 m 5401 6903 l 5403 6908 l 5406 6919 l 5412 6935 l 5419 6957 l + 5429 6984 l 5440 7017 l 5453 7053 l 5467 7092 l 5482 7133 l + 5497 7175 l 5513 7216 l 5529 7256 l 5545 7294 l 5560 7330 l + 5575 7364 l 5590 7396 l 5605 7425 l 5619 7453 l 5634 7478 l + 5649 7502 l 5664 7525 l 5679 7547 l 5696 7567 l 5713 7588 l + 5729 7606 l 5746 7624 l 5764 7641 l 5783 7659 l 5803 7676 l + 5824 7693 l 5848 7711 l 5873 7729 l 5900 7748 l 5928 7767 l + 5959 7787 l 5992 7808 l 6027 7829 l 6063 7851 l 6101 7873 l + 6138 7895 l 6176 7916 l 6213 7936 l 6247 7956 l 6278 7973 l + 6306 7988 l 6329 8000 l 6347 8010 l + 6375 8025 l gs col0 s gr gr + +% arrowhead +0 slj +15.000 slw +n 6078 7933 m 6318 7994 l 6134 7827 l 6078 7933 l cp gs 0.00 setgray ef gr col0 s +% Polyline +2 slj +30.000 slw +gs clippath +6443 7024 m 6762 7035 l 6767 6915 l 6447 6904 l 6447 6904 l 6685 6973 l 6443 7024 l cp +eoclip +n 6150 6825 m 6153 6826 l 6160 6830 l 6171 6835 l 6187 6843 l 6208 6852 l + 6231 6863 l 6256 6875 l 6281 6886 l 6305 6897 l 6328 6907 l + 6349 6916 l 6368 6923 l 6386 6930 l 6403 6936 l 6419 6941 l + 6435 6946 l 6450 6950 l 6467 6954 l 6485 6958 l 6503 6961 l + 6523 6963 l 6544 6965 l 6567 6967 l 6592 6969 l 6619 6971 l + 6647 6972 l 6675 6973 l 6700 6974 l 6721 6974 l + 6750 6975 l gs col0 s gr gr + +% arrowhead +0 slj +15.000 slw +n 6443 7024 m 6685 6973 l 6447 6904 l 6443 7024 l cp gs 0.00 setgray ef gr col0 s +% Polyline +2 slj +30.000 slw +gs clippath +21551 7122 m 21857 7027 l 21821 6913 l 21515 7007 l 21515 7007 l 21763 6994 l 21551 7122 l cp +eoclip +n 21000 7050 m 21001 7050 l 21004 7051 l 21012 7052 l 21026 7055 l 21047 7058 l + 21073 7062 l 21102 7067 l 21134 7072 l 21166 7076 l 21196 7080 l + 21226 7084 l 21253 7086 l 21278 7088 l 21302 7090 l 21324 7090 l + 21346 7090 l 21367 7089 l 21388 7088 l 21407 7086 l 21426 7083 l + 21446 7080 l 21467 7076 l 21490 7071 l 21514 7065 l 21540 7059 l + 21569 7051 l 21599 7043 l 21631 7034 l 21664 7024 l 21697 7014 l + 21729 7005 l 21758 6996 l 21783 6988 l + 21825 6975 l gs col0 s gr gr + +% arrowhead +0 slj +15.000 slw +n 21551 7122 m 21763 6994 l 21515 7007 l 21551 7122 l cp gs 0.00 setgray ef gr col0 s +% Polyline +2 slj +30.000 slw +gs clippath +22271 7425 m 22410 7137 l 22302 7085 l 22163 7372 l 22163 7372 l 22322 7183 l 22271 7425 l cp +eoclip +n 21375 8175 m 21377 8174 l 21383 8171 l 21392 8165 l 21406 8157 l 21426 8145 l + 21451 8130 l 21480 8113 l 21512 8093 l 21548 8072 l 21584 8049 l + 21622 8026 l 21658 8003 l 21694 7980 l 21728 7958 l 21760 7936 l + 21791 7916 l 21819 7896 l 21845 7877 l 21869 7858 l 21892 7840 l + 21913 7822 l 21933 7804 l 21952 7786 l 21970 7768 l 21988 7750 l + 22004 7731 l 22021 7712 l 22037 7692 l 22053 7671 l 22069 7649 l + 22085 7625 l 22101 7600 l 22118 7574 l 22135 7545 l 22153 7514 l + 22171 7481 l 22189 7447 l 22208 7411 l 22228 7373 l 22247 7336 l + 22266 7299 l 22283 7263 l 22299 7230 l 22314 7201 l 22326 7176 l + 22335 7156 l + 22350 7125 l gs col0 s gr gr + +% arrowhead +0 slj +15.000 slw +n 22271 7425 m 22322 7183 l 22163 7372 l 22271 7425 l cp gs 0.00 setgray ef gr col0 s +% here ends figure; +% +% here starts figure with depth 40 +% Polyline +0 slj +0 slc +0.000 slw +n 6577 7797 m 6525 7797 l 6525 7745 l 6577 7745 l + cp gs col7 1.00 shd ef gr +% Polyline +n 8625 8613 m 8573 8613 l 8573 8561 l 8625 8561 l + cp gs col7 1.00 shd ef gr +% Polyline +n 6952 6672 m 6900 6672 l 6900 6620 l 6952 6620 l + cp gs col7 1.00 shd ef gr +% Polyline +n 9000 7488 m 8948 7488 l 8948 7436 l 9000 7436 l + cp gs col7 1.00 shd ef gr +% Polyline +n 4120 5715 m 4050 5715 l 4050 5645 l 4120 5645 l + cp gs col7 1.00 shd ef gr +% Polyline +n 6900 6825 m 6830 6825 l 6830 6755 l 6900 6755 l + cp gs col7 1.00 shd ef gr +% Polyline +n 9710 6423 m 9675 6423 l 9675 6388 l 9710 6388 l + cp gs col7 1.00 shd ef gr +% Polyline +n 11074 6967 m 11039 6967 l 11039 6932 l 11074 6932 l + cp gs col7 1.00 shd ef gr +% Polyline +n 9710 7098 m 9675 7098 l 9675 7063 l 9710 7063 l + cp gs col7 1.00 shd ef gr +% Polyline +n 11074 7642 m 11039 7642 l 11039 7607 l 11074 7607 l + cp gs col7 1.00 shd ef gr +% Polyline +n 9710 7773 m 9675 7773 l 9675 7738 l 9710 7738 l + cp gs col7 1.00 shd ef gr +% Polyline +n 11074 8317 m 11039 8317 l 11039 8282 l 11074 8282 l + cp gs col7 1.00 shd ef gr +% Polyline +n 9710 8448 m 9675 8448 l 9675 8413 l 9710 8413 l + cp gs col7 1.00 shd ef gr +% Polyline +n 11074 8992 m 11039 8992 l 11039 8957 l 11074 8957 l + cp gs col7 1.00 shd ef gr +% Polyline +n 4008 3375 m 3900 3375 l 3900 3267 l 4008 3267 l + cp gs col7 1.00 shd ef gr +% Polyline +n 8325 5100 m 8217 5100 l 8217 4992 l 8325 4992 l + cp gs col7 1.00 shd ef gr +% Polyline +n 18877 6597 m 18825 6597 l 18825 6545 l 18877 6545 l + cp gs col7 1.00 shd ef gr +% Polyline +n 20925 7413 m 20873 7413 l 20873 7361 l 20925 7361 l + cp gs col7 1.00 shd ef gr +% Polyline +n 19102 7797 m 19050 7797 l 19050 7745 l 19102 7745 l + cp gs col7 1.00 shd ef gr +% Polyline +n 21150 8613 m 21098 8613 l 21098 8561 l 21150 8561 l + cp gs col7 1.00 shd ef gr +% Polyline +n 7275 1200 m 7125 1200 l 7125 1050 l 7275 1050 l + cp gs col7 1.00 shd ef gr +% Polyline +n 13275 3600 m 13125 3600 l 13125 3450 l 13275 3450 l + cp gs col7 1.00 shd ef gr +% Polyline +n 19533 3449 m 19425 3449 l 19425 3341 l 19533 3341 l + cp gs col7 1.00 shd ef gr +% Polyline +n 23850 5175 m 23742 5175 l 23742 5067 l 23850 5067 l + cp gs col7 1.00 shd ef gr +% Polyline +n 20996 5846 m 20925 5846 l 20925 5775 l 20996 5775 l + cp gs col7 1.00 shd ef gr +% Polyline +n 23820 6975 m 23749 6975 l 23749 6904 l 23820 6904 l + cp gs col7 1.00 shd ef gr +% Polyline +n 14625 1200 m 14475 1200 l 14475 1050 l 14625 1050 l + cp gs col7 1.00 shd ef gr +% here ends figure; +$F2psEnd +rs +showpage +%%Trailer +%EOF diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/p_f.tex scotch-6.0.6/doc/src/ptscotch/p_f.tex --- scotch-6.0.4.dfsg1/doc/src/ptscotch/p_f.tex 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/p_f.tex 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,143 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Titre : s_f.tex % +% Sujet : Manuel de l'utilisateur % +% du projet 'Scotch' % +% Formats de fichiers 5.0 % +% Auteur : Francois Pellegrini % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Files and data structures} +\label{sec-file} + +For the sake of portability and readability, all the data files shared +by the different programs of the \scotch\ project are coded in plain +ASCII text exclusively. Although we may speak of ``lines'' when +describing file formats, text-formatting characters such as newlines +or tabulations are not mandatory, and are not taken into account when +files are read. They are only used to provide better readability and +understanding. Whenever numbers are used to label objects, and unless +explicitely stated, {\bf numberings always start from zero}, not one. + +\subsection{Distributed graph files} +\label{sec-file-dsgraph} + +Because even very large graphs are most often stored in the form of +centralized files, the distributed graph loading routine of the +\ptscotch\ package, as well as all parallel programs which handle +distributed graphs, are able to read centralized graph files in the +\scotch\ format and to scatter them on the fly across the available +processors (the format of centralized \scotch\ graph files is +described in the {\it\scotch\ User's Guide}~\scotchcitesuser). +However, in order to reduce loading time, a distributed graph format +has been designed, so that the different file fragments which comprise +distributed graph files can be read in parallel and be stored on +local disks on the nodes of a parallel or grid cluster. +\\ + +Distributed graph files, which usually end in ``{\tt \@.dgr}'', +describe fragments of valuated graphs, which can be valuated process +graphs to be mapped onto target architectures, or graphs representing +the adjacency structures of matrices to order. + +In \scotch, graphs are represented by means of adjacency lists: the +definition of each vertex is accompanied by the list of all of its +neighbors, i.e. all of its adjacent arcs. Therefore, the overall +number of edge data is twice the number of edges. Distributed graphs +are stored as a set of files which contain each a subset of graph vertices +and their adjacencies. The purpose of this format is to speed-up the +loading and saving of large graphs when working for some time with the +same number of processors: the distributed graph loading routine will +allow each of the processors to read in parallel from a different file. +Consequently, the number of files must be equal to the number of +processors involved in the parallel loading phase. +\\ + +The first line of a distributed graph file holds the distributed graph +file version number, which is currently {\tt 2}. The second line holds +the number of files across which the graph data is distributed +(referred to as {\tt proc\lbo glb\lbo nbr} in \libscotch; see for +instance Figure~\ref{fig-lib-dgraf-one}, +page~\pageref{fig-lib-dgraf-one}, for a detailed example), followed by +the number of this file in the sequence (ranging from $0$ to $({\tt +proc\lbo glb\lbo nbr} - 1)$, and analogous to {\tt proc\lbo loc\lbo +num} in Figure~\ref{fig-lib-dgraf-one}). +The third line holds the global number of graph vertices +(referred to as {\tt vert\lbo glb\lbo nbr}), followed by the global +number of arcs (inappropriately called {\tt edge\lbo glb\lbo nbr}, as +it is in fact equal to twice the actual number of edges). +The fourth line holds the number of vertices contained in +this graph fragment (analogous to {\tt vert\lbo loc\lbo nbr}), +followed by its local number of arcs (analogous to +{\tt edge\lbo loc\lbo nbr}). +The fifth line holds two figures: the graph base index value ({\tt +baseval}) and a numeric flag. + +The graph base index value records the value of the starting index +used to describe the graph; it is usually $0$ when the graph has been +output by C programs, and $1$ for Fortran programs. Its purpose is to +ease the manipulation of graphs within each of these two environments, +while providing compatibility between them. + +The numeric flag, similar to the one used by the \chaco\ graph +format~\cite{hele93c}, is made of three decimal digits. +A non-zero value in the units indicates that vertex weights are provided. +A non-zero value in the tenths indicates that edge weights are provided. +A non-zero value in the hundredths indicates that vertex labels are provided; +if it is the case, vertices can be stored in any order in the file; else, +natural order is assumed, starting from the starting global index of +each fragment. + +This header data is then followed by as many lines as there are +vertices in the graph fragment, that is, {\tt vert\lbo loc\lbo nbr} +lines. Each of these lines begins with the vertex label, if necessary, +the vertex load, if necessary, and the vertex degree, followed by the +description of the arcs. An arc is defined by the load of the edge, if +necessary, and by the label of its other end vertex. +The arcs of a given vertex can be provided in any order in its +neighbor list. If vertex labels are provided, vertices can also be +stored in any order in the file. + +Figure~\ref{fig-file-dsgraph} shows the contents of two complementary +distributed graph files modeling a cube with unity vertex and edge +weights and base $0$, distributed across two processors. + +\begin{figure}[hbt] +\begin{center} +\begin{minipage}{4.0cm} +{\renewcommand{\baselinestretch}{1.05} + \footnotesize \tt +\begin{verbatim} +2 +2 0 +8 24 +4 12 +0 000 +3 4 2 1 +3 5 3 0 +3 6 0 3 +3 7 1 2 +\end{verbatim}} +\end{minipage} +\hfil~\hfil +\begin{minipage}{4.0cm} +{\renewcommand{\baselinestretch}{1.05} + \footnotesize \tt +\begin{verbatim} +2 +2 1 +8 24 +4 12 +0 000 +3 0 6 5 +3 1 7 4 +3 2 4 7 +3 3 5 6 +\end{verbatim}} +\end{minipage} +\end{center} +\caption{Two complementary distributed graph files representing +a cube distributed across two processors.} +\label{fig-file-dsgraph} +\end{figure} diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/p_i.tex scotch-6.0.6/doc/src/ptscotch/p_i.tex --- scotch-6.0.4.dfsg1/doc/src/ptscotch/p_i.tex 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/p_i.tex 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,871 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Titre : p_i.tex % +% Sujet : Manuel de l'utilisateur % +% du projet 'PT-Scotch' % +% Introductions % +% Auteur : Francois Pellegrini % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Introduction} + +\subsection{Static mapping} + +The efficient execution of a parallel program on a parallel machine +requires that the communicating processes of the program be assigned +to the processors of the machine so as to minimize its overall running +time. +When processes have a limited duration and their logical dependencies +are accounted for, this optimization problem is referred to as +scheduling. +When processes are assumed to coexist simultaneously for the entire +duration of the program, it is referred to as mapping. It +amounts to balancing the computational weight of the processes among the +processors of the machine, while reducing the cost of communication by +keeping intensively inter-communicating processes on nearby +processors. + +In most cases, the underlying computational structure of the parallel +programs to map can be conveniently modeled as a graph in which +vertices correspond to processes that handle distributed pieces of +data, and edges reflect data dependencies. The mapping problem can +then be addressed by assigning processor labels to the vertices of the +graph, so that all processes assigned to some processor are loaded and +run on it. +In a SPMD context, this is equivalent to the distribution +across processors of the data structures of parallel programs; in this +case, all pieces of data assigned to some processor are handled by a +single process located on this processor. + +A mapping is called static if it is computed prior to the +execution of the program. Static mapping is NP-complete in the general +case~\cite{gajo79}. Therefore, many studies have been carried out in +order to find sub-optimal solutions in reasonable time, including +the development of specific algorithms for common topologies such +as the hypercube~\cite{errasa90,hamm92}. +When the target machine is assumed to have a communication network in +the shape of a complete graph, the static mapping problem turns into +the partitioning problem, which has also been intensely +studied~\cite{basi94,hele93a,kaku95a,kaku95c,posili90}. +However, when mapping onto parallel machines the communication network +of which is not a bus, not accounting for the topology of the target +machine usually leads to worse running times, because simple cut +minimization can induce more expensive long-distance +communication~\cite{hamm92,wacrevjo95}; the static mapping problem is +gaining popularity as most of the newer massively parallel machines +have a strongly NUMA architecture + +\subsection{Sparse matrix ordering} + +Many scientific and engineering problems can be modeled by sparse +linear systems, which are solved either by iterative or direct +methods. To achieve efficiency with direct methods, one must minimize +the fill-in induced by factorization. This fill-in is a direct +consequence of the order in which the unknowns of the linear system +are numbered, and its effects are critical both in terms of memory and +of computation costs. +\\ + +Because there always exist large problem graphs which cannot fit in +the memory of sequential computers and cost too much to partition, +it is necessary to resort to parallel graph ordering tools. +\ptscotch\ provides such features. + +\subsection{Contents of this document} + +This document describes the capabilities and operations of \ptscotch, +a software package devoted to parallel static mapping and sparse +matrix block ordering. +It is the parallel extension of \scotch, a sequential software package +devoted to static mapping, graph and mesh partitioning, and sparse +matrix block ordering. While both packages share a significant amount +of code, because \ptscotch\ transfers control to the sequential +routines of the \libscotch\ library when the subgraphs on which it +operates are located on a single processor, the two sets of routines +have a distinct user's manual. Readers interested in the sequential +features of \scotch\ should refer to the {\it\scotch\ User's +Guide}~\scotchcitesuser. + +The rest of this manual is organized as follows. +Section~\ref{sec-project} presents the goals of the \scotch\ project, and +section~\ref{sec-algo} outlines the most important aspects of the +parallel partitioning and ordering algorithms that it implements. +Section~\ref{sec-file} defines the formats of the files used in \ptscotch, +section~\ref{sec-prog} describes the programs of the +\ptscotch\ distribution, and section~\ref{sec-lib} defines the interface +and operations of the parallel routines of the \libscotch\ library. +Section~\ref{sec-install} explains how to obtain and install the +\scotch\ distribution. +Finally, some practical examples are given in +section~\ref{sec-examples}. +%, and instructions on how to implement new methods in the +%\libscotch\ library are provided in section~\ref{sec-coding}. + +\section{The \scotch\ project} +\label{sec-project} + +\subsection{Description} + +\scotch\ is a project carried out at the {\it Laboratoire Bordelais de +Recherche en Informatique\/} (LaBRI) of the Universit\'e Bordeaux I, +and now within the Bacchus project of INRIA Bordeaux Sud-Ouest. Its goal +is to study the applications of graph theory to scientific computing, +using a ``divide and conquer'' approach. + +It focused first on static mapping, and has resulted in the +development of the Dual Recursive Bipartitioning (or DRB) mapping +algorithm and in the study of several graph bipartitioning +heuristics~\cite{pell94a}, all of which have been implemented in the +\scotch\ software package~\cite{pero96a}. Then, it focused on the +computation of high-quality vertex separators for the ordering of +sparse matrices by nested dissection, by extending the work that has +been done on graph partitioning in the context of static +mapping~\cite{pero97a,peroam00a}. More recently, the ordering +capabilities of \scotch\ have been extended to native mesh structures, +thanks to hypergraph partitioning algorithms. New graph partitioning +methods have also been recently added~\cite{chpe06a,pell07b}. +Version {\sc 5.0} of \scotch\ was the first one to comprise parallel +graph ordering routines~\cite{chpe08}, and version {\sc 5.1} started +offering parallel graph partitioning features, while parallel static +mapping will be available in the next release. + +\subsection{Availability} + +Starting from version {\sc 4.0}, which has been developed at INRIA +within the ScAlApplix project, \scotch\ is available under a dual +licensing basis. On the one hand, it is downloadable from the +\scotch\ web page as free/libre software, to all interested parties +willing to use it as a library or to contribute to it as a testbed for +new partitioning and ordering methods. On the other hand, it can also +be distributed, under other types of licenses and conditions, to +parties willing to embed it tightly into closed, proprietary software. +\\ + +The free/libre software license under which \scotch\ {\sc\scotchver} is +distributed is the CeCILL-C license~\cite{cecill}, which has basically +the same features as the GNU LGPL (``{\it Lesser General Public +License}'')~\cite{lgpl}: ability to link the code as a library to any +free/libre or even proprietary software, ability to modify the code +and to redistribute these modifications. Version {\sc 4.0} of +\scotch\ was distributed under the LGPL itself. This version did not +comprise any parallel features. +\\ + +Please refer to section~\ref{sec-install} to see how to obtain the +free/libre distribution of \scotch. + +\section{Algorithms} +\label{sec-algo} + +\subsection{Parallel static mapping by Dual Recursive Bipartitioning} +\label{sec-drb} + +For a detailed description of the sequential implementation of this +mapping algorithm and an extensive analysis of its performance, please +refer to~\cite{pell94a,pero96b}. +In the next sections, we will only outline the most important aspects +of the algorithm. + +\subsubsection{Static mapping} + +The parallel program to be mapped onto the target architecture is modeled +by a valuated unoriented graph $S$ called source graph or +process graph, the vertices of which represent the processes of the +parallel program, and the edges of which the communication channels between +communicating processes. +Vertex- and edge- valuations associate with every vertex $v_S$ and every +edge $e_S$ of $S$ integer numbers $w_S(v_S)$ and $w_S(e_S)$ which +estimate the computation weight of the corresponding process +and the amount of communication to be transmitted on the channel, +respectively. + +The target machine onto which is mapped the parallel program is also +modeled by a valuated unoriented graph $T$ called target graph +or architecture graph. +Vertices $v_T$ and edges $e_T$ of $T$ are assigned integer weights +$w_T(v_T)$ and $w_T(e_T)$, which estimate the computational power of the +corresponding processor and the cost of traversal of the inter-processor +link, respectively. + +A mapping from $S$ to $T$ consists of two applications +$\too{S,T} : V(S) \rghta V(T)$ and +$\roo{S,T} : E(S) \rghta {\cal P}(E(T))$, +where ${\cal P}(E(T))$ denotes the set of all simple loopless paths which +can be built from $E(T)$. +$\too{S,T}(v_S) = v_T$ if process $v_S$ of $S$ is mapped onto processor +$v_T$ of $T$, and $\roo{S,T}(e_S) = \{ e^1_T, e^2_T, \ldots, e^n_T \}$ if +communication channel $e_S$ of $S$ is routed through communication links +$e^1_T$, $e^2_T$, \ldots, $e^n_T$ of $T$. +$|\roo{S,T}(e_S)|$ denotes the dilation of edge $e_S$, that is, the number of +edges of $E(T)$ used to route $e_S$. + +\subsubsection{Cost function and performance criteria} +\label{sec-algo-cost} + +The computation of efficient static mappings requires an {\it a priori\/} +knowledge of the dynamic behavior of the target machine with respect to +the programs which are run on it. +This knowledge is synthesized in a cost function, the nature of which +determines the characteristics of the desired optimal mappings. +The goal of our mapping algorithm is to minimize some communication cost +function, while keeping the load balance within a specified tolerance. +The communication cost function $f_C$ that we have chosen is the sum, +for all edges, of their dilation multiplied by their weight: +\bn +f_C(\too{S,T},\roo{S,T}) +\eqdef \hspace*{-0.25cm}\sum\limits_{e_S\in E(S)}\hspace*{-0.25cm} +w_S(e_S)\,|\roo{S,T}(e_S)|\enspace. +\en +This function, which has already been considered by several authors for +hypercube target topologies~\cite{errasa90,hamm92,hele94b}, has several +interesting properties: +it is easy to compute, allows incremental updates performed by +iterative algorithms, and +its minimization favors the mapping of intensively intercommunicating +processes onto nearby processors; +regardless of the type of routage implemented on the target machine +(store-and-forward or cut-through), it models the traffic on the +interconnection network and thus the risk of congestion. + +The strong positive correlation between values of this function and +effective execution times has been experimentally verified by +Hammond~\cite{hamm92} on the CM-2, and by Hendrickson and +Leland~\cite{hele94a} on the nCUBE~2. +\\ + +The quality of mappings is evaluated with respect to the criteria for +quality that we have chosen: the balance of the computation load across +processors, and the minimization of the interprocessor communication cost +modeled by function~$f_C$. These criteria lead to the definition of +several parameters, which are described below. + +For load balance, one can define $\mmap$, the average load per +computational power unit (which does not depend on the mapping), and +$\dmap$, the load imbalance ratio, as\\[-0.5em] +\bn +\mmap \eqdef +{\sum\limits_{v_S \in V(S)} w_S(v_S) \over + \sum\limits_{v_T \in V(T)} w_T(v_T)} +\hspace*{2.5em}\mbox{~and~} +\en +\bn +\dmap \eqdef +{\sum\limits_{v_T \in V(T)} + \left|\left(\!\!{1 \over w_T(v_T)}\hspace*{-0.3em} + \sum\limits_{\scriptsize + \shortstack{$v_S \in V(S)$\\[-0.2em] + $\too{S,T}(v_S) = v_T$}} + \hspace*{-0.2em} w_S(v_S)\!\!\right)\:-\:\mmap\right| \over +\sum\limits_{v_S \in V(S)} w_S(v_S)}\enspace. +\en +However, since the maximum load imbalance ratio is provided by the user in +input of the mapping, the information given by these parameters is of little +interest, since what matters is the minimization of the communication cost +function under this load balance constraint. + +For communication, the straightforward parameter to consider is $f_C$. +It can be normalized as $\mexp$, the average edge expansion, which can +be compared to $\mdil$, the average edge dilation; these are defined +as\\[-1.3em] +\bn +\mexp \eqdef {f_C \over \sum\limits_{e_S \in E(S)} w_S(e_S)} +\hspace*{2.5em}\mbox{~and~}\hspace*{2.5em} +\mdil \eqdef {\sum\limits_{e_S \in E(S)}|\roo{S,T}(e_S)| \over |E(S)|} +\enspace. +\en +$\dexp \eqdef {\mexp \over \mdil}$ is smaller than $1$ when the mapper +succeeds in putting heavily intercommunicating processes closer to each other +than it does for lightly communicating processes; they are equal if all edges +have same weight. + +\subsubsection{The Dual Recursive Bipartitioning algorithm} +\label{sec-algo-drb} + +Our mapping algorithm uses a divide and conquer approach to +recursively allocate subsets of processes to subsets of +processors~\cite{pell94a}. + +It starts by considering a set of processors, also called domain, +containing all the processors of the target machine, and with which is +associated the set of all the processes to map. At each step, the +algorithm bipartitions a yet unprocessed domain into two disjoint +subdomains, and calls a graph bipartitioning algorithm to split the +subset of processes associated with the domain across the two +subdomains, as sketched in the following. + +\noi +{\renewcommand{\baselinestretch}{0.95}\footnotesize\tt {% +\begin{verbatim} +mapping (D, P) +Set_Of_Processors D; +Set_Of_Processes P; +{ + Set_Of_Processors D0, D1; + Set_Of_Processes P0, P1; + + if (|P| == 0) return; /* If nothing to do. */ + if (|D| == 1) { /* If one processor in D */ + result (D, P); /* P is mapped onto it. */ + return; + } + + (D0, D1) = processor_bipartition (D); + (P0, P1) = process_bipartition (P, D0, D1); + mapping (D0, P0); /* Perform recursion. */ + mapping (D1, P1); +} +\end{verbatim}}} + +\noi +The association of a subdomain with every process defines a partial +mapping of the process graph. As bipartitionings are performed, +the subdomain sizes decrease, up to give a complete mapping when all +subdomains are of size~one. +\\ + +The above algorithm lies on the ability to define five main objects: +\begin{itemize} +\item +a domain structure, which represents a set of processors in the target +architecture; +\item +a domain bipartitioning function, which, given a domain, bipartitions +it in two disjoint subdomains; +\item +a domain distance function, which gives, in the target graph, a measure +of the distance between two disjoint domains. Since domains may not be convex +nor connected, this distance may be estimated. +However, it must respect certain homogeneity properties, such as +giving more accurate results as domain sizes decrease. +The domain distance function is used by the graph bipartitioning algorithms +to compute the communication function to minimize, since it allows the mapper +to estimate the dilation of the edges that link vertices which belong to +different domains. +Using such a distance function amounts to considering that all routings +will use shortest paths on the target architecture, which is how most +parallel machines actually do. +We have thus chosen that our program would not provide routings for the +communication channels, leaving their handling to the communication system of +the target machine; +\item +a process subgraph structure, which represents the subgraph induced by a +subset of the vertex set of the original source graph; +\item +a process subgraph bipartitioning function, which bipartitions subgraphs +in two disjoint pieces to be mapped onto the two subdomains computed by +the domain bipartitioning function. +\end{itemize} +All these routines are seen as black boxes by the mapping program, which can +thus accept any kind of target architecture and process bipartitioning +functions. + +\subsubsection{Partial cost function} + +The production of efficient complete mappings requires that all graph +bipartitionings favor the criteria that we have chosen. +Therefore, the bipartitioning of a subgraph~$S'$ of $S$ should maintain +load balance within the user-specified tolerance, and minimize the +partial communication cost function $f'_C$, defined as +\bn +f'_C(\too{S,T},\roo{S,T}) \eqdef +\hspace*{-0.45cm}\sum\limits_{\mbox{\scriptsize + \shortstack{$v\in V(S')$\\ + $\{v,v'\}\in E(S)$}}}\hspace*{-0.45cm} +w_S(\{v,v'\})\,|\roo{S,T}(\{v,v'\})|\enspace, +\en +which accounts for the dilation of edges internal to subgraph~$S'$ as well as +for the one of edges which belong to the cocycle of $S'$, as shown in +Figure~\ref{fig-bipcost}. +Taking into account the partial mapping results issued by previous +bipartitionings makes it possible to avoid local choices that +might prove globally bad, as explained below. +This amounts to incorporating additional constraints to the standard graph +bipartitioning problem, turning it into a more general optimization problem +termed as skewed graph partitioning by some authors~\cite{heledr97}. + +\begin{figure}[hbt] +\hfill +\parbox[b]{4.9cm}{ +\hfill +\includegraphics[scale=0.40]{s_f_rua.eps} +\hfill\\ +{\bf a.} Initial position. +}\ \hfill\ +\parbox[b]{4.9cm}{ +\hfill +\includegraphics[scale=0.40]{s_f_rub.eps} +\hfill\\ +{\bf b.} After one vertex is moved. +}\hfill\ +\caption% +{Edges accounted for in the partial communication cost function when + bipartitioning the subgraph associated with domain~$D$ between + the two subdomains $D_0$ and $D_1$ of~$D$. + Dotted edges are of dilation zero, their two ends being mapped onto the + same subdomain. Thin edges are cocycle edges.} +\label{fig-bipcost} +\end{figure} + +%% \subsubsection{Execution scheme} + +%% From an algorithmic point of view, our mapper behaves as a greedy algorithm, +%% since the mapping of a process to a subdomain is never reconsidered, and +%% at each step of which iterative algorithms can be applied. +%% The double recursive call performed at each step induces a recursion scheme +%% in the shape of a binary tree, each vertex of which corresponds to a +%% bipartitioning job, that is, the bipartitioning of both a domain and +%% its associated subgraph. + +%% In the case of depth-first sequencing, as written in the above sketch, +%% bipartitioning jobs run in the left branches of the tree have no information +%% on the distance between the vertices they handle and neighbor vertices to be +%% processed in the right branches. +%% On the contrary, sequencing the jobs according to a by-level (breadth-first) +%% travel of the tree allows any bipartitioning job of a given level to +%% have information on the subdomains to which all the processes have been +%% assigned at the previous level. +%% Thus, when deciding in which subdomain to put a given process, a +%% bipartitioning job can account for the communication costs induced by +%% its neighbor processes, whether they are handled by the job itself or not, +%% since it can estimate in $f'_C$ the dilation of the corresponding edges. +%% This results in an interesting feedback effect: once an edge has been kept +%% in a cut between two subdomains, the distance between its end vertices will +%% be accounted for in the partial communication cost function to be minimized, +%% and following jobs will be more likely to keep these vertices close to +%% each other, as illustrated in Figure~\ref{fig-biprub}. +%% \begin{figure}[hbt] +%% \hfill +%% \parbox[b]{5.2cm}{ +%% \hfill +%% \includegraphics[scale=0.40]{s_f_run.eps} +%% \hfill\\ +%% {\bf a.} Depth-first sequencing. +%% }\ \hfill\ +%% \parbox[b]{5.2cm}{ +%% \hfill +%% \includegraphics[scale=0.40]{s_f_ruy.eps} +%% \hfill\\ +%% {\bf b.} Breadth-first sequencing. +%% }\hfill\ % +%% \caption% +%% {Influence of depth-first and breadth-first sequencings on the +%% bipartitioning of a domain~$D$ belonging to the leftmost branch of +%% the bipartitioning tree. +%% With breadth-first sequencing, the partial mapping data regarding vertices +%% belonging to the right branches of the bipartitioning tree are more +%% accurate (C.L. stands for ``Cut Level'').} +%% \label{fig-biprub} +%% \end{figure} +%% The relative efficiency of depth-first and breadth-first sequencing schemes +%% with respect to the structure of the source and target graphs is discussed +%% in~\cite{pero96b}. + +\subsubsection{Parallel graph bipartitioning methods} +\label{sec-algo-bipart} + +The core of our parallel recursive mapping algorithm uses process +graph parallel bipartitioning +methods as black boxes. It allows the mapper to run any type of graph +bipartitioning method compatible with our criteria for quality. +Bipartitioning jobs maintain an internal image of the current bipartition, +indicating for every vertex of the job whether it is currently assigned to the +first or to the second subdomain. +It is therefore possible to apply several different methods in sequence, +each one starting from the result of the previous one, +and to select the methods with respect to the job characteristics, thus +enabling us to define mapping strategies. +The currently implemented graph bipartitioning methods are listed below. +\begin{itemize} +\iteme[{\bf Band}] +Like the multi-level method which will be described below, the band +method is a meta-algorithm, in the sense that it does not itself +compute partitions, but rather helps other partitioning algorithms +perform better. It is a refinement algorithm which, from a given +initial partition, extracts a band graph of given width (which only +contains graph vertices that are at most at this distance from the +separator), calls a partitioning strategy on this band graph, and +prolongs\footnote{While a \emph{projection} is an application to a +space of lower dimension, a \emph{prolongation} refers to an +application to a space of higher dimension. Yet, the term projection +is also commonly used to refer to such a propagation, most often in +the context of a multilevel framework.} back the refined partition +on the original graph. This method was designed to be able to use +expensive partitioning heuristics, such as genetic algorithms, on +large graphs, as it dramatically reduces the problem space by several +orders of magnitude. However, it was found that, in a multi-level +context, it also improves partition quality, by coercing partitions in +a problem space that derives from the one which was globally defined +at the coarsest level, thus preventing local optimization refinement +algorithms to be trapped in local optima of the finer +graphs~\cite{chpe06a}. +\iteme[{\bf Diffusion}] +This global optimization method, the sequential formulation of which +is presented in~\cite{pell07b}, flows two kinds of antagonistic +liquids, scotch and anti-scotch, from two source vertices, and sets +the new frontier as the limit between vertices which contain scotch +and the ones which contain anti-scotch. In order to add +load-balancing constraints to the algorithm, a constant amount of +liquid disappears from every vertex per unit of time, so that no +domain can spread across more than half of the vertices. Because +selecting the source vertices is essential to the obtainment of +useful results, this method has been hard-coded so that the two +source vertices are the two vertices of highest indices, since in the +band method these are the anchor vertices which represent all of the +removed vertices of each part. Therefore, this method must be used on +band graphs only, or on specifically crafted graphs. +\iteme[{\bf Multi-level}]\label{sec-algo-mle} +This algorithm, which has been studied by several +authors~\cite{basi94,hele93b,kaku95a} and should be considered as a strategy +rather than as a method since it uses other methods as parameters, repeatedly +reduces the size of the graph to bipartition by finding matchings that +collapse vertices and edges, computes a partition for the coarsest +graph obtained, and prolongs the result back to the original graph, +as shown in Figure~\ref{fig-multiproc}. +\begin{figure}[hbt] +~\hfill\includegraphics[scale=0.50]{s_f_mult.eps}\hfill\ ~ +\caption% +{The multi-level partitioning process. In the uncoarsening phase, the light +and bold lines represent for each level the prolonged partition obtained +from the coarser graph, and the partition obtained after refinement, +respectively.} +\label{fig-multiproc} +\end{figure} +The multi-level method, when used in conjunction with the banded +diffusion method to refine the prolonged partitions at every level, +usually stabilizes quality irrespective of the number of processors +which run the parallel static mapper. +\end{itemize} + +\subsubsection{Mapping onto variable-sized architectures} +\label{sec-algo-variable} + +Several constrained graph partitioning problems can be modeled as +mapping the problem graph onto a target architecture, the number of +vertices and topology of which depend dynamically on the structure of +the subgraphs to bipartition at each step. + +Variable-sized architectures are supported by the DRB algorithm in the +following way: at the end of each bipartitioning step, if any of the +variable subdomains is empty (that is, all vertices of the subgraph +are mapped only to one of the subdomains), then the DRB process stops +for both subdomains, and all of the vertices are assigned to their +parent subdomain; else, if a variable subdomain has only one vertex +mapped onto it, the DRB process stops for this subdomain, and the +vertex is assigned to it. + +The moment when to stop the DRB process for a specific subgraph can be +controlled by defining a bipartitioning strategy that tests for the +validity of a criterion at each bipartitioning step, and maps all of +the subgraph vertices to one of the subdomains when it becomes false. + +\subsection{Parallel sparse matrix ordering by hybrid incomplete nested dissection} + +When solving large sparse linear systems of the form $Ax=b$, it is +common to precede the numerical factorization by a symmetric +reordering. This reordering is chosen in such a way that pivoting down +the diagonal in order on the resulting permuted matrix $PAP^T$ +produces much less fill-in and work than computing the factors of $A$ +by pivoting down the diagonal in the original order (the fill-in is +the set of zero entries in $A$ that become non-zero in the factored +matrix). + +\subsubsection{Hybrid incomplete nested dissection} +\label{sec-algo-nested} + +The minimum degree and nested dissection algorithms are the two most +popular reordering schemes used to reduce fill-in and operation count +when factoring and solving sparse matrices. +\\ + +The minimum degree algorithm~\cite{tiwa67} is a local heuristic that +performs its pivot selection by iteratively selecting from the graph a +node of minimum degree. It is known to be a very fast and general +purpose algorithm, and has received much attention over the last three +decades (see for example~\cite{amdadu96,geli89,liu-85}). However, the +algorithm is intrinsically sequential, and very little can be +theoretically proved about its efficiency. +\\ + +The nested dissection algorithm~\cite{geli81} is a global, recursive +heuristic algorithm which computes a vertex set~$S$ that separates the +graph into two parts~$A$ and~$B$, ordering $S$ with the highest +remaining indices. It then proceeds recursively on parts~$A$ and~$B$ +until their sizes become smaller than some threshold value. This +ordering guarantees that, at each step, no non zero term can appear +in the factorization process between unknowns of~$A$ and unknowns +of~$B$. + +Many theoretical results have been obtained on nested dissection +ordering~\cite{chro89,lirota79}, and its divide and conquer nature +makes it easily parallelizable. The main issue of the nested +dissection ordering algorithm is thus to find small vertex separators +that balance the remaining subgraphs as evenly as possible. +Provided that good vertex separators are found, the nested dissection +algorithm produces orderings which, both in terms of fill-in and +operation count, compare favorably~\cite{gukaku96,kaku95a,pero97a} to +the ones obtained with the minimum degree algorithm~\cite{liu-85}. +Moreover, the elimination trees induced by nested dissection are +broader, shorter, and better balanced, and therefore +exhibit much more concurrency in the context of parallel Cholesky +factorization~\cite[and included +references]{aseilish91,geng89,geheling88,gukaku96,pero97a,shre92}. +\\ + +Due to their complementary nature, several schemes have been proposed +to hybridize the two methods~\cite{hero98,kaku98a,pero97a}. +Our implementation is based on a tight coupling of the nested dissection +and minimum degree algorithms, that allows each of them to take +advantage of the information computed by the other~\cite{peroam00a}. + +However, because we do not provide a parallel implementation of the +minimum degree algorithm, this hybridization scheme can only take +place after enough steps of parallel nested dissection have been +performed, such that the subgraphs to be ordered by minimum degree +are centralized on individual processors. + +\subsubsection{Parallel ordering} +\label{sec-algo-parallel} + +The parallel computation of orderings in \ptscotch\ involves three +different levels of concurrency, corresponding to three key steps of +the nested dissection process: the nested dissection algorithm itself, +the multi-level coarsening algorithm used to compute separators at +each step of the nested dissection process, and the refinement of the +obtained separators. Each of these steps is described below. + +\paragraph{Nested dissection} + +As said above, the first level of concurrency relates to the +parallelization of the nested dissection method itself, which is +straightforward thanks to the intrinsically concurrent nature of the +algorithm. Starting from the initial graph, arbitrarily distributed +across $p$ processors but preferably balanced in terms of vertices, +the algorithm proceeds as illustrated in Figure~\ref{fig-nedi}~: once +a separator has been computed in parallel, by means of a method described +below, each of the $p$ processors participates in the building of the +distributed induced subgraph corresponding to the first separated part +(even if some processors do not have any vertex of it). This induced +subgraph is then folded onto the first $\lceil\frac{p}{2}\rceil$ +processors, such that the average number of vertices per processor, +which guarantees efficiency as it allows the shadowing of +communications by a subsequent amount of computation, remains +constant. During the folding process, vertices and adjacency lists +owned by the $\lfloor\frac{p}{2}\rfloor$ sender processors are +redistributed to the $\lceil\frac{p}{2}\rceil$ receiver processors so +as to evenly balance their loads. + +The same procedure is used to build, on the +$\lfloor\frac{p}{2}\rfloor$ remaining processors, the folded induced +subgraph corresponding to the second part. These two constructions +being completely independent, the computations of the two induced +subgraphs and their folding can be performed in parallel, thanks to the +temporary creation of an extra thread per processor. When the vertices +of the separated graph are evenly distributed across the processors, +this feature favors load balancing in the subgraph building phase, +because processors which do not have many vertices of one part will +have the rest of their vertices in the other part, thus yielding the +same overall workload to create both graphs in the same time. This +feature can be disabled when the communication system of the target +machine is not thread-safe. + +At the end of the folding process, every processor has a folded +subgraph fragment of one of the two folded subgraphs, and the nested +dissection process car recursively proceed independently on each +subgroup of $\frac{p}{2}$ (then $\frac{p}{4}$, $\frac{p}{8}$, +etc\@.) processors, until each subgroup is reduced to a single +processor. From then on, the nested dissection process will go on +sequentially on every processor, using the nested dissection routines +of the \scotch\ library, eventually ending in a coupling with minimum +degree methods~\cite{peroam00a}, as described in the previous section. + +\begin{figure} +~\hfill% +\includegraphics[scale=0.38]{p_f_nedi.eps} +\hfill~\\*[-1em] +\caption{Diagram of a nested dissection step for a (sub-)graph + distributed across four processors. Once the separator is known, the + two induced subgraphs are built and folded (this can be done in + parallel for both subgraphs), yielding two subgraphs, each of them + distributed across two processors.} +\label{fig-nedi} +\end{figure} + +\paragraph{Graph coarsening} +\label{secalgocoarsen} + +The second level of concurrency concerns the computation of +separators. The approach we have chosen is the now classical +multi-level one~\cite{basi94,hele95,kaku98a}. It consists in +repeatedly computing a set of increasingly coarser albeit +topologically similar versions of the +graph to separate, by finding matchings which collapse vertices and +edges, until the coarsest graph obtained is no larger than a few +hundreds of vertices, then computing a separator on this coarsest +graph, and prolonging back this separator, from coarser to finer +graphs, up to the original graph. +Most often, a local optimization algorithm, such as +Kernighan-Lin~\cite{keli70} or Fiduccia-Mattheyses~\cite{fima82} (FM), is +used in the uncoarsening phase to refine the partition that is +prolonged back at every level, such that the granularity of the +solution is the one of the original graph and not the one of the +coarsest graph. + +The main features of our implementation are outlined in +Figure~\ref{fig-sepa}. Once the matching phase is complete, the +coarsened subgraph building phase takes place. It can be +parametrized so as to allow one to choose between two options. Either +all coarsened vertices are kept on their local processors (that is, +processors that hold at least one of the ends of the coarsened edges), +as shown in the first steps of Figure~\ref{fig-sepa}, which decreases +the number of vertices owned by every processor and speeds-up future +computations, or else coarsened graphs are folded and duplicated, as +shown in the next steps of Figure~\ref{fig-sepa}, which increases the +number of working copies of the graph and can thus reduce +communication and increase the final quality of the separators. + +As a matter of fact, separator computation algorithms, which are local +heuristics, heavily depend on the quality of the coarsened graphs, +and we have observed with the sequential version of \scotch\ that +taking every time the best partition among two ones, obtained from +two fully independent multi-level runs, usually improved overall ordering +quality. By enabling the folding-with-duplication routine (which will +be referred to as ``fold-dup'' in the following) in the first +coarsening levels, one can implement this approach in parallel, every +subgroup of processors that hold a working copy of the graph being +able to perform an almost-complete independent multi-level +computation, save for the very first level which is shared by all +subgroups, for the second one which is shared by half of the subgroups, +and so on. + +The problem with the fold-dup approach is that it consumes a lot of +memory. Consequently, a good strategy can be to resort to folding only +when the number of vertices of the graph to be considered reaches some +minimum threshold. This threshold allows one to set a trade off +between the level of completeness of the independent multi-level runs +which result from the early stages of the fold-dup process, which +impact partitioning quality, and the amount of memory to be used in +the process. + +Once all working copies of the coarsened graphs are folded on +individual processors, the algorithm enters a multi-sequential phase, +illustrated at the bottom of Figure~\ref{fig-sepa}: the routines of +the sequential \scotch\ library are used on every processor to +complete the coarsening process, compute an initial partition, and +prolong it back up to the largest centralized coarsened graph stored +on the processor. Then, the partitions are prolonged back in parallel +to the finer distributed graphs, selecting the best partition between +the two available when prolonging to a level where fold-dup had been +performed. This distributed prolongation process is repeated until we +obtain a partition of the original graph. + +\begin{figure} +~\hfill% +\includegraphics[scale=0.30]{p_f_sepa.eps} +\hfill~\\*[-1em] +\caption{Diagram of the parallel computation of the separator of a + graph distributed across four processors, by parallel coarsening + with folding-with-duplication in the last stages, multi-sequential + computation of initial partitions that are locally prolonged back + and refined on every processor, and then parallel uncoarsening of + the best partition encountered.} +\label{fig-sepa} +\end{figure} + +\paragraph{Band refinement} + +The third level of concurrency concerns the refinement heuristics +which are used to improve the prolonged separators. At the coarsest +levels of the multi-level algorithm, when computations are restricted to +individual processors, the sequential FM algorithm of \scotch\ is +used, but this class of algorithms does not parallelize well. + +This problem can be solved in two ways: either by developing +scalable and efficient local optimization algorithms, or by being able +to use the existing sequential FM algorithm on very large graphs. +In~\cite{chpe06a} has been proposed a solution +which enables both approaches, and is based on the following +reasoning. Since every refinement is performed by means of a local +algorithm, which perturbs only in a limited way the position of the +prolonged separator, local refinement algorithms need only to be +passed a subgraph that contains the vertices that are very close to +the prolonged separator. + +The computation and use of distributed band graphs is outlined in +Figure~\ref{fig-band}. Given a distributed graph and an initial +separator, which can be spread across several processors, vertices +that are closer to separator vertices than some small user-defined +distance are selected by spreading distance information from all of +the separator vertices, using our halo exchange routine. Then, the +distributed band graph is created, by adding on every processor two +anchor vertices, which are connected to the last layers of vertices of +each of the parts. The vertex weight of the anchor vertices is equal +to the sum of the vertex weights of all of the vertices they replace, +to preserve the balance of the two band parts. Once the separator of +the band graph has been refined using some local optimization +algorithm, the new separator is prolonged back to the original +distributed graph. + +\begin{figure} +~\hfill% +\includegraphics[scale=0.37]{p_f_band.eps} +\hfill~\\*[-1em] +\caption{Creation of a distributed band graph. Only vertices closest + to the separator are kept. Other vertices are replaced by anchor + vertices of equivalent total weight, linked to band vertices of the + last layer. There are two anchor vertices per processor, to + reduce communication. Once the separator has been refined on the + band graph using some local optimization algorithm, the new + separator is prolonged back to the original distributed graph.} +\label{fig-band} +\end{figure} + +Basing on these band graphs, we have implemented a multi-sequential +refinement algorithm, outlined in Figure~\ref{fig-multi}. At every +distributed uncoarsening step, a distributed band graph is +created. Centralized copies of this band graph are then gathered on +every participating processor, which serve to run fully independent +instances of our sequential FM algorithm. The perturbation of the +initial state of the sequential FM algorithm on every processor allows +us to explore slightly different solution spaces, and thus to improve +refinement quality. Finally, the best refined band separator is +prolonged back to the distributed graph, and the uncoarsening process +goes on. + +\begin{figure} +~\hfill% +\includegraphics[scale=0.28]{p_f_multi.eps} +\hfill~\\*[-1em] +\caption{Diagram of the multi-sequential refinement of a separator + prolonged back from a coarser graph distributed across four processors + to its finer distributed graph. Once the distributed band graph is + built from the finer graph, a centralized version of it is gathered + on every participating processor. A sequential FM optimization can + then be run independently on every copy, and the best improved + separator is then distributed back to the finer graph.} +\label{fig-multi} +\end{figure} + +\subsubsection{Performance criteria} +\label{sec-order-perf} + +The quality of orderings is evaluated with respect to several +criteria. The first one, \NNZ, is the number of non-zero terms in the +factored reordered matrix. The second one, \OPC, is the operation +count, that is the number of arithmetic operations required to factor +the matrix. The operation count that we have considered takes into +consideration all operations (additions, subtractions, +multiplications, divisions) required by Cholesky factorization, except +square roots; it is equal to $\sum_c n_c^2$, where $n_c$ is the number +of non-zeros of column $c$ of the factored matrix, diagonal included. + +A third criterion for quality is the shape of the elimination tree; +concurrency in parallel solving is all the higher as the elimination tree is +broad and short. To measure its quality, several parameters can be defined: +\hmin, \hmax, and \havg\ denote the minimum, maximum, and average heights +of the tree\footnote% +{We do not consider as leaves the disconnected vertices that are present in +some meshes, since they do not participate in the solving process.}, +respectively, and \hdlt\ is the variance, expressed as a percentage of \havg. +Since small separators result in small chains in the elimination tree, +\havg\ should also indirectly reflect the quality of separators. diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/p_l.tex scotch-6.0.6/doc/src/ptscotch/p_l.tex --- scotch-6.0.4.dfsg1/doc/src/ptscotch/p_l.tex 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/p_l.tex 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,3953 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Titre : p_l.tex % +% Sujet : Manuel de l'utilisateur % +% du projet 'PT-Scotch' % +% Bibliotheque % +% Auteur : Francois Pellegrini % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Library} +\label{sec-lib} + +All of the features provided by the programs of the +\ptscotch\ distribution may be directly accessed by calling +the appropriate functions of the \libscotch\ library, archived +in files {\tt libptscotch.a} and {\tt libptscotcherr.a}. +All of the existing parallel routines belong to four distinct classes: +\begin{itemize} +\item +distributed source graph handling routines, which serve to declare, +build, load, save, and check the consistency of distributed source +graphs; +%, along with their geometry data; +\item +strategy handling routines, which allow the user to declare and build +parallel mapping and ordering strategies; +\item +parallel graph partitioning and static mapping routines, which allow +the user to declare, compute, and save distributed static mappings of +distributed source graphs; +\item +parallel ordering routines, which allow the user to declare, compute, +and save distributed orderings of distributed source graphs. +\end{itemize} +Error handling is performed using the existing sequential routines of +the \scotch\ distribution, which are described in the +{\it\scotch\ User's Guide}~\scotchcitesuser. Their use is recalled in +Section~\ref{sec-lib-error}. + +A \parmetis\ compatibility library, called {\tt lib\lbo ptscotch\lbo +parmetis.a}, is also available. It allows users who were previously +using \parmetis\ in their software to take advantage of the efficieny +of \ptscotch\ without having to modify their code. The services +provided by this library are described in +Section~\ref{sec-lib-parmetis}. + +\subsection{Running at proper thread level} +\label{sec-lib-thread} + +Since \ptscotch\ is based on the MPI API, all processes must call some +flavor of \texttt{MPI\_\lbt Init} before using any routine of the +library that performs communication. The thread support level of MPI +has to be set in accordance to the level required by the library. + +If \ptscotch\ has been compiled without the \texttt{-DSCOTCH\_\lbt +PTHREAD} flag, a call to the simple \texttt{MPI\_\lbt Init} routine +will suffice, because no concurrent MPI calls will be performed by +library routines. Else, the extended \texttt{MPI\_\lbt Init\_\lbt +thread} initialization routine has to be used, to request the +\texttt{MPI\_\lbt THREAD\_\lbt MULTIPLE} level, and the provided +thread support level value returned by the routine must be checked +carefully. If your MPI implementation does not provide the +\texttt{MPI\_\lbt THREAD\_\lbt MULTIPLE} level, you will have to +recompile \ptscotch\ without the \texttt{-DSCOTCH\_\lbt PTHREAD} +flag. Else, library calls may cause random bugs in the communication +subsystem, resulting in program crashes. + +\subsection{Calling the routines of {\sc libScotch}} + +\subsubsection{Calling from C} + +All of the C routines of the \libscotch\ library are prefixed with +``{\tt SCOTCH\_}''. The remainder of the function names is made of the +name of the type of object to which the functions apply (e\@.g\@. +``{\tt dgraph}'', ``{\tt dorder}'', etc.), +followed by the type of action performed on this object: ``{\tt +Init}'' for the initialization of the object, ``{\tt Exit}'' for the +freeing of its internal structures, ``{\tt Load}'' for loading the +object from one or several streams, and so on. + +Typically, functions that return an error code return zero if the +function succeeds, and a non-zero value in case of error. + +For instance, the {\tt SCOTCH\_\lbt dgraph\lbt Init} and {\tt +SCOTCH\_\lbt dgraph\lbt Load} routines, described in +section~\ref{sec-lib-dgraph}, can be called from C by using the +following code. +{\tt +\begin{verbatim} +#include +#include +#include "ptscotch.h" + ... + SCOTCH_Dgraph grafdat; + FILE * fileptr; + + if (SCOTCH_dgraphInit (&grafdat) != 0) { + ... /* Error handling */ + } + if ((fileptr = fopen ("brol.grf", "r")) == NULL) { + ... /* Error handling */ + } + if (SCOTCH_dgraphLoad (&grafdat, fileptr, -1, 0) != 0) { + ... /* Error handling */ + } + ... +\end{verbatim} +} + +Since ``{\tt ptscotch.h}'' uses several system and communication +objects which are declared in ``{\tt stdio.h}'' and ``{\tt mpi.h}'', +respectively, these latter files must be included beforehand +in your application code. + +Although the ``{\tt scotch.h}'' and ``{\tt ptscotch.h}'' files may +look very similar on your system, never mistake them, and always use +the ``{\tt ptscotch.h}'' file as the right include file for compiling +a program which uses the parallel routines of the \libscotch\ library, +whether it also calls sequential routines or not. + +\subsubsection{Calling from Fortran} + +The routines of the \libscotch\ library can also be called from +Fortran. For any C function named {\tt SCOTCH\_\lbt {\it type\lbt +Action}()} which is documented in this manual, there exists a {\tt +SCOTCHF\lbt {\it TYPE\lbt ACTION\/}()} Fortran counterpart, in which +the separating underscore character is replaced by an ``{\tt +F}''. In most cases, the Fortran routines have exactly the same +parameters as the C functions, save for an added trailing {\tt +INTEGER} argument to store the return value yielded by the function +when the return type of the C function is not {\tt void}. +\\ + +Since all the data structures used in \libscotch\ are +opaque, equivalent declarations for these structures must +be provided in Fortran. These structures must therefore +be defined as arrays of {\tt DOUBLEPRECISION}s, of sizes +given in file {\tt ptscotchf.h}, which must be included whenever +necessary. + +For routines that read or write data using a {\tt FILE~*} stream +in C, the Fortran counterpart uses an {\tt INTEGER} parameter which +is the numer of the Unix file descriptor corresponding to the logical +unit from which to read or write. In most Unix implementations of +Fortran, standard descriptors 0 for standard input (logical unit 5), +1 for standard output (logical unit 6) and 2 for standard error are +opened by default. However, for files that are opened using +{\tt OPEN} statements, an additional function must be used to obtain +the number of the Unix file descriptor from the number of the logical +unit. This function is called \texttt{PXFFILENO} in the normalized +POSIX Fortran API, and files which use it should include the +\texttt{USE IFPOSIX} directive whenever necessary. An alternate, non +normalized, function also exists in most Unix implementations of +Fortran, and is called {\tt FNUM}. + +For instance, the {\tt SCOTCH\_\lbt dgraph\lbt Init} and +{\tt SCOTCH\_\lbt dgraph\lbt Load} routines, described in +sections~\ref{sec-lib-dgraphinit} and~\ref{sec-lib-dgraphload}, +respectively, can be called from Fortran by using the following code. +{\tt +\begin{verbatim} + INCLUDE "ptscotchf.h" + DOUBLEPRECISION GRAFDAT(SCOTCH_DGRAPHDIM) + INTEGER RETVAL + ... + CALL SCOTCHFDGRAPHINIT (GRAFDAT (1), RETVAL) + IF (RETVAL .NE. 0) THEN + ... + OPEN (10, FILE='brol.grf') + CALL SCOTCHFDGRAPHLOAD (GRAFDAT (1), PXFFILENO (10), 1, 0, RETVAL) + CLOSE (10) + IF (RETVAL .NE. 0) THEN + ... +\end{verbatim} +} + +Although the ``{\tt scotchf.h}'' and ``{\tt ptscotchf.h}'' files may +look very similar on your system, never mistake them, and always use +the ``{\tt ptscotchf.h}'' file as the include file for compiling a +Fortran program that uses the parallel routines of the +\libscotch\ library, whether it also calls sequential routines or not. + +All of the Fortran routines of the \libscotch\ library are stubs which +call their C counterpart. While this poses no problem for the usual +integer and double precision data types, some conflicts may occur at +compile or run time if your MPI implementation does not represent the +{\tt MPI\_Comm} type in the same way in C and in Fortran. Please check +on your platform to see in the {\tt mpi.h} include file if the {\tt +MPI\_Comm} data type is represented as an {\tt int}. If it is the +case, there should be no problem in using the Fortran routines of +the \ptscotch\ library. + +\subsubsection{Compiling and linking} + +The compilation of C or Fortran routines which use parallel +routines of the \libscotch\ library requires that either {\tt +ptscotch.h} or {\tt ptscotchf.h} be included, respectively. Since some +of the parallel routines of the \libscotch\ library must be passed MPI +communicators, it is necessary to include MPI files {\tt mpi.h} or +{\tt mpif.h}, respectively, before the relevant \ptscotch\ include +files, such that prototypes of the parallel \libscotch\ routines are +properly defined. + +The parallel routines of the \libscotch\ library, along with +taylored versions of the sequential routines, are grouped in a +library file called {\tt libptscotch.a}. Default error routines that +print an error message and exit are provided in the classical +\scotch\ library file {\tt libptscotcherr.a}. + +Therefore, the linking of applications that make use of the +\libscotch\ library with standard error handling is carried out by +using the following options: ``{\tt -lptscotch -lptscotcherr -lmpi -lm}''. +The ``{\tt -lmpi}'' option is most often not necessary, as the MPI +library is automatically considered when compiling with commands such +as {\tt mpicc}. + +If you want to handle errors by yourself, you should not link with +library file {\tt libptscotcherr.a}, but rather provide a +{\tt SCOTCH\_\lbt error\lbt Print()} routine. Please refer to +Section~\ref{sec-lib-error} for more information on error handling. +Section~\ref{sec-lib-error} for more information on error handling. + +Programs that use both sequential and parallel routines of +\scotch\ need only be linked against the parallel version of the +library, as it also contains an adapted version of the sequential +routines. The reason why the sequential routines are duplicated in the +parallel \ptscotch\ library is because they are slightly modified so +as to keep track of the parallel environment. This allows one to +create ``multi-sequential'' routines that can exchange data with other +processes, for instance. Because the \libscotch\ data structures +contain extra parameters, never mix the \texttt{scotch.h} sequential +include file and the \texttt{libptscotch.a} parallel library, as the +latter expects \scotch\ data structures to be larger than the ones +defined in the sequential include file. Consequently, when using only +sequential routines in a sequential program, include the +\texttt{scotch.h} file only and link the program against the sequential +\texttt{libscotch.a} library only. When using only parallel routines, +or when using a mix of sequential and parallel routines, include the +\texttt{ptscotch.h} file only and link the program against the parallel +\texttt{libptscotch.a} library only. When using only sequential +routines in a parallel program, both options can be used. + +\subsubsection{Machine word size issues} +\label{sec-lib-inttypesize} + +Graph indices are represented in \scotch\ as integer values of type +{\tt SCOTCH\_\lbt Num}. By default, this type equates to the {\tt int} +C type, that is, an integer type of size equal to the one of +the machine word. However, it can represent any other integer +type. Indeed, the size of the {\tt SCOTCH\_\lbt Num} integer type can +be coerced to 32 or 64 bits by using the ``{\tt -DINTSIZE32}'' or +``{\tt -DINTSIZE64}'' compilation flags, respectively, or else by +using the ``{\tt -DINT=}'' definition (see +Section~\ref{sec-install-inttypesize} for more information on the +setting of these compilation flags). + +This may, however, pose a problem with MPI, the interface of which is +based on the regular {\tt int} type. \ptscotch\ has been coded so +as to avoid typecast bugs, but overflow errors may result from the +conversion of values of a larger integer type into {\tt int}s when +handling communication buffer indices. + +Consequently, the C interface of \scotch\ uses two types of integers. +Graph-related quantities are passed as {\tt SCOTCH\_\lbt Num}s, +while system-related values such as file handles, as well as +return values of \libscotch\ routines, are always passed as +{\tt int}s. + +Because of the variability of library integer type sizes, one must be +careful when using the Fortran interface of \scotch, as it does not +provide any prototyping information, and consequently cannot produce +any warning at link time. In the manual pages of the +\libscotch\ routines, Fortran prototypes are written using three types +of {\tt INTEGER}s. As for the C interface, the regular {\tt INTEGER} +type is used for system-based values, such as file handles and MPI +communicators, as well as for return values of the +\libscotch\ routines, while the {\tt INTEGER*}{\it num} type +should be used for all graph-related values, in accordance to the size +of the {\tt SCOTCH\_\lbt Num} type, as set by the +``{\tt -DINTSIZE}{\it x}'' compilation flags. Also, the +{\tt INTEGER*}{\it idx} type represents an integer type of a size +equivalent to the one of a {\tt SCOTCH\_\lbt Idx}, as set by the +``{\tt -DIDXSIZE}{\it x}'' compilation flags. Values of this type are +used in the Fortran interface to represent arbitrary array indices +which can span across the whole address space, and consequently +deserve special treatment. + +In practice, when \scotch\ is compiled on a 32-bit architecture so as +to use 64-bit {\tt SCOTCH\_\lbt Num}s, graph indices should be +declared as {\tt INTEGER*8}, while error return values +should still be declared as plain {\tt INTEGER} (that is, +{\tt INTEGER*4}) values. On a 32\_64-bit architecture, irrespective of +whether {\tt SCOTCH\_\lbt Num}s are defined as {\tt INTEGER*4} +or {\tt INTEGER*8} quantities, the {\tt SCOTCH\_\lbt Idx} type +should always be defined as a 64-bit quantity, that is, an +{\tt INTEGER*8}, because it stores differences between memory +addresses, which are represented by 64-bit values. +The above is no longer a problem if \scotch\ is compiled such that +{\tt int}s equate 64-bit integers. In this case, there is no need to +use any type coercing definition. +\\ + +The \metis\ v3 compatibility library provided by \scotch\ can also +run on a 64-bit architecture. Yet, if you are willing to use it this +way, you will have to replace all {\tt int}'s that are passed to the +\metis\ routines by 64-bit integer {\tt SCOTCH\_\lbt Num} values (even +the option configuration values). However, in this case, you will no +longer be able to link against the service routines of the genuine +\metis/\parmetis\ v3 library, as they are only available as a 32-bit +implementation. + +\subsection{Data formats} + +All of the data used in the \libscotch\ interface are of integer type +{\tt SCOTCH\_Num}. To hide the internals of \ptscotch\ to callers, all +of the data structures are opaque, that is, declared within {\tt +ptscotch.h} as dummy arrays of double precision values, for the sake of +data alignment. Accessor routines, the names of which end in ``{\tt +Size}'' and ``{\tt Data}'', allow callers to retrieve information from +opaque structures. +\\ + +In all of the following, whenever arrays are defined, passed, and +accessed, it is assumed that the first element of these arrays is +always labeled as {\tt baseval}, whether {\tt baseval} is set to $0$ +(for C-style arrays) or $1$ (for Fortran-style arrays). \ptscotch\ +internally manages with base values and array pointers so as to +process these arrays accordingly. + +\subsubsection{Distributed graph format} +\label{sec-lib-format-dgraph} + +In \ptscotch, distributed source graphs are represented so as to +distribute graph data without any information duplication which could +hinder scalability. The only data which are replicated on every +process are of a size linear in the number of processes and +small. Apart from these, the sum across all processes of all of the +vertex data is in $O(v+p)$, where $v$ is the overall number of +vertices in the distributed graph and $p$ the number of processes, and +the sum of all of the edge data is in $O(e)$, where $e$ is the overall +number of arcs (that is, twice the number of edges) in the distributed +graph. When graphs are ill-distributed, the overall halo vertex +information may also be in $o(e)$ at worst, which makes the distributed +graph structure fully scalable. + +Distributed source graphs are described by means of adjacency +lists. The description of a distributed graph requires several {\tt +SCOTCH\_Num} scalars and arrays, as shown for instance in +Figures~\ref{fig-lib-dgraf-one} and~\ref{fig-lib-dgraf-two}. +Some of these data are said to be global, and are duplicated on every +process that holds part of the distributed graph; their names contain +the ``{\tt glb}'' infix. Others are local, that is, their value may +differ for each process; their names contain the ``{\tt loc}'' or +``{\tt gst}'' infix. Global data have the following meaning: +\begin{itemize} +\iteme[{\tt baseval}] +Base value for all array indexings. +\iteme[{\tt vertglbnbr}] +Overall number of vertices in the distributed graph. +\iteme[{\tt edgeglbnbr}] +Overall number of arcs in the distributed graph. Since edges are +represented by both of their ends, the number of edge data in +the graph is twice the number of edges. +\iteme[{\tt procglbnbr}] +Overall number of processes that share distributed graph data. +\iteme[{\tt proccnttab}] +Array holding the current number of local vertices borne by every process. +\iteme[{\tt procvrttab}] +Array holding the global indices from which the vertices of every +process are numbered. For optimization purposes, this array has an +extra slot which stores a number which must be greater than all of the +assigned global indices. For each process $p$, it must be ensured that +$\mbox{\tt proc\lbt vrt\lbt tab[}p + 1\mbox{\tt]} \geq +(\mbox{\tt proc\lbt vrt\lbt tab[}p\mbox{\tt]} + +\mbox{\tt proc\lbt cnt\lbt tab[}p\mbox{\tt]})$, that is, that no process +can have more local vertices than allowed by its range of global indices. +When the global numbering of vertices is continuous, for each process $p$, +$\mbox{\tt proc\lbt vrt\lbt tab[}p + 1\mbox{\tt]} = +(\mbox{\tt proc\lbt vrt\lbt tab[}p\mbox{\tt]} + +\mbox{\tt proc\lbt cnt\lbt tab[}p\mbox{\tt]})$. +\end{itemize} +Local data have the following meaning: +\begin{itemize} +\iteme[{\tt vertlocnbr}] +Number of local vertices borne by the given process. In +fact, on every process $p$, {\tt vert\lbt loc\lbt nbr} is equal to +${\tt proc\lbt cnt\lbt tab}\mbox{\tt [}p\mbox{\tt]}$. +\iteme[{\tt vertgstnbr}] +Number of both local and ghost vertices borne by the given process. +Ghost vertices are local images of neighboring vertices located on +distant processes. +\iteme[{\tt vertloctab}] +Array of start indices in {\tt edgeloctab} and {\tt edgegsttab} of +vertex adjacency sub-arrays. +\iteme[{\tt vendloctab}] +Array of after-last indices in {\tt edgeloctab} and {\tt edgegsttab} +of vertex adjacency sub-arrays. +For any local vertex $i$, with $\mbox{\tt baseval} \leq i < (\mbox{\tt +baseval} + \mbox{\tt vertlocnbr})$, +$\mbox{\tt vend\lbt loc\lbt tab[}i\mbox{\tt ]} - +\mbox{\tt vert\lbt loc\lbt tab[}i\mbox{\tt ]}$ +is the degree of vertex $i$. + +When all vertex adjacency lists are stored in order in +{\tt edge\lbt loc\lbt tab} without any empty space between them, +it is possible to save memory by not allocating the physical memory +for {\tt vend\lbt loc\lbt tab}. In this case, illustrated in +Figure~\ref{fig-lib-dgraf-one}, {\tt vert\lbt loc\lbt tab} is of size +$\mbox{\tt vert\lbt loc\lbt nbr} + 1$ and {\tt vend\lbt loc\lbt tab} +points to $\mbox{\tt vert\lbt loc\lbt tab} + 1$. +For these graphs , called ``compact edge array graphs'', or ``compact +graphs'' for short, {\tt vert\lbt loc\lbt tab} is sorted in +ascending order, $\mbox{\tt vert\lbt loc\lbt tab[}\lbt\mbox{\tt +baseval]} = \mbox{\tt baseval}$ and $\mbox{\tt vert\lbt loc\lbt +tab[}\lbt\mbox{\tt baseval} + \mbox{\tt vert\lbt loc\lbt nbr]} = +(\mbox{\tt baseval} + \mbox{\tt edge\lbt loc\lbt nbr})$. + +Since {\tt vertloctab} and {\tt vendloctab} only account for local +vertices and not for ghost vertices, the sum across all processes of the +sizes of these arrays does not depend on the number of ghost vertices; +it is equal to $(v+p)$ for compact graphs and to $2v$ else. +\iteme[{\tt veloloctab}] +Optional array, of size {\tt vert\lbt loc\lbt nbr}, holding the +integer load associated with every vertex. +\iteme[{\tt edgeloctab}] +Array, of a size equal at least to $\left(\max_{i}(\mbox{\tt vend\lbt +loc\lbt tab[} i \mbox{\tt ]}) - \mbox{\tt baseval}\right)$, holding +the adjacency array of every local vertex. +For any local vertex $i$, with $\mbox{\tt baseval} \leq i < (\mbox{\tt +baseval} + \mbox{\tt vertlocnbr})$, the global indices of the neighbors +of $i$ are stored in {\tt edge\lbt loc\lbt tab} +from {\tt edge\lbt loc\lbt tab\lbt [vert\lbt loc\lbt tab[$i$]]} to +$\mbox{\tt edge\lbt loc\lbt tab[vend\lbt loc\lbt tab[}i\mbox{\tt ]} - +1\mbox{\tt ]}$, inclusive. + +Since ghost vertices do not have adjacency arrays, because only arcs +from local vertices to ghost vertices are recorded and not the +opposite, the overall sum of the sizes of all {\tt edge\lbt loc\lbt +tab} arrays is $e$. +\iteme[{\tt edgegsttab}] +Optional array holding the local and ghost indices of neighbors of +local vertices. +For any local vertex $i$, with $\mbox{\tt baseval} \leq i < (\mbox{\tt +baseval} + \mbox{\tt vertlocnbr})$, the local and ghost indices +of the neighbors of $i$ are stored in {\tt edge\lbt gst\lbt tab} +from {\tt edge\lbt gst\lbt tab\lbt [vert\lbt loc\lbt tab[$i$]]} to +{\tt edge\lbt gst\lbt tab[vend\lbt loc\lbt tab[$i$]\lbt $- 1$]}, +inclusive. + +Local vertices are numbered in global vertex order, +starting from {\tt baseval} to $(\mbox{\tt baseval} + +\mbox{\tt vertlocnbr} - 1)$, inclusive. Ghost vertices are also +numbered in global vertex order, from $(\mbox{\tt baseval} + +\mbox{\tt vertlocnbr})$ to $(\mbox{\tt baseval} + +\mbox{\tt vertgstnbr} - 1)$, inclusive. + +Only {\tt edgeloctab} has to be provided by the user. {\tt edge\lbt +gst\lbt tab} is internally computed by \ptscotch\ whenever needed, +or can be explicitey asked for by the user by calling function +{\tt SCOTCH\_\lbt dgraph\lbt Ghst}. +This array can serve to index user-defined arrays of quantities borne +by graph vertices, which can be exchanged between neighboring +processes thanks to the {\tt SCOTCH\_\lbt dgraph\lbt Halo} +routine documented in Section~\ref{sec-lib-dgraphhalo}. +\iteme[{\tt edloloctab}] +Optional array, of a size equal at least to $\left(\max_{i}(\mbox{\tt +vend\lbt loc\lbt tab[} i \mbox{\tt ]}) - \mbox{\tt baseval}\right)$, +holding the integer load associated with every arc. Matching arcs +should always have identical loads. +\end{itemize} + +\begin{figure} +\centering\includegraphics[scale=0.47]{p_f_gr1.eps} +\caption{Sample distributed graph and its description by +\libscotch\ arrays using a continuous numbering and compact edge +arrays. Numbers within vertices are vertex indices. Top graph is a +global view of the distributed graph, labeled with global, continuous, +indices. Bottom graphs are local views labeled with local and ghost +indices, where ghost vertices are drawn in black. Since the edge +array is compact, all {\tt vertloctab} arrays are of size $\mbox{\tt +vertlocnbr} + 1$, and {\tt vendloctab} points to $\mbox{\tt +vertloctab} + 1$. {\tt edgeloctab} edge arrays hold global indices +of end vertices, while optional {\tt edgegsttab} edge arrays hold +local and ghost indices. {\tt edgelocnbr} is the local number of arcs +(that is, twice the number of edges), including arcs to local vertices +as well as to ghost vertices {\tt veloloctab} and {\tt edloloctab} are +not represented.} +\label{fig-lib-dgraf-one} +\end{figure} + +\begin{figure} +\centering\includegraphics[scale=0.47]{p_f_gr2.eps} +\caption{Adjacency structure of the sample graph of +Figure~\protect\ref{fig-lib-dgraf-one} with a disjoint edge array and +a discontinuous ordering. Both {\tt vertloctab} and {\tt vendloctab} +are of size {\tt vertlocnbr}. This allows for the handling of dynamic +graphs, the structure of which can evolve with time.} +\label{fig-lib-dgraf-two} +\end{figure} + +Dynamic graphs can be handled elegantly by using the +{\tt vend\lbt loc\lbt tab} and {\tt proc\lbt vrt\lbt tab} arrays. +In order to dynamically manage distributed graphs, one just has to +reserve index ranges large enough to create new vertices on each +process, and to allocate +{\tt vert\lbt loc\lbt tab}, {\tt vend\lbt loc\lbt tab} and +{\tt edge\lbt loc\lbt tab} arrays that are large +enough to contain all of the expected new vertex and edge +data. This can be done by passing {\tt SCOTCH\_\lbt graph\lbo Build} a +maximum number of local vertices, {\tt vert\lbt loc\lbt max}, greater +than the current number of local vertices, {\tt vert\lbt loc\lbt nbr}. + +On every process $p$, vertices are globally labeled starting from +${\tt proc\lbt vrt\lbt tab}\mbox{\tt [}p\mbox{\tt ]}$, and locally +labeled from {\tt baseval}, leaving free space at the end of the local +arrays. To remove some vertex of local index $i$, one just has to +replace $\mbox{\tt vert\lbt loc\lbt tab}\mbox{\tt [}i\mbox{\tt ]}$ and +${\tt vend\lbt loc\lbt tab}\mbox{\tt [}i\mbox{\tt ]}$ with the values +of ${\tt vert\lbt loc\lbt tab}\lbt \mbox{\tt [vert\lbt loc\lbt +nbr}-1\mbox{\tt ]}$ and ${\tt vend\lbt loc\lbt tab}\lbt \mbox{\tt +[vert\lbt loc\lbt nbr}-1\mbox{\tt ]}$, respectively, and browse the +adjacencies of all neighbors of former vertex $(\mbox{\tt +vert}\lbt\mbox{\tt loc}\lbt\mbox{\tt nbr}-1)$ such that all +$(\mbox{\tt vert}\lbt\mbox{\tt loc}\lbt\mbox{\tt nbr}-1)$ indices are +turned into $i$s. Then, {\tt vert\lbt loc\lbt nbr} must be +decremented, and {\tt SCOTCH\_\lbt dgraph\lbt Build()} must be called +to account for the change of topology. If a graph building routine +such as {\tt SCOTCH\_\lbt dgraph\lbt Load()} or {\tt SCOTCH\_\lbt +dgraph\lbt Build()} had already been called on the {\tt SCOTCH\_\lbt +Dgraph} structure, {\tt SCOTCH\_\lbt dgraph\lbt Free()} has to be +called first in order to free the internal structures associated with +the older version of the graph, else these data would be lost, which +would result in memory leakage. + +To add a new vertex, one has to fill {\tt vert\lbt loc\lbt tab\lbt +[vertnbr\lbt -1]} and {\tt vend\lbt loc\lbt tab\lbt [vertnbr\lbt -1]} +with the starting and end indices of the adjacency sub-array of the +new vertex. Then, the adjacencies of its neighbor vertices must also +be updated to account for it. If free space had been reserved at the +end of each of the neighbors, one just has to increment the +${\tt vend\lbt loc\lbt tab}\mbox{\tt [}i\mbox{\tt ]}$ values of every +neighbor $i$, and add the index of the new vertex at the end of the +adjacency sub-array. If the sub-array cannot be extended, then it has +to be copied elsewhere in the edge array, and both ${\tt vert\lbt +loc\lbt tab}\mbox{\tt [}i\mbox{\tt ]}$ and ${\tt vend\lbt loc\lbt +tab}\mbox{\tt [}i\mbox{\tt ]}$ must be updated accordingly. With +simple housekeeping of free areas of the edge array, dynamic arrays +can be updated with as little data movement as possible. + +\subsubsection{Block ordering format} +\label{sec-lib-format-order} + +Block orderings associated with distributed graphs are described by +means of block and permutation arrays, made of {\tt SCOTCH\_Num}s. In +order for all orderings to have the same structure, irrespective of +whether they are centralized or distributed, or whether they are +created from graphs or meshes, all ordering data indices start from +{\tt baseval}. Consequently, row indices are related to vertex +indices in memory in the following way: row $i$ is associated with +vertex $i$ of the {\tt SCOTCH\_\lbt Dgraph} structure as if the vertex +numbering used for the graph was continuous. + +Block orderings are made of the following data: +\begin{itemize} +\iteme[{\tt permtab}] +Array holding the permutation of the reordered matrix. Thus, if $k = +\mbox{\tt permtab}\mbox{\tt [}i\mbox{\tt ]}$, then row $i$ of the +original matrix is now row $k$ of the reordered matrix, that is, row +$i$ is the $k^{\mbox{th}}$ pivot. +\iteme[{\tt peritab}] +Inverse permutation of the reordered matrix. Thus, if $i = \mbox{\tt +peritab[$k$]}$, then row $k$ of the reordered matrix was row $i$ of +the original matrix. +\iteme[{\tt cblknbr}] +Number of column blocks (that is, supervariables) in the block ordering. +\iteme[{\tt rangtab}] +Array of ranges for the column blocks. Column block $c$, with +$\mbox{\tt baseval} \leq c < (\mbox{\tt cblknbr} + \mbox{\tt +baseval})$, contains columns with indices ranging from {\tt +rangtab[$i$]} to {\tt rangtab[$i + 1$]}, exclusive, in the reordered +matrix. Therefore, +{\tt rangtab[baseval]} is always equal to {\tt baseval}, and +{\tt rangtab[cblknbr + baseval]} is always equal to +$\mbox{\tt vert\lbt glb\lbt nbr} + \mbox{\tt baseval}$. +% for graphs +% and to $\mbox{\tt vnod\lbt glb\lbt nbr} + \mbox{\tt baseval}$ for meshes. +In order to avoid memory errors when column blocks are all single +columns, the size of {\tt rangtab} must always be one more than the +number of columns, that is, $\mbox{\tt vert\lbt glb\lbt nbr} + 1$. +% for graphs and $\mbox{\tt vnod\lbt glb\lbt nbr} + 1$ for meshes. +\iteme[{\tt treetab}] +Array of ascendants of permuted column blocks in the separators tree. +{\tt treetab[i]} is the index of the father of column block $i$ in the +separators tree, or $-1$ if column block $i$ is the root of the +separators tree. Whenever separators or leaves of the separators tree +are split into subblocks, as the block splitting, minimum fill or minimum +degree methods do, all subblocks of the same level are linked to the +column block of higher index belonging to the closest separator +ancestor. Indices in {\tt treetab} are based, in the same way as for +the other blocking structures. See Figure~\ref{fig-lib-ord-block} for +a complete example. +\end{itemize} + +\begin{figure} +\centering\includegraphics[scale=0.47]{p_f_orb.eps} +\caption{Arrays resulting from the ordering by complete nested +dissection of a 4 by 3 grid based from $1$. Leftmost grid is the +original grid, and righmost grid is the reordered grid, with +separators shown and column block indices written in bold.} +% using strategy n{sep=hf{bal=0},ole=s,ose=s} +\label{fig-lib-ord-block} +\end{figure} + +\subsection{Strategy strings} + +The behavior of the static mapping and block ordering routines of the +\libscotch\ library is parametrized by means of strategy strings, +which describe how and when given partitioning or ordering methods +should be applied to graphs and subgraphs +% , or to meshes and submeshes. + +\subsubsection{Using default strategy strings} +\label{sec-lib-format-strat-default} + +While strategy strings can be built by hand, according to the syntax +given in the next sections, users who do not have specific needs can +take advantage of default strategies already implemented in the +\libscotch, which will yield very good results in most cases. By +doing so, they will spare themselves the hassle of updating their +strategies to comply to subsequent syntactic changes, and they will +benefit from the availability of new partitioning or ordering methods +as soon as they are made available. + +The simplest way to use default strategy strings is to avoid +specifying any. By initializing a strategy object, by means of the +{\tt SCOTCH\_\lbt stratInit} routine, and by using the initialized +strategy object as is, without further parametrization, this object +will be filled with a default strategy when passing it as a parameter +to the next partitioning or ordering routine to be called. On return, +the strategy object will contain a fully specified strategy, tailored +for the type of operation which has been requested. Consequently, a +fresh strategy object that was used to partition a graph cannot be +used afterward as a default strategy for calling an ordering routine, +for instance, as partitioning and ordering strategies are incompatible. + +The \libscotch\ also provides helper routines which allow users to +express their preferences on the kind of strategy that they +need. These helper routines, which are of the form +{\tt SCOTCH\_\lbt strat\lbt *\lbt Build}, tune default strategy strings +according to parameters provided by the user, such as the requested +number of parts (used as a hint to select the most efficient +partitioning routines), the desired maximum load imbalance ratio, +and a set of preference flags. While some of these flags are +antagonistic, most of them can be combined, by means of addition or +``binary or'' operators. These flags are the following. +They are grouped by application class. + +\paragraph{Global flags} + +\begin{itemize} +\iteme[{\tt SCOTCH\_STRATDEFAULT}] +Default behavior. No flags are set. +\iteme[{\tt SCOTCH\_STRATBALANCE}] +Enforce load balance as much as possible. +\iteme[{\tt SCOTCH\_STRATQUALITY}] +Privilege quality over speed. +\iteme[{\tt SCOTCH\_STRATSAFETY}] +Do not use methods that can lead to the occurrence of problematic +events, such as floating point exceptions, which could not be properly +handled by the calling software. +\iteme[{\tt SCOTCH\_STRATSPEED}] +Privilege speed over quality. +\end{itemize} + +%% \paragraph{Mapping and partitioning flags} + +%% \begin{itemize} +%% \iteme[{\tt SCOTCH\_STRATRECURSIVE}] +%% Use only recursive bipartitioning methods, and not direct k-way +%% methods. When this flag is not set, any combination of methods can be +%% used, so as to achieve the best result according to other user +%% preferences. +%% \iteme[{\tt SCOTCH\_STRATREMAP}] +%% Use the strategy for remapping an existing partition. +%% \end{itemize} + +\paragraph{Ordering flags} + +\begin{itemize} +\iteme[{\tt SCOTCH\_STRATLEVELMAX}] +Create at most the prescribed levels of nested dissection +separators. If the number of levels is less than the logarithm of the +number of processing elements used, distributed pieces of the +separated subgraph may have to be centralized so that the leaves can +be ordered, which may result in memory shortage. +\iteme[{\tt SCOTCH\_STRATLEVELMIN}] +Create at least the prescribed levels of nested dissection separators. +When used in conjunction with {\tt SCOTCH\_\lbt STRAT\lbt LEVEL\lbt +MAX}, the exact number of nested dissection levels will be performed, +unless the graph to order is too small. +\iteme[{\tt SCOTCH\_STRATLEAFSIMPLE}] +Order nested dissection leaves as cheaply as possible. +\iteme[{\tt SCOTCH\_STRATSEPASIMPLE}] +Order nested dissection separators as cheaply as possible. +\end{itemize} + +\subsubsection{Parallel mapping strategy strings} +\label{sec-lib-format-pmap} + +A parallel mapping strategy is made of one or several parallel +mapping methods, which can be combined by means of strategy +operators. The strategy operators that can be used in mapping +strategies are listed below, by increasing precedence. +\begin{itemize} +\iteme[{\tt (}{\it strat\/}{\tt )}] +Grouping operator. +The strategy enclosed within the parentheses is treated as a single +mapping method. +\iteme[{\tt /}{\it cond\/}{\tt ?}{\it strat1\/}{[{\tt :}{\it strat2}]{\tt ;}}] +Condition operator. According to the result of the evaluation of +condition {\it cond}, either {\it strat1\/} or {\it strat2\/} (if it +is present) is applied. The condition applies to the characteristics +of the current mapping task, and can be built from logical and +relational operators. Conditional operators are listed below, by +increasing precedence. +\begin{itemize} +\iteme[{\it cond1\/}{\tt |}{\it cond2}] +Logical or operator. The result of the condition is true if {\it cond1\/} +or {\it cond2\/} are true, or both. +\iteme[{\it cond1\/}{\tt \&}{\it cond2}] +Logical and operator. The result of the condition is true only if both +{\it cond1\/} and {\it cond2\/} are true. +\iteme[{\tt !}{\it cond}] +Logical not operator. The result of the condition is true only if +{\it cond\/} is false. +\iteme[{\it var} {\it relop} {\it val}] +Relational operator, where {\it var\/} is a node variable, {\it val\/} is +either a node variable or a constant of the type of variable {\it var}, and +{\it relop\/} is one of '{\tt\verb+<+}', '{\tt\verb+=+}', and '{\tt\verb+>+}'. +The node variables are listed below, along with their types. +\begin{itemize} +\iteme[{\tt edge}] +The global number of arcs of the current subgraph. +Integer. +\iteme[{\tt levl}] +The level of the subgraph in the recursion tree, starting from zero +for the initial graph at the root of the tree. +Integer. +\iteme[{\tt load}] +The overall sum of the vertex loads of the subgraph. It is equal to +{\tt vert} if the graph has no vertex loads. +Integer. +\iteme[{\tt mdeg}] +The maximum degree of the subgraph. +Integer. +\iteme[{\tt proc}] +The number of processes on which the current subgraph is distributed +at this level of the separators tree. +Integer. +\iteme[{\tt rank}] +The rank of the current process among the group of processes on +which the current subgraph is distributed at this level of the +separators tree. +Integer. +\iteme[{\tt vert}] +The global number of vertices of the current subgraph. +Integer. +\end{itemize} +\end{itemize} +\iteme[{\it method\/}{[{\tt \{}{\it parameters\/}{\tt \}}]}] +Parallel graph mapping method. Available parallel mapping methods +are listed below. +\end{itemize} +The currently available parallel mapping methods are the following. +\begin{itemize} +\iteme[{\tt r}] +Dual recursive bipartitioning method. The parameters of the dual recursive +bipartitioning method are given below. +\begin{itemize} +\iteme[{\tt seq=}{\it strat}] +Set the sequential mapping strategy that is used on every centralized +subgraph of the recursion tree, once the dual recursive bipartitioning +process has gone far enough such that the number of processes handling +some subgraph is restricted to one. +\iteme[{\tt sep=}{\it strat}] +Set the parallel graph bipartitioning strategy that is used on every +current job of the recursion tree. Parallel graph bipartitioning +strategies are described below, in section~\ref{sec-lib-format-pbipart}. +\end{itemize} +\end{itemize} + +\subsubsection{Parallel graph bipartitioning strategy strings} +\label{sec-lib-format-pbipart} + +A parallel graph bipartitioning strategy is made of one or several +parallel graph bipartitioning methods, which can be combined by means +of strategy operators. Strategy operators are listed below, by +increasing precedence. + +\begin{itemize} +\iteme[{\it strat1\/}{\tt |}{\it strat2}] +Selection operator. The result of the selection is the best bipartition of +the two that are obtained by the distinct application of {\it strat1\/} and +{\it strat2\/} to the current bipartition. +\iteme[{\it strat1$\:$}{\it strat2}] +Combination operator. Strategy {\it strat2\/} is applied to the bipartition +resulting from the application of strategy {\it strat1\/} to the current +bipartition. Typically, the first method used should compute an initial +bipartition from scratch, and every following method should use the +result of the previous one at its starting point. +\iteme[{\tt (}{\it strat\/}{\tt )}] +Grouping operator. +The strategy enclosed within the parentheses is treated as a single +bipartitioning method. +\iteme[{\tt /}{\it cond\/}{\tt ?}{\it strat1\/}{[{\tt :}{\it strat2}]{\tt ;}}] +Condition operator. According to the result of the evaluation of condition +{\it cond}, either {\it strat1\/} or {\it strat2\/} (if it is present) is +applied. The condition applies to the characteristics of the current active +graph, and can be built from logical and relational operators. Conditional +operators are listed below, by increasing precedence. +\begin{itemize} +\iteme[{\it cond1\/}{\tt |}{\it cond2}] +Logical or operator. The result of the condition is true if {\it cond1\/} +or {\it cond2\/} are true, or both. +\iteme[{\it cond1\/}{\tt \&}{\it cond2}] +Logical and operator. The result of the condition is true only if both +{\it cond1\/} and {\it cond2\/} are true. +\iteme[{\tt !}{\it cond}] +Logical not operator. The result of the condition is true only if +{\it cond\/} is false. +\iteme[{\it var} {\it relop} {\it val}] +Relational operator, where {\it var\/} is a graph or node variable, +{\it val\/} is either a graph or node variable or a constant of the type of +variable {\it var\/}, and {\it relop\/} is one of +'{\tt\verb+<+}', '{\tt\verb+=+}', and '{\tt\verb+>+}'. +The graph and node variables are listed below, along with their types. +\begin{itemize} +\iteme[{\tt edge}] +The global number of edges of the current subgraph. +Integer. +\iteme[{\tt levl}] +The level of the subgraph in the bipartition or multi-level tree, starting from zero +for the initial graph at the root of the tree. +Integer. +\iteme[{\tt load}] +The overall sum of the vertex loads of the subgraph. It is equal to +{\tt vert} if the graph has no vertex loads. +Integer. +\iteme[{\tt load0}] +The vertex load of the first subset of the current bipartition of the current +graph. +Integer. +\iteme[{\tt proc}] +The number of processes on which the current subgraph is distributed +at this level of the nested dissection process. +Integer. +\iteme[{\tt rank}] +The rank of the current process among the group of processes on +which the current subgraph is distributed at this level of the +nested dissection process. +Integer. +\iteme[{\tt vert}] +The number of vertices of the current subgraph. +Integer. +\end{itemize} +\end{itemize} +The currently available parallel vertex separation methods are the +following. +\begin{itemize} +\iteme[{\tt b}] +Band method. Basing on the current distributed graph and on its +partition, this method creates a new distributed graph reduced to the +vertices which are at most at a given distance from the current +frontier, runs a parallel graph bipartitioning strategy on this graph, +and prolongs back the new bipartition to the current graph. This method +is primarily used to run bipartition refinement methods during the +uncoarsening phase of the multi-level parallel graph bipartitioning +method. The parameters of the band method are listed below. +\begin{itemize} +\iteme[{\tt bnd=}{\it strat}] +Set the parallel graph bipartitioning strategy to be applied to the band +graph. +\iteme[{\tt org=}{\it strat}] +Set the parallel graph bipartitioning strategy to be applied to the +full distributed graph if the band graph could not be extracted. +\iteme[{\tt width=}{\it val}] +Set the maximum distance from the current frontier of vertices to be +kept in the band graph. $0$ means that only frontier vertices +themselves are kept, $1$ that immediate neighboring vertices are kept +too, and so on. +\end{itemize} +\iteme[{\tt d}] +Parallel diffusion method. This method, presented in its sequential +formulation in~\cite{pell07b}, flows two kinds of antagonistic +liquids, scotch and anti-scotch, from two source vertices, and sets +the new frontier as the limit between vertices which contain scotch +and the ones which contain anti-scotch. Because selecting the source +vertices is essential to the obtainment of useful results, this method +has been hard-coded so that the two source vertices are the two +vertices of highest indices, since in the band method these are the +anchor vertices which represent all of the removed vertices of each +part. Therefore, this method must be used on band graphs only, or on +specifically crafted graphs. Applying it to any other graphs is very +likely to lead to extremely poor results. The parameters of the +diffusion bipartitioning method are listed below. +\begin{itemize} +\iteme[{\tt dif=}{\it rat}] +Fraction of liquid which is diffused to neighbor vertices at each +pass. To achieve convergence, the sum of the {\tt dif} and {\tt rem} +parameters must be equal to $1$, but in order to speed-up the diffusion +process, other combinations of higher sum can be tried. In this case, +the number of passes must be kept low, to avoid numerical overflows +which would make the results useless. +\iteme[{\tt pass=}{\it nbr}] +Set the number of diffusion sweeps performed by the algorithm. This +number depends on the width of the band graph to which the diffusion +method is applied. Useful values range from $30$ to $500$ according +to chosen {\tt dif} and {\tt rem} coefficients. +\iteme[{\tt rem=}{\it rat}] +Fraction of liquid which remains on vertices at each pass. See above. +\end{itemize} +\iteme[{\tt m}] +Parallel multi-level method. The parameters of the multi-level method +are listed below. +\begin{itemize} +\iteme[{\tt asc=}{\it strat}] +Set the strategy that is used to refine the distributed bipartition +obtained at ascending levels of the uncoarsening phase by +prolongation of the bipartition computed for coarser graphs. +% or meshes. +This strategy is not applied to the coarsest graph, +% or mesh +for which only the {\tt low} strategy is used. +\iteme[{\tt dlevl=}{\it nbr}] +Set the minimum level after which duplication is allowed in the +folding process. A value of $-1$ results in duplication being always +performed when folding. +\iteme[{\tt dvert=}{\it nbr}] +Set the average number of vertices per process under which +the folding process is performed during the coarsening phase. +\iteme[{\tt low=}{\it strat}] +Set the strategy that is used to compute the bipartition of the +coarsest distributed graph, +% or mesh +at the lowest level of the coarsening process. +\iteme[{\tt rat=}{\it rat}] +Set the threshold maximum coarsening ratio over which graphs +% or meshes +are no longer coarsened. The ratio of any given coarsening cannot be +less that $0.5$ (case of a perfect matching), and cannot be greater +than $1.0$. Coarsening stops when either the coarsening ratio is +above the maximum coarsening ratio, or the graph +% or mesh +has fewer node vertices than the minimum number of vertices allowed. +\iteme[{\tt vert=}{\it nbr}] +Set the threshold minimum size under which graphs +% or meshes +are no longer coarsened. Coarsening stops when either the coarsening +ratio is above the maximum coarsening ratio, or the graph +% or mesh +has fewer node vertices than the minimum number of vertices allowed. +\end{itemize} +\iteme[{\tt q}] +Multi-sequential method. The current distributed graph and its +separator are centralized on every process that holds a part of it, and +a sequential graph bipartitioning method is applied independently to each +of them. Then, the best bipartition found is prolonged back to the +distributed graph. This method is primarily designed to operate on +band graphs, which are orders of magnitude smaller than their parent +graph. Else, memory bottlenecks are very likely to occur. +The parameters of the multi-sequential method are listed below. +\begin{itemize} +\iteme[{\tt strat=}{\it strat}] +Set the sequential edge separation strategy that is used to refine +the bipartition of the centralized graph. For a description of all of +the available sequential bipartitioning methods, please refer to the +{\it\scotch\ User's Guide}~\scotchcitesuser. +\end{itemize} +\iteme[{\tt x}] +Load balance enforcement method. This method moves as many vertices +from the heaviest part to the lightest one so as to reduce load +imbalance as much as possible, without impacting communication load +too negatively. The only parameter of this method is listed below. +\begin{itemize} +\iteme[{\tt sbbt=}{\it nbr}] +Number of sub-buckets to sort communication gains. $5$ is a common +value. +\end{itemize} +\iteme[{\tt z}] +Zero method. This method moves all of the vertices to the first +part, resulting in an empty frontier. Its main use is to stop the +bipartitioning process whenever some condition is true. +\end{itemize} +\end{itemize} + +\subsubsection{Parallel ordering strategy strings} +\label{sec-lib-format-pord} + +A parallel ordering strategy is made of one or several parallel +ordering methods, which can be combined by means of strategy +operators. The strategy operators that can be used in ordering +strategies are listed below, by increasing precedence. +\begin{itemize} +\iteme[{\tt (}{\it strat\/}{\tt )}] +Grouping operator. +The strategy enclosed within the parentheses is treated as a single +ordering method. +\iteme[{\tt /}{\it cond\/}{\tt ?}{\it strat1\/}{[{\tt :}{\it strat2}]{\tt ;}}] +Condition operator. According to the result of the evaluation of +condition {\it cond}, either {\it strat1\/} or {\it strat2\/} (if it +is present) is applied. The condition applies to the characteristics +of the current node of the separators tree, and can be built from +logical and relational operators. Conditional operators are listed +below, by increasing precedence. +\begin{itemize} +\iteme[{\it cond1\/}{\tt |}{\it cond2}] +Logical or operator. The result of the condition is true if {\it cond1\/} +or {\it cond2\/} are true, or both. +\iteme[{\it cond1\/}{\tt \&}{\it cond2}] +Logical and operator. The result of the condition is true only if both +{\it cond1\/} and {\it cond2\/} are true. +\iteme[{\tt !}{\it cond}] +Logical not operator. The result of the condition is true only if +{\it cond\/} is false. +\iteme[{\it var} {\it relop} {\it val}] +Relational operator, where {\it var\/} is a node variable, {\it val\/} is +either a node variable or a constant of the type of variable {\it var}, and +{\it relop\/} is one of '{\tt\verb+<+}', '{\tt\verb+=+}', and '{\tt\verb+>+}'. +The node variables are listed below, along with their types. +\begin{itemize} +\iteme[{\tt edge}] +The global number of arcs of the current subgraph. +Integer. +\iteme[{\tt levl}] +The level of the subgraph in the separators tree, starting from zero +for the initial graph at the root of the tree. +Integer. +\iteme[{\tt load}] +The overall sum of the vertex loads of the subgraph. It is equal to +{\tt vert} if the graph has no vertex loads. +Integer. +\iteme[{\tt mdeg}] +The maximum degree of the subgraph. +Integer. +\iteme[{\tt proc}] +The number of processes on which the current subgraph is distributed +at this level of the separators tree. +Integer. +\iteme[{\tt rank}] +The rank of the current process among the group of processes on +which the current subgraph is distributed at this level of the +separators tree. +Integer. +\iteme[{\tt vert}] +The global number of vertices of the current subgraph. +Integer. +\end{itemize} +\end{itemize} +\iteme[{\it method\/}{[{\tt \{}{\it parameters\/}{\tt \}}]}] +Parallel graph ordering method. Available parallel ordering methods +are listed below. +\end{itemize} +The currently available parallel ordering methods are the following. +\begin{itemize} +\iteme[{\tt n}] +Nested dissection method. The parameters of the nested dissection +method are given below. +\begin{itemize} +\iteme[{\tt ole=}{\it strat}] +Set the parallel ordering strategy that is used on every distributed +leaf of the parallel separators tree if the node separation strategy +{\tt sep} has failed to separate it further. +\iteme[{\tt ose=}{\it strat}] +Set the parallel ordering strategy that is used on every distributed +separator of the separators tree. +\iteme[{\tt osq=}{\it strat}] +Set the sequential ordering strategy that is used on every centralized +subgraph of the separators tree, once the nested dissection process has +gone far enough such that the number of processes handling some +subgraph is restricted to one. +\iteme[{\tt sep=}{\it strat}] +Set the parallel node separation strategy that is used on every +current leaf of the separators tree to make it grow. Parallel +node separation strategies are described below, in +section~\ref{sec-lib-format-pnsep}. +\end{itemize} +\iteme[{\tt q}] +Sequential ordering method. The distributed graph is gathered onto a +single process which runs a sequential ordering strategy. The only +parameter of the sequential method is given below. +\begin{itemize} +\iteme[{\tt strat=}{\it strat}] +Set the sequential ordering strategy that is applied to the +centralized graph. For a description of all of the available +sequential ordering methods, please refer to the +{\it\scotch\ User's Guide}~\scotchcitesuser. +\end{itemize} +\iteme[{\tt s}] +Simple method. Vertices are ordered in their natural order. This +method is fast, and should be used to order separators if the number +of extra-diagonal blocks is not relevant +\end{itemize} + +\subsubsection{Parallel node separation strategy strings} +\label{sec-lib-format-pnsep} + +A parallel node separation strategy is made of one or several parallel +node separation methods, which can be combined by means of strategy +operators. Strategy operators are listed below, by increasing +precedence. + +\begin{itemize} +\iteme[{\it strat1\/}{\tt |}{\it strat2}] +Selection operator. The result of the selection is the best vertex separator of +the two that are obtained by the distinct application of {\it strat1\/} and +{\it strat2\/} to the current separator. +\iteme[{\it strat1$\:$}{\it strat2}] +Combination operator. Strategy {\it strat2\/} is applied to the vertex +separator resulting from the application of strategy {\it strat1\/} to the +current separator. Typically, the first method used should compute an initial +separation from scratch, and every following method should use the +result of the previous one as a starting point. +\iteme[{\tt (}{\it strat\/}{\tt )}] +Grouping operator. +The strategy enclosed within the parentheses is treated as a single +separation method. +\iteme[{\tt /}{\it cond\/}{\tt ?}{\it strat1\/}{[{\tt :}{\it strat2}]{\tt ;}}] +Condition operator. According to the result of the evaluation of condition +{\it cond}, either {\it strat1\/} or {\it strat2\/} (if it is present) is +applied. The condition applies to the characteristics of the current subgraph, +and can be built from logical and relational operators. Conditional +operators are listed below, by increasing precedence. +\begin{itemize} +\iteme[{\it cond1\/}{\tt |}{\it cond2}] +Logical or operator. The result of the condition is true if {\it cond1\/} +or {\it cond2\/} are true, or both. +\iteme[{\it cond1\/}{\tt \&}{\it cond2}] +Logical and operator. The result of the condition is true only if both +{\it cond1\/} and {\it cond2\/} are true. +\iteme[{\tt !}{\it cond}] +Logical not operator. The result of the condition is true only if +{\it cond\/} is false. +\iteme[{\it var} {\it relop} {\it val}] +Relational operator, where {\it var\/} is a graph or node variable, +{\it val\/} is either a graph or node variable or a constant of the type of +variable {\it var\/}, and {\it relop\/} is one of +'{\tt\verb+<+}', '{\tt\verb+=+}', and '{\tt\verb+>+}'. +The graph and node variables are listed below, along with their types. +\begin{itemize} +\iteme[{\tt edge}] +The global number of edges of the current subgraph. +Integer. +\iteme[{\tt levl}] +The level of the subgraph in the separators tree, starting from zero +for the initial graph at the root of the tree. +Integer. +\iteme[{\tt load}] +The overall sum of the vertex loads of the subgraph. It is equal to +{\tt vert} if the graph has no vertex loads. +Integer. +\iteme[{\tt proc}] +The number of processes on which the current subgraph is distributed +at this level of the nested dissection process. +Integer. +\iteme[{\tt rank}] +The rank of the current process among the group of processes on +which the current subgraph is distributed at this level of the +nested dissection process. +Integer. +\iteme[{\tt vert}] +The number of vertices of the current subgraph. +Integer. +\end{itemize} +\end{itemize} +The currently available parallel vertex separation methods are the +following. +\begin{itemize} +\iteme[{\tt b}] +Band method. Basing on the current distributed graph and on its +partition, this method creates a new distributed graph reduced to the +vertices which are at most at a given distance from the current +separator, runs a parallel vertex separation strategy on this graph, +and prolongs back the new separator to the current graph. This method +is primarily used to run separator refinement methods during the +uncoarsening phase of the multi-level parallel graph separation +method. The parameters of the band method are listed below. +\begin{itemize} +\iteme[{\tt strat=}{\it strat}] +Set the parallel vertex separation strategy to be applied to the band +graph. +\iteme[{\tt width=}{\it val}] +Set the maximum distance from the current separator of vertices to be +kept in the band graph. $0$ means that only separator vertices +themselves are kept, $1$ that immediate neighboring vertices are kept +too, and so on. +\end{itemize} +\iteme[{\tt m}] +Parallel vertex multi-level method. The parameters of the vertex +multi-level method are listed below. +\begin{itemize} +\iteme[{\tt asc=}{\it strat}] +Set the strategy that is used to refine the distributed vertex +separators obtained at ascending levels of the uncoarsening phase by +prolongation of the separators computed for coarser graphs. +% or meshes. +This strategy is not applied to the coarsest graph, +% or mesh +for which only the {\tt low} strategy is used. +\iteme[{\tt dlevl=}{\it nbr}] +Set the minimum level after which duplication is allowed in the +folding process. A value of $-1$ results in duplication being always +performed when folding. +\iteme[{\tt dvert=}{\it nbr}] +Set the average number of vertices per process under which +the folding process is performed during the coarsening phase. +\iteme[{\tt low=}{\it strat}] +Set the strategy that is used to compute the vertex separator of the +coarsest distributed graph, +% or mesh +at the lowest level of the coarsening process. +\iteme[{\tt rat=}{\it rat}] +Set the threshold maximum coarsening ratio over which graphs +% or meshes +are no longer coarsened. The ratio of any given coarsening cannot be +less that $0.5$ (case of a perfect matching), and cannot be greater +than $1.0$. Coarsening stops when either the coarsening ratio is +above the maximum coarsening ratio, or the graph +% or mesh +has fewer node vertices than the minimum number of vertices allowed. +\iteme[{\tt vert=}{\it nbr}] +Set the threshold minimum size under which graphs +% or meshes +are no longer coarsened. Coarsening stops when either the coarsening +ratio is above the maximum coarsening ratio, or the graph +% or mesh +has fewer node vertices than the minimum number of vertices allowed. +\end{itemize} +\iteme[{\tt q}] +Multi-sequential method. The current distributed graph and its +separator are centralized on every process that holds a part of it, and +a sequential vertex separation method is applied independently to each +of them. Then, the best separator found is prolonged back to the +distributed graph. This method is primarily designed to operate on +band graphs, which are orders of magnitude smaller than their parent +graph. Else, memory bottlenecks are very likely to occur. +The parameters of the multi-sequential method are listed below. +\begin{itemize} +\iteme[{\tt strat=}{\it strat}] +Set the sequential vertex separation strategy that is used to refine +the separator of the centralized graph. For a description of all of +the available sequential methods, please refer to the +{\it\scotch\ User's Guide}~\scotchcitesuser. +\end{itemize} +\iteme[{\tt z}] +Zero method. This method moves all of the node vertices to the first +part, resulting in an empty separator. Its main use is to stop the +separation process whenever some condition is true. +\end{itemize} +\end{itemize} + +\subsection{Distributed graph handling routines} +\label{sec-lib-dgraph} + +\subsubsection{{\tt SCOTCH\_dgraphAlloc}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}l} +SCOTCH\_Dgraph * SCOTCH\_dgraphAlloc ( & void) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphAlloc} function allocates a memory area of a +size sufficient to store a {\tt SCOTCH\_\lbt Dgraph} structure. It is +the user's responsibility to free this memory when it is no longer +needed. The allocated space must be initialized before use, by means +of the {\tt SCOTCH\_\lbt dgraph\lbt Init} routine. + +\progret + +{\tt SCOTCH\_dgraphAlloc} returns the pointer to the memory area if it +has been successfully allocated, and {\tt NULL} else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphBand}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_dgraphBand ( & SCOTCH\_Dgraph * const & orggrafptr, \\ + & const SCOTCH\_Num & fronlocnbr, \\ + & const SCOTCH\_Num * const & fronloctab, \\ + & const SCOTCH\_Num & distval, \\ + & SCOTCH\_Dgraph * const & bndgrafptr) \\ +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphband ( & doubleprecision (*) & orggrafdat, \\ + & integer*{\it num} & seedlocnbr, \\ + & integer*{\it num} (*) & seedloctab, \\ + & integer*{\it num} & distval, \\ + & doubleprecision (*) & bndgrafdat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphBand} routine creates in the {\tt SCOTCH\_\lbt +Dgraph} structure pointed to by {\tt bndgrafptr} a distributed band +graph induced from the {\tt SCOTCH\_\lbt Dgraph} pointed to by {\tt +orggrafptr}. The distributed band graph will contain all the vertices +of the original graph located at a distance smaller than or equal to +{\tt distval} from any vertex provided in the {\tt seedloctab} lists +of seed vertices. + +On each process, the {\tt seedloctab} array should contain the local +indices of the local vertices that will serve as seeds. The number of +such local vertices is passed to {\tt SCOTCH\_\lbt dgraph\lbt Band} in +the {\tt seedlocnbr} value. The size of the {\tt seedloctab} array +should be at least equal to the number of local vertices of the +original graph, as it is internally used as a queue array. Hence, no +user data should be placed immediately after the {\tt seedlocnbr} +values in the array, as they are most likely to be overwritten by +{\tt SCOTCH\_\lbt dgraph\lbt Band}. + +{\tt bndgrafptr} must have been initialized with the +{\tt SCOTCH\_\lbt dgraph\lbt Init} routine before +{\tt SCOTCH\_dgraph\lbt Band} is called. The communicator that is +passed to it can either be the communicator used by the original graph +{\tt org\lbt graf\lbt ptr}, or any congruent communicator created by +using {\tt MPI\_\lbt Comm\_\lbt dup} on this communicator. Using a +distinct communicator for the induced band graph allows subsequent +library routines to be called in parallel on the two graphs after the +band graph is created. + +Induced band graphs have vertex labels attached to each of their +vertices, in the {\tt vlbl\lbt loc\lbt tab} array. If the original +graph had vertex labels attached to it, band graph vertex labels are +the labels of the corresponding vertices in the original graph. Else, +band graph vertex labels are the global indices of corresponding +vertices in the original graph. + +Depending on original graph vertex and seed distributions, the +distribution of induced band graph vertices may be highly +imbalanced. In order for further computations on this distributed +graph to scale well, a redistribution of its data may be necessary, +using the {\tt SCOTCH\_dgraph\lbt Redist} routine. + +\progret + +{\tt SCOTCH\_dgraphBand} returns $0$ if the band graph structure has +been successfully created, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphBuild}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_dgraphBuild ( & SCOTCH\_Dgraph * & grafptr, \\ + & const SCOTCH\_Num & baseval, \\ + & const SCOTCH\_Num & vertlocnbr, \\ + & const SCOTCH\_Num & vertlocmax, \\ + & const SCOTCH\_Num * & vertloctab, \\ + & const SCOTCH\_Num * & vendloctab, \\ + & const SCOTCH\_Num * & veloloctab, \\ + & const SCOTCH\_Num * & vlblocltab, \\ + & const SCOTCH\_Num & edgelocnbr, \\ + & const SCOTCH\_Num & edgelocsiz, \\ + & const SCOTCH\_Num * & edgeloctab, \\ + & const SCOTCH\_Num * & edgegsttab, \\ + & const SCOTCH\_Num * & edloloctab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphbuild ( & doubleprecision (*) & grafdat, \\ + & integer*{\it num} & baseval, \\ + & integer*{\it num} & vertlocnbr, \\ + & integer*{\it num} & vertlocmax, \\ + & integer*{\it num} (*) & vertloctab, \\ + & integer*{\it num} (*) & vendloctab, \\ + & integer*{\it num} (*) & veloloctab, \\ + & integer*{\it num} (*) & vlblloctab, \\ + & integer*{\it num} & edgelocnbr, \\ + & integer*{\it num} & edgelocsiz, \\ + & integer*{\it num} (*) & edgeloctab, \\ + & integer*{\it num} (*) & edgegsttab, \\ + & integer*{\it num} (*) & edloloctab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphBuild} routine fills the distributed source +graph structure pointed to by {\tt grafptr} with all of the data that +are passed to it. + +{\tt baseval} is the graph base value for index arrays (typically $0$ for +structures built from C and $1$ for structures built from Fortran). +{\tt vertlocnbr} is the number of local vertices on the calling +process, used to create the {\tt proccnttab} array. +{\tt vertlocmax} is the maximum number of local vertices to be created +on the calling process, used to create the {\tt proc\lbt vrt\lbt tab} +array of global indices, and which must be set to {\tt vert\lbt +loc\lbt nbr} for graphs wihout holes in their global numbering. +{\tt vertloctab} is the local adjacency index array, of size $({\tt +vertlocnbr} + 1)$ if the edge array is compact (that is, if {\tt +vendloctab} equals $\mbox{\tt vertloctab}+1$ or {\tt NULL}), or of +size {\tt vertlocnbr} else. +{\tt vendloctab} is the adjacency end index array, of size {\tt +vertlocnbr} if it is disjoint from {\tt vertloctab}. +{\tt veloloctab} is the local vertex load array, of size +{\tt vertlocnbr} if it exists. +{\tt vlblloctab} is the local vertex label array, of size +{\tt vertlocnbr} if it exists. +{\tt edgelocnbr} is the local number of arcs (that is, twice the +number of edges), including arcs to local vertices as well as to +ghost vertices. +{\tt edgelocsiz} is lower-bounded by the minimum size of the edge +array required to encompass all used adjacency values; it is therefore +at least equal to the maximum of the {\tt vendloctab} entries, over +all local vertices, minus {\tt baseval}; it can be set to {\tt +edgelocnbr} if the edge array is compact. +{\tt edgeloctab} is the local adjacency array, of size at least +{\tt edgelocsiz}, which stores the global indices of end vertices. +{\tt edgegsttab} is the adjacency array, of size at least +{\tt edgelocsiz}, if it exists; if {\tt edgegsttab} is given, it is +assumed to be a pointer to an empty array to be filled with ghost +vertex data computed by {\tt SCOTCH\_dgraph\lbt Ghst} whenever +needed by communication routines such as +{\tt SCOTCH\_dgraph\lbt Halo}. +{\tt edloloctab} is the arc load array, of size {\tt edgelocsiz} +if it exists. + +The {\tt vendloctab}, {\tt veloloctab}, {\tt vlblloctab}, +{\tt edloloctab} and {\tt edgegsttab} arrays are optional, +and a null pointer can be passed as argument whenever +they are not defined. + +Note that, for \ptscotch\ to operate properly, either all the arrays +of a kind must be set to null on all processes, or else all of them +must be non null. This is mandatory because some algorithms require that +collective communication operations be performed when some kind of +data is present. If some processes considered that the arrays are +present, and start such communications, while others did not, a +deadlock would occur. In most cases, this situation will be +anticipated and an error message will be issued, stating that graph +data are inconsistent. + +The situation above may accidentally arise when some processes don't +own any edge or vertex. In that case, depending on the implementation, +a user \texttt{malloc} of size zero may return a null pointer rather +than a non null pointer to an area of size zero, leading to the +aforementioned inconsistencies. In order to avoid this problem, it is +necessary to ensure that no null pointer will be returned, even in the +case when zero bytes are requested. A workaround can be to call +\texttt{malloc (\textit{x} | 4)} instead of \texttt{malloc +(\textit{x})}. The ``\texttt{| 4}'' will consume only $4$ extra bytes +at most, depending on the value of \texttt{\textit{x}}. + +Since, in Fortran, there is no null reference, passing the +{\tt scotchf\lbt dgraph\lbt build} routine a reference equal to +{\tt vertloctab} in the {\tt veloloctab} or {\tt vlblloctab} fields +makes them be considered as missing arrays. The same holds for +{\tt edloloctab} and {\tt edgegsttab} when they are passed a +reference equal to {\tt edgeloctab}. Setting {\tt vendloctab} +to refer to one cell after {\tt vertloctab} yields the same result, +as it is the exact semantics of a compact vertex array. + +To limit memory consumption, {\tt SCOTCH\_\lbt dgraph\lbo Build} does +not copy array data, but instead references them in the {\tt +SCOTCH\_\lbt Dgraph} structure. Therefore, great care should be taken +not to modify the contents of the arrays passed to {\tt SCOTCH\_\lbt +dgraph\lbo Build} as long as the graph structure is in use. Every +update of the arrays should be preceded by a call to {\tt SCOTCH\_\lbt +dgraph\lbo Free}, to free internal graph structures, and eventually +followed by a new call to {\tt SCOTCH\_\lbt dgraph\lbo Build} to +re-build these internal structures so as to be able to use the new +distributed graph. + +To ensure that inconsistencies in user data do not result in an +erroneous behavior of the \libscotch\ routines, it is recommended, at +least in the development stage of your application code, to call the +{\tt SCOTCH\_\lbt dgraph\lbt Check} routine on the newly created +{\tt SCOTCH\_\lbt Dgraph} structure before calling any other +\libscotch\ routine. + +\progret + +{\tt SCOTCH\_dgraphBuild} returns $0$ if the graph structure has been +successfully set with all of the input data, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphCheck}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_dgraphCheck ( & const SCOTCH\_Dgraph * & grafptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphcheck ( & doubleprecision (*) & grafdat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphCheck} routine checks the consistency of the +given {\tt SCOTCH\_\lbt Dgraph} structure. It can be used in client +applications to determine if a graph which has been created from +user-generated data by means of the {\tt SCOTCH\_\lbt dgraph\lbt Build} +routine is consistent, prior to calling any other routines of the +\libscotch\ library which would otherwise return internal error +messages or crash the program. + +\progret + +{\tt SCOTCH\_dgraphCheck} returns $0$ if graph data are consistent, and +$1$ else. + +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphCoarsen}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_dgraphCoarsen ( & SCOTCH\_Dgraph * const & finegrafptr, \\ + & const SCOTCH\_Num & coarnbr, \\ + & const double & coarrat, \\ + & const SCOTCH\_Num & flagval, \\ + & SCOTCH\_Dgraph * const & coargrafptr, \\ + & SCOTCH\_Num * const & multloctab) \\ +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphcoarsen ( & doubleprecision (*) & finegrafdat, \\ + & integer*{\it num} & coarnbr, \\ + & doubleprecision & coarrat, \\ + & integer*{\it num} & flagval, \\ + & doubleprecision (*) & coargrafdat, \\ + & integer*{\it num} (*) & multloctab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphCoarsen} routine creates in the +{\tt SCOTCH\_\lbt Dgraph} structure pointed to by {\tt coargrafptr} +a distributed coarsened graph from the {\tt SCOTCH\_\lbt Dgraph} +pointed to by {\tt finegrafptr}. The coarsened graph is created only +if it is comprises more than {\tt coarnbr} vertices, or if the +coarsening ratio is lower than {\tt coarrat}. Valid coarsening ratio +values range from $0.5$ (in the case of a perfect matching) to $1.0$ +(if no vertex could be coarsened). Classical threshold values range +from $0.7$ to $0.8$. + +The {\tt flagval} flag specifies the type of coarsening. Several +groups of flags can be combined, by means of addition or +``binary or'' operators. When {\tt SCOTCH\_\lbt COARSEN\lbt +NO\lbt MERGE} is set, isolated vertices are never merged with other +vertices. This preserves the topology of the graph, at the expense of +a higher coarsening ratio. When {\tt SCOTCH\_\lbt COARSEN\lbt +FOLD} or {\tt SCOTCH\_\lbt COARSEN\lbt FOLD\lbt DUP} are set, if a +coarsened graph is created, it is folded onto half of the processes of +the initial communicator. In the case of {\tt SCOTCH\_\lbt COARSEN\lbt +FOLD\lbt DUP}, a second copy is created (duplicated) onto the other +half. The two copies may not be identical, if the number of processors +of the finer graph is odd. + +The {\tt multloctab} array must be of a size that is big enough to +store multinode data for the resulting coarsened graph. This array +will contain pairs of consecutive {\tt SCOTCH\_\lbt Num} values, +representing the global indices of the two fine vertices that have +been coarsened into each of the local coarse vertices. In case of +plain coarsening, the size of the array must be at least twice the +maximum expected number of local coarse vertices, that is, on each +processor, twice the value of {\tt vert\lbt loc\lbt nbr} of the finer +graph, because in the worst case no coarsening may happen on some +processor. In case of folding, a redistribution of vertices is +performed. Hence, the maximum number of coarse vertices on some +processor is upper-bounded by the expected maximum global number of +coarse vertices, divided by the resulting number of processors, that +is, the integer floor value of half of the number of processors of the +finer graph. + +{\tt coargrafptr} must have been initialized with the +{\tt SCOTCH\_\lbt dgraph\lbt Init} routine before +{\tt SCOTCH\_dgraph\lbt Coarsen} is called. The communicator that is +passed to it can either be the communicator used by the fine graph +{\tt fine\lbt graf\lbt ptr}, or any congruent communicator created by +using {\tt MPI\_\lbt Comm\_\lbt dup} on this communicator. Using a +distinct communicator for the coarsened subgraph allows subsequent +library routines to be called in parallel on the two graphs after the +coarse graph is created. + +Depending on the way vertex mating is performed, the distribution of +coarsened graph vertices may be imbalanced. In order for further +computations on this distributed graph to scale well, a redistribution +of its data might be necessary, using the +{\tt SCOTCH\_dgraph\lbt Redist} routine. + +\progret + +{\tt SCOTCH\_dgraphCoarsen} returns $0$ if the coarse graph +structure has been successfully created, $1$ if the coarse graph was +not created because it did not enforce the threshold parameters, and +$2$ on error. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphData}} +\label{sec-lib-func-scotchdgraphdata} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_dgraphData ( & const SCOTCH\_Graph * & grafptr, \\ + & SCOTCH\_Num * & baseptr, \\ + & SCOTCH\_Num * & vertglbptr, \\ + & SCOTCH\_Num * & vertlocptr, \\ + & SCOTCH\_Num * & vertlocptz, \\ + & SCOTCH\_Num * & vertgstptr, \\ + & SCOTCH\_Num ** & vertloctab, \\ + & SCOTCH\_Num ** & vendloctab, \\ + & SCOTCH\_Num ** & veloloctab, \\ + & SCOTCH\_Num ** & vlblloctab, \\ + & SCOTCH\_Num * & edgeglbptr, \\ + & SCOTCH\_Num * & edgelocptr, \\ + & SCOTCH\_Num * & edgelocptz, \\ + & SCOTCH\_Num ** & edgeloctab, \\ + & SCOTCH\_Num ** & edgegsttab, \\ + & SCOTCH\_Num ** & edloloctab, \\ + & MPI\_Comm * & comm) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphdata ( & doubleprecision (*) & grafdat, \\ + & integer*{\it num} (*) & indxtab, \\ + & integer*{\it num} & baseval, \\ + & integer*{\it num} & vertglbnbr, \\ + & integer*{\it num} & vertlocnbr, \\ + & integer*{\it num} & vertlocmax, \\ + & integer*{\it num} & vertgstnbr, \\ + & integer*{\it idx} & vertlocidx, \\ + & integer*{\it idx} & vendlocidx, \\ + & integer*{\it idx} & velolocidx, \\ + & integer*{\it idx} & vlbllocidx, \\ + & integer*{\it num} & edgeglbnbr, \\ + & integer*{\it num} & edgelocnbr, \\ + & integer*{\it num} & edgelocsiz, \\ + & integer*{\it idx} & edgelocidx, \\ + & integer*{\it idx} & edgegstidx, \\ + & integer*{\it idx} & edlolocidx, \\ + & integer & comm) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphData} routine is the dual of the +{\tt SCOTCH\_\lbt dgraph\lbo Build} routine. It is a multiple +accessor that returns scalar values and array references. + +{\tt baseptr} is the pointer to a location that will hold the graph base +value for index arrays (typically $0$ for +structures built from C and $1$ for structures built from Fortran). +{\tt vertglbptr} is the pointer to a location that will hold the +global number of vertices. +{\tt vertlocptr} is the pointer to a location that will hold the +number of local vertices. +{\tt vertlocptz} is the pointer to a location that will hold the +maximum allowed number of local vertices, that is, +$(\mbox{\tt proc\lbt vrt\lbt tab[}p + 1\mbox{\tt]} - +\mbox{\tt proc\lbt vrt\lbt tab[}p\mbox{\tt]})$, where $p$ is the +rank of the local process. +{\tt vertgstptr} is the pointer to a location that will hold the +number of local and ghost vertices if it has already been computed +by a prior call to {\tt SCOTCH\_\lbt dgraph\lbo Ghst}, and $-1$ else. +{\tt vertloctab} is the pointer to a location that will hold the +reference to the adjacency index array, of size +$\mbox{\tt *vertlocptr} + 1$ if the adjacency array is compact, +or of size {\tt *vertlocptr} else. +{\tt vendloctab} is the pointer to a location that will hold the +reference to the adjacency end index array, and is equal to +$\mbox{\tt vertloctab} + 1$ if the adjacency array is compact. +{\tt veloloctab} is the pointer to a location that will hold the +reference to the vertex load array, of size {\tt *vertlocptr}. +{\tt vlblloctab} is the pointer to a location that will hold the +reference to the vertex label array, of size {\tt vertlocnbr}. +{\tt edgeglbptr} is the pointer to a location that will hold the +global number of arcs (that is, twice the number of global edges). +{\tt edgelocptr} is the pointer to a location that will hold the +number of local arcs (that is, twice the number of local edges). +{\tt edgelocptz} is the pointer to a location that will hold the +declared size of the local edge array, which must encompass all +used adjacency values; it is at least equal to {\tt *edgelocptr}. +{\tt edgeloctab} is the pointer to a location that will hold the +reference to the local adjacency array of global indices, of size +at least {\tt *edgelocptz}. +{\tt edgegsttab} is the pointer to a location that will hold the +reference to the ghost adjacency array, of size at least +{\tt *edgelocptz}; if it is non null, its data are valid if +{\tt vertgstnbr} is non-negative. +{\tt edloloctab} is the pointer to a location that will hold the +reference to the arc load array, of size {\tt *edgelocptz}. +{\tt comm} is the pointer to a location that will hold the MPI +communicator of the distributed graph. + +Any of these pointers can be set to {\tt NULL} on input if the +corresponding information is not needed. Else, the reference to a +dummy area can be provided, where all unwanted data will be written. + +Since there are no pointers in Fortran, a specific mechanism is used +to allow users to access graph arrays. The {\tt scotchf\lbt dgraph\lbt +data} routine is passed an integer array, the first element of which +is used as a base address from which all other array indices are +computed. Therefore, instead of returning references, the routine +returns integers, which represent the starting index of each of the +relevant arrays with respect to the base input array, or {\tt vert\lbt +loc\lbt idx}, the index of {\tt vert\lbt loc\lbt tab}, if they do not +exist. For instance, if some base array {\tt myarray\lbt (1)} is +passed as parameter {\tt indxtab}, then the first cell of array {\tt +vert\lbt loc\lbt tab} will be accessible as {\tt myarray\lbt +(vert\lbt loc\lbt idx)}. +In order for this feature to behave properly, the {\tt indxtab} +array must be word-aligned with the graph arrays. This is +automatically enforced on most systems, but some care should be +taken on systems that allow to access data that is not +word-aligned. On such systems, declaring the array after a +dummy {\tt double\lbt precision} array can coerce the compiler +into enforcing the proper alignment. The integer value returned in +{\tt comm} is the communicator itself, not its index with respect to +{\tt indxtab}. Also, on 32\_64 architectures, +such indices can be larger than the size of a regular +{\tt INTEGER}. This is why the indices to be returned are defined by +means of a specific integer type. See +Section~\ref{sec-lib-inttypesize} for more information on this +issue. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphExit}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_dgraphExit ( & SCOTCH\_Dgraph * & grafptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphexit ( & doubleprecision (*) & grafdat) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphExit} function frees the contents of a +{\tt SCOTCH\_\lbt Dgraph} structure previously initialized by +{\tt SCOTCH\_\lbt dgraphInit}. All subsequent calls to +{\tt SCOTCH\_\lbt dgraph} routines other than {\tt SCOTCH\_\lbt +dgraphInit}, using this structure as parameter, may yield +unpredictable results. + +If {\tt SCOTCH\_\lbt dgraph\lbt Init} was called with a +communicator that is not a predefined MPI communicator, it is +the user's responsibility to free this communicator after +all graphs that use it have been freed by means of the +{\tt SCOTCH\_\lbt dgraph\lbt Exit} routine. + +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphFree}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_dgraphFree ( & SCOTCH\_Dgraph * & grafptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphfree ( & doubleprecision (*) & grafdat) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphFree} function frees the graph data of a +{\tt SCOTCH\_\lbt Dgraph} structure previously initialized by +{\tt SCOTCH\_\lbt dgraph\lbt Init}, but preserves its internal +communication data structures. This call is equivalent to +a call to {\tt SCOTCH\_\lbt dgraph\lbt Exit} immediately +followed by a call to {\tt SCOTCH\_\lbt dgraph\lbt Init} with the +same communicator as in the previous {\tt SCOTCH\_\lbt dgraph\lbt +Init} call. Consequently, the given {\tt SCOTCH\_\lbt Dgraph} +structure remains ready for subsequent calls to any distributed +graph handling routine of the \libscotch\ library. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphGather}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_dgraphGather ( & SCOTCH\_Dgraph * const & dgrfptr, \\ + & const SCOTCH\_Graph * const & cgrfptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphgather ( & doubleprecision (*) & dgrfdat, \\ + & doubleprecision (*) & cgrfdat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphGather} routine gathers the contents of the +distributed {\tt SCOTCH\_\lbt Dgraph} structure pointed to by {\tt +dgrfptr} to the centralized {\tt SCOTCH\_\lbt Graph} structure(s) +pointed to by {\tt cgrfptr}. + +If only one of the processes has a non-null {\tt cgrfptr} +pointer, it is considered as the root process to which distributed +graph data is sent. Else, all of the processes must provide a valid +{\tt cgrfptr} pointer, and each of them will receive a copy of +the centralized graph. + +\progret + +{\tt SCOTCH\_dgraphGather} returns $0$ if the graph structure has +been successfully gathered, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphInducePart}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_dgraphInducePart ( & SCOTCH\_Dgraph * const & orggrafptr, \\ + & const SCOTCH\_Num * const & orgpartloctab, \\ + & const SCOTCH\_Num & indpartval, \\ + & const SCOTCH\_Num & indvertlocnbr, \\ + & SCOTCH\_Dgraph * const & indgrafptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphinducepart ( & doubleprecision (*) & orggrafdat, \\ + & integer*{\it num} (*) & orgpartloctab, \\ + & integer*{\it num} & indpartval, \\ + & integer*{\it num} & indvertlocnbr, \\ + & doubleprecision (*) & indgrafdat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphInducePart} routine creates in the +{\tt SCOTCH\_\lbt Dgraph} structure pointed to by {\tt indgrafptr} +a distributed induced subgraph of the {\tt SCOTCH\_\lbt Dgraph} +pointed to by {\tt orggrafptr}. The local vertices of every processor +that are kept in the induced subgraph are the ones for which the +values contained in the {\tt orgpart\lbt loctab} array cells are equal +to {\tt indpartval}. + +The {\tt orgpartloctab} array must be of a size at least equal to +the number of local vertices of the original graph. It may be larger, +e.g. equal to the number of local plus ghost vertices, if needed by +the user, but only the area corresponding to the local vertices will +be used by {\tt SCOTCH\_\lbt dgraph\lbt Induce\lbt Part}. + +{\tt indvertlocnbr} is the number of local vertices in the induced +subgraph. It must therefore be equal to the number of local vertices +that have their associated {\tt org\lbt part\lbt loc\lbt tab} cell +value equal to {\tt indpartval}. This value is necessary to internal +array allocations. While it could have been easily computed by +\scotch, by traversing the {\tt orgpart\lbt gsttab} array, making it +used-provided spares such a traversal if the user already knows the +value. If it is not the case, setting this value to {\tt -1} will make +\scotch\ compute it automatically. + +{\tt indgrafptr} must have been initialized with the {\tt SCOTCH\_\lbt +dgraph\lbt Init} routine before {\tt SCOTCH\_dgraph\lbt Induce\lbt +Part} is called. The communicator that is passed to it can either be +the communicator used by the original graph {\tt org\lbt graf\lbt +ptr}, or any congruent communicator created by using {\tt MPI\_\lbt +Comm\_\lbt dup} on this communicator. Using a distinct communicator +for the induced subgraph allows subsequent library routines to be +called in parallel on the two graphs after the induced graph is +created. + +Induced band graphs have vertex labels attached to each of their +vertices, in the {\tt vlbl\lbt loc\lbt tab} array. If the original +graph had vertex labels attached to it, induced graph vertex labels +are the labels of the corresponding vertices in the original +graph. Else, induced graph vertex labels are the global indices of +corresponding vertices in the original graph. + +Depending on the partition array, the distribution of induced graph +vertices may be highly imbalanced. In order for further computations +on this distributed graph to scale well, a redistribution of its data +may be necessary, using the {\tt SCOTCH\_dgraph\lbt Redist} routine. + +\progret + +{\tt SCOTCH\_dgraphInducePart} returns $0$ if the induced graph +structure has been successfully created, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphInit}} +\label{sec-lib-dgraphinit} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_dgraphInit ( & SCOTCH\_Dgraph * & grafptr, \\ + & MPI\_Comm & comm) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphinit ( & doubleprecision (*) & grafdat, \\ + & integer & comm, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphInit} function initializes a {\tt SCOTCH\_\lbt +Dgraph} structure so as to make it suitable for future parallel +operations. It should be the first function to be called upon a {\tt +SCOTCH\_\lbt Dgraph} structure. By accessing the communicator handle +which is passed to it, {\tt SCOTCH\_dgraphInit} can know how many +processes will be used to manage the distributed graph and can allocate +its private structures accordingly. + +{\tt SCOTCH\_dgraphInit} does not make a duplicate of the communicator +which is passed to it, but instead keeps a reference to it, so that +all future communications needed by \libscotch\ to process this graph +will be performed using this communicator. Therefore, it is the user's +responsibility, whenever several \libscotch\ routines might be called +in parallel, to create appropriate duplicates of communicators so as +to avoid any potential interferences between concurrent +communications. + +When the distributed graph is no longer of use, the {\tt +SCOTCH\_\lbt dgraph\lbt Exit} function must be called, to free +its internal data arrays. + +If {\tt SCOTCH\_\lbt dgraph\lbt Init} was called with a +communicator that is not a predefined MPI communicator (such as +{\tt MPI\_\tt COMM\_\lbt WORLD} or {\tt MPI\_\tt COMM\_\lbt SELF}), it +is the user's responsibility to free this communicator after +all graphs that use it have been freed by means of the +{\tt SCOTCH\_\lbt dgraph\lbt Exit} routine. + +\progret + +{\tt SCOTCH\_dgraphInit} returns $0$ if the graph structure has been +successfully initialized, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphRedist}} +\label{sec-lib-dgraphredist} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} + +int SCOTCH\_dgraphRedist ( & SCOTCH\_Dgraph * const & orggrafptr, \\ + & const SCOTCH\_Num * const & partloctab, \\ + & const SCOTCH\_Num * const & permgsttab, \\ + & const SCOTCH\_Num & vertlocdlt, \\ + & const SCOTCH\_Num & edgelocdlt, \\ + & SCOTCH\_Dgraph * const & redgrafptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphredist ( & doubleprecision (*) & orggrafdat, \\ + & integer*{\it num} (*) & partloctab, \\ + & integer*{\it num} (*) & permgsttab, \\ + & integer*{\it num} & vertlocdlt, \\ + & integer*{\it num} & edgelocdlt, \\ + & doubleprecision (*) & redgrafptr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphRedist} routine initializes and fills the +redistributed graph structure pointed to by +{\tt red\lbt graf\lbt ptr} with a new distributed graph +made from data redistributed from the original +graph pointed to by {\tt org\lbt graf\lbt ptr}. + +The partition array, {\tt part\lbt loc\lbt tab}, must always be +provided. It holds the part number associated with each local +vertex. Part indices are {\em not\/} based: target vertices are +numbered from $0$ to the number of parts minus $1$. + +Whenever provided, the permutation array {\tt perm\lbt gst\lbt tab} +must be of a size equal to the number of local and ghost vertices of +the source graph (that is, {\tt vert\lbt gst\lbt nbr}, see +Section~\ref{sec-lib-format-dgraph}). Its contents must be based, that +is, permutation global indices start at {\tt baseval}. Both its local +and ghost contents must be valid. Consequently, it is the user's +responsibility to call {\tt SCOTCH\_dgraph\lbt Halo} whenever +necessary so as to propagate part values of the local vertices to +their ghost counterparts on other processes. {\tt SCOTCH\_\lbt +dgraph\lbt Redist} does not perform this halo exchange itself +because users may already have computed these values by themselves +when computing the new partition. If {\tt perm\lbt gst\lbt tab} is not +provided by the user, vertices in each part are reordered according to +their global indices in the source graph. + +{\tt redgrafptr} must have been initialized with the {\tt SCOTCH\_\lbt +dgraph\lbt Init} routine before {\tt SCOTCH\_dgraph\lbt Redist} is +called. The communicator that is passed to it can either be the +communicator used by the original graph {\tt org\lbt graf\lbt ptr}, +or any congruent communicator created by using {\tt MPI\_\lbt +Comm\_\lbt dup} on this communicator. Using a distinct communicator +for the redistributed graph allows subsequent library routines to be +called in parallel on the two graphs after the redistributed graph is +created. + +Redistributed graphs have vertex labels attached to each of their +vertices, in the {\tt vlbl\lbt loc\lbt tab} array. If the original +graph had vertex labels attached to it, redistributed graph vertex +labels are the labels of the corresponding vertices in the original +graph. Else, redistributed graph vertex labels are the global indices +of corresponding vertices in the original graph. + +\progret + +{\tt SCOTCH\_dgraphRedist} returns $0$ if the redistributed graph has +been successfully created, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphScatter}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_dgraphScatter ( & SCOTCH\_Dgraph * const & dgrfptr, \\ + & const SCOTCH\_Graph * const & cgrfptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphscatter ( & doubleprecision (*) & dgrfdat, \\ + & doubleprecision (*) & cgrfdat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphScatter} routine scatters the contents of the +centralized {\tt SCOTCH\_\lbt Graph} structure pointed to by +{\tt cgrfptr} across the processes of the distributed +{\tt SCOTCH\_\lbt Dgraph} structure pointed to by {\tt dgrfptr}. + +Only one of the processes should provide a non-null {\tt cgrfptr} +parameter. This process is considered the root process for the +scattering operation. Since, in Fortran, there is no null reference, +processes which are not the root must indicate it by passing a pointer +to the distributed graph structure equal to the pointer to their +centralized graph structure. + +The scattering is performed such that graph vertices are evenly +spread across the processes of the communicator associated with +the distributed graph, in ascending order. Every process receives +either +$\left\lceil\frac{\mbox{vertglbnbr}}{\mbox{procglbnbr}}\right\rceil$ +or +$\left\lfloor\frac{\mbox{vertglbnbr}}{\mbox{procglbnbr}}\right\rfloor$ +vertices, according to its rank: processes of lower ranks are filled +first, eventually with one more vertex than processes of higher ranks. + +\progret + +{\tt SCOTCH\_dgraphScatter} returns $0$ if the graph structure has +been successfully scattered, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphSize}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_dgraphSize ( & const SCOTCH\_Dgraph * & grafptr, \\ + & SCOTCH\_Num * & vertglbptr, \\ + & SCOTCH\_Num * & vertlocptr, \\ + & SCOTCH\_Num * & edgeglbptr, \\ + & SCOTCH\_Num * & edgelocptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphsize ( & doubleprecision (*) & grafdat, \\ + & integer*{\it num} & vertglbnbr, \\ + & integer*{\it num} & vertlocnbr, \\ + & integer*{\it num} & edgeglbnbr, \\ + & integer*{\it num} & edgelocnbr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphSize} routine fills the four areas of type +{\tt SCOTCH\_\lbt Num} pointed to by {\tt vertglbptr}, +{\tt vertlocptr}, {\tt edgeglbptr} and {\tt edgelocptr} +with the number of global vertices and arcs (that is, twice the number +of edges) of the given graph pointed to by {\tt grafptr}, as well as +with the number of local vertices and arcs borne by each of the +calling processes. + +Any of these pointers can be set to {\tt NULL} on input if the +corresponding information is not needed. Else, the reference to a +dummy area can be provided, where all unwanted data will be written. + +This routine is useful to get the size of a graph read by means +of the {\tt SCOTCH\_\lbt dgraph\lbo Load} routine, in order to allocate +auxiliary arrays of proper sizes. If the whole structure of the +graph is wanted, function {\tt SCOTCH\_dgraph\lbo Data} should be +preferred. + +\end{itemize} + +\subsection{Distributed graph I/O routines} + +\subsubsection{{\tt SCOTCH\_dgraphLoad}} +\label{sec-lib-dgraphload} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_dgraphLoad ( & SCOTCH\_Dgraph * & grafptr, \\ + & FILE * & stream, \\ + & SCOTCH\_Num & baseval, \\ + & SCOTCH\_Num & flagval) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphload ( & doubleprecision (*) & grafdat, \\ + & integer & fildes, \\ + & integer*{\it num} & baseval, \\ + & integer*{\it num} & flagval, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphLoad} routine fills the {\tt +SCOTCH\_\lbt Dgraph} structure pointed to by {\tt grafptr} with the +centralized or distributed source graph description available from +one or several streams {\tt stream} in the \scotch\ graph formats +(please refer to section~\ref{sec-file-dsgraph} for a description +of the distributed graph format, and to the {\it\scotch\ User's +Guide}~\scotchcitesuser\ for the centralized graph format). + +When only one stream pointer is not null, the associated source graph +file must be a centralized one, the contents of which are spread +across all of the processes. When all stream pointers are non null, +they can either refer to multiple instances of the same centralized +graph, or to the distinct fragments of a distributed graph. In the +first case, all processes read all of the contents of the centralized +graph files but keep only the relevant part. In the second case, every +process reads its fragment in parallel. + +To ease the handling of source graph files by programs written in C as +well as in Fortran, the base value of the graph to read can be set +to {\tt 0} or {\tt 1}, by setting the {\tt baseval} parameter to the +proper value. A value of {\tt -1} indicates that the graph base should +be the same as the one provided in the graph description that is read +from {\tt stream}. + +The {\tt flagval} value is a combination of the following integer values, +that may be added or bitwise-ored: +\begin{itemize} +\iteme[{\tt 0}] +Keep vertex and edge weights if they are present in the {\tt stream} data. +\iteme[{\tt 1}] +Remove vertex weights. The graph read will have all of its vertex weights +set to one, regardless of what is specified in the {\tt stream} data. +\iteme[{\tt 2}] +Remove edge weights. The graph read will have all of its edge weights +set to one, regardless of what is specified in the {\tt stream} data. +\end{itemize} + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt fildes} associated +with the logical unit of the graph file. Processes which would pass a +{\tt NULL} stream pointer in C must pass descriptor number {\tt -1} in +Fortran. + +\progret + +{\tt SCOTCH\_dgraphLoad} returns $0$ if the distributed graph +structure has been successfully allocated and filled with the data +read, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphSave}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_dgraphSave ( & const SCOTCH\_Dgraph * & grafptr, \\ + & FILE * & stream) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphsave ( & doubleprecision (*) & grafdat, \\ + & integer & fildes, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphSave} routine saves the contents of the {\tt +SCOTCH\_\lbt Dgraph} structure pointed to by {\tt grafptr} to streams +{\tt stream}, in the \scotch\ distributed graph format (see +section~\ref{sec-file-dsgraph}). + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt fildes} associated +with the logical unit of the graph file. + +\progret + +{\tt SCOTCH\_dgraphSave} returns $0$ if the graph structure has been +successfully written to {\tt stream}, and $1$ else. +\end{itemize} + +\subsection{Data handling and exchange routines} + +\subsubsection{{\tt SCOTCH\_dgraphGhst}} +\label{sec-lib-dgraphghst} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} + +int SCOTCH\_dgraphGhst ( & SCOTCH\_Dgraph * const & grafptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphghst ( & doubleprecision (*) & grafdat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphGhst} routine fills the {\tt edge\lbt gst\lbt +tab} arrays of the distributed graph structure pointed to by {\tt +grafptr} with the local and ghost vertex indices corresponding to the +global vertex indices contained in its {\tt edge\lbt loc\lbt tab} +arrays, according to the semantics described in +Section~\ref{sec-lib-format-dgraph}. + +If memory areas had not been previously reserved by the user for the +{\tt edge\lbt gst\lbt tab} arrays and linked to the distributed graph +structure through a call to {\tt SCOTCH\_\lbt dgraph\lbt Build}, they +are allocated. Their references can be retrieved on every process by +means of a call to {\tt SCOTCH\_\lbt dgraph\lbt Data}, which will also +return the number of local and ghost vertices, suitable for allocating +vertex data arrays for {\tt SCOTCH\_\lbt dgraph\lbt Halo}. + +\progret + +{\tt SCOTCH\_dgraphGhst} returns $0$ if ghost vertex data has been +successfully computed, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphHalo}} +\label{sec-lib-dgraphhalo} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} + +int SCOTCH\_dgraphHalo ( & SCOTCH\_Dgraph * const & grafptr, \\ + & void * & datatab, \\ + & MPI\_Datatype & typeval) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphhalo ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & datatab, \\ + & integer & typeval, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphHalo} routine propagates the data borne by +local vertices to all of the corresponding halo vertices located on +neighboring processes, in a synchronous way. On every process, +{\tt datatab} should point to a data array of a size sufficient to +hold {\tt vert\lbt gst\lbt nbr} elements of the data type to be +exchanged, the first {\tt vertlocnbr} slots of which must already be +filled with the information associated with the local vertices. On +completion, the $({\tt vert\lbt gst\lbt nbr} - {\tt vert\lbt loc\lbt +nbr})$ remaining slots are filled with copies of the corresponding +remote data obtained from the local parts of the data arrays of +neighboring processes. + +When the MPI data type to be used is not a collection of contiguous +entries, great care should be taken in the definition of the upper +bound of the type (by using the {\tt MPI\_\lbo UB} pseudo-datatype), +such that when asking MPI to send a certain number of elements of the +said type located at some address, contiguous areas in memory will be +considered. Please refer to the MPI documentation regarding the +creation of derived datatypes~\cite[Section 3.12.3]{mpi11} for more +information. + +To perform its data exchanges, the {\tt SCOTCH\_dgraph\lbt Halo} +routine requires ghost vertex management data provided by the {\tt +SCOTCH\_\lbt dgraph\lbt Ghst} routine. Therefore, the {\tt edge\lbt +gst\lbt tab} array returned by the {\tt SCOTCH\_dgraph\lbt Data} +routine will always be valid after a call to {\tt SCOTCH\_dgraph\lbt +Halo}, if it was not already. + +In case useful computation can be carried out during the halo +exchange, an asynchronous version of this routine is available, called +{\tt SCOTCH\_\lbt dgraph\lbt Halo\lbt Async}. + +\progret + +{\tt SCOTCH\_dgraphHalo} returns $0$ if halo data has been +successfully exchanged, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphHaloAsync}} +\label{sec-lib-dgraphhaloasync} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} + +int SCOTCH\_dgraphHaloAsync ( & SCOTCH\_Dgraph * const & grafptr, \\ + & void * & datatab, \\ + & MPI\_Datatype & typeval, \\ + & SCOTCH\_DgraphHaloReq * const & requptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphhaloasync ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & datatab, \\ + & integer & typeval, \\ + & doubleprecision (*) & requptr, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphHaloAsync} routine propagates the data borne by +local vertices to all of the corresponding halo vertices located on +neighboring processes, in an asynchronous way. On every process, {\tt +datatab} should point to a data array of a size sufficient to hold +{\tt vert\lbt gst\lbt nbr} elements of the data type to be exchanged, +the first {\tt vertlocnbr} slots of which must already be filled with +the information associated with the local vertices. On completion, the +$({\tt vert\lbt gst\lbt nbr} - {\tt vert\lbt loc\lbt nbr})$ remaining +slots are filled with copies of the corresponding remote data obtained +from the local parts of the data arrays of neighboring processes. + +The semantics of {\tt SCOTCH\_dgraphHaloAsync} is similar to the one +of {\tt SCOTCH\_dgraph\lbt Halo}, except that it returns as soon as +possible, while effective communication may not have started nor +completed. Also, it possesses an additional parameter, {\tt requptr}, +which must point to a {\tt SCOTCH\_\lbt Dgraph\lbt Halo\lbt Req} data +structure. Similarly to asynchronous MPI calls, users can wait for the +completion of a {\tt SCOTCH\_dgraph\lbt Halo\lbt Async} routine by +calling the {\tt SCOTCH\_dgraph\lbt Halo\lbt Wait} routine, passing it +a pointer to this request structure. In Fortran, the request structure +must be defined as an array of {\tt DOUBLEPRECISION}s, of size +{\tt SCOTCH\_\lbt DGRAPH\lbt HALO\lbt REQDIM}. This constant is +defined in file {\tt ptscotchf.h}, which must be included whenever +necessary. + +The effective means for {\tt SCOTCH\_dgraph\lbt Halo\lbt Async} to +perform its task may vary at compile time, depending on the presence +of a thread-safe MPI library or on the existence of asynchronous +collective communication routines such as {\tt MPE\_\lbt Ialltoallv}. +In case no method for performing asynchronous collective communication +is available, {\tt SCOTCH\_dgraph\lbt Halo\lbt Async} will internally +call {\tt SCOTCH\_dgraph\lbt Halo} to perform synchronous communication. + +Because of possible limitations in the implementation of third-party +communication routines, it is not recommended to perform simultaneous +{\tt SCOTCH\_dgraph\lbt Halo\lbt Async} calls on the same communicator. + +\progret + +{\tt SCOTCH\_dgraphHaloAsync} returns $0$ if the halo data exchange +has been successfully started, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphHaloWait}} +\label{sec-lib-dgraphhalowait} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} + +int SCOTCH\_dgraphHaloWait ( & SCOTCH\_DgraphHaloReq * const & requptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphhalowait ( & doubleprecision (*) & requptr, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphHaloWait} routine waits for the termination of +an asynchronous halo exchange process, started by a call to {\tt +SCOTCH\_dgraph\lbt Halo\lbt Async}, and represented by its request, +pointed to by {\tt requptr}. + +In Fortran, the request structure must be defined as an array of +{\tt DOUBLEPRECISION}s, of size {\tt SCOTCH\_\lbt DGRAPH\lbt HALO\lbt +REQDIM}. This constant is defined in file {\tt ptscotchf.h}, which +must be included whenever necessary. + +\progret + +{\tt SCOTCH\_dgraphHaloWait} returns $0$ if halo data has been +successfully exchanged, and $1$ else. +\end{itemize} + +\subsection{Distributed graph mapping and partitioning routines} + +{\tt SCOTCH\_dgraphMap} and {\tt SCOTCH\_dgraphPart} provide +high-level functionalities and free the user from the burden of +calling in sequence several of the low-level routines also described +in this section. + +\subsubsection{{\tt SCOTCH\_dgraphMap}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_dgraphMap ( & const SCOTCH\_Dgraph * & grafptr, \\ + & const SCOTCH\_Arch * & archptr, \\ + & const SCOTCH\_Strat * & straptr, \\ + & SCOTCH\_Num * & partloctab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphmap ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & archdat, \\ + & doubleprecision (*) & stradat, \\ + & integer*{\it num} (*) & partloctab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphMap} routine computes a mapping of the +distributed source graph structure pointed to by {\tt grafptr} onto +the target architecture pointed to by {\tt archptr}, using the mapping +strategy pointed to by {\tt straptr}, and returns distributed +fragments of the partition data in the array pointed to by {\tt +partloctab}. + +The {\tt partloctab} array should have been previously allocated, of a +size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as +there are local vertices of the source graph on each of the processes. + +On return, every cell of the mapping array holds the number of the +target vertex to which the corresponding source vertex is mapped. +The numbering of target values is {\em not\/} based: target vertices +are numbered from $0$ to the number of target vertices minus $1$. + +{\bf Attention}: version {\sc 6.0} of \scotch\ does not allow yet to +map distributed graphs onto target architectures which are not +complete graphs. This restriction will be removed in the next release. + +\progret + +{\tt SCOTCH\_dgraphMap} returns $0$ if the partition of the graph has +been successfully computed, and $1$ else. In this last case, the +{\tt partloctab} arrays may however have been partially or completely +filled, but their contents is not significant. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphMapCompute}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_dgraphMapCompute ( & const SCOTCH\_Dgraph * & grafptr, \\ + & SCOTCH\_Dmapping * & mappptr, \\ + & const SCOTCH\_Strat * & straptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphmapcompute ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & mappdat, \\ + & doubleprecision (*) & stradat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphMapCompute} routine computes a mapping +on the given {\tt SCOTCH\_\lbt Dmapping} structure pointed +to by {\tt mappptr} using the parallel mapping strategy pointed to +by {\tt stratptr}. + +On return, every cell of the distributed mapping array (see +section~\ref{sec-lib-dgraph-map-init}) holds the number of the target +vertex to which the corresponding source vertex is mapped. The +numbering of target values is {\em not\/} based: target vertices are +numbered from $0$ to the number of target vertices, minus $1$. + +{\bf Attention}: version {\sc 6.0} of \scotch\ does not allow yet to +map distributed graphs onto target architectures which are not +complete graphs. This restriction will be removed in the next release. + +\progret + +{\tt SCOTCH\_dgraphMapCompute} returns $0$ if the mapping has been +successfully computed, and $1$ else. In this latter case, the local +mapping arrays may however have been partially or completely filled, +but their contents is not significant. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphMapExit}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_dgraphMapExit ( & const SCOTCH\_Dgraph * & grafptr, \\ + & SCOTCH\_Dmapping * & mappptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphmapexit ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & mappdat) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphMapExit} function frees the contents of a +{\tt SCOTCH\_\lbt Dmapping} structure previously initialized by +{\tt SCOTCH\_\lbt dgraph\lbt Map\lbt Init}. All subsequent calls to +{\tt SCOTCH\_\lbt dgraph\lbt Map*} routines other than +{\tt SCOTCH\_\lbt dgraph\lbt Map\lbt Init}, using this structure +as parameter, may yield unpredictable results. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphMapInit}} +\label{sec-lib-dgraph-map-init} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_dgraphMapInit ( & const SCOTCH\_Dgraph * & grafptr, \\ + & SCOTCH\_Dmapping * & mappptr, \\ + & const SCOTCH\_Arch * & archptr, \\ + & SCOTCH\_Num * & partloctab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphmapinit ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & mappdat, \\ + & doubleprecision (*) & archdat, \\ + & integer*{\it num} (*) & partloctab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphMapInit} routine fills the distributed mapping +structure pointed to by {\tt mappptr} with all of the data that is +passed to it. Thus, all subsequent calls to ordering routines such as +{\tt SCOTCH\_\lbt dgraph\lbt Map\lbt Compute}, using this mapping +structure as parameter, will place mapping results in field {\tt +part\lbt loc\lbt tab}. + +{\tt partloctab} is the pointer to an array of as many {\tt +SCOTCH\_\lbt Num}s as there are local vertices in each local fragment +of the distributed graph pointed to by {\tt grafptr}, and which will +receive the indices of the vertices of the target architecture pointed +to by {\tt archptr}. + +It should be the first function to be called upon a {\tt SCOTCH\_\lbt +Dmapping} structure. When the distributed mapping structure is no +longer of use, call function {\tt SCOTCH\_dgraph\lbt \lbt Map\lbt +Exit} to free its internal structures. + +\progret + +{\tt SCOTCH\_dgraphMapInit} returns $0$ if the distributed mapping +structure has been successfully initialized, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphMapSave}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_dgraphMapSave ( & const SCOTCH\_Dgraph * & grafptr, \\ + & const SCOTCH\_Dmapping * & mappptr, \\ + & FILE * & stream) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphmapsave ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & mappdat, \\ + & integer & fildes, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphMapSave} routine saves the contents of the {\tt +SCOTCH\_\lbt Dmapping} structure pointed to by {\tt mappptr} to stream +{\tt stream}, in the \scotch\ mapping format. Please refer to the +{\it\scotch\ User's Guide}~\scotchcitesuser\ for more information about +this format. + +Since the mapping format is centralized, only one process should +provide a valid output stream; other processes must pass a null +pointer. + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt fildes} associated +with the logical unit of the mapping file. + +\progret + +{\tt SCOTCH\_dgraphMapSave} returns $0$ if the mapping structure +has been successfully written to {\tt stream}, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphPart}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_dgraphPart ( & const SCOTCH\_Dgraph * & grafptr, \\ + & const SCOTCH\_Num & partnbr, \\ + & const SCOTCH\_Strat * & straptr, \\ + & SCOTCH\_Num * & partloctab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphpart ( & doubleprecision (*) & grafdat, \\ + & integer*{\it num} & partnbr, \\ + & doubleprecision (*) & stradat, \\ + & integer*{\it num} (*) & partloctab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphPart} routine computes a partition into {\tt +partnbr} parts of the distributed source graph structure pointed to +by {\tt grafptr}, using the graph partitioning strategy pointed to by +{\tt stratptr}, and returns distributed fragments of the partition +data in the array pointed to by {\tt partloctab}. + +The {\tt partloctab} array should have been previously allocated, of a +size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as +there are local vertices of the source graph on each of the processes. + +On return, every array cell holds the number of the part to which the +corresponding vertex is mapped. Parts are numbered from $0$ to +$\mbox{\tt partnbr} - 1$. + +\progret + +{\tt SCOTCH\_dgraphPart} returns $0$ if the partition of the graph has +been successfully computed, and $1$ else. In this latter case, the +{\tt partloctab} array may however have been partially or completely +filled, but its content is not significant. +\end{itemize} + +\subsection{Distributed graph ordering routines} + +\subsubsection{{\tt SCOTCH\_dgraphOrderCblkDist}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +SCOTCH\_Num SCOTCH\_dgraphOrderCblkDist ( & const SCOTCH\_Dgraph * & grafptr, \\ + & SCOTCH\_Dordering * & ordeptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphordercblkdist ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & ordedat, \\ + & integer*{\it num} & cblkglbnbr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphOrderCblkDist} routine returns on all processes +the global number of distributed elimination tree (super-)nodes +possessed by the given distributed ordering. Distributed elimination +tree nodes are produced for instance by parallel nested dissection, +before the ordering process goes sequential. Subsequent sequential +nodes generated locally afterwards on individual processes are not +accounted for in this figure. + +This routine is used to allocate space for the tree structure arrays +to be filled by the {\tt SCOTCH\_\lbt dgraph\lbt Order\lbt Tree\lbt +Dist} routine. + +\progret + +{\tt SCOTCH\_dgraphOrderCblkDist} returns a positive number if the +number of distributed elimination tree nodes has been successfully +computed, and a negative value else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphOrderCompute}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_dgraphOrderCompute ( & const SCOTCH\_Dgraph * & grafptr, \\ + & SCOTCH\_Dordering * & ordeptr, \\ + & const SCOTCH\_Strat * & straptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphordercompute ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & ordedat, \\ + & doubleprecision (*) & stradat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphOrderCompute} routine computes in parallel a +distributed block ordering of the distributed graph structure pointed +to by {\tt grafptr}, using the distributed ordering strategy pointed to +by {\tt stratptr}, and stores its result in the distributed ordering +structure pointed to by {\tt ordeptr}. + +\progret + +{\tt SCOTCH\_dgraphOrderCompute} returns $0$ if the ordering has been +successfully computed, and $1$ else. In this latter case, the ordering +arrays may however have been partially or completely filled, but their +contents are not significant. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphOrderExit}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_dgraphOrderExit ( & const SCOTCH\_Dgraph * & grafptr, \\ + & SCOTCH\_Dordering * & ordeptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphdorderexit ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & ordedat) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphOrderExit} function frees the contents of a +{\tt SCOTCH\_\lbt Dordering} structure previously initialized by +{\tt SCOTCH\_\lbt dgraph\lbt Order\lbt Init}. All subsequent calls to +{\tt SCOTCH\_\lbt dgraph\lbt Order*} routines other than +{\tt SCOTCH\_\lbt dgraph\lbt Order\lbt Init}, using this structure +as parameter, may yield unpredictable results. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphOrderInit}} +\label{sec-lib-dgraphorderinit} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_dgraphOrderInit ( & const SCOTCH\_Dgraph * & grafptr, \\ + & SCOTCH\_Dordering * & ordeptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphorderinit ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & ordedat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraph\lbt Order\lbt Init} routine initializes the +distributed ordering structure pointed to by {\tt ordeptr} so that it +can be used to store the results of the parallel ordering of the +associated distributed graph, to be computed by means of the +{\tt SCOTCH\_\lbt dgraph\lbt Order\lbt Compute} routine. + +The {\tt SCOTCH\_\lbt dgraph\lbt Order\lbt Init} routine should be the +first function to be called upon a {\tt SCOTCH\_\lbt Dordering} +structure for ordering distributed graphs. When the ordering structure +is no longer of use, the {\tt SCOTCH\_\lbt dgraph\lbt Order\lbt Exit} +function must be called, in order to to free its internal structures. + +\progret + +{\tt SCOTCH\_dgraphOrderInit} returns $0$ if the distributed ordering +structure has been successfully initialized, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphOrderSave}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_dgraphOrderSave ( & const SCOTCH\_Dgraph * & grafptr, \\ + & const SCOTCH\_Dordering * & ordeptr, \\ + & FILE * & stream) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphordersave ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & ordedat, \\ + & integer & fildes, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphOrderSave} routine saves the contents of the {\tt +SCOTCH\_\lbt Dordering} structure pointed to by {\tt ordeptr} to stream +{\tt stream}, in the \scotch\ ordering format. Please refer to the +{\it\scotch\ User's Guide}~\scotchcitesuser\ for more information about +this format. + +Since the ordering format is centralized, only one process should +provide a valid output stream; other processes must pass a null +pointer. + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt fildes} associated +with the logical unit of the ordering file. Processes which would pass +a {\tt NULL} stream pointer in C must pass descriptor number {\tt -1} +in Fortran. + +\progret + +{\tt SCOTCH\_dgraphOrderSave} returns $0$ if the ordering structure +has been successfully written to {\tt stream}, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphOrderSaveMap}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_dgraphOrderSaveMap ( & const SCOTCH\_Dgraph * & grafptr, \\ + & const SCOTCH\_Dordering * & ordeptr, \\ + & FILE * & stream) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphdordersavemap ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & ordedat, \\ + & integer & fildes, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphOrderSaveMap} routine saves the block +partitioning data associated with the {\tt SCOTCH\_\lbt Dordering} +structure pointed to by {\tt ordeptr} to stream {\tt stream}, in the +\scotch\ mapping format. A target domain number is associated with +every block, such that all node vertices belonging to the same block +are shown as belonging to the same target vertex. +The resulting mapping file can be used by the {\tt gout} program +to produce pictures showing the different separators and blocks. +Please refer to the {\it\scotch\ User's Guide} for more information +on the \scotch\ mapping format and on {\tt gout}. + +Since the block partitioning format is centralized, only one process +should provide a valid output stream; other processes must pass a +null pointer. + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt fildes} associated +with the logical unit of the ordering file. Processes which would pass +a {\tt NULL} stream pointer in C must pass descriptor number {\tt -1} +in Fortran. + +\progret + +{\tt SCOTCH\_dgraphOrderSaveMap} returns $0$ if the ordering structure +has been successfully written to {\tt stream}, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphOrderSaveTree}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_dgraphOrderSaveTree ( & const SCOTCH\_Dgraph * & grafptr, \\ + & const SCOTCH\_Dordering * & ordeptr, \\ + & FILE * & stream) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphordersavetree ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & ordedat, \\ + & integer & fildes, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphOrderSaveTree} routine saves the tree +hierarchy information associated with the {\tt SCOTCH\_\lbt Dordering} +structure pointed to by {\tt ordeptr} to stream {\tt stream}. + +The format of the tree output file resembles the one of a mapping or +ordering file: it is made up of as many lines as there are vertices in +the ordering. Each of these lines holds two integer numbers. The first +one is the index or the label of the vertex, and the second one is the +index of its parent node in the separators tree, or $-1$ if the vertex +belongs to a root node. + +Since the tree hierarchy format is centralized, only one process +should provide a valid output stream; other processes must pass a +null pointer. + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt fildes} associated +with the logical unit of the ordering file. Processes which would pass +a {\tt NULL} stream pointer in C must pass descriptor number {\tt -1} +in Fortran. + +\progret + +{\tt SCOTCH\_dgraphOrderSaveTree} returns $0$ if the ordering structure +has been successfully written to {\tt stream}, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphOrderPerm}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_dgraphOrderPerm ( & const SCOTCH\_Dgraph * & grafptr, \\ + & SCOTCH\_Dordering * & ordeptr, \\ + & SCOTCH\_Num * & permloctab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphorderperm ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & ordedat, \\ + & integer*{\it num} (*) & permloctab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphOrderPerm} routine fills the distributed direct +permutation array {\tt permloctab} according to the ordering provided +by the given distributed ordering pointed to by {\tt ordeptr}. Each +{\tt permloctab} local array must be of size {\tt vertlocnbr}. + +\progret + +{\tt SCOTCH\_dgraphOrderPerm} returns $0$ if the distributed +permutation has been successfully computed, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphOrderTreeDist}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_dgraphOrderTreeDist ( & const SCOTCH\_Dgraph * & grafptr, \\ + & SCOTCH\_Dordering * & ordeptr, \\ + & SCOTCH\_Num * & treeglbtab \\ + & SCOTCH\_Num * & sizeglbtab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphordertreedist ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & ordedat, \\ + & integer*{\it num} (*) & treeglbtab, \\ + & integer*{\it num} (*) & sizeglbtab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphOrderTreeDist} routine fills on all processes +the arrays representing the distributed part of the elimination tree +structure associated with the given distributed ordering. This structure +describes the sizes and relations between all distributed elimination +tree (super-)nodes. These nodes are mainly the result of parallel +nested dissection, before the ordering process goes sequential. +Sequential nodes generated locally on individual processes are not +represented in this structure. + +A node can either be a leaf column block, which has no +descendants, or a nested dissection node, which has most often +three sons: its two separated sub-parts and the separator. A +nested dissection node may have two sons only if the separator is +empty; it cannot have only one son. Sons are indexed such that the +separator of a block, if any, is always the son of highest index. +Hence, the order of the indices of the two sub-parts matches the one +of the direct permutation of the unknowns. + +For any column block $i$, {\tt treeglbtab[}$i${\tt ]} holds the index +of the father of node $i$ in the elimination tree, or $-1$ if $i$ is +the root of the tree. All node indices start from +{\tt baseval}. {\tt size\lbt glb\lbt tab[}$i${\tt ]} holds the number +of graph vertices possessed by node $i$, plus the ones of all +of its descendants if it is not a leaf of the tree. Therefore, the +{\tt size\lbt glb\lbt tab} value of the root vertex is always equal to +the number of vertices in the distributed graph. + +Each of the {\tt treeglbtab} and {\tt size\lbt glb\lbt tab} arrays +must be large enough to hold a number of {\tt SCOTCH\_\lbt Num}s equal +to the number of distributed elimination tree nodes and column blocks, +as returned by the {\tt SCOTCH\_\lbt dgraph\lbt Order\lbt Cblk\lbt Dist} +routine. + +\progret + +{\tt SCOTCH\_dgraphOrderTreeDist} returns $0$ if the arrays describing +the distributed part of the distributed tree structure have been +successfully filled, and $1$ else. +\end{itemize} + +\subsection{Centralized ordering handling routines} +\label{sec-lib-corder} + +Since distributed ordering structures maintain scattered information +which cannot be easily collated, the only practical way to access this +information is to centralize it in a sequential {\tt SCOTCH\_\lbt +Ordering} structure. Several routines are provided to +create and destroy sequential orderings attached to a distributed +graph, and to gather the information contained in a distributed +ordering on such a sequential ordering structure. + +Since the arrays which represent centralized ordering must be of a +size equal to the global number of vertices, these routines are not +scalable and may require much memory for very large graphs. + +\subsubsection{{\tt SCOTCH\_dgraphCorderExit}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_dgraphCorderExit ( & const SCOTCH\_Dgraph * & grafptr, \\ + & SCOTCH\_Ordering * & cordptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphcorderexit ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & corddat) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraphCorderExit} function frees the contents of a +centralized {\tt SCOTCH\_\lbt Ordering} structure previously +initialized by {\tt SCOTCH\_\lbt dgraph\lbt Corder\lbt Init}. +\end{itemize} + + +\subsubsection{{\tt SCOTCH\_dgraphCorderInit}} +\label{sec-lib-graph-corder-init} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_dgraphCorderInit ( & const SCOTCH\_Dgraph * & grafptr, \\ + & SCOTCH\_Ordering * & cordptr, \\ + & SCOTCH\_Num * & permtab, \\ + & SCOTCH\_Num * & peritab, \\ + & SCOTCH\_Num * & cblkptr, \\ + & SCOTCH\_Num * & rangtab, \\ + & SCOTCH\_Num * & treetab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphcorderinit ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & corddat, \\ + & integer*{\it num} (*) & permtab, \\ + & integer*{\it num} (*) & peritab, \\ + & integer*{\it num} & cblknbr, \\ + & integer*{\it num} (*) & rangtab, \\ + & integer*{\it num} (*) & treetab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraph\lbt Corder\lbt Init} routine fills the +centralized ordering structure pointed to by {\tt cordptr} with all of +the data that are passed to it. This routine is the equivalent of the +{\tt SCOTCH\_\lbt graph\lbt Order\lbt Init} routine of the +\scotch\ sequential library, except that it takes a distributed graph +as input. It is used to initialize a centralized ordering structure on +which a distributed ordering will be centralized by means of the +{\tt SCOTCH\_\lbt dgraph\lbt Order\lbt Gather} routine. Only the +process on which distributed ordering data is to be centralized has +to handle a centralized ordering structure. + +{\tt permtab} is the ordering permutation array, of size ${\tt +vert\lbt glb\lbt nbr}$, {\tt peritab} is the inverse ordering permutation array, +of size ${\tt vert\lbt glb\lbt nbr}$, {\tt cblkptr} is the pointer to a +{\tt SCOTCH\_\lbt Num} that will receive the number of produced +column blocks, {\tt rangtab} is the array that holds the column block +span information, of size $\mbox{\tt vert\lbt glb\lbt nbr} + 1$, and {\tt treetab} +is the array holding the structure of the separators tree, of size +${\tt vert\lbt glb\lbt nbr}$. Please refer to +Section~\ref{sec-lib-format-order} for an explanation of their semantics. +Any of these five output fields can be set to {\tt NULL} if the +corresponding information is not needed. Since, in Fortran, there is +no null reference, passing a reference to {\tt grafptr} will have the +same effect. + +The {\tt SCOTCH\_\lbt dgraph\lbt Corder\lbt Init} routine should be +the first function to be called upon a {\tt SCOTCH\_\lbt Ordering} +structure to be used for gathering distributed ordering data. When the +centralized ordering structure is no longer of use, the {\tt +SCOTCH\_\lbt dgraph\lbt Corder\lbt Exit} function must be called, in +order to to free its internal structures. + +\progret + +{\tt SCOTCH\_dgraphCorderInit} returns $0$ if the ordering structure has +been successfully initialized, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dgraphOrderGather}} +\label{sec-lib-dgraph-order-gather} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_dgraphOrderGather ( & const SCOTCH\_Dgraph * & grafptr, \\ + & SCOTCH\_Dordering * & cordptr, \\ + & SCOTCH\_Ordering * & cordptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfdgraphordergather ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & dorddat, \\ + & doubleprecision (*) & corddat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dgraph\lbt Order\lbt Gather} routine gathers the +distributed ordering data borne by {\tt dordptr} to the +centralized ordering structure pointed to by {\tt cordptr}. + +\progret + +{\tt SCOTCH\_dgraphOrderGather} returns $0$ if the centralized +ordering structure has been successfully updated, and $1$ else. +\end{itemize} + +\subsection{Strategy handling routines} +\label{sec-lib-strat} + +This section presents basic strategy handling routines which are also +described in the {\it\scotch\ User's Guide} but which are duplicated +here for the sake of readability, as well as a strategy declaration +routine which is specific to the \ptscotch\ library. + +\subsubsection{{\tt SCOTCH\_stratExit}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_stratExit ( & SCOTCH\_Strat * & archptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfstratexit ( & doubleprecision (*) & stradat) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_stratExit} function frees the contents of a +{\tt SCOTCH\_\lbt Strat} structure previously initialized by +{\tt SCOTCH\_\lbt strat\lbt Init}. All subsequent calls to +{\tt SCOTCH\_\lbt strat} routines other than {\tt SCOTCH\_\lbt +strat\lbt Init}, using this structure as parameter, may yield +unpredictable results. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_stratInit}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_stratInit ( & SCOTCH\_Strat * & straptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfstratinit ( & doubleprecision (*) & stradat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_stratInit} function initializes a {\tt SCOTCH\_\lbt +Strat} structure so as to make it suitable for future operations. It +should be the first function to be called upon a {\tt SCOTCH\_\lbt +Strat} structure. When the strategy data is no longer of use, call +function {\tt SCOTCH\_\lbt strat\lbt Exit} to free its internal +structures. + +\progret + +{\tt SCOTCH\_stratInit} returns $0$ if the strategy structure has been +successfully initialized, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_stratSave}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_stratSave ( & const SCOTCH\_Strat * & straptr, \\ + & FILE * & stream) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfstratsave ( & doubleprecision (*) & stradat, \\ + & integer & fildes, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_stratSave} routine saves the contents of the {\tt +SCOTCH\_\lbt Strat} structure pointed to by {\tt straptr} to stream +{\tt stream}, in the form of a text string. The methods and +parameters of the strategy string depend on the type of the strategy, +that is, whether it is a bipartitioning, mapping, or ordering +strategy, and to which structure it applies, that is, graphs or +meshes. + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt fildes} associated +with the logical unit of the output file. + +\progret + +{\tt SCOTCH\_stratSave} returns $0$ if the strategy string has been +successfully written to {\tt stream}, and $1$ else. +\end{itemize} + +\subsection{Strategy creation routines} +\label{sec-lib-strat-creation} + +Strategy creation routines parse the user-provided strategy string and +populate the given opaque strategy object with a tree-shaped structure +that represents the parsed expression. It is this structure that will +be later traversed by the generic routines for partitioning, mapping or +ordering, so as to determine which specific partitioning, mapping or +ordering method to be called on a subgraph being considered. + +Because strategy creation routines call third-party lexical analyzers +that may have been implemented in a non-reentrant way, no guarantee is +given on the reentrance of these routines. Consequently, strategy +creation routines that might be called simultaneously by multiple +threads should be protected by a mutex. + +\subsubsection{{\tt SCOTCH\_stratDgraphMap}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_stratDgraphMap ( & SCOTCH\_Strat * & straptr, \\ + & const char * & string) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfstratdgraphmap ( & doubleprecision (*) & stradat, \\ + & character (*) & string, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_stratDgraphMap} routine fills the strategy +structure pointed to by {\tt straptr} with the distributed graph +mapping strategy string pointed to by {\tt string}. The format of this +strategy string is described in Section~\ref{sec-lib-format-pmap}. +From this point, strategy {\tt strat} can only be used as a +distributed graph mapping strategy, to be used by functions {\tt +SCOTCH\_\lbt dgraph\lbt Part}, {\tt SCOTCH\_\lbt dgraph\lbt Map} or +{\tt SCOTCH\_\lbt dgraph\lbt Map\lbt Compute}. This routine must be +called on every process with the same strategy string. + +When using the C interface, the array of characters pointed to by +{\tt string} must be null-terminated. + +\progret + +{\tt SCOTCH\_stratDgraphMap} returns $0$ if the strategy string +has been successfully set, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_stratDgraphMapBuild}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_stratDgraphMapBuild ( & SCOTCH\_Strat * & straptr, \\ + & const SCOTCH\_Num & flagval, \\ + & const SCOTCH\_Num & procnbr, \\ + & const SCOTCH\_Num & partnbr, \\ + & const double & balrat) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfstratdgraphmapbuild ( & doubleprecision (*) & stradat, \\ + & integer*{\it num} & flagval, \\ + & integer*{\it num} & procnbr, \\ + & integer*{\it num} & partnbr, \\ + & doubleprecision & balrat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_stratDgraphMapBuild} routine fills the strategy +structure pointed to by {\tt straptr} with a default mapping strategy +tuned according to the preference flags passed as {\tt flagval} and to +the desired number of parts {\tt partnbr} and imbalance ratio {\tt +balrat}, to be used on {\tt procnbr} processes. From this point, the +strategy structure can only be used as a parallel mapping strategy, to +be used by function {\tt SCOTCH\_\lbt dgraph\lbt Map}, for +instance. See Section~\ref{sec-lib-format-strat-default} for a +description of the available flags. + +\progret + +{\tt SCOTCH\_stratDgraphMapBuild} returns $0$ if the strategy string +has been successfully set, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_stratDgraphOrder}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_stratDgraphOrder ( & SCOTCH\_Strat * & straptr, \\ + & const char * & string) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfstratdgraphorder ( & doubleprecision (*) & stradat, \\ + & character (*) & string, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_stratDgraphOrder} routine fills the strategy +structure pointed to by {\tt straptr} with the distributed graph +ordering strategy string pointed to by {\tt string}. The format of +this strategy string is described in Section~\ref{sec-lib-format-pord}. +From this point, strategy {\tt strat} can only be used as a +distributed graph ordering strategy, to be used by function {\tt +SCOTCH\_\lbt dgraph\lbt Order\lbt Compute}. This routine must be +called on every process with the same strategy string. + +When using the C interface, the array of characters pointed to by +{\tt string} must be null-terminated. + +\progret + +{\tt SCOTCH\_stratDgraphOrder} returns $0$ if the strategy string +has been successfully set, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_stratDgraphOrderBuild}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_stratDgraphOrderBuild ( & SCOTCH\_Strat * & straptr, \\ + & const SCOTCH\_Num & flagval, \\ + & const SCOTCH\_Num & procnbr, \\ + & const SCOTCH\_Num & levlnbr, \\ + & const double & balrat) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfstratdgraphorderbuild ( & doubleprecision (*) & stradat, \\ + & integer*{\it num} & flagval, \\ + & integer*{\it num} & procnbr, \\ + & integer*{\it num} & levlnbr, \\ + & doubleprecision & balrat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_stratDgraphOrderBuild} routine fills the strategy +structure pointed to by {\tt straptr} with a default parallel ordering +strategy tuned according to the preference flags passed as {\tt +flagval} and to the desired nested dissection imbalance ratio {\tt +balrat}, to be used on {\tt procnbr} processes. From this point, the +strategy structure can only be used as a parallel ordering strategy, to +be used by function {\tt SCOTCH\_\lbt dgraph\lbt Order}, for +instance. + +See Section~\ref{sec-lib-format-strat-default} for a description of +the available flags. When any of the {\tt SCOTCH\_\lbt STRAT\lbt +LEVEL\lbt MIN} or {\tt SCOTCH\_\lbt STRAT\lbt LEVEL\lbt MAX} flags is +set, the {\tt levlnbr} parameter is taken into account. + +\progret + +{\tt SCOTCH\_stratDgraphOrderBuild} returns $0$ if the strategy string +has been successfully set, and $1$ else. +\end{itemize} + +\subsection{Other data structure routines} +\label{sec-lib-other} + +\subsubsection{{\tt SCOTCH\_dmapAlloc}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}l} +SCOTCH\_Dmapping * SCOTCH\_dmapAlloc ( & void) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dmapAlloc} function allocates a memory area of a +size sufficient to store a {\tt SCOTCH\_\lbt Dmapping} structure. It is +the user's responsibility to free this memory when it is no longer +needed. + +\progret + +{\tt SCOTCH\_dmapAlloc} returns the pointer to the memory area if it +has been successfully allocated, and {\tt NULL} else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_dorderAlloc}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}l} +SCOTCH\_Dordering * SCOTCH\_dorderAlloc ( & void) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_dorderAlloc} function allocates a memory area of a +size sufficient to store a {\tt SCOTCH\_\lbt Dordering} structure. It is +the user's responsibility to free this memory when it is no longer +needed. + +\progret + +{\tt SCOTCH\_dorderAlloc} returns the pointer to the memory area if it +has been successfully allocated, and {\tt NULL} else. +\end{itemize} + +\subsection{Error handling routines} +\label{sec-lib-error} + +The handling of errors that occur within library routines is +often difficult, because library routines should be able to issue +error messages that help the application programmer to find the +error, while being compatible with the way the application handles +its own errors. + +To match these two requirements, all the error and warning messages +produced by the routines of the \libscotch\ library are issued using +the user-definable variable-length argument routines {\tt SCOTCH\_\lbt +error\lbt Print} and {\tt SCOTCH\_\lbt error\lbt PrintW}. Thus, one +can redirect these error messages to his own error handling routines, +and can choose if he wants his program to terminate on error or to +resume execution after the erroneous function has returned. + +In order to free the user from the burden of writing a basic error +handler from scratch, the {\tt libptscotcherr.a} library provides error +routines that print error messages on the standard error stream +{\tt stderr} and return control to the application. Application +programmers who want to take advantage of them have to add +{\tt -lptscotcherr} to the list of arguments of the linker, after +the {\tt -lptscotch} argument. + +\subsubsection{{\tt SCOTCH\_errorPrint}} +\label{sec-lib-errorprint} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_errorPrint ( & const char * const & errstr, ... ) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_errorPrint} function is designed to output a +variable-length argument error string to some stream. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_errorPrintW}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_errorPrintW ( & const char * const & errstr, ...) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_errorPrintW} function is designed to output a +variable-length argument warning string to some stream. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_errorProg}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_errorProg ( & const char * & progstr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_errorProg} function is designed to be called at +the beginning of a program or of a portion of code to identify the +place where subsequent errors take place. +This routine is not reentrant, as it is only a minor help function. It +is defined in {\tt lib\lbt scotch\lbt err.a} and is used by the +standalone programs of the \scotch\ distribution. +\end{itemize} + +\subsection{Miscellaneous routines} +\label{sec-lib-misc} + +\subsubsection{{\tt SCOTCH\_memCur}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}l} +SCOTCH\_Idx SCOTCH\_memCur ( & void) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmemcur ( & integer*{\it idx} & memcur) \\ + +\end{tabular}} + +\progdes + +When \scotch\ is compiled with the {\tt COMMON\_\lbt MEMORY\_\lbt +TRACE} flag set, the {\tt SCOTCH\_memCur} routine returns the amount +of memory, in bytes, that is currently allocated by \scotch\ on the +current processing element, either by itself or on the behalf of the +user. Else, the routine returns {\tt -1}. + +The returned figure does not account for the memory that has been +allocated by the user and made visible to \scotch\ by means of +routines such as {\tt SCOTCH\_\lbt dgraph\lbt Build} calls. This +memory is not under the control of \scotch, and it is the user's +responsibility to free it after calling the relevant +{\tt SCOTCH\_\lbt *\lbt Exit} routines. + +Some third-party software used by \scotch, such as the strategy string +parser, may allocate some memory for internal use and never free it. +Consequently, there may be small discrepancies between memory +occupation figures returned by \scotch\ and those returned by +third-party tools. However, these discrepancies should not exceed a +few kilobytes. + +While memory occupation is internally recorded in a variable of type +{\tt intptr\_\lbt t}, it is output as a {\tt SCOTCH\_\lbt Idx} for the +sake of interface homogeneity, especially for Fortran. It is therefore +the installer's responsibility to make sure that the support integer +type of {\tt SCOTCH\_\lbt Idx} is large enough to not overflow. See +section~\ref{sec-lib-inttypesize} for more information. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_memMax}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}l} +SCOTCH\_Idx SCOTCH\_memMax ( & void) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmemmax ( & integer*{\it idx} & memcur) \\ + +\end{tabular}} + +\progdes + +When \scotch\ is compiled with the {\tt COMMON\_\lbt MEMORY\_\lbt +TRACE} flag set, the {\tt SCOTCH\_memMax} routine returns the maximum +amount of memory, in bytes, ever allocated by \scotch\ on the current +processing element, either by itself or on the behalf of the +user. Else, the routine returns {\tt -1}. + +The returned figure does not account for the memory that has been +allocated by the user and made visible to \scotch\ by means of +routines such as {\tt SCOTCH\_\lbt dgraph\lbt Build} calls. This +memory is not under the control of \scotch, and it is the user's +responsibility to free it after calling the relevant +{\tt SCOTCH\_\lbt *\lbt Exit} routines. + +Some third-party software used by \scotch, such as the strategy string +parser, may allocate some memory for internal use and never free it. +Consequently, there may be small discrepancies between memory +occupation figures returned by \scotch\ and those returned by +third-party tools. However, these discrepancies should not exceed a +few kilobytes. + +While memory occupation is internally recorded in a variable of type +{\tt intptr\_\lbt t}, it is output as a {\tt SCOTCH\_\lbt Idx} for the +sake of interface homogeneity, especially for Fortran. It is therefore +the installer's responsibility to make sure that the support integer +type of {\tt SCOTCH\_\lbt Idx} is large enough to not overflow. See +section~\ref{sec-lib-inttypesize} for more information. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_randomProc}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_randomProc ( & int & procnum) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfrandomproc ( & integer & procnum ) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_randomProc} routine records internally the provided +number, which contributes to the initialization of the pseudo-random +generator. Hence, providing different values for each process, +e.g. process rank, will result in different random seeds across +processors. This allows processes to compute concurrently different +initial partitions, in the course of the parallel multilevel framework +with folding and duplication. + +In order for the provided number to be taken into account, +{\tt SCOTCH\_\lbt random\lbt Proc} must be called before any other +routine of the \libscotch\ that is likely to use (and consequently +to initialize) the pseudo-random number generator. By default, it is +set to zero. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_randomReset}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}l} +void SCOTCH\_randomReset ( & void) +\end{tabular}} + +{\tt\begin{tabular}{l@{}l} +scotchfrandomreset ( & ) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_randomReset} routine resets the seed of the +pseudo-random generator used by the graph partitioning routines +of the \libscotch\ library. Two consecutive calls to +the same \libscotch\ partitioning or ordering routines, separated +by a call to {\tt SCOTCH\_\lbt random\lbt Reset}, will always yield +the same results. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_randomSeed}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_randomSeed ( & SCOTCH\_Num & seedval) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfrandomseed ( & integer*{\it num} & seedval ) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_randomSeed} routine sets to {\tt seedval} the +seed of the pseudo-random generator used internally by several +algorithms of \scotch. All subsequent calls to {\tt SCOTCH\_\lbt +random\lbt Reset} will use this value to reset the pseudo-random +generator. + +This routine needs only to be used by users willing to evaluate +the robustness and quality of partitioning algorithms with respect to +the variability of random seeds. Else, depending whether \scotch\ has +been compiled with any of the flags {\tt COMMON\_\lbt RANDOM\_\lbt +FIXED\_\lbt SEED} or {\tt SCOTCH\_\lbt DETERMINISTIC} set or not, +either the same pseudo-random seed will be always used, or a +process-dependent seed will be used, respectively. +\end{itemize} + +\subsection{\parmetis\ compatibility library} +\label{sec-lib-parmetis} + +The \parmetis\ compatibility library provides stubs which redirect some +calls to \parmetis\ routines to the corresponding \ptscotch\ counterparts. +In order to use this feature, the only thing to do is to re-link the +existing software with the {\tt lib\lbo ptscotch\lbo parmetis} library, and +eventually with the original \parmetis\ library if the software uses +\parmetis\ routines which do not need to have \ptscotch\ equivalents, such +as graph transformation routines. +In that latter case, the ``{\tt -lptscotch\lbt parmetis}'' argument must be +placed before the ``{\tt -lparmetis}'' one (and of course before the +``{\tt -lptscotch}'' one too), so that routines that are redefined by +\ptscotch\ are chosen instead of their \parmetis\ counterpart. Routines +of \parmetis\ which are not redefined by \ptscotch\ may also require +that the sequential \metis\ library be linked too. When no other +\parmetis\ routines than the ones redefined by \ptscotch\ are used, +the ``{\tt -lparmetis}'' argument can be omitted. See +Section~\ref{sec-examples} for an example. + +\subsubsection{{\tt ParMETIS\_V3\_NodeND}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void ParMETIS\_V3\_NodeND ( & const SCOTCH\_Num * const & vtxdist, \\ + & const SCOTCH\_Num * const & xadj, \\ + & const SCOTCH\_Num * const & adjncy, \\ + & const SCOTCH\_Num * const & numflag, \\ + & const SCOTCH\_Num * const & options, \\ + & SCOTCH\_Num * const & order, \\ + & SCOTCH\_Num * const & sizes, \\ + & MPI\_Comm * & comm) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +parmetis\_v3\_nodend ( & integer*{\it num} (*) & vtxdist, \\ + & integer*{\it num} (*) & xadj, \\ + & integer*{\it num} (*) & adjncy, \\ + & integer*{\it num} & numflag, \\ + & integer*{\it num} (*) & options, \\ + & integer*{\it num} (*) & order, \\ + & integer*{\it num} (*) & sizes, \\ + & integer & comm) +\end{tabular}} + +\progdes + +The {\tt ParMETIS\_V3\_NodeND} function performs a nested dissection +ordering of the distributed graph passed as arrays {\tt vtxdist}, +{\tt xadj} and {\tt adjncy}, using the default \ptscotch\ ordering +strategy. Unlike for \parmetis, this routine will compute an ordering +even when the number of processors on which it is run is not a power +of two. The {\tt options} array is not used. When the number of +processors is a power of two, the contents of the {\tt sizes} array is +equivalent to the one returned by the original {\tt ParMETIS\_V3\_NodeND} +routine, else it is filled with $-1$ values. + +Users willing to get the tree structure of orderings computed on +numbers of processors which are not power of two should use the native +\ptscotch\ ordering routine, and extract the relevant information from +the distributed ordering with the {\tt SCOTCH\_\lbt dgraph\lbt +Order\lbt Cblk\lbt Dist} and {\tt SCOTCH\_\lbt dgraph\lbt Order\lbt +Tree\lbt Dist} routines. + +Similarly, as there is no {\tt ParMETIS\_V3\_NodeWND} routine in +\parmetis, users willing to order distributed graphs with node weights +should directly call the \ptscotch\ routines. +\end{itemize} + +\subsubsection{{\tt ParMETIS\_V3\_PartGeomKway}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void ParMETIS\_V3\_PartGeomKway ( & const SCOTCH\_Num * const & vtxdist, \\ + & const SCOTCH\_Num * const & xadj, \\ + & const SCOTCH\_Num * const & adjncy, \\ + & const SCOTCH\_Num * const & vwgt, \\ + & const SCOTCH\_Num * const & adjwgt, \\ + & const SCOTCH\_Num * const & wgtflag, \\ + & const SCOTCH\_Num * const & numflag, \\ + & const SCOTCH\_Num * const & ndims, \\ + & const float * const & xyz, \\ + & const SCOTCH\_Num * const & ncon, \\ + & const SCOTCH\_Num * const & nparts, \\ + & const float * const & tpwgts, \\ + & const float * const & ubvec, \\ + & const SCOTCH\_Num * const & options, \\ + & SCOTCH\_Num * const & edgecut, \\ + & SCOTCH\_Num * const & part, \\ + & MPI\_Comm * & comm) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +parmetis\_v3\_partgeomkway ( & integer*{\it num} (*) & vtxdist, \\ + & integer*{\it num} (*) & xadj, \\ + & integer*{\it num} (*) & adjncy, \\ + & integer*{\it num} (*) & vwgt, \\ + & integer*{\it num} (*) & adjwgt, \\ + & integer*{\it num} & wgtflag, \\ + & integer*{\it num} & numflag, \\ + & integer*{\it num} & ndims, \\ + & float (*) & xyz, \\ + & integer*{\it num} & ncon, \\ + & integer*{\it num} & nparts, \\ + & float (*) & tpwgts, \\ + & float (*) & ubvec, \\ + & integer*{\it num} (*) & options, \\ + & integer*{\it num} & edgecut, \\ + & integer*{\it num} (*) & part, \\ + & integer & comm) +\end{tabular}} + +\progdes + +The {\tt ParMETIS\_V3\_PartGeomKway} function computes a partition into +{\tt nparts} parts of the distributed graph passed as arrays {\tt +vtxdist}, {\tt xadj} and {\tt adjncy}, using the default +\ptscotch\ mapping strategy. The partition is returned in the form of +the distributed vector {\tt part}, which holds the indices of the +parts to which every vertex belongs, from $0$ to $(\mbox{\tt nparts} - +1)$. + +Since \scotch\ does not handle geometry, the {\tt ndims} and {\tt xyz} +arrays are not used, and this routine directly calls the +{\tt ParMETIS\_\lbt V3\_\lbt Part\lbt Kway} stub. +\end{itemize} + +\subsubsection{{\tt ParMETIS\_V3\_PartKway}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void ParMETIS\_V3\_PartKway ( & const SCOTCH\_Num * const & vtxdist, \\ + & const SCOTCH\_Num * const & xadj, \\ + & const SCOTCH\_Num * const & adjncy, \\ + & const SCOTCH\_Num * const & vwgt, \\ + & const SCOTCH\_Num * const & adjwgt, \\ + & const SCOTCH\_Num * const & wgtflag, \\ + & const SCOTCH\_Num * const & numflag, \\ + & const SCOTCH\_Num * const & ncon, \\ + & const SCOTCH\_Num * const & nparts, \\ + & const float * const & tpwgts, \\ + & const float * const & ubvec, \\ + & const SCOTCH\_Num * const & options, \\ + & SCOTCH\_Num * const & edgecut, \\ + & SCOTCH\_Num * const & part, \\ + & MPI\_Comm * & comm) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +parmetis\_v3\_partkway ( & integer*{\it num} (*) & vtxdist, \\ + & integer*{\it num} (*) & xadj, \\ + & integer*{\it num} (*) & adjncy, \\ + & integer*{\it num} (*) & vwgt, \\ + & integer*{\it num} (*) & adjwgt, \\ + & integer*{\it num} & wgtflag, \\ + & integer*{\it num} & numflag, \\ + & integer*{\it num} & ncon, \\ + & integer*{\it num} & nparts, \\ + & float (*) & tpwgts, \\ + & float (*) & ubvec, \\ + & integer*{\it num} (*) & options, \\ + & integer*{\it num} & edgecut, \\ + & integer*{\it num} (*) & part, \\ + & integer & comm) +\end{tabular}} + +\progdes + +The {\tt ParMETIS\_V3\_PartKway} function computes a partition into +{\tt nparts} parts of the distributed graph passed as arrays {\tt +vtxdist}, {\tt xadj} and {\tt adjncy}, using the default +\ptscotch\ mapping strategy. The partition is returned in the form of +the distributed vector {\tt part}, which holds the indices of the +parts to which every vertex belongs, from $0$ to $(\mbox{\tt nparts} - +1)$. + +Since \scotch\ does not handle multiple constraints, only the first +constraint is taken into account to define the respective weights of +the parts. Consequently, only the first {\tt nparts} cells of the +{\tt tpwgts} array are considered. The {\tt ncon}, {\tt ubvec} +and {\tt options} parameters are not used. +\end{itemize} diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/p_n.tex scotch-6.0.6/doc/src/ptscotch/p_n.tex --- scotch-6.0.4.dfsg1/doc/src/ptscotch/p_n.tex 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/p_n.tex 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,195 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Titre : s_n.tex % +% Sujet : Manuel de l'utilisateur % +% du projet 'Scotch' % +% Codage de nouvelles % +% methodes % +% Auteur : Francois Pellegrini % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Adding new features to \scotch} +\label{sec-coding} + +Since \scotch\ is libre/free software, users have the ability +to add new features to it. Moreover, as \scotch\ is intended to be a +testbed for new partitioning and ordering algorithms, it has been +developed in a very modular way, to ease the development and inclusion +of new partitioning and ordering methods to be called within +\scotch\ strategies. + +All of the source code for partitioning and ordering methods for +graphs and meshes is located in the {\tt src/\lbt libscotch/} source +subdirectory. Source file names have a very regular pattern, based on +the internal data structures they handle. + +\subsection{Graphs and meshes} + +The basic structures in \scotch\ are the {\tt Graph} and {\tt Mesh} +structures, which model a simple symmetric graph the definition of +which is given in file {\tt graph.h}, and a simple mesh, in the form +of a bipartite graph, the definition of which is given in file {\tt +mesh.h}, respectively. From this structure are derived enriched graph +and mesh structures: +\begin{itemize} +\item +{\tt Bgraph}, in file {\tt bgraph.h}: graph with bipartition, that is, +edge separation, information attached to it; +\item +{\tt Kgraph}, in file {\tt kgraph.h}: graph with mapping information +attached to it; +\item +{\tt Hgraph}, in file {\tt hgraph.h}: graph with halo information +attached to it, for computing graph orderings; +\item +{\tt Vgraph}, in file {\tt vgraph.h}: graph with vertex bipartition +information attached to it; +\item +{\tt Hmesh}, in file {\tt hmesh.h}: mesh with halo information +attached to it, for computing graph orderings; +\item +{\tt Vmesh}, in file {\tt vmesh.h}: graph with vertex bipartition +information attached to it. +\end{itemize} +As version {\sc 4.0} of the \libscotch\ does not provide mesh +mapping capabilities, neither {\tt Bmesh} nor {\tt Kmesh} structures +have been defined to date, but they well may be in the future. + +All of the structures are in fact defined as {\tt typedef}ed types. + +\subsection{Methods} + +\subsection{Adding a new method to \scotch} + +We will assume in this section that the new method to add is a graph +separation method. The procedure explained below is exactly the same +for graph bipartitioning, graph mapping, graph ordering, mesh +separation, or mesh ordering methods. + +Please proceed as explained below. +\begin{enumerate} +\item +Write the code of the method itself. First, choose a free two-letter +code to describe your method, say ``xy''. In the {\tt libscotch} +source directory, create files {\tt vgraph\_\lbt separate\_\lbt xy.c} +and {\tt vgraph\_\lbt separate\_\lbt xy.h}, basing on existing +files such as {\tt vgraph\_\lbt separate\_\lbt gg.c} and {\tt +vgraph\_\lbt separate\_\lbt gg.h}, for instance. + +If the method is complex, it can be split across several other files, +which will be named {\tt vgraph\_\lbt separate\_\lbt xy\_\lbt first\lbt +module\lbt name.c}, {\tt vgraph\_\lbt separate\_\lbt xy\_\lbt second\lbt +module\lbt name.c}, eventually with matching header files. + +If the method has parameters, create a structure called {\tt +Vgraph\lbt Separate\lbt Xy\lbt Param}, which contains types that +are handled by the strategy parser, such as {\tt INT} and +{\tt double}. + +The execution of your method should result in the setting or in the +updating of the {\tt Vgraph} structure that is passed to it. See its +definition in {\tt vgraph.h} and read several simple graph separation +methods, such as {\tt vgraph\_\lbt separate\_\lbt zr.c}, to figure out +what all of its parameters mean. + +At the end of your method, always call, when the {\tt SCOTCH\_\lbt +DEBUG\_\lbt VGRAPH2} debug flag is set, the {\tt vgraph\lbt Check} +routine, to avoid the spreading of eventual bugs to other parts of +the \libscotch\ library. +\item +Add the method to the parser tables. The files to update are +{\tt vgraph\_\lbt separate\_\lbt st.c} and {\tt vgraph\_\lbt +separate\_\lbt st.h}, where ``{\tt st}'' stands for ``strategy''. + +First, edit {\tt vgraph\_\lbt separate\_\lbt st.h}. In the {\tt +Vgraph\lbt Separate\lbt St\lbt Method\lbt Type} enumeration, +add a line for your new method {\tt VGRAPH\lbt SEPA\lbt ST\lbt +METH\lbt XY}. Then, edit {\tt vgraph\_\lbt separate\_\lbt st.c}, +where all of the remaining actions take place. + +In the top of the file, add a {\tt \#include} directive to include +{\tt vgraph\_\lbt separate\_\lbt xy.h}. + +If the method has parameters, create a {\tt vgraph\lbt separate\lbt +default\lbt xy} C union, basing on an existing one, and fill it with +the default values of your method parameters. + +In the {\tt vgraph\lbt separate\lbt st\lbt meth\lbt tab} method array, +add a line for the new method. To do so, choose a free single-letter +code that will be used to designate the new method in strategy strings. +If the method has parameters, the last field should be a pointer to +the default structure, else it should be set to {\tt NULL}. + +If the method has parameters, update the {\tt vgraph\lbt separate\lbt +st\lbt para\lbt tab} parameter array. Add one data block per +parameter. The first field is the name of the method to which the +parameter applies, that is, {\tt VGRAPH\lbt SEPA\lbt ST\lbt +METH\lbt XY}. The second field is the type of the parameter, which can +be: +\begin{itemize} +\item +{\tt STRATPARAMCASE}: the support type is an {\tt int}. It receives +the index in the case string, given as last field of the parameter +line, of the selected case character code; +\item +{\tt STRATPARAMDOUBLE}: the support type is a {\tt double} value; +\item +{\tt STRATPARAMINT}: the support type is an {\tt INT}, which +is the generic integer type handled internally by \scotch. This type +has variable extent, depending on compilation flags, +as described in Section~\ref{sec-lib-inttypesize}; +\item +{\tt STRATPARAMSTRING}: a (small) character string. +\item +{\tt STRATPARAMSTRAT}: strategy. For instance, the graph ordering +method by nested dissection takes a vertex partitioning strategy as +one of its parameters, to compute the vertex separators. +\end{itemize} +The fourth and fifth fields are the address of the location of the +default structure and the address of the parameter within this default +structure, respectively. From these two values can be computed at run +time the offset of the parameter within any instance of the parameter +structure, which is used to fill the actual structures in the parsed +strategy evaluation tree. +The value of the sixth parameter depends on the type of the +parameter. It should be {\tt NULL} for {\tt STRAT\lbt PARAM\lbt +DOUBLE} and {\tt STRAT\lbt PARAM\lbt INT} parameters, points to the +string of available case letters for {\tt STRAT\lbt PARAM\lbt CASE} +parameters, points to the target string buffer for {\tt STRAT\lbt +PARAM\lbt STRING} parameters, and points to the relevant method +parsing table for for {\tt STRAT\lbt PARAM\lbt STRAT} parameters. +\item +Edit the makefile of the \libscotch\ source directory to enable the +compilation and linking of the method. Depending on \libscotch\ +versions, this makefile is either called {\tt Makefile} or {\tt +make\_\lbt gen}. +\item +Compile in debug mode and experiment with your routine, by creating +strategies that contain its single-letter code. +\item +To change the default strategy string used by the \libscotch\ library, +update file {\tt library\_\lbt graph\_\lbt order.c}, since it is +the graph ordering routine which makes use of graph vertex separation +methods to compute separators for the nested dissection ordering method. +\end{enumerate} + +\subsection{Licensing of new methods and of derived works} + +According to the terms of the GNU Lesser General Public License +(LGPL)~\cite{lgpl}, under which the \scotch\ software package is +distributed, the works that are carried out to improve and +extend the \libscotch\ library must be licensed under the same +terms. Basically, it means that you will have to distribute the +sources of your new methods, along with the sources of \scotch, to any +recipient of your modified version of the \libscotch, and that you +grant these recipients the same rights of update and redistribution as +the ones that are given to you under the terms of the LGPL. Please +read it carefully to know what you can do and cannot do with the +\scotch\ distribution. +\\ + +You should have received a copy of the GNU Lesser General Public +License along with the \scotch\ distribution; if not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, +MA 02111-1307, USA. diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/p_p.tex scotch-6.0.6/doc/src/ptscotch/p_p.tex --- scotch-6.0.4.dfsg1/doc/src/ptscotch/p_p.tex 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/p_p.tex 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,449 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Titre : p_p.tex % +% Sujet : Manuel de l'utilisateur % +% du projet 'PT-Scotch' % +% Programmes 6.0 % +% Auteur : Francois Pellegrini % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Programs} +\label{sec-prog} + +\subsection{Invocation} + +All of the programs comprised in the \scotch\ and +\ptscotch\ distributions have been designed to run in +command-line mode without any interactive prompting, +so that they can be called easily from other programs by means of +``\mbox{\tt system$\,$()}'' or ``\mbox{\tt popen$\,$()}'' system calls, or be +piped together on a single shell command line. In order to facilitate this, +whenever a stream name is asked for (either on input or output), the user may +put a single ``{\tt -}'' to indicate standard input or output. +Moreover, programs read their input in the same order as stream names are +given in the command line. It allows them to read all their data from a +single stream (usually the standard input), provided that these data are +ordered properly. + +A brief on-line help is provided with all the programs. To get this +help, use the ``{\tt -h}'' option after the program name. The case of +option letters is not significant, except when both the lower and +upper cases of a letter have different meanings. When passing +parameters to the programs, only the order of file names is +significant; options can be put anywhere in the command line, in any +order. Examples of use of the different programs +of the \ptscotch\ project are provided in section~\ref{sec-examples}. + +Error messages are standardized, but may not be fully explanatory. +However, most of the errors you may run into should be related to file +formats, and located in ``\mbox{\tt \ldots Load}'' routines. +In this case, compare your data formats with the definitions +given in section~\ref{sec-file}, and use the {\tt dgtst} +% and {\tt dmtst} +program of the \ptscotch\ distribution to check the consistency of +your distributed source graphs. +% and meshes. +\\ + +According to your MPI environment, you may either run the programs +directly, or else have to invoke them by means of a command such as +{\tt mpirun}. Check your local MPI documentation to see how to +specify the number of processors on which to run them. + +\subsection{File names} +\label{sec-prog-filename} + +\subsubsection{Sequential and parallel file opening} + +The programs of the \ptscotch\ distribution can handle either +the classical centralized \scotch\ graph files, or the +distributed \ptscotch\ graph files described in +section~\ref{sec-file-dsgraph}. + +In order to tell whether programs should read from, or write to, a single +file located on only one processor, or to multiple instances of the same +file on all of the processors, or else to distinct files on each of the +processors, a special grammar has been designed, which is based on the +``{\tt \%}'' escape character. Four such escape sequences are defined, +which are interpreted independently on every processor, prior to +file opening. By default, when a filename is provided, it is assumed +that the file is to be opened on only one of the processors, called +the root processor, which is usually process $0$ of the communicator +within which the program is run. Using any of the first three +escape sequences below will instruct programs to open in parallel a file +of name equal to the interpreted filename, on every processor on which they +are run. +\begin{itemize} +\iteme[{\tt \%p}] +Replaced by the number of processes in the global communicator in +which the program is run. Leads to parallel opening. +\iteme[{\tt \%r}] +Replaced on each process running the program by the rank of this +process in the global communicator. Leads to parallel opening. +\iteme[{\tt \%-}] +Discarded, but leads to parallel opening. This sequence is mainly used to +instruct programs to open on every processor a file of identical +name. The opened files can be, according whether the given path leads +to a shared directory or to directories that are local to each +processor, either to the opening of multiple instances of the same +file, or to the opening of distinct files which may each have a +different content, respectively (but in this latter case it is much +recommended to identify files by means of the ``{\tt \%r}'' sequence). +\iteme[{\tt \%\%}] +Replaced by a single ``{\tt \%}'' character. File names using this +escape sequence are not considered for parallel opening, unless one or +several of the three other escape sequences are also present. +\end{itemize} +For instance, filename ``{\tt brol}'' will lead to the +opening of file ``{\tt brol}'' on the root processor only, filename +``{\tt \%-brol}'' (or even ``{\tt br\%-ol}'') will lead to the +parallel opening of files called ``{\tt brol}'' on every processor, +and filename ``{\tt brol\%p-\%r}'' will lead to the opening of files +``{\tt brol2-0}'' and ``{\tt brol2-1}'', respectively, on each of the +two processors on which which would run a program of the +\ptscotch\ distribution. + +\subsubsection{Using compressed files} +\label{sec-prog-compressed} + +Starting from version 5.0.6, \scotch\ allows users to provide and +retrieve data in compressed form. Since this feature requires that +the compression and decompression tasks run in the same time as data +is read or written, it can only be done on systems which support +multi-threading (Posix threads) or multi-processing (by means of +{\tt fork} system calls). + +To determine if a stream has to be handled in compressed form, +\scotch\ checks its extension. If it is ``{\tt .gz}'' ({\tt gzip} +format), ``{\tt .bz2}'' ({\tt bzip2} format) or ``{\tt .lzma}'' +({\tt lzma} format), the stream is assumed to be compressed according +to the corresponding format. A filter task will then be used to process +it accordingly if the format is implemented in \scotch\ and enabled on +your system. + +To date, data can be read and written in {\tt bzip2} and {\tt gzip} +formats, and can also be read in the {\tt lzma} format. Since the +compression ratio of {\tt lzma} on \scotch\ graphs is $30\%$ better +than the one of {\tt gzip} and {\tt bzip2} (which are almost +equivalent in this case), the {\tt lzma} format is a very good choice +for handling very large graphs. To see how to enable compressed data +handling in \scotch, please refer to Section~\ref{sec-install}. +\\ + +When the compressed format allows it, several files can be provided on +the same stream, and be uncompressed on the fly. For instance, the +command ``{\tt cat brol.grf.gz brol.xyz.gz | gout -.gz -.gz -Mn - +brol.iv}'' concatenates the topology and geometry data of some graph +{\tt brol} and feed them as a single compressed stream to the standard +input of program {\tt gout}, hence the ''{\tt -.gz}'' to indicate a +compressed standard stream. + +\subsection{Description} + +\subsubsection{{\tt dgmap} / {\tt dgpart}} +\label{sec-prog-dgmap} + +\begin{itemize} +\progsyn +{\tt dgmap} [{\it input\_graph\_file} [{\it input\_\lbt target\_\lbt file} [{\it output\_\lbt mapping\_\lbt file} [{\it output\_\lbt log\_\lbt file}]]]] {\it options}\\ +~\\ +{\tt dgpart} {\it number\_\lbt of\_\lbt parts} [{\it input\_graph\_file} [{\it output\_\lbt mapping\_\lbt file} [{\it output\_\lbt log\_\lbt file}]]] {\it options} + +\progdes + +The {\tt dgmap} program is the parallel static mapper. It uses a +static mapping strategy to compute a mapping of the given source graph +to the given target architecture. The implemented algorithms aim at +assigning source graph vertices to target vertices such that every +target vertex receives a set of source vertices of summed weight +proportional to the relative weight of the target vertex in the target +architecture, and such that the communication cost function $f_C$ is +minimized (see Section~\ref{sec-algo-cost} for the definition and +rationale of this cost function). + +Since its main purpose is to provide mappings that exhibit high +concurrency for communication minimization in the mapped application, +it comprises a parallel implementation of the dual recursive +bipartitioning algorithm~\cite{pell94a}, as well as all of the +sequential static mapping methods used by its sequential counterpart +{\tt gmap}, to be used on subgraphs located on single processors. + +{\tt dgpart} is a simplified interface to {\tt dgmap}, which performs +graph partitioning instead of static mapping. Consequently, the +desired number of parts has to be provided, in lieu of the target +architecture. + +The {\tt -b} and {\tt -c} options allow the user to set preferences on +the behavior of the mapping strategy which is used by default. The +{\tt -m} option allows the user to define a custom mapping strategy. + +The {\it input\_graph\_file} filename can refer either to a +centralized or to a distributed graph, according to the semantics +defined in Section~\ref{sec-prog-filename}. The mapping file must be +a centralized file. + +\progopt\\* +Since the program is devoted to experimental studies, it has many +optional parameters, used to test various execution modes. Values +set by default will give best results in most cases. +\begin{itemize} +\iteme[{\tt -b}{\it rat}] +Set the maximum load imbalance ratio to \textit{rat}, which should +be a value comprised between $0$ and $1$. This option can be used in +conjunction with option \texttt{-c}, but is incompatible with option +\texttt{-m}. +\iteme[{\tt -c}{\it flags}] +Tune the default mapping strategy according to the given preference +flags. Some of these flags are antagonistic, while others can be +combined. See Section~\ref{sec-lib-format-strat-default} for more +information. The currently available flags are the following. +\begin{itemize} +\iteme[{\tt b}] +Enforce load balance as much as possible. +\iteme[{\tt q}] +Privilege quality over speed. This is the default behavior. +\iteme[{\tt s}] +Privilege speed over quality. +\iteme[{\tt t}] +Use only safe methods in the strategy. +\iteme[{\tt x}] +Favor scalability. +\end{itemize} +This option can be used in conjunction with option \texttt{-b}, but is +incompatible with option \texttt{-m}. +The resulting strategy string can be displayed by means +of the {\tt -vs} option. +\iteme[{\tt -h}] +Display the program synopsis. +\iteme[{{\tt -m}{\it strat}}] +Apply parallel static mapping strategy {\it strat}. The format of parallel +mapping strategies is defined in section~\ref{sec-lib-format-pmap}. +This option is incompatible with options \texttt{-b} and +\texttt{-c}. +\iteme[{\tt -r}{\it num}] +Set the number of the root process which will be used for centralized +file accesses. Set to $0$ by default. +\iteme[{\tt -s}{\it obj}] +Mask source edge and vertex weights. This option allows the user to +``unweight'' weighted source graphs by removing weights from edges and +vertices at loading time. {\it obj\/} may contain several of the following +switches. +\begin{itemize} +\iteme[{\tt e}] +Remove edge weights, if any. +\iteme[{\tt v}] +Remove vertex weights, if any. +\end{itemize} +\iteme[{\tt -V}] +Print the program version and copyright. +\iteme[{\tt -v}{\it verb}] +Set verbose mode to {\it verb}, which may contain several of the following +switches. +%For a detailed description of the data displayed, please +%refer to the manual page of {\tt dgmtst} below. +\begin{itemize} +\iteme[{\tt a}] +Memory allocation information. +\iteme[{\tt m}] +Mapping information, similar to the one displayed by the {\tt gmtst} +program of the sequential \scotch\ distribution. +\iteme[{\tt s}] +Strategy information. This parameter displays the default mapping +strategy used by {\tt gmap}. +\iteme[{\tt t}] +Timing information. +\end{itemize} +\end{itemize} +\end{itemize} + +\subsubsection{{\tt dgord}} + +\begin{itemize} +\progsyn +{\tt dgord} [{\it input\_graph\_file} [{\it output\_ordering\_file} [{\it output\_log\_file}]]] {\it options} + +\progdes + +The {\tt dgord} program is the parallel sparse matrix block +orderer. It uses an ordering strategy to compute block orderings of +sparse matrices represented as source graphs, whose vertex weights +indicate the number of DOFs per node (if this number is non +homogeneous) and whose edges are unweighted, in order to minimize +fill-in and operation count. + +Since its main purpose is to provide orderings that exhibit high +concurrency for parallel block factorization, it comprises a parallel +nested dissection method~\cite{geli81}, but sequential +classical~\cite{liu-85} and state-of-the-art~\cite{peroam00a} +minimum degree algorithms are implemented as well, to be used on +subgraphs located on single processors. + +Ordering methods can be combined by means of selection, grouping, and +condition operators, so as to define ordering strategies, which can be +passed to the program by means of the {\tt -o} option. The {\tt -c} +option allows the user to set preferences on the behavior of the +ordering strategy which is used by default. + +The {\it input\_graph\_file} filename can refer either to a +centralized or to a distributed graph, according to the semantics +defined in Section~\ref{sec-prog-filename}. The ordering file must be +a centralized file. + +\progopt\\* +Since the program is devoted to experimental studies, it has many +optional parameters, used to test various execution modes. Values +set by default will give best results in most cases. +\begin{itemize} +\iteme[{\tt -c}{\it flags}] +Tune the default ordering strategy according to the given preference +flags. Some of these flags are antagonistic, while others can be +combined. See Section~\ref{sec-lib-format-strat-default} for more +information. The resulting strategy string can be displayed by means +of the {\tt -vs} option. +\begin{itemize} +\iteme[{\tt b}] +Enforce load balance as much as possible. +\iteme[{\tt q}] +Privilege quality over speed. This is the default behavior. +\iteme[{\tt s}] +Privilege speed over quality. +\iteme[{\tt t}] +Use only safe methods in the strategy. +\iteme[{\tt x}] +Favor scalability. +\end{itemize} +\iteme[{\tt -h}] +Display the program synopsis. +\iteme[{\tt -m}{\it output\_mapping\_file}] +Write to {\it output\_mapping\_file\/} the mapping of graph vertices to +column blocks. All of the separators and leaves produced by the nested +dissection method are considered as distinct column blocks, which may +be in turn split by the ordering methods that are applied to them. +Distinct integer numbers are associated with each of the column blocks, +such that the number of a block is always greater than the ones of its +predecessors in the elimination process, that is, its descendants in +the elimination tree. +The structure of mapping files is described in detail in the relevant +section of the {\it\scotch\ User's Guide}~\scotchcitesuser. + +When the geometry of the graph is available, this mapping file may be +processed by program {\tt gout} to display the vertex separators and +supervariable amalgamations that have been computed. +\iteme[{{\tt -o}{\it strat}}] +Apply parallel ordering strategy {\it strat}. The format of parallel +ordering strategies is defined in section~\ref{sec-lib-format-pord}. +\iteme[{\tt -r}{\it num}] +Set the number of the root process which will be used for centralized +file accesses. Set to $0$ by default. +\iteme[{\tt -t}{\it output\_tree\_file}] +Write to {\it output\_tree\_file\/} the structure of the separator +tree. The data that is written resembles much the one of a mapping +file: after a first line that contains the number of lines to follow, +there are that many lines of mapping pairs, which associate an integer +number with every graph vertex index. This integer number is the +number of the column block which is the parent of the column block to +which the vertex belongs, or $-1$ if the column block to which the +vertex belongs is a root of the separator tree (there can be several +roots, if the graph is disconnected). + +Combined to the column block mapping data produced by option {\tt -m}, +the tree structure allows one to rebuild the separator tree. +\iteme[{\tt -V}] +Print the program version and copyright. +\iteme[{\tt -v}{\it verb}] +Set verbose mode to {\it verb}, which may contain several of the following +switches. +%For a detailed description of the data displayed, please +%refer to the manual page of {\tt gotst}. +\begin{itemize} +\iteme[{\tt a}] +Memory allocation information. +\iteme[{\tt s}] +Strategy information. This parameter displays the default parallel +ordering strategy used by {\tt dgord}. +\iteme[{\tt t}] +Timing information. +\end{itemize} +\end{itemize} +\end{itemize} + +\subsubsection{{\tt dgpart}} + +\begin{itemize} +\progsyn +{\tt dgpart} [{\it number\_of\_parts} [{\it input\_\lbt graph\_\lbt file} [{\it output\_\lbt mapping\_\lbt file} [{\it output\_\lbt log\_\lbt file}]]]] {\it options} + +\progdes + +The {\tt dgpart} program is the parallel graph partitioner. It is +in fact a shortcut for the {\tt dgmap} program, where the number of +parts is turned into a complete graph with same number of vertices +which is passed to the static mapping routine. + +Save for the {\it number\_of\_parts} parameter which replaces the {\it +input\_target\_file}, the parameters of {\tt dgpart} are identical to +the ones of {\tt dgmap}. Please refer to its manual page, in +Section~\ref{sec-prog-dgmap}, for a description of all of the +available options. +\end{itemize} + +\subsubsection{{\tt dgscat}} + +\begin{itemize} +\progsyn +{\tt dgscat} [{\it input\_graph\_file} [{\it output\_graph\_file}]] {\it options} + +\progdes + +The {\tt dgscat} program creates a distributed source graph, in the +\scotch\ distributed graph format, from the given centralized source +graph file. + +The {\it input\_graph\_file} filename should therefore refer to a +centralized graph, while {\it output\_graph\_file} must refer to a +distributed graph, according to the semantics defined in +Section~\ref{sec-prog-filename}. + +\progopt\\[-1em] +\begin{itemize} +\iteme[{\tt -c}] +Check the consistency of the distributed graph at the end of the +graph loading phase. +\iteme[{\tt -h}] +Display the program synopsis. +\iteme[{\tt -r}{\it num}] +Set the number of the root process which will be used for centralized +file accesses. Set to $0$ by default. +\iteme[{\tt -V}] +Print the program version and copyright. +\end{itemize} +\end{itemize} + +\subsubsection{{\tt dgtst}} + +\begin{itemize} +\progsyn +{\tt dgtst} [{\it input\_graph\_file} [{\it output\_data\_file}]] {\it options} + +\progdes + +The program {\tt dgtst} is the source graph tester. It checks the +consistency of the input source graph structure (matching of arcs, +number of vertices and edges, etc\@.), and gives some statistics +regarding edge weights, vertex weights, and vertex degrees. + +It produces the same results as the {\tt gtst} program of the +\scotch\ sequential distribution. + +\progopt +\begin{itemize} +\iteme[{\tt -h}] +Display the program synopsis. +\iteme[{\tt -r}{\it num}] +Set the number of the root process which will be used for centralized +file accesses. Set to $0$ by default. +\iteme[{\tt -V}] +Print the program version and copyright. +\end{itemize} +\end{itemize} diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/p.tex scotch-6.0.6/doc/src/ptscotch/p.tex --- scotch-6.0.4.dfsg1/doc/src/ptscotch/p.tex 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/p.tex 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,243 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Titre : p.tex % +% Sujet : Manuel de l'utilisateur % +% de PT-Scotch 6.0 % +% Corps du document % +% Auteur : Francois Pellegrini % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% pdflatex -sPAPERSIZE=a4 p.tex +% dvips -sPAPERSIZE=a4 p.dvi -o ptscotch_user6.0.ps +% ps2pdf -sPAPERSIZE=a4 ptscotch_user6.0.ps ptscotch_user6.0.pdf + +%% Formatage et pagination. + +\documentclass{article} +\usepackage{a4} +\usepackage{url} +\usepackage[dvips]{graphicx} +%\documentstyle[11pt,a4,fullpage,epsf]{article} +%\textwidth 16.0cm +%\oddsidemargin -0.5cm +%\evensidemargin -0.5cm +%\marginparwidth 0.0cm +%\marginparsep 0.0cm +%\marginparpush 0.0cm +%\topmargin 0.5cm +%\headheight 0.0cm +%\headsep 0.0cm +%\textheight 25.0cm +%\footheight 0.0cm +%\footskip 0.0cm + +\sloppy % Gestion des overfull hbox +\renewcommand{\baselinestretch}{1.05} % Hauteur lignes x 1.05 + +\setcounter{secnumdepth}{3} % Sous-sous-sections numerotees +\setcounter{tocdepth}{3} % Sous-sous-sections dans la table + +%% Macros et commandes utiles. + +\makeatletter +\@definecounter{enumv} % 8 niveaux d'itemizations +\@definecounter{enumvi} +\@definecounter{enumvii} +\@definecounter{enumviii} +\def\itemize{\ifnum \@itemdepth >8 \@toodeep\else \advance\@itemdepth \@ne +\edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% +\list{\csname\@itemitem\endcsname}{\def\makelabel##1{\hss\llap{##1}}}\fi} +\let\enditemize =\endlist + +\def\@iteme[#1]{\if@noparitem \@donoparitem % Item long pour options + \else \if@inlabel \indent \par \fi + \ifhmode \unskip\unskip \par \fi + \if@newlist \if@nobreak \@nbitem \else + \addpenalty\@beginparpenalty + \addvspace\@topsep \addvspace{-\parskip}\fi + \else \addpenalty\@itempenalty \addvspace\itemsep + \fi + \global\@inlabeltrue +\fi +\everypar{\global\@minipagefalse\global\@newlistfalse + \if@inlabel\global\@inlabelfalse + \setbox\@tempboxa\hbox{#1}\relax + \hskip \itemindent \hskip -\parindent + \hskip -\labelwidth \hskip -\labelsep + \ifdim \wd\@tempboxa > \labelwidth + \box\@tempboxa\hfil\break + \else + \hbox to\labelwidth{\box\@tempboxa\hfil}\relax + \hskip \labelsep + \fi + \penalty\z@ \fi + \everypar{}}\global\@nobreakfalse +\if@noitemarg \@noitemargfalse \if@nmbrlist \refstepcounter{\@listctr}\fi \fi +\ignorespaces} +\def\iteme{\@ifnextchar [{\@iteme}{\@noitemargtrue \@iteme[\@itemlabel]}} + +\let\@Hxfloat\@xfloat +\def\@xfloat#1[{\@ifnextchar{H}{\@HHfloat{#1}[}{\@Hxfloat{#1}[}} +\def\@HHfloat#1[H]{% +\expandafter\let\csname end#1\endcsname\end@Hfloat +\vskip\intextsep\def\@captype{#1}\parindent\z@ +\ignorespaces} +\def\end@Hfloat{\vskip \intextsep} +\makeatother + +\def\progsyn{\item[{\makebox[1.5em][l]{\bf Synopsis}}]\ ~\linebreak[0]\\*[1em]} +\def\progdes{\item[{\makebox[1.5em][l]{\bf Description}}]\ ~\linebreak[0]\\*[1em]} +\def\progopt{\item[{\makebox[1.5em][l]{\bf Options}}]~\linebreak[0]} +\def\progret{\item[{\makebox[1.5em][l]{\bf Return values}}]~\linebreak[0]} + +\newcommand{\bn}{\begin{displaymath}} % Equations non-numerotees +\newcommand{\en}{\end{displaymath}} +\newcommand{\bq}{\begin{equation}} % Equations numerotees +\newcommand{\eq}{\end{equation}} + +\newcommand{\lbo}{\linebreak[0]} +\newcommand{\lbt}{\linebreak[2]} +\newcommand{\noi}{{\noindent}} % Pas d'indentation +\newcommand{\spa}{{\protect \vspace{\bigskipamount}}} % Espace vertical + +\newcommand{\eg}{{\it e\@.g\@.\/\ }} % e.g. +\newcommand{\ie}{{\it i\@.e\@.\/\ }} % i.e. + +\newcommand{\chaco}{{\sc Chaco}} % "Chaco" +\newcommand{\metis}{\mbox{\sc Me$\!$T$\!$iS}} % "MeTiS" +\newcommand{\parmetis}{\mbox{\sc ParMe$\!$T$\!$iS}} +\newcommand{\scotch}{{\sc Scotch}} % "Scotch" +\newcommand{\libscotch}{{\sc libScotch}} % "libScotch" +\newcommand{\ptscotch}{{\sc PT-Scotch}} % "PT-Scotch" +\newcommand{\libptscotch}{{\sc libPTScotch}} % "libPTScotch" + +\newcommand{\eqdef}{\stackrel{\scriptscriptstyle \rm def}{=}} % = as definition +\newcommand{\isapprox}{\mathop{\approx}\limits} + +\newcommand{\lefta}{\longleftarrow} +\newcommand{\rghta}{\longrightarrow} +\newcommand{\botha}{\longleftrightarrow} +\newcommand{\Lefta}{\Longleftarrow} +\newcommand{\Rghta}{\Longrightarrow} +\newcommand{\Botha}{\Longleftrightarrow} + +\newcommand{\HY}{{\rm H}} % H +\newcommand{\KP}{{\rm K}} % K +\newcommand{\MK}[1]{{\rm M}_{#1}} % Mk +\newcommand{\MD}{\MK{2}} % M2 +\newcommand{\PA}{{\rm P}} % P +\newcommand{\UB}{{\rm UB}} % UB +\newcommand{\SE}{{\rm SE}} % SE +\newcommand{\FFT}{{\rm FFT}} % FFT +\newcommand{\BF}{{\rm BF}} % BF +\newcommand{\BFB}{{\overline{\rm BF}}} % BF bar +\newcommand{\CCC}{{\rm CCC}} % CCC +\newcommand{\CCCB}{{\overline{\rm CCC}}} % CCC bar + +\newcommand{\roo}[1]{{\rho_{\scriptscriptstyle {#1}}}} % Rho avec petit argument +\newcommand{\too}[1]{{\tau_{\scriptscriptstyle {#1}}}} % Tau avec petit argument +\newcommand{\xio}[1]{{\xi_{\scriptscriptstyle {#1}}}} % Xi avec petit argument + +\newcommand{\SB}[1]{{\cal C}'_S\left({#1}\right)} % Comportement en espace +\newcommand{\TB}[1]{{\cal C}'_T\left({#1}\right)} % Comportement en temps +\newcommand{\SC}[1]{{\cal C}_S\left({#1}\right)} % Complexite en espace +\newcommand{\TC}[1]{{\cal C}_T\left({#1}\right)} % Complexite en temps + +\newcommand{\dmap}{\mbox{$\delta_{map}$}} +\newcommand{\dexp}{\mbox{$\delta_{exp}$}} +\newcommand{\mmap}{\mbox{$\mu_{map}$}} +\newcommand{\mdil}{\mbox{$\mu_{dil}$}} +\newcommand{\mcom}{\mbox{$\mu_{com}$}} +\newcommand{\mexp}{\mbox{$\mu_{exp}$}} + +\newcommand{\NNZ}{\mbox{NNZ}} +\newcommand{\OPC}{\mbox{OPC}} +\newcommand{\hnbr}{\mbox{$h_{\rm nbr}$}} +\newcommand{\hmin}{\mbox{$h_{\rm min}$}} +\newcommand{\hmax}{\mbox{$h_{\rm max}$}} +\newcommand{\havg}{\mbox{$h_{\rm avg}$}} +\newcommand{\hdlt}{\mbox{$h_{\rm dlt}$}} + +%% Version du document. + +\newcommand{\scotchver}{6.0} +\newcommand{\scotchversub}{6.0.5} +\newcommand{\scotchcitepuser}{\protect\cite{pell08c}} +\newcommand{\scotchcitesuser}{\protect\cite{pell08b}} + +%% Page de garde. + +\begin{document} + +%\date{\today} +\date{\today} + +\title{\includegraphics[scale=0.8]{p_f_logo.ps}\\[1em] + {\LARGE\bf \ptscotch\ and \libptscotch\ {\sc \scotchver} \mbox{User's Guide}}\\[1em]% + {\normalsize (version \scotchversub)} +} + +\author{Fran\c cois Pellegrini\\ +Universit\'e Bordeaux~1 \& LaBRI, UMR CNRS 5800\\ +Bacchus team, INRIA Bordeaux Sud-Ouest\\ +351 cours de la Lib\'eration, 33405 TALENCE, FRANCE\\ +{\tt pelegrin@labri.fr}} + +\maketitle + +\begin{abstract} + +This document describes the capabilities and operations of +\ptscotch\ and \libscotch, a software package and a software library +which compute parallel static mappings and parallel sparse matrix +block orderings of distributed graphs. It gives brief descriptions of +the algorithms, details the input/output formats, instructions for +use, installation procedures, and provides a number of examples. + +\ptscotch\ is distributed as free/libre software, and has been +designed such that new partitioning or ordering methods can be added +in a straightforward manner. It can therefore be used as a testbed for +the easy and quick coding and testing of such new methods, and may +also be redistributed, as a library, along with third-party software +that makes use of it, either in its original or in updated forms. +\end{abstract} + +\clearpage + +%% Table des matieres. + +\tableofcontents + +%% Corps du document. + +\input{p_i.tex} % Introductions +\input{p_c.tex} % Changes since previous versions +\input{p_f.tex} % Formats de fichiers +\input{p_p.tex} % Programmes +\input{p_l.tex} % Bibliotheque +\input{p_d.tex} % Distribution +\input{p_e.tex} % Relevant examples +%\input{p_n.tex} % Addition of a new method + +%% Remerciements. + +\section*{Credits} + +I wish to thank all of the following people: +\begin{itemize} +\item +C\'edric Chevalier, during his PhD at LaBRI, did research on efficient +parallel matching algorithms and coded the parallel multi-level +algorithm of \ptscotch. He also studied parallel genetic refinement +algorithms. Many thanks to him for the great job! +\item +Yves Secretan contributed to the MinGW32 port. +\end{itemize} + +%% Bibliographie. + +\bibliographystyle{plain} +\bibliography{p} + +\end{document} Binary files /tmp/tmpp961_B/2VrPdjj9Sm/scotch-6.0.4.dfsg1/doc/src/ptscotch/ptscotch_logo_color.gif and /tmp/tmpp961_B/UYzcEkJWzG/scotch-6.0.6/doc/src/ptscotch/ptscotch_logo_color.gif differ Binary files /tmp/tmpp961_B/2VrPdjj9Sm/scotch-6.0.4.dfsg1/doc/src/ptscotch/ptscotch_logo_color.png and /tmp/tmpp961_B/UYzcEkJWzG/scotch-6.0.6/doc/src/ptscotch/ptscotch_logo_color.png differ diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/s_f_mult.eps scotch-6.0.6/doc/src/ptscotch/s_f_mult.eps --- scotch-6.0.4.dfsg1/doc/src/ptscotch/s_f_mult.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/s_f_mult.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,223 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: stdin +%%Creator: fig2dev Version 3.2 Patchlevel 5-alpha5 +%%CreationDate: Mon Jan 29 23:59:02 2007 +%%For: pelegrin@brol (Francois PELLEGRINI) +%%BoundingBox: 0 0 574 285 +%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 285 moveto 0 0 lineto 574 0 lineto 574 285 lineto closepath clip newpath +-35.0 347.5 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +% +% Fig objects follow +% +% +% here starts figure with depth 0 +/Times-Roman ff 240.00 scf sf +600 4725 m +gs 1 -1 sc (Coarsening) col-1 sh gr +/Times-Roman ff 240.00 scf sf +825 4950 m +gs 1 -1 sc (phase) col-1 sh gr +/Times-Roman ff 240.00 scf sf +8550 4725 m +gs 1 -1 sc (Uncoarsening) col-1 sh gr +/Times-Roman ff 240.00 scf sf +8925 4950 m +gs 1 -1 sc (phase) col-1 sh gr +% Arc +7.500 slw +0 slc +gs clippath +4050 5293 m 4217 5278 l 4212 5218 l 4044 5233 l 4044 5233 l 4167 5253 l 4050 5293 l cp +eoclip +n 3839.2 2023.3 3246.9 -176.0571 83.6195 arcn +gs col-1 s gr + gr + +% arrowhead +0 slj +n 4050 5293 m 4167 5253 l 4044 5233 l col-1 s +% Arc +gs clippath +9636 1951 m 9629 1783 l 9569 1786 l 9576 1954 l 9576 1954 l 9601 1833 l 9636 1951 l cp +eoclip +n 6360.8 2023.3 3246.9 -3.9429 96.3805 arc +gs col-1 s gr + gr + +% arrowhead +n 9636 1951 m 9601 1833 l 9576 1954 l col-1 s +% Ellipse +n 2100 1800 1200 600 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 2550 3300 1020 510 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 8100 1800 1200 600 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 7650 3300 1020 510 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 5100 5100 555 270 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 6750 4500 765 390 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 3450 4500 765 390 0 360 DrawEllipse gs col-1 s gr + +% Polyline +30.000 slw +n 4935 5355 m 5085 5250 l 5040 5040 l 5220 4965 l + 5190 4830 l gs col-1 s gr +% Polyline +7.500 slw +n 6600 4875 m 6750 4725 l 6675 4350 l 6900 4200 l + 6840 4110 l gs col-1 s gr +% Polyline +30.000 slw +n 6690 4890 m 6675 4725 l 6675 4650 l 6750 4350 l 6825 4200 l + 6735 4110 l gs col-1 s gr +% Polyline +7.500 slw +n 7575 3810 m 7575 3600 l 7650 3150 l 7800 2925 l + 7710 2790 l gs col-1 s gr +% Polyline +n 8100 2400 m 8025 2100 l 8325 1575 l 8175 1350 l + 8250 1200 l gs col-1 s gr +% Polyline +30.000 slw +n 8025 2400 m 8250 1875 l 8175 1500 l 8250 1350 l + 8175 1200 l gs col-1 s gr +% Polyline +n 7695 3810 m 7500 3450 l 7800 3075 l 7725 2925 l + 7830 2790 l gs col-1 s gr +% Polyline +7.500 slw +gs clippath +7869 2022 m 8033 2057 l 8045 1998 l 7881 1963 l 7881 1963 l 7993 2018 l 7869 2022 l cp +eoclip +n 6600 1725 m + 8025 2025 l gs col-1 s gr gr + +% arrowhead +n 7869 2022 m 7993 2018 l 7881 1963 l col-1 s +% Polyline +gs clippath +7944 1570 m 8107 1607 l 8121 1549 l 7957 1512 l 7957 1512 l 8068 1568 l 7944 1570 l cp +eoclip +n 6450 1200 m + 8100 1575 l gs col-1 s gr gr + +% arrowhead +n 7944 1570 m 8068 1568 l 7957 1512 l col-1 s +/Times-Roman ff 240.00 scf sf +4350 5700 m +gs 1 -1 sc (Initial partitioning) col-1 sh gr +/Times-Roman ff 240.00 scf sf +4800 1800 m +gs 1 -1 sc (Projected partition) col-1 sh gr +/Times-Roman ff 240.00 scf sf +4800 1275 m +gs 1 -1 sc (Refined partition) col-1 sh gr +% here ends figure; +$F2psEnd +rs +showpage +%%Trailer +%EOF diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/s_f_mult.fig scotch-6.0.6/doc/src/ptscotch/s_f_mult.fig --- scotch-6.0.4.dfsg1/doc/src/ptscotch/s_f_mult.fig 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/s_f_mult.fig 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,51 @@ +#FIG 3.2 Produced by xfig version 3.2.5-alpha5 +Landscape +Center +Inches +Letter +100.00 +Single +-2 +1200 2 +5 1 0 1 -1 -1 0 0 -1 0.000 0 1 1 0 3839.175 2023.260 600 1800 1500 4275 4200 5250 + 0 0 1.00 60.00 120.00 +5 1 0 1 -1 -1 0 0 -1 0.000 0 0 0 1 6360.825 2023.260 9600 1800 8700 4275 6000 5250 + 0 0 1.00 60.00 120.00 +6 600 4425 1650 4950 +4 0 -1 0 0 0 16 0.0000 4 255 1260 600 4725 Coarsening\001 +4 0 -1 0 0 0 16 0.0000 4 255 630 825 4950 phase\001 +-6 +6 8550 4425 9825 4950 +4 0 -1 0 0 0 16 0.0000 4 255 1545 8550 4725 Uncoarsening\001 +4 0 -1 0 0 0 16 0.0000 4 255 630 8925 4950 phase\001 +-6 +1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 2100 1800 1200 600 2100 1800 3300 1200 +1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 2550 3300 1020 510 2550 3300 3570 2790 +1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 8100 1800 1200 600 8100 1800 9300 1200 +1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 7650 3300 1020 510 7650 3300 8670 2790 +1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 5100 5100 555 270 5100 5100 5640 4830 +1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 6750 4500 765 390 6750 4500 7545 4110 +1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 3450 4500 765 390 3450 4500 4245 4110 +2 1 0 3 -1 -1 0 0 -1 0.000 0 0 -1 0 0 5 + 4935 5355 5085 5250 5040 5040 5220 4965 5190 4830 +2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 0 0 5 + 6600 4875 6750 4725 6675 4350 6900 4200 6840 4110 +2 1 0 3 -1 -1 0 0 -1 0.000 0 0 -1 0 0 6 + 6690 4890 6675 4725 6675 4650 6750 4350 6825 4200 6735 4110 +2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 0 0 5 + 7575 3810 7575 3600 7650 3150 7800 2925 7710 2790 +2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 0 0 5 + 8100 2400 8025 2100 8325 1575 8175 1350 8250 1200 +2 1 0 3 -1 -1 0 0 -1 0.000 0 0 -1 0 0 5 + 8025 2400 8250 1875 8175 1500 8250 1350 8175 1200 +2 1 0 3 -1 -1 0 0 -1 0.000 0 0 -1 0 0 5 + 7695 3810 7500 3450 7800 3075 7725 2925 7830 2790 +2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 6600 1725 8025 2025 +2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 6450 1200 8100 1575 +4 0 -1 0 0 0 16 0.0000 4 255 2055 4350 5700 Initial partitioning\001 +4 0 -1 0 0 0 16 0.0000 4 255 2085 4800 1800 Projected partition\001 +4 0 -1 0 0 0 16 0.0000 4 255 1905 4800 1275 Refined partition\001 diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/s_f_rua.eps scotch-6.0.6/doc/src/ptscotch/s_f_rua.eps --- scotch-6.0.4.dfsg1/doc/src/ptscotch/s_f_rua.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/s_f_rua.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,508 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: stdin +%%Creator: fig2dev Version 3.2 Patchlevel 3c +%%CreationDate: Wed May 16 15:53:26 2001 +%%For: pelegrin@trol.labri.fr (Francois PELLEGRINI) +%%BoundingBox: 0 0 304 303 +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 303 moveto 0 0 lineto 304 0 lineto 304 303 lineto closepath clip newpath +-58.0 360.0 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +%%Page: 1 1 +10 setmiterlimit + 0.06000 0.06000 sc +% +% Fig objects follow +% +% Polyline +7.500 slw + [15 45] 45 sd +n 1575 1125 m + 5775 1125 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1575 1725 m + 5775 1725 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1575 2925 m + 5775 2925 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1575 3525 m + 5775 3525 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1575 4125 m + 5775 4125 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1575 2325 m + 5775 2325 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1575 4725 m + 5775 4725 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1575 5325 m + 5775 5325 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1575 1125 m + 1575 5325 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2175 1125 m + 2175 5325 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2775 1125 m + 2775 5325 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3375 1125 m + 3375 5325 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3975 1125 m + 3975 5325 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4575 1125 m + 4575 5325 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5175 1125 m + 5175 5325 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5775 1125 m + 5775 5325 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1725 5475 m 1725 5175 l 1425 5175 l 1425 5475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1725 4875 m 1725 4575 l 1425 4575 l 1425 4875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1725 4275 m 1725 3975 l 1425 3975 l 1425 4275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1725 3675 m 1725 3375 l 1425 3375 l 1425 3675 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1725 3075 m 1725 2775 l 1425 2775 l 1425 3075 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1725 2475 m 1725 2175 l 1425 2175 l 1425 2475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1725 1875 m 1725 1575 l 1425 1575 l 1425 1875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1725 1275 m 1725 975 l 1425 975 l 1425 1275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2325 5475 m 2325 5175 l 2025 5175 l 2025 5475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2325 4875 m 2325 4575 l 2025 4575 l 2025 4875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2325 4275 m 2325 3975 l 2025 3975 l 2025 4275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2325 3675 m 2325 3375 l 2025 3375 l 2025 3675 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2325 3075 m 2325 2775 l 2025 2775 l 2025 3075 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2325 2475 m 2325 2175 l 2025 2175 l 2025 2475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2325 1875 m 2325 1575 l 2025 1575 l 2025 1875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2325 1275 m 2325 975 l 2025 975 l 2025 1275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3525 5475 m 3525 5175 l 3225 5175 l 3225 5475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3525 4875 m 3525 4575 l 3225 4575 l 3225 4875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3525 4275 m 3525 3975 l 3225 3975 l 3225 4275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3525 3675 m 3525 3375 l 3225 3375 l 3225 3675 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3525 3075 m 3525 2775 l 3225 2775 l 3225 3075 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3525 2475 m 3525 2175 l 3225 2175 l 3225 2475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3525 1875 m 3525 1575 l 3225 1575 l 3225 1875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3525 1275 m 3525 975 l 3225 975 l 3225 1275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4125 5475 m 4125 5175 l 3825 5175 l 3825 5475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4125 4875 m 4125 4575 l 3825 4575 l 3825 4875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4125 4275 m 4125 3975 l 3825 3975 l 3825 4275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4125 3675 m 4125 3375 l 3825 3375 l 3825 3675 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4125 3075 m 4125 2775 l 3825 2775 l 3825 3075 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4125 2475 m 4125 2175 l 3825 2175 l 3825 2475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4125 1875 m 4125 1575 l 3825 1575 l 3825 1875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4125 1275 m 4125 975 l 3825 975 l 3825 1275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4725 5475 m 4725 5175 l 4425 5175 l 4425 5475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4725 4875 m 4725 4575 l 4425 4575 l 4425 4875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4725 4275 m 4725 3975 l 4425 3975 l 4425 4275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4725 3675 m 4725 3375 l 4425 3375 l 4425 3675 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4725 3075 m 4725 2775 l 4425 2775 l 4425 3075 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4725 2475 m 4725 2175 l 4425 2175 l 4425 2475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4725 1875 m 4725 1575 l 4425 1575 l 4425 1875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4725 1275 m 4725 975 l 4425 975 l 4425 1275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5325 5475 m 5325 5175 l 5025 5175 l 5025 5475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5325 4875 m 5325 4575 l 5025 4575 l 5025 4875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5325 4275 m 5325 3975 l 5025 3975 l 5025 4275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5325 3675 m 5325 3375 l 5025 3375 l 5025 3675 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5325 3075 m 5325 2775 l 5025 2775 l 5025 3075 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5325 2475 m 5325 2175 l 5025 2175 l 5025 2475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5325 1875 m 5325 1575 l 5025 1575 l 5025 1875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5325 1275 m 5325 975 l 5025 975 l 5025 1275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5925 5475 m 5925 5175 l 5625 5175 l 5625 5475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5925 4875 m 5925 4575 l 5625 4575 l 5625 4875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5925 4275 m 5925 3975 l 5625 3975 l 5625 4275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5925 3675 m 5925 3375 l 5625 3375 l 5625 3675 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5925 3075 m 5925 2775 l 5625 2775 l 5625 3075 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5925 2475 m 5925 2175 l 5625 2175 l 5625 2475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5925 1875 m 5925 1575 l 5625 1575 l 5625 1875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5925 1275 m 5925 975 l 5625 975 l 5625 1275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2925 5475 m 2925 5175 l 2625 5175 l 2625 5475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2925 4875 m 2925 4575 l 2625 4575 l 2625 4875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2925 4275 m 2925 3975 l 2625 3975 l 2625 4275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2925 3675 m 2925 3375 l 2625 3375 l 2625 3675 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2925 3075 m 2925 2775 l 2625 2775 l 2625 3075 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2925 2475 m 2925 2175 l 2625 2175 l 2625 2475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2925 1875 m 2925 1575 l 2625 1575 l 2625 1875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2925 1275 m 2925 975 l 2625 975 l 2625 1275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +/Times-Roman ff 300.00 scf sf +2325 5925 m +gs 1 -1 sc (D) col-1 sh gr +/Times-Roman ff 240.00 scf sf +2550 6000 m +gs 1 -1 sc (0) col-1 sh gr +/Times-Roman ff 300.00 scf sf +4725 5925 m +gs 1 -1 sc (D) col-1 sh gr +/Times-Roman ff 240.00 scf sf +4950 6000 m +gs 1 -1 sc (1) col-1 sh gr +% Ellipse +n 1875 3825 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 2775 1725 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 2475 5025 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 4875 2025 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 5475 3825 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 2475 4425 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Polyline +15.000 slw + [90] 0 sd +n 3675 3375 m + 3675 5475 l gs col-1 s gr [] 0 sd +% Polyline +n 3600 3375 m + 3750 3375 l gs col-1 s gr +% Polyline +n 3600 5475 m + 3750 5475 l gs col-1 s gr +% Polyline +n 1455 3300 m 1350 3300 1350 5445 105 arcto 4 {pop} repeat + 1350 5550 5895 5550 105 arcto 4 {pop} repeat + 6000 5550 6000 3405 105 arcto 4 {pop} repeat + 6000 3300 1455 3300 105 arcto 4 {pop} repeat + cp gs col-1 s gr +% Polyline +n 2655 1500 m 2550 1500 2550 1845 105 arcto 4 {pop} repeat + 2550 1950 2895 1950 105 arcto 4 {pop} repeat + 3000 1950 3000 1605 105 arcto 4 {pop} repeat + 3000 1500 2655 1500 105 arcto 4 {pop} repeat + cp gs col-1 s gr +% Polyline +n 4455 1500 m 4350 1500 4350 2445 105 arcto 4 {pop} repeat + 4350 2550 5295 2550 105 arcto 4 {pop} repeat + 5400 2550 5400 1605 105 arcto 4 {pop} repeat + 5400 1500 4455 1500 105 arcto 4 {pop} repeat + cp gs col-1 s gr +% Polyline +n 2475 4425 m + 2775 1725 l gs col-1 s gr +% Polyline +n 2475 4425 m + 4875 2025 l gs col-1 s gr +% Polyline +45.000 slw +n 2475 4425 m + 5475 3825 l gs col-1 s gr +% Polyline + [15 90] 90 sd +n 2475 4425 m + 2475 5025 l gs col-1 s gr [] 0 sd +% Polyline + [15 90] 90 sd +n 2475 4425 m + 1875 3825 l gs col-1 s gr [] 0 sd +/Times-Roman ff 300.00 scf sf +975 4500 m +gs 1 -1 sc (D) col-1 sh gr +$F2psEnd +rs diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/s_f_rua.fig scotch-6.0.6/doc/src/ptscotch/s_f_rua.fig --- scotch-6.0.4.dfsg1/doc/src/ptscotch/s_f_rua.fig 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/s_f_rua.fig 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,226 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +0 +1200 2 +6 1425 975 5925 5475 +6 1575 1125 5775 5325 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1575 1125 5775 1125 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1575 1725 5775 1725 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1575 2925 5775 2925 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1575 3525 5775 3525 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1575 4125 5775 4125 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1575 2325 5775 2325 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1575 4725 5775 4725 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1575 5325 5775 5325 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1575 1125 1575 5325 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 2175 1125 2175 5325 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 2775 1125 2775 5325 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 3375 1125 3375 5325 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 3975 1125 3975 5325 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 4575 1125 4575 5325 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 5175 1125 5175 5325 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 5775 1125 5775 5325 +-6 +6 1425 975 1725 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1725 5475 1725 5175 1425 5175 1425 5475 1725 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1725 4875 1725 4575 1425 4575 1425 4875 1725 4875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1725 4275 1725 3975 1425 3975 1425 4275 1725 4275 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1725 3675 1725 3375 1425 3375 1425 3675 1725 3675 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1725 3075 1725 2775 1425 2775 1425 3075 1725 3075 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1725 2475 1725 2175 1425 2175 1425 2475 1725 2475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1725 1875 1725 1575 1425 1575 1425 1875 1725 1875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1725 1275 1725 975 1425 975 1425 1275 1725 1275 +-6 +6 2025 975 2325 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2325 5475 2325 5175 2025 5175 2025 5475 2325 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2325 4875 2325 4575 2025 4575 2025 4875 2325 4875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2325 4275 2325 3975 2025 3975 2025 4275 2325 4275 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2325 3675 2325 3375 2025 3375 2025 3675 2325 3675 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2325 3075 2325 2775 2025 2775 2025 3075 2325 3075 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2325 2475 2325 2175 2025 2175 2025 2475 2325 2475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2325 1875 2325 1575 2025 1575 2025 1875 2325 1875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2325 1275 2325 975 2025 975 2025 1275 2325 1275 +-6 +6 3225 975 3525 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3525 5475 3525 5175 3225 5175 3225 5475 3525 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3525 4875 3525 4575 3225 4575 3225 4875 3525 4875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3525 4275 3525 3975 3225 3975 3225 4275 3525 4275 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3525 3675 3525 3375 3225 3375 3225 3675 3525 3675 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3525 3075 3525 2775 3225 2775 3225 3075 3525 3075 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3525 2475 3525 2175 3225 2175 3225 2475 3525 2475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3525 1875 3525 1575 3225 1575 3225 1875 3525 1875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3525 1275 3525 975 3225 975 3225 1275 3525 1275 +-6 +6 3825 975 4125 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4125 5475 4125 5175 3825 5175 3825 5475 4125 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4125 4875 4125 4575 3825 4575 3825 4875 4125 4875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4125 4275 4125 3975 3825 3975 3825 4275 4125 4275 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4125 3675 4125 3375 3825 3375 3825 3675 4125 3675 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4125 3075 4125 2775 3825 2775 3825 3075 4125 3075 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4125 2475 4125 2175 3825 2175 3825 2475 4125 2475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4125 1875 4125 1575 3825 1575 3825 1875 4125 1875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4125 1275 4125 975 3825 975 3825 1275 4125 1275 +-6 +6 4425 975 4725 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4725 5475 4725 5175 4425 5175 4425 5475 4725 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4725 4875 4725 4575 4425 4575 4425 4875 4725 4875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4725 4275 4725 3975 4425 3975 4425 4275 4725 4275 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4725 3675 4725 3375 4425 3375 4425 3675 4725 3675 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4725 3075 4725 2775 4425 2775 4425 3075 4725 3075 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4725 2475 4725 2175 4425 2175 4425 2475 4725 2475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4725 1875 4725 1575 4425 1575 4425 1875 4725 1875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4725 1275 4725 975 4425 975 4425 1275 4725 1275 +-6 +6 5025 975 5325 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5325 5475 5325 5175 5025 5175 5025 5475 5325 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5325 4875 5325 4575 5025 4575 5025 4875 5325 4875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5325 4275 5325 3975 5025 3975 5025 4275 5325 4275 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5325 3675 5325 3375 5025 3375 5025 3675 5325 3675 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5325 3075 5325 2775 5025 2775 5025 3075 5325 3075 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5325 2475 5325 2175 5025 2175 5025 2475 5325 2475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5325 1875 5325 1575 5025 1575 5025 1875 5325 1875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5325 1275 5325 975 5025 975 5025 1275 5325 1275 +-6 +6 5625 975 5925 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5925 5475 5925 5175 5625 5175 5625 5475 5925 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5925 4875 5925 4575 5625 4575 5625 4875 5925 4875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5925 4275 5925 3975 5625 3975 5625 4275 5925 4275 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5925 3675 5925 3375 5625 3375 5625 3675 5925 3675 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5925 3075 5925 2775 5625 2775 5625 3075 5925 3075 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5925 2475 5925 2175 5625 2175 5625 2475 5925 2475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5925 1875 5925 1575 5625 1575 5625 1875 5925 1875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5925 1275 5925 975 5625 975 5625 1275 5925 1275 +-6 +6 2625 975 2925 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2925 5475 2925 5175 2625 5175 2625 5475 2925 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2925 4875 2925 4575 2625 4575 2625 4875 2925 4875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2925 4275 2925 3975 2625 3975 2625 4275 2925 4275 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2925 3675 2925 3375 2625 3375 2625 3675 2925 3675 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2925 3075 2925 2775 2625 2775 2625 3075 2925 3075 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2925 2475 2925 2175 2625 2175 2625 2475 2925 2475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2925 1875 2925 1575 2625 1575 2625 1875 2925 1875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2925 1275 2925 975 2625 975 2625 1275 2925 1275 +-6 +-6 +6 2325 5700 2700 6000 +4 0 -1 0 0 0 20 0.0000 4 210 210 2325 5925 D\001 +4 0 -1 0 0 0 16 0.0000 4 165 120 2550 6000 0\001 +-6 +6 4725 5700 5100 6000 +4 0 -1 0 0 0 20 0.0000 4 210 210 4725 5925 D\001 +4 0 -1 0 0 0 16 0.0000 4 165 120 4950 6000 1\001 +-6 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 1875 3825 75 75 1875 3825 1950 3900 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 2775 1725 75 75 2775 1725 2850 1800 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 2475 5025 75 75 2475 5025 2550 5100 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 4875 2025 75 75 4875 2025 4950 2100 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 5475 3825 75 75 5475 3825 5550 3900 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 2475 4425 75 75 2475 4425 2550 4500 +2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 + 3675 3375 3675 5475 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3600 3375 3750 3375 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3600 5475 3750 5475 +2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 + 6000 3300 1350 3300 1350 5550 6000 5550 6000 3300 +2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 + 3000 1500 2550 1500 2550 1950 3000 1950 3000 1500 +2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 + 5400 1500 4350 1500 4350 2550 5400 2550 5400 1500 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2475 4425 2775 1725 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2475 4425 4875 2025 +2 1 0 4 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2475 4425 5475 3825 +2 1 2 4 -1 -1 0 0 -1 6.000 0 0 7 0 0 2 + 2475 4425 2475 5025 +2 1 2 4 -1 -1 0 0 -1 6.000 0 0 7 0 0 2 + 2475 4425 1875 3825 +4 0 -1 0 0 0 20 0.0000 4 210 210 975 4500 D\001 diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/s_f_rub.eps scotch-6.0.6/doc/src/ptscotch/s_f_rub.eps --- scotch-6.0.4.dfsg1/doc/src/ptscotch/s_f_rub.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/s_f_rub.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,507 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: stdin +%%Creator: fig2dev Version 3.2 Patchlevel 3c +%%CreationDate: Wed May 16 15:53:26 2001 +%%For: pelegrin@trol.labri.fr (Francois PELLEGRINI) +%%BoundingBox: 0 0 304 303 +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 303 moveto 0 0 lineto 304 0 lineto 304 303 lineto closepath clip newpath +-53.0 329.0 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +%%Page: 1 1 +10 setmiterlimit + 0.06000 0.06000 sc +% +% Fig objects follow +% +% Polyline +7.500 slw + [15 45] 45 sd +n 1500 600 m + 5700 600 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1500 1200 m + 5700 1200 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1500 2400 m + 5700 2400 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1500 3000 m + 5700 3000 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1500 3600 m + 5700 3600 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1500 1800 m + 5700 1800 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1500 4200 m + 5700 4200 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1500 4800 m + 5700 4800 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1500 600 m + 1500 4800 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2100 600 m + 2100 4800 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2700 600 m + 2700 4800 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3300 600 m + 3300 4800 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3900 600 m + 3900 4800 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4500 600 m + 4500 4800 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5100 600 m + 5100 4800 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5700 600 m + 5700 4800 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1650 4950 m 1650 4650 l 1350 4650 l 1350 4950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1650 4350 m 1650 4050 l 1350 4050 l 1350 4350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1650 3750 m 1650 3450 l 1350 3450 l 1350 3750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1650 3150 m 1650 2850 l 1350 2850 l 1350 3150 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1650 2550 m 1650 2250 l 1350 2250 l 1350 2550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1650 1950 m 1650 1650 l 1350 1650 l 1350 1950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1650 1350 m 1650 1050 l 1350 1050 l 1350 1350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1650 750 m 1650 450 l 1350 450 l 1350 750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2250 4950 m 2250 4650 l 1950 4650 l 1950 4950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2250 4350 m 2250 4050 l 1950 4050 l 1950 4350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2250 3750 m 2250 3450 l 1950 3450 l 1950 3750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2250 3150 m 2250 2850 l 1950 2850 l 1950 3150 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2250 2550 m 2250 2250 l 1950 2250 l 1950 2550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2250 1950 m 2250 1650 l 1950 1650 l 1950 1950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2250 1350 m 2250 1050 l 1950 1050 l 1950 1350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2250 750 m 2250 450 l 1950 450 l 1950 750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3450 4950 m 3450 4650 l 3150 4650 l 3150 4950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3450 4350 m 3450 4050 l 3150 4050 l 3150 4350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3450 3750 m 3450 3450 l 3150 3450 l 3150 3750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3450 3150 m 3450 2850 l 3150 2850 l 3150 3150 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3450 2550 m 3450 2250 l 3150 2250 l 3150 2550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3450 1950 m 3450 1650 l 3150 1650 l 3150 1950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3450 1350 m 3450 1050 l 3150 1050 l 3150 1350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3450 750 m 3450 450 l 3150 450 l 3150 750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4050 4950 m 4050 4650 l 3750 4650 l 3750 4950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4050 4350 m 4050 4050 l 3750 4050 l 3750 4350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4050 3750 m 4050 3450 l 3750 3450 l 3750 3750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4050 3150 m 4050 2850 l 3750 2850 l 3750 3150 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4050 2550 m 4050 2250 l 3750 2250 l 3750 2550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4050 1950 m 4050 1650 l 3750 1650 l 3750 1950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4050 1350 m 4050 1050 l 3750 1050 l 3750 1350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4050 750 m 4050 450 l 3750 450 l 3750 750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4650 4950 m 4650 4650 l 4350 4650 l 4350 4950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4650 4350 m 4650 4050 l 4350 4050 l 4350 4350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4650 3750 m 4650 3450 l 4350 3450 l 4350 3750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4650 3150 m 4650 2850 l 4350 2850 l 4350 3150 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4650 2550 m 4650 2250 l 4350 2250 l 4350 2550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4650 1950 m 4650 1650 l 4350 1650 l 4350 1950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4650 1350 m 4650 1050 l 4350 1050 l 4350 1350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4650 750 m 4650 450 l 4350 450 l 4350 750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5250 4950 m 5250 4650 l 4950 4650 l 4950 4950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5250 4350 m 5250 4050 l 4950 4050 l 4950 4350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5250 3750 m 5250 3450 l 4950 3450 l 4950 3750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5250 3150 m 5250 2850 l 4950 2850 l 4950 3150 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5250 2550 m 5250 2250 l 4950 2250 l 4950 2550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5250 1950 m 5250 1650 l 4950 1650 l 4950 1950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5250 1350 m 5250 1050 l 4950 1050 l 4950 1350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5250 750 m 5250 450 l 4950 450 l 4950 750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5850 4950 m 5850 4650 l 5550 4650 l 5550 4950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5850 4350 m 5850 4050 l 5550 4050 l 5550 4350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5850 3750 m 5850 3450 l 5550 3450 l 5550 3750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5850 3150 m 5850 2850 l 5550 2850 l 5550 3150 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5850 2550 m 5850 2250 l 5550 2250 l 5550 2550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5850 1950 m 5850 1650 l 5550 1650 l 5550 1950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5850 1350 m 5850 1050 l 5550 1050 l 5550 1350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5850 750 m 5850 450 l 5550 450 l 5550 750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2850 4950 m 2850 4650 l 2550 4650 l 2550 4950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2850 4350 m 2850 4050 l 2550 4050 l 2550 4350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2850 3750 m 2850 3450 l 2550 3450 l 2550 3750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2850 3150 m 2850 2850 l 2550 2850 l 2550 3150 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2850 2550 m 2850 2250 l 2550 2250 l 2550 2550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2850 1950 m 2850 1650 l 2550 1650 l 2550 1950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2850 1350 m 2850 1050 l 2550 1050 l 2550 1350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2850 750 m 2850 450 l 2550 450 l 2550 750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +/Times-Roman ff 300.00 scf sf +2250 5400 m +gs 1 -1 sc (D) col-1 sh gr +/Times-Roman ff 240.00 scf sf +2475 5475 m +gs 1 -1 sc (0) col-1 sh gr +/Times-Roman ff 300.00 scf sf +4650 5400 m +gs 1 -1 sc (D) col-1 sh gr +/Times-Roman ff 240.00 scf sf +4875 5475 m +gs 1 -1 sc (1) col-1 sh gr +% Ellipse +n 1800 3300 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 2700 1200 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 2400 4500 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 4800 1500 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 5400 3300 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 4800 3900 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Polyline +15.000 slw + [90] 0 sd +n 3600 2850 m + 3600 4950 l gs col-1 s gr [] 0 sd +% Polyline +n 3525 2850 m + 3675 2850 l gs col-1 s gr +% Polyline +n 3525 4950 m + 3675 4950 l gs col-1 s gr +% Polyline +n 1380 2775 m 1275 2775 1275 4920 105 arcto 4 {pop} repeat + 1275 5025 5820 5025 105 arcto 4 {pop} repeat + 5925 5025 5925 2880 105 arcto 4 {pop} repeat + 5925 2775 1380 2775 105 arcto 4 {pop} repeat + cp gs col-1 s gr +% Polyline +n 2580 975 m 2475 975 2475 1320 105 arcto 4 {pop} repeat + 2475 1425 2820 1425 105 arcto 4 {pop} repeat + 2925 1425 2925 1080 105 arcto 4 {pop} repeat + 2925 975 2580 975 105 arcto 4 {pop} repeat + cp gs col-1 s gr +% Polyline +n 4380 975 m 4275 975 4275 1920 105 arcto 4 {pop} repeat + 4275 2025 5220 2025 105 arcto 4 {pop} repeat + 5325 2025 5325 1080 105 arcto 4 {pop} repeat + 5325 975 4380 975 105 arcto 4 {pop} repeat + cp gs col-1 s gr +% Polyline +n 4800 3900 m + 2700 1200 l gs col-1 s gr +% Polyline +n 4800 3900 m + 4800 1500 l gs col-1 s gr +% Polyline +45.000 slw +n 4800 3900 m + 1800 3300 l gs col-1 s gr +% Polyline +n 4800 3900 m + 2400 4500 l gs col-1 s gr +% Polyline + [15 90] 90 sd +n 4800 3900 m + 5400 3300 l gs col-1 s gr [] 0 sd +/Times-Roman ff 300.00 scf sf +900 3975 m +gs 1 -1 sc (D) col-1 sh gr +$F2psEnd +rs diff -Nru scotch-6.0.4.dfsg1/doc/src/ptscotch/s_f_rub.fig scotch-6.0.6/doc/src/ptscotch/s_f_rub.fig --- scotch-6.0.4.dfsg1/doc/src/ptscotch/s_f_rub.fig 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/ptscotch/s_f_rub.fig 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,228 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +0 +1200 2 +6 900 450 6000 5475 +6 1350 450 5850 4950 +6 1500 600 5700 4800 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 600 5700 600 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 1200 5700 1200 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 2400 5700 2400 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 3000 5700 3000 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 3600 5700 3600 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 1800 5700 1800 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 4200 5700 4200 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 4800 5700 4800 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 600 1500 4800 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 2100 600 2100 4800 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 2700 600 2700 4800 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 3300 600 3300 4800 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 3900 600 3900 4800 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 4500 600 4500 4800 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 5100 600 5100 4800 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 5700 600 5700 4800 +-6 +6 1350 450 1650 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1650 4950 1650 4650 1350 4650 1350 4950 1650 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1650 4350 1650 4050 1350 4050 1350 4350 1650 4350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1650 3750 1650 3450 1350 3450 1350 3750 1650 3750 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1650 3150 1650 2850 1350 2850 1350 3150 1650 3150 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1650 2550 1650 2250 1350 2250 1350 2550 1650 2550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1650 1950 1650 1650 1350 1650 1350 1950 1650 1950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1650 1350 1650 1050 1350 1050 1350 1350 1650 1350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1650 750 1650 450 1350 450 1350 750 1650 750 +-6 +6 1950 450 2250 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2250 4950 2250 4650 1950 4650 1950 4950 2250 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2250 4350 2250 4050 1950 4050 1950 4350 2250 4350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2250 3750 2250 3450 1950 3450 1950 3750 2250 3750 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2250 3150 2250 2850 1950 2850 1950 3150 2250 3150 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2250 2550 2250 2250 1950 2250 1950 2550 2250 2550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2250 1950 2250 1650 1950 1650 1950 1950 2250 1950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2250 1350 2250 1050 1950 1050 1950 1350 2250 1350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2250 750 2250 450 1950 450 1950 750 2250 750 +-6 +6 3150 450 3450 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3450 4950 3450 4650 3150 4650 3150 4950 3450 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3450 4350 3450 4050 3150 4050 3150 4350 3450 4350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3450 3750 3450 3450 3150 3450 3150 3750 3450 3750 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3450 3150 3450 2850 3150 2850 3150 3150 3450 3150 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3450 2550 3450 2250 3150 2250 3150 2550 3450 2550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3450 1950 3450 1650 3150 1650 3150 1950 3450 1950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3450 1350 3450 1050 3150 1050 3150 1350 3450 1350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3450 750 3450 450 3150 450 3150 750 3450 750 +-6 +6 3750 450 4050 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4050 4950 4050 4650 3750 4650 3750 4950 4050 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4050 4350 4050 4050 3750 4050 3750 4350 4050 4350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4050 3750 4050 3450 3750 3450 3750 3750 4050 3750 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4050 3150 4050 2850 3750 2850 3750 3150 4050 3150 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4050 2550 4050 2250 3750 2250 3750 2550 4050 2550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4050 1950 4050 1650 3750 1650 3750 1950 4050 1950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4050 1350 4050 1050 3750 1050 3750 1350 4050 1350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4050 750 4050 450 3750 450 3750 750 4050 750 +-6 +6 4350 450 4650 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4650 4950 4650 4650 4350 4650 4350 4950 4650 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4650 4350 4650 4050 4350 4050 4350 4350 4650 4350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4650 3750 4650 3450 4350 3450 4350 3750 4650 3750 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4650 3150 4650 2850 4350 2850 4350 3150 4650 3150 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4650 2550 4650 2250 4350 2250 4350 2550 4650 2550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4650 1950 4650 1650 4350 1650 4350 1950 4650 1950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4650 1350 4650 1050 4350 1050 4350 1350 4650 1350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4650 750 4650 450 4350 450 4350 750 4650 750 +-6 +6 4950 450 5250 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5250 4950 5250 4650 4950 4650 4950 4950 5250 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5250 4350 5250 4050 4950 4050 4950 4350 5250 4350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5250 3750 5250 3450 4950 3450 4950 3750 5250 3750 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5250 3150 5250 2850 4950 2850 4950 3150 5250 3150 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5250 2550 5250 2250 4950 2250 4950 2550 5250 2550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5250 1950 5250 1650 4950 1650 4950 1950 5250 1950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5250 1350 5250 1050 4950 1050 4950 1350 5250 1350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5250 750 5250 450 4950 450 4950 750 5250 750 +-6 +6 5550 450 5850 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5850 4950 5850 4650 5550 4650 5550 4950 5850 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5850 4350 5850 4050 5550 4050 5550 4350 5850 4350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5850 3750 5850 3450 5550 3450 5550 3750 5850 3750 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5850 3150 5850 2850 5550 2850 5550 3150 5850 3150 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5850 2550 5850 2250 5550 2250 5550 2550 5850 2550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5850 1950 5850 1650 5550 1650 5550 1950 5850 1950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5850 1350 5850 1050 5550 1050 5550 1350 5850 1350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5850 750 5850 450 5550 450 5550 750 5850 750 +-6 +6 2550 450 2850 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2850 4950 2850 4650 2550 4650 2550 4950 2850 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2850 4350 2850 4050 2550 4050 2550 4350 2850 4350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2850 3750 2850 3450 2550 3450 2550 3750 2850 3750 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2850 3150 2850 2850 2550 2850 2550 3150 2850 3150 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2850 2550 2850 2250 2550 2250 2550 2550 2850 2550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2850 1950 2850 1650 2550 1650 2550 1950 2850 1950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2850 1350 2850 1050 2550 1050 2550 1350 2850 1350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2850 750 2850 450 2550 450 2550 750 2850 750 +-6 +-6 +6 2250 5175 2625 5475 +4 0 -1 0 0 0 20 0.0000 4 210 210 2250 5400 D\001 +4 0 -1 0 0 0 16 0.0000 4 165 120 2475 5475 0\001 +-6 +6 4650 5175 5025 5475 +4 0 -1 0 0 0 20 0.0000 4 210 210 4650 5400 D\001 +4 0 -1 0 0 0 16 0.0000 4 165 120 4875 5475 1\001 +-6 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 1800 3300 75 75 1800 3300 1875 3375 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 2700 1200 75 75 2700 1200 2775 1275 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 2400 4500 75 75 2400 4500 2475 4575 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 4800 1500 75 75 4800 1500 4875 1575 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 5400 3300 75 75 5400 3300 5475 3375 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 4800 3900 75 75 4800 3900 4875 3975 +2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 + 3600 2850 3600 4950 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3525 2850 3675 2850 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3525 4950 3675 4950 +2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 + 5925 2775 1275 2775 1275 5025 5925 5025 5925 2775 +2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 + 2925 975 2475 975 2475 1425 2925 1425 2925 975 +2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 + 5325 975 4275 975 4275 2025 5325 2025 5325 975 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4800 3900 2700 1200 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4800 3900 4800 1500 +2 1 0 4 -1 -1 0 0 -1 0.000 0 0 7 0 0 2 + 4800 3900 1800 3300 +2 1 0 4 -1 -1 0 0 -1 0.000 0 0 7 0 0 2 + 4800 3900 2400 4500 +2 1 2 4 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 + 4800 3900 5400 3300 +4 0 -1 0 0 0 20 0.0000 4 210 210 900 3975 D\001 +-6 diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/epsf.sty scotch-6.0.6/doc/src/scotch/epsf.sty --- scotch-6.0.4.dfsg1/doc/src/scotch/epsf.sty 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/epsf.sty 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,375 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\typeout{Document Style Option `epsf' (October 17 90)}% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% Inclusion of EPSF documents into [Oz]TeX documents. +%% Michel Mauny - April 25 90. +%% Emmanuel Chailloux - October 17 90 +%% History: +% --------- +%% April 11 91 +%% Fixed several bugs [mauny] +%% * Now accepts lines as %%BoundingBox:100 200 102 23 +%% without space here ^ +%% * Added a \leavevmode for \epfs{} to be accepted as single +%% element of a \begin{center} ... \end{center} +%% * Extracted calls to \newdimen for them to be global +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% TeX does itself the recognition of the Bounding Box of the drawing. +%% The macro is: +%% +%% \epsf{filename} +%% [xscale=/,yscale=/] <- optional +%% or (hsize=,vsize=)in pt +%% [ps=] <- optional +%% +%% Order of parameters is important, and the 3rd cannot be used without the +%% 2nd. +%% +%% A null hsize indicates the hsize scaled by the vsize scaling. +%% A null vsize indicates the vsize scaled by the hsize scaling. +%% A double null is the unit. +%% +%% This is not the first package to do that sort of things, but that one +%% reads by itself the size of drawings, and is thus really trivial to use. +%% +%% This package may be extended in two ways: +%% * usage of different versions of TeX (dvi2ps) (simple, but not trivial) +%% * usage of different EPSF files types (tested only with FreeHand 2.0) +%% should be trivial... +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% How to use this package? +%% Two things to do: +%% +%% 1. Create an EPSF file +%% Use FreeHand or any program capable of creating such files from +%% drawings or whatever. +%% Use the `Export' menu item (or anything equivalent), creating +%% the file (say) draw.eps +%% +%% 2. In your [La]TeX document, place the following command where you +%% want your drawing to appear: +%% \epsf{draw.eps} +%% And your drawing will be at that place, in a TeX box. +%% You don't have to leave extra place for your drawing: +%% it will be in a TeX box. +%% +%% Z If you want to specify a scaling (say 33.33333 %) then use the +%% optional argument: +%% \epsf{draw.eps}[xscale=2/3,yscale=2/3] +%% Scalings may be negative, but must be specified with the form: +%% /. +%% IMPORTANT: try to use small numbers, otherwise you risk to get +%% a TeX internal registers overflow. +%% +%% Z if you prefer to specify the vsize of you picture then use the +%% optional argument : +%% \epsf{draw.ps}(hsize=200,vsize=300) +%% Dimensions are given in points with the TeX convension : +%% 1in or 72pt. +%% +%% ZZ For real hackers only: if you want to add some PostScript to your +%% drawing (indeed at its beginning), then use the second optional +%% argument: +%% \epsf{draw.eps}[xscale=1/1,yscale=1/1][ps=] +%% The second argument must be specified in order to use the +%% second one (if you are tired to do that, make a new macro with +%% your default scaling. +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% \DVITOPS indicates the default TeX. +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\oztex{OzTeX}% +\def\dvips{dvips}% +\def\dvitops{dvitops}% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% Provide the appropriate value to \DVITOPS before installation. +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%\let\DVITOPS=\dvitops% +\let\DVITOPS=\dvips% +%%\let\DVITOPS=\oztex% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% Debugging options. +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\yes={yes}% +\def\no={no}% +\let\DEBUGepsf=\yes% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% \@doTeXspecial has to be extended in order to work +%% with other VI2PS programs +%% OzTeX produces \special{ } +%% and we produce - - translate +%% scale +%% %%%% Added by ... (PostScript comment) +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +{% +% #1 = filename +% #2 = xmin, #3 = ymin +% #4 = xmax, #5 = ymax +% #6 = hscale, #7 = vscale +% #8 = user postcript +% \ifx\DEBUGepsf\yes +% \typeout{doTexSpecial #1 #2 #3 #4 #5 #6 #7 #8} +% \fi +%%%% Added by \DVITOPS\space PostScript inclusion (epsf.sty) +% +%\advance\@pshoffset by -3pt +%\catcode`\%=11 +\newdimen\@pshscale\newdimen\@psvscale\newdimen\@pshoffset\newdimen\@psvoffset +\gdef\@doTeXspecial#1#2#3#4#5#6#7#8{% +\ifx\DVITOPS\oztex% +\special{#1\space#6\space#7\space scale\space-#2\space-#3\space translate\space#8\space}% +\else% +\ifx\DVITOPS\dvips% +\@pshscale=#6pt\@psvscale=#7pt +%%% Some dvips require a percentage. In this case, comment out the next line +\multiply\@pshscale by 100\multiply\@psvscale by 100% +\@pshoffset=-#6pt\multiply\@pshoffset by #2 +%\advance\@pshoffset by -1pt% +\@psvoffset=-#7pt\multiply\@psvoffset by #3% +\special{psfile="#1"\space% +vscale=\expandafter\@numbof\the\@psvscale\space% +hoffset=\expandafter\@numbof\the\@pshoffset\space% +voffset=\expandafter\@numbof\the\@psvoffset\space% +hscale=\expandafter\@numbof\the\@pshscale\space}% +\else% +\ifx\DVITOPS\dvitops% +\@pshscale=#6pt% +\@psvscale=#7pt% +\@pshoffset=-#6pt\multiply\@pshoffset by #2% +\@psvoffset=-#7pt\multiply\@psvoffset by #3% +\special{psfile="#1"\space% +hoffset=\expandafter\@numbof\the\@pshoffset\space% +voffset=\expandafter\@numbof\the\@psvoffset\space% +hscale=\expandafter\@numbof\the\@pshscale\space% +vscale=\expandafter\@numbof\the\@psvscale}% +\else% +\let\DVITOPS=\dvitops% +\@doTeXspecial{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}% +\fi% +\fi% +\fi% +}% +}% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% +%% Following definitions should not be changed (except bug fixes) +%% +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Will change the catcodes of % when `parsing' header of EPS file +% The ``:'' character will be parsed as a space (catcode = 10) +\def\@setdrawingsyntax{\catcode`\%=11\catcode`\:=10\catcode`\!=11}% +% +% Need some counters and an input channel +\newread\@drawingchannel% +\newcount\@drawhsize% +\newcount\@drawvsize% +\newdimen\@xscale% +\newdimen\@yscale% +\newdimen\@vsize% +\newdimen\@hsize% +\newcount\@newvsize% +\newcount\@newhsize% +\newcount\@ovsize% +\newcount\@ohsize% +% +% +% \@scale at will multiply by +% must be / (big numbers may produce overflows) +\def\@scale#1at#2/#3{\divide#1 by #3\multiply#1 by #2}% +% +% +{\catcode`\.=12\catcode`\p=12\catcode`\t=12\gdef\@dimentocount#1.#2pt{#1}}% +% +{\catcode`\p=12\catcode`\t=12\gdef\@numbof#1pt{#1}}% +% \@drawingscale{p1}{q1}{p1}{q2} => xscale:=p1/q1, yscale:=p2/q2 +\def\@scale#1at#2/#3{\divide#1 by #3\multiply#1 by #2}% +\def\@drawingscale#1#2#3#4{% +\@xscale=#1pt% +\divide\@xscale by #2% +\@yscale=#3pt\divide\@yscale by #4% +}% +% +% \firstitem to => arg1:=car(arg2); arg2:=cdr(arg2) +\def\firstitem#1to#2{\expandafter\makeseq#1\makeseq#1#2}% +\long\def\makeseq#1 #2\makeseq#3#4{\gdef#4{#1}\gdef#3{#2}}% +%% +%% The user function +%% \epsf{}[xscale=p1/q1,yscale=p2/q2][ps=] +%% or \epsf{}(hsize=w,vsize=h)[ps=] +%% Two optional arguments. If second is needed, then the first one must be +%% present. +%% +\def\epsf#1{\leavevmode% Must leave vertical mode in order to execute \everypar +\@ifnextchar[{\s@epsf{#1}}% +{\@ifnextchar({\h@epsf{#1}}% +{\s@epsf{#1}[xscale=1/1,yscale=1/1]}}}% +%% +\def\s@epsf#1[xscale=#2/#3,yscale=#4/#5]{% +\@ifnextchar[{\scale@epsf{#1}[xscale={#2}/{#3},yscale={#4}/{#5}]}% +{\scale@epsf{#1}[xscale={#2}/{#3},yscale={#4}/{#5}][ps=\space]}}% +% +% More arguments to come? +\def\h@epsf#1(hsize=#2,vsize=#3){% +\@ifnextchar[{\dimen@epsf{#1}(hsize={#2},vsize={#3})}% +{\dimen@epsf{#1}(hsize={#2},vsize={#3})[ps=\space]}}% +% +% The main function (not user acessible) +% +%% Used to check wether we found the box or not +\newif\ifnosize +\begingroup +%%% Warning: comment character is & (and no more %) +\@setdrawingsyntax\catcode`\&=14 +&& +&& What we will be looking for (`pt' is the supposed unit) +\gdef\BoundingBox{%%BoundingBox}& +&& +&& +\gdef\read@epsf#1{& +&& We accept PostScript and scales as optional parameters +\bgroup\@setdrawingsyntax +&& Change the code of % +\typeout{Opening #1}& && Verbose! +\openin\@drawingchannel=#1 +\ifeof\@drawingchannel\closein\@drawingchannel&& +\typeout{LaTeX warning: can't open #1.}& && If no file, then ask the user +\typeout{Size of the drawing? }& && the size of its drawing. + \gdef\@minX{0}\gdef\@minY{0}& && + \gdef\@maxX{596}\gdef\@maxY{846}& +& \message{X (in pts): }& +& \read-1 to\mX\global\edef\@maxX{\mX}& +& \message{Y (in pts): }& +& \read-1 to\mY\global\edef\@maxY{\mY}& +\else && Otherwise: + \read\@drawingchannel to\@drsize& Skipping first line (%!PS-Adobe...) + \loop && repeat "get one line" + \read\@drawingchannel to\@drsize& +\typeout{\space\space\space\space \@drsize}&& echo it to the terminal + \firstitem\@drsize to\BBox& + \ifx\BBox\BoundingBox& && First word =? Bounding Box + \nosizefalse& + \firstitem\@drsize to\@minX&& If yes, then get the informations + \firstitem\@drsize to\@minY&& i.e. minX, minY, maxX and maxY + \firstitem\@drsize to\@maxX&& in that order + \firstitem\@drsize to\@maxY&& + \else\nosizetrue&& + \fi + \ifnosize\relax\repeat&& && If no, then get one more line, etc. +\typeout{Closing}& && Verbose! + \closein\@drawingchannel&& +\fi +\egroup +} +&& +\gdef\scale@epsf#1[xscale=#2/#3,yscale=#4/#5][ps=#6]{& +\read@epsf{#1}& +\common@epsf{#1}[xscale=#2/#3,yscale=#4/#5][ps=#6]& +} +& +& +\gdef\dimen@epsf#1(hsize=#2,vsize=#3)[ps=#4]{& +\read@epsf{#1}& +\@newvsize=#3& +\@newhsize=#2& +&& +&& Computing vsize& +\@drawvsize=\@maxY& +\advance\@drawvsize by-\@minY& +\ifnum\@newvsize=0& if newvsize=0 +\ifnum\@newhsize=0& if newhsize=0 +\common@epsf{#1}[xscale=1/1,yscale=1/1][ps=#4]& +\else& else +&& Computing hsize +\@drawhsize=\@maxX& +\advance\@drawhsize by-\@minX& +&&\ifnum\@newhsize=0& +\@ohsize=\@drawhsize& +\divide\@drawhsize by\@ohsize& +\multiply\@drawhsize by\@newhsize& +\multiply\@drawvsize by\@newhsize& +\divide\@drawvsize by\@ohsize& +\@drawingscale{\the\@newhsize}{\@ohsize} +{\the\@newhsize}{\@ohsize}& +\fi& fi +\else& else +\@ovsize=\@drawvsize& +\divide\@drawvsize by\@ovsize& +\multiply\@drawvsize by\@newvsize& +&& +&& Computing hsize +\@newhsize=#2& +\@drawhsize=\@maxX& +\advance\@drawhsize by-\@minX& +\ifnum\@newhsize=0& if newhsize=0 +\multiply\@drawhsize by\@newvsize& +\divide\@drawhsize by\@ovsize& +\@drawingscale{\the\@newvsize}{\@ovsize} +{\the\@newvsize}{\@ovsize}& +\else& else +\@ohsize=\@drawhsize& +\divide\@drawhsize by\@ohsize& +\multiply\@drawhsize by\@newhsize& +\@drawingscale{\the\@newhsize}{\@ohsize} +{\the\@newvsize}{\@ovsize}& +\fi& fi +\fi& fi +&& Infos to the terminal. +\typeout{Drawing #1:}& +\typeout{\space\space\space Width=\the\@drawhsize pt Heigth=\the\@drawvsize pt}& +&& +&& +&\@newhsize=\@drawhsize\multiply\@newhsize by \@xscale +&\@newvsize=\@drawvsize\multiply\@newvsize by \@yscale +\typeout{\space\space\space Scalings: X=\the\@xscale\space Y=\the\@yscale}& +&\fbox{& +\vbox to\@drawvsize pt{\vfill\hbox to\@drawhsize pt{& +{{\@doTeXspecial{#1}\@minX\@minY\@maxX\@maxY& + {\expandafter\@numbof\the\@xscale}& + {\expandafter\@numbof\the\@yscale}& + {#4}}& +&\hfill& +}}}}& +&}& +& +& +\gdef\common@epsf#1[xscale=#2/#3,yscale=#4/#5][ps=#6]{& +&& Computing hsize +\@drawhsize=\@maxX& +\advance\@drawhsize by-\@minX& +\@scale\@drawhsize at #2/#3& +&& Computing vsize +\@drawvsize=\@maxY& +\advance\@drawvsize by-\@minY& +\@scale\@drawvsize at #4/#5& +&& Infos to the terminal. +\typeout{Drawing #1:}& +\typeout{\space\space\space Width \the\@drawhsize pt=(\@maxX -\@minX)*(#2/#3)Heigth \the\@drawvsize pt=(\@maxY -\@minY)*(#4/#5)}& +&& +&\typeout{*********** #2 #3 #4 #5}& +\@drawingscale{#2}{#3}{#4}{#5}& +\typeout{\space\space\space Scalings: X=\the\@xscale\space Y=\the\@yscale}& +&& +&\fbox{& +\vbox to\@drawvsize pt{\vfill\hbox to\@drawhsize pt{& +{{\@doTeXspecial{#1}\@minX\@minY\@maxX\@maxY& + {\expandafter\@numbof\the\@xscale}& + {\expandafter\@numbof\the\@yscale}& + {#6}}& +&\hfill& +}}}& +&}& +} +\endgroup diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/fullpage.sty scotch-6.0.6/doc/src/scotch/fullpage.sty --- scotch-6.0.4.dfsg1/doc/src/scotch/fullpage.sty 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/fullpage.sty 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,29 @@ +% This is FULLPAGE.STY by H.Partl, Version 2 as of 15 Dec 1988. +% Document Style Option to fill the paper just like Plain TeX. + +\typeout{Style Option FULLPAGE Version 2 as of 15 Dec 1988} + +\topmargin 0pt +\advance \topmargin by -\headheight +\advance \topmargin by -\headsep + +\textheight 8.9in + +\oddsidemargin 0pt +\evensidemargin \oddsidemargin +\marginparwidth 0.5in + +\textwidth 6.5in + + +% For users of A4 paper: The above values are suited for american 8.5x11in +% paper. If your output driver performs a conversion for A4 paper, keep +% those values. If your output driver conforms to the TeX standard (1in/1in), +% then you should add the following commands to center the text on A4 paper: + +% \advance\hoffset by -3mm % A4 is narrower. +% \advance\voffset by 8mm % A4 is taller. + +\endinput + + diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/m42_a1.eps scotch-6.0.6/doc/src/scotch/m42_a1.eps --- scotch-6.0.4.dfsg1/doc/src/scotch/m42_a1.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/m42_a1.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,175 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: m42_a1.fig +%%Creator: fig2dev Version 3.2 Patchlevel 5d +%%CreationDate: Wed Mar 18 11:58:08 2015 +%%For: pelegrin@brol (Francois PELLEGRINI) +%%BoundingBox: 0 0 290 146 +%Magnification: 1.0000 +%%EndComments +%%BeginProlog +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +/pageheader { +save +newpath 0 146 moveto 0 0 lineto 290 0 lineto 290 146 lineto closepath clip newpath +-107.3 180.7 translate +1 -1 scale +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +} bind def +/pagefooter { +$F2psEnd +restore +} bind def +%%EndProlog +pageheader +% +% Fig objects follow +% +% +% here starts figure with depth 50 +% Ellipse +7.500 slw +n 2400 1200 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 3600 1200 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 2400 2400 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 3600 2400 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 4800 2400 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 4800 1200 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 6000 1200 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 6000 2400 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr + +% Polyline +0 slj +0 slc +n 3600 1200 m + 3600 2400 l gs col0 s gr +% Polyline +n 4800 1200 m + 4800 2400 l gs col0 s gr +% Polyline +n 2400 1200 m 6000 1200 l 6000 2400 l 2400 2400 l + cp gs col0 s gr +% Polyline +n 1800 600 m 6600 600 l 6600 3000 l 1800 3000 l + cp gs col7 s gr +/Times-Roman ff 266.67 scf sf +2325 1050 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 266.67 scf sf +3525 1050 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 266.67 scf sf +2325 2775 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 266.67 scf sf +3525 2775 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 266.67 scf sf +5925 2775 m +gs 1 -1 sc (4) col0 sh gr +% here ends figure; +pagefooter +showpage +%%Trailer +%EOF diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/m42_a1.fig scotch-6.0.6/doc/src/scotch/m42_a1.fig --- scotch-6.0.4.dfsg1/doc/src/scotch/m42_a1.fig 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/m42_a1.fig 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,30 @@ +#FIG 3.2 Produced by xfig version 3.2.5b +Landscape +Center +Inches +Letter +100.00 +Single +-2 +1200 2 +1 3 0 1 -1 -1 50 -1 20 0.000 1 0.0000 2400 1200 75 75 2400 1200 2475 1200 +1 3 0 1 -1 -1 50 -1 20 0.000 1 0.0000 3600 1200 75 75 3600 1200 3675 1200 +1 3 0 1 -1 -1 50 -1 20 0.000 1 0.0000 2400 2400 75 75 2400 2400 2475 2400 +1 3 0 1 -1 -1 50 -1 20 0.000 1 0.0000 3600 2400 75 75 3600 2400 3675 2400 +1 3 0 1 -1 -1 50 -1 20 0.000 1 0.0000 4800 2400 75 75 4800 2400 4875 2400 +1 3 0 1 -1 -1 50 -1 20 0.000 1 0.0000 4800 1200 75 75 4800 1200 4875 1200 +1 3 0 1 -1 -1 50 -1 20 0.000 1 0.0000 6000 1200 75 75 6000 1200 6075 1200 +1 3 0 1 -1 -1 50 -1 20 0.000 1 0.0000 6000 2400 75 75 6000 2400 6075 2400 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 3600 1200 3600 2400 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4800 1200 4800 2400 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 2400 1200 6000 1200 6000 2400 2400 2400 2400 1200 +2 2 0 1 7 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 1800 600 6600 600 6600 3000 1800 3000 1800 600 +4 0 0 50 -1 0 16 0.0000 4 195 135 2325 1050 0\001 +4 0 0 50 -1 0 16 0.0000 4 195 135 3525 1050 2\001 +4 0 0 50 -1 0 16 0.0000 4 195 135 2325 2775 1\001 +4 0 0 50 -1 0 16 0.0000 4 195 135 3525 2775 3\001 +4 0 0 50 -1 0 16 0.0000 4 195 135 5925 2775 4\001 Binary files /tmp/tmpp961_B/2VrPdjj9Sm/scotch-6.0.4.dfsg1/doc/src/scotch/m42_a1.pdf and /tmp/tmpp961_B/UYzcEkJWzG/scotch-6.0.6/doc/src/scotch/m42_a1.pdf differ diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/Makefile scotch-6.0.6/doc/src/scotch/Makefile --- scotch-6.0.4.dfsg1/doc/src/scotch/Makefile 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/Makefile 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,74 @@ +## Copyright 2018 IPB, Universite de Bordeaux, INRIA & CNRS +## +## This file is part of the Scotch software package for static mapping, +## graph partitioning and sparse matrix ordering. +## +## This software is governed by the CeCILL-C license under French law +## and abiding by the rules of distribution of free software. You can +## use, modify and/or redistribute the software under the terms of the +## CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +## URL: "http://www.cecill.info". +## +## As a counterpart to the access to the source code and rights to copy, +## modify and redistribute granted by the license, users are provided +## only with a limited warranty and the software's author, the holder of +## the economic rights, and the successive licensors have only limited +## liability. +## +## In this respect, the user's attention is drawn to the risks associated +## with loading, using, modifying and/or developing or reproducing the +## software by the user in light of its specific status of free software, +## that may mean that it is complicated to manipulate, and that also +## therefore means that it is reserved for developers and experienced +## professionals having in-depth computer knowledge. Users are therefore +## encouraged to load and test the software's suitability as regards +## their requirements in conditions enabling the security of their +## systems and/or data to be ensured and, more generally, to use and +## operate it in the same conditions as regards security. +## +## The fact that you are presently reading this means that you have had +## knowledge of the CeCILL-C license and that you accept its terms. +## + +DOCUMENT = scotch_user6.0 + +FLAGS = -sPAPERSIZE=a4 + +DEPS = $(wildcard *.tex) $(wildcard *.eps) + +MANS = $(DOCUMENT).ps.gz $(DOCUMENT).pdf + +CP = cp -f +RM = rm -f + +.PHONY : clean default install realclean + +%.eps : %.fig + fig2dev -L eps $(<) + +default : $(MANS) + +s.dvi : s.tex $(DEPS) + latex s + bibtex s + latex s + latex s + +s.ps : s.dvi + dvips $(FLAGS) $(<) + +$(DOCUMENT).pdf : s.dvi + dvipdf $(FLAGS) $(<) $(@) + +$(DOCUMENT).ps.gz : s.ps + gzip -9 -c < $(<) > $(@) + +install : $(MANS) + -$(CP) $(DOCUMENT).ps.gz ../../ + -$(CP) $(DOCUMENT).pdf ../../ + +clean : + -$(RM) *~ s.aux s.blg s.log s.toc + +realclean : clean + -$(RM) *~ s.bbl s.dvi s.ps $(MANS) diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/m_i.tex scotch-6.0.6/doc/src/scotch/m_i.tex --- scotch-6.0.4.dfsg1/doc/src/scotch/m_i.tex 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/m_i.tex 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,20 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Titre : s_i.tex % +% Sujet : Manuel de maintenance % +% du projet 'Scotch' % +% Introduction % +% Auteur : Francois Pellegrini % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Introduction} + +This document is a starting point for the persons interested in using +\scotch\ as a testbed for their new partitioning methods, and/or +willing to contribute to it by making these methods available to the +rest of the scientific community. + +Much information is missing. If you need specific information, please +send an e-mail, so that relevant additional information can be added +to this document. diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/m_m.tex scotch-6.0.6/doc/src/scotch/m_m.tex --- scotch-6.0.4.dfsg1/doc/src/scotch/m_m.tex 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/m_m.tex 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,185 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Titre : m_m.tex % +% Sujet : Manuel de maintenance % +% du projet 'Scotch' % +% Ajout d'une methode % +% Auteur : Francois Pellegrini % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Adding a method to the \libscotch\ library} +\label{sec-method} + +The \libscotch\ has been carefully designed so as to allow external +contributors to add their new partitioning or ordering methods, and +to use \scotch\ as a testbed for them. + +\subsection{What to add} + +There are currently six types of methods which can be added: +\begin{itemize} +\item +k-way graph mapping methods, in module {\tt kgraph}, +\item +graph bipartitioning methods by means of edge separators, in module +{\tt bgraph}, used by the mapping method by dual recursive +bipartitioning, implemented in {\tt kgraph\_\lbt map\_\lbt rb.[ch]}, +\item +graph ordering methods, in module {\tt vmesh}, +\item +graph separation methods by means of vertex separators, in module +{\tt vgraph}, used by the nested dissection ordering method +implemented in {\tt hgraph\_\lbt order\_\lbt nd.[ch]}, +\item +mesh separation methods with node separators, in module +{\tt vmesh}, +\item +mesh separation methods with vertex separators, in module +{\tt vmesh}, used by the nested dissection ordering method +implemented in {\tt hmesh\_\lbt order\_\lbt nd.[ch]}. +\end{itemize} +Every method of these six types operates on instances of augmented +graph structures that contain, in addition to the graph topology, +data related to the current state of the partition or of the +ordering. For instance, all of the graph bipartitioning methods +operate on an instance of a {\tt Bgraph}, defined in {\tt bgraph.h}, +and which contains fields such as {\tt compload0}, the current load +sum of the vertices assigned to the first part, {\tt commload}, the +load sum of the cut edges, etc. + +In order to understand better the meaning of each of the fields +used by some augmented graph or mesh structure, contributors can read +the code of the consistency checking routines, located in files ending +in {\tt \_check.c}\enspace, such as {\tt bgraph\_check.c} for a +{\tt Bgraph} structure. These routines are regularly called during the +execution of the debug version of \scotch\ to ease bug tracking. They +are time-consuming but proved very helpful in the development and +testing of new methods. + +\subsection{Where to add} + +Let us assume that you want to code a new graph separation +routine. Your routine will operate on a {\tt Vgraph} structure, and +thus will be stored in files called {\tt vgraph\_\lbt separate\_ +xy\lbt .[ch]}, where {\tt xy} is a two-letter reminder of the name +of your algorithm. Look into the \libscotch\ source directory for +already used codenames, and pick a free one. +In case you have more that one single source file, use extended names, +such as {\tt vgraph\_\lbt separate\_\lbt xy\_\lbt subname\lbt +.[ch]}\enspace . + +In order to ease your coding, copy the files of a simple and already +existing method and use them as a pattern for the interface of your +new method. Some methods have an optional parameter data structure, +others do not. Browse through all existing methods to find the one +that looks closest to what you want. + +Some methods can be passed parameters at run time from the strategy +string parser. These parameters can be of fixed types only. These +types are: +\begin{itemize} +\item +an integer ({\tt int}) type, +\item +an floating-point ({\tt double}) type, +\item +an enumerated ({\tt char}) type : this type is used to make a +choice among a list of single character values, such as ``{\tt +yn}''. It is more readable than giving integer numerical values to +method option flags, +\item +a strategy (\scotch\ {\tt Strat} type) : a method can be passed a +sub-strategy of a given type, which can be run on an augmented graph +of the proper type. For instance, the nested dissection method in {\tt +hgraph\_\lbt order\_\lbt nd\lbt .c} uses a graph separation strategy +to compute its vertex separators. +\end{itemize} + +\subsection{Declaring the new method to the parser} + +Once the new method has been coded, its interface must be known to the +parser, so that it can be used in strategy strings. All of this is +done in the module strategy method files, the name of which always end +in {\tt \_st.[ch]}, that is, {\tt vgraph\_\lbt separate\_\lbt st.[ch]} +for the {\tt vgraph} module. Both files are to be updated. + +In the header file {*\_st.h}, a new identifier must be created for the +new method in the {\tt St\lbt Method\lbt Type} enumeration type, +preferrably placed in alphabetical order. + +In file {*\_st.c}, there are several places to update. +First, in the beginning of the module file, the header file of the new +method, {\tt vgraph\_\lbt separate\_\lbt xy\lbt .h} in this example, +must be added in alphabetical order to the list of included method +header files. + +Then, if the new method has parameters, an instance of the method +parameter structure must be created, which will hold the default +values for the method. This is in fact a {\tt union} structure, +of the following form : +{\tt\begin{verbatim} +static union { + VgraphSeparateXyParam param; + StratNodeMethodData padding; +} vgraphseparatedefaultxy = { { ... } }; +\end{verbatim}} +where the dots should be replaced by the list of default values of the +fields of the {\tt Vgraph\lbt Separate\lbt Xy\lbt Param} structure. +Note that the size of the {\tt Strat\lbt Node\lbt Method\lbt Data} +structure, which is used as a generic padding structure, must always +be greater than or equal to the size of each of the parameter +structures. If your new parameter structure is larger, you will have +to update the size of the {\tt Strat\lbt Node\lbt Method\lbt Data} +type in file {\tt parser.h}\enspace. The size of the {\tt Strat\lbt +Node\lbt Method\lbt Data} type does not depend directly on the size of +the parameter structures (as could have been done by making it an union +of all of them) so as to to reduce the dependencies between the files +of the library. In most cases, the default size is sufficient, and a +test is added in the beginning of all method routines to ensure it is +the case in practice. + +Finally, the first two method tables must be filled accordingly. In the +first one, of type {\tt Strat\lbt Method\lbt Tab}, one must add a new +line linking the method identifier to the character code used to name +the method in strategy strings (which must be chosen among all of +the yet unused letters), the pointer to the routine, and the pointer +to the above default parameter structure if it exists (else, a {\tt +NULL} pointer must be given). +In the second one, of type {\tt Strat\lbt Param\lbt Tab}, one must add +one line per method parameter, giving the identifier of the method, +the type of the parameter, the name of the parameter in the strategy +string, the base address of the default parameter structure, the +actual address of the field in the parameter structure (both fields +are required because the relative offset of the field with respect to +the starting address of the structure cannot be computed at +compile-time), and an optional pointer that references either the +strategy table to be used to parse the strategy parameter (for +strategy parameters) or a string holding all of the values of the +character flags (for an enumerated type), this pointer being set to +{\tt NULL} for all of the other parameter types (integer and floating +point). + +\subsection{Adding the new method to the makefile} + +Of course, in order to be compiled, the new method must be added to +the {\tt makefile} of the {\tt libscotch} source directory. There are +several places to update. + +First, you have to create the entry for the new method source files +themselves. The best way to proceed is to search for the one of an +already existing method, such as {\tt vgraph\_\lbt separate\_\lbt fm}, +and copy it to the right neighboring place, preferrably following the +alphabetical order. + +Then, you have to add the new header file to the dependency list of +the module strategy method, that is, {\tt vgraph\_\lbt separate\_\lbt +st} for graph separation methods. Here again, search for the +occurences of string {\tt vgraph\_\lbt separate\_\lbt fm} to see where +it is done. + +Finally, add the new object file to the component list of the {\tt +libscotch} library file. + +Once all of this is done, you can recompile \scotch\ and be able to +use your new method in strategy strings. diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/m_s.tex scotch-6.0.6/doc/src/scotch/m_s.tex --- scotch-6.0.4.dfsg1/doc/src/scotch/m_s.tex 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/m_s.tex 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,183 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Titre : m_s.tex % +% Sujet : Manuel de maintenance % +% du projet 'Scotch' % +% Structure generale % +% Auteur : Francois Pellegrini % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{General structure of the \libscotch\ library} +\label{sec-structure} + +\subsection{Naming conventions} + +All of the files of the \scotch\ project have been written using +strict coding conventions, to ease maintenance and further extension +by external contributors. Therefore, contributors are {\bf strongly} +invited to follow these coding conventions so as to ease the work of +their followers. + +\subsubsection{Variables} + +Variables are named by specialization, with prefixes and suffixes. + +Common prefixes are: +\begin{itemize} +\item +act : active, wrt. source +\item +src : source, wrt. active +\item +tgt : target. +\item +coar : coarse, wrt. fine. +\item +fine : fine, wrt. coarse. +\item +mult : multinode, for coarsening. +\end{itemize} + +Common radicals are: +\begin{itemize} +\item +vert : vertex. +\item +velo : vertex load. +\item +vnum : vertex number, used as index, for instance in {\tt vnumtab}). +\item +vlbl : vertex label (for interface). +\item +edge : edge. +\item +edlo : edge load. +\end{itemize} + +Common suffices are: +\begin{itemize} +\item +{\tt nbr} : number of (instances of). +\item +{\tt num} : number of some instance of. +\item +{\tt val} : value of. +\item +{\tt sum} : sum of several values of. +\item +{\tt tab} : pointer to the first memory element of an array of, for +instance as returned by a {\tt mem\lbt Alloc} routine. +\item +{\tt tax} : (for ``{\it table access}'') pointer to the first element +of an array that is to be accessed by means of based indices. The +\libscotch\ library can accept data structures that come both from +FORTRAN, where array indices start at $1$, and C, where they start at +$0$. By accessing ``{\tt tax}'' arrays, where the {\tt tax} pointer is +equal to the {\tt tab} pointer minus the value of the indexing base, +this is completely transparent for coding, save for memory allocation +and freeing operations, which must operate on {\tt tab} pointers only. +\item +{\tt tnd} : pointer to the end of an array of (mostly used as a bound +in loops). +\item +{\tt ptr} : pointer to an instance of. +\end{itemize} + +For instance, {\tt coarvertnum} is a variable that holds the number of +a coarse vertex, within some coarsening algorithm. It is also easy to +guess how to name a variable that holds a pointer to an active edge. + +\subsubsection{Functions} + +Routines that operate on data structures are named by specialization, +from the name of the structure type they apply to. + +Common suffixes are: +\begin{itemize} +\item +{\tt Init} : initialization of a structure (object) passed as parameter. +\item +{\tt Free} : freeing of the external structures of the object, to save +space. The object may still be used after it is initialized again. +\item +{\tt Exit} : freeing of the internal structures of the object. The +object must not be passed to other routines after the {Exit} method +has been called. +\item +{\tt Copy} : make a fully operational, independent, copy of the object. +\item +{\tt Load} : load from stream. +\item +{\tt Save} : save to stream. +\item +{\tt View} : display internal structures and statistics, for debugging +purposes. +\item +{\tt Check} : check internal coherence, for debug. +\end{itemize} + +\subsection{Structure of the library} + +%\subsubsection{Modules} + +All of the routines that comprise the \libscotch\ libraries are +grouped by the type of data structure onto which they apply and by +function, in an object-oriented manner. This organization is reflected +into the naming and contents of all of the source files. + +The main modules of the \libscotch\ library are the following : +\begin{itemize} +\item +{\tt arch} : target architectures used by the static mapping methods. +\item +{\tt bgraph} : graph edge bipartitioning methods. +\item +{\tt graph} : basic graph handling methods. +\item +{\tt hgraph} : graph ordering methods. These are based on an extended +``halo'' graph structure, thus for the name. +\item +{\tt hmesh} : mesh ordering methods. +\item +{\tt kgraph} : k-way graph partitioning methods. +\item +{\tt library} : interface routines for the \libscotch\ library. +\item +{\tt mapping} : definition of the mapping structure. +\item +{\tt mesh} : basic mesh handling methods. +\item +{\tt order} : definition of the ordering structure. +\item +{\tt parser} : strategy parsing routines, based on a Lex-Yacc +parser. +\item +{\tt vgraph} : graph vertex bipartitioning methods. +\item +{\tt vmesh} : mesh node bipartitioning methods. +\end{itemize} + +Each of the file names is prefixed by the name of the module, followed +by one or two words that describe the type of action performed by the +routines of the file. +For instance, in module {\tt bgraph} : +\begin{itemize} +\item +{\tt bgraph.h} is the header file that defines the {\tt bgraph} +structure, +\item +{\tt bgraph\_bipart\_fm.[ch]} are the files that contain the +Fiduccia-Mattheyses-like graph bipartitioning method, +\item +{\tt bgraph\_check.c} is the file that contains the consistency +checking routine for {\tt Bgraph} structures, +\end{itemize} +and so on. Every source file has a comments header briefly describing +the purpose of the routines it contains. + +%This section lists the main structures used within \libscotch. Each of +%these is defined in a C header file of same name in the {\tt +%libscotch\_\lbt 4.x/\lbo src} directory. For instance, the {\tt Graph} +%structure is defined in file {\tt graph.h}, the {Vmesh} structure is +%defined in file {\tt vmesh.h}, and so on. diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/m.tex scotch-6.0.6/doc/src/scotch/m.tex --- scotch-6.0.4.dfsg1/doc/src/scotch/m.tex 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/m.tex 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,136 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Titre : m.tex % +% Sujet : Manuel de maintenance % +% de Scotch 4.0 % +% Corps du document % +% Auteur : Francois Pellegrini % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% Formatage et pagination. + +\documentclass{article} +\usepackage{a4} +\usepackage[dvips]{graphicx} +%\documentstyle[11pt,a4,fullpage,epsf]{article} +%\textwidth 16.0cm +%\oddsidemargin -0.5cm +%\evensidemargin -0.5cm +%\marginparwidth 0.0cm +%\marginparsep 0.0cm +%\marginparpush 0.0cm +%\topmargin 0.5cm +%\headheight 0.0cm +%\headsep 0.0cm +%\textheight 25.0cm +%\footheight 0.0cm +%\footskip 0.0cm + +\sloppy % Gestion des overfull hbox +\renewcommand{\baselinestretch}{1.05} % Hauteur lignes x 1.05 + +\setcounter{secnumdepth}{3} % Sous-sous-sections numerotees +\setcounter{tocdepth}{3} % Sous-sous-sections dans la table + +%% Macros et commandes utiles. + +\makeatletter +\@definecounter{enumv} % 8 niveaux d'itemizations +\@definecounter{enumvi} +\@definecounter{enumvii} +\@definecounter{enumviii} +\def\itemize{\ifnum \@itemdepth >8 \@toodeep\else \advance\@itemdepth \@ne +\edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% +\list{\csname\@itemitem\endcsname}{\def\makelabel##1{\hss\llap{##1}}}\fi} +\let\enditemize =\endlist + +\def\@iteme[#1]{\if@noparitem \@donoparitem % Item long pour options + \else \if@inlabel \indent \par \fi + \ifhmode \unskip\unskip \par \fi + \if@newlist \if@nobreak \@nbitem \else + \addpenalty\@beginparpenalty + \addvspace\@topsep \addvspace{-\parskip}\fi + \else \addpenalty\@itempenalty \addvspace\itemsep + \fi + \global\@inlabeltrue +\fi +\everypar{\global\@minipagefalse\global\@newlistfalse + \if@inlabel\global\@inlabelfalse + \setbox\@tempboxa\hbox{#1}\relax + \hskip \itemindent \hskip -\parindent + \hskip -\labelwidth \hskip -\labelsep + \ifdim \wd\@tempboxa > \labelwidth + \box\@tempboxa\hfil\break + \else + \hbox to\labelwidth{\box\@tempboxa\hfil}\relax + \hskip \labelsep + \fi + \penalty\z@ \fi + \everypar{}}\global\@nobreakfalse +\if@noitemarg \@noitemargfalse \if@nmbrlist \refstepcounter{\@listctr}\fi \fi +\ignorespaces} +\def\iteme{\@ifnextchar [{\@iteme}{\@noitemargtrue \@iteme[\@itemlabel]}} + +\let\@Hxfloat\@xfloat +\def\@xfloat#1[{\@ifnextchar{H}{\@HHfloat{#1}[}{\@Hxfloat{#1}[}} +\def\@HHfloat#1[H]{% +\expandafter\let\csname end#1\endcsname\end@Hfloat +\vskip\intextsep\def\@captype{#1}\parindent\z@ +\ignorespaces} +\def\end@Hfloat{\vskip \intextsep} +\makeatother + +\newcommand{\bn}{\begin{displaymath}} % Equations non-numerotees +\newcommand{\en}{\end{displaymath}} +\newcommand{\bq}{\begin{equation}} % Equations numerotees +\newcommand{\eq}{\end{equation}} + +\newcommand{\lbo}{\linebreak[0]} +\newcommand{\lbt}{\linebreak[2]} +\newcommand{\noi}{{\noindent}} % Pas d'indentation +\newcommand{\spa}{{\protect \vspace{\bigskipamount}}} % Espace vertical + +\newcommand{\eg}{{\it e\@.g\@.\/\ }} % e.g. +\newcommand{\ie}{{\it i\@.e\@.\/\ }} % i.e. + +\newcommand{\scotch}{{\sc Scotch}} % "scotch" +\newcommand{\libscotch}{{\sc libScotch}} % "libscotch" + +%% Page de garde. + +\begin{document} + +\date{\today} + +\title{\includegraphics{s_f_logo.ps}\\[1em] + {\LARGE\bf \libscotch\ {\sc 4.0} Maintainer's Guide}\\[1em]} + +\author{Fran\c cois Pellegrini\\ +ScAlApplix project, INRIA Bordeaux Sud-Ouest\\ +ENSEIRB \& LaBRI, URM CNRS 5800\\ +Universit\'e Bordeaux~I\\ +351 cours de la Lib\'eration, 33405 TALENCE, FRANCE\\ +{\tt pelegrin@labri.fr}} + +\maketitle + +\begin{abstract} +This document briefly describes the internals of the \libscotch\ +library, and mainly focuses on the way for contributors to add new +partitioning and ordering methods to it. +\end{abstract} + +\clearpage + +%% Table des matieres. + +\tableofcontents + +%% Corps du document. + +\input{m_i.tex} % Introduction +\input{m_s.tex} % Structure de la libScotch +\input{m_m.tex} % Ajout d'une methode + +\end{document} diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s.bib scotch-6.0.6/doc/src/scotch/s.bib --- scotch-6.0.4.dfsg1/doc/src/scotch/s.bib 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s.bib 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,956 @@ +@article{amdadu96, + author = "Amestoy, P. and Davis, T. and Duff, I.", + title = "An approximate minimum degree ordering algorithm", + journal = "{SIAM} {J}. {M}atrix {A}nal. and {A}ppl.", + volume = "17", + pages = "886--905", + year = "1996" +} + +@inproceedings{aseilish91, + author = "Ashcraft, C. and Eisenstat, S. and Liu, J. W.-H. and Sherman, A.", + title = "A comparison of three column based distributed sparse factorization schemes", + booktitle = "Proc. Fifth {SIAM} Conf. on Parallel Processing for Scientific Computing", + year = "1991", +} + +@article{ashc95, + author = "Ashcraft, C.", + title = "Compressed Graphs and the Minimum Degree Algorithm", + journal = "{SIAM} {J}. {S}ci. {C}omput.", + volume = "16", + number = "6", + pages = "1404--1411", + year = "1995" +} + +@article{basi94, + author = "Barnard, S. T. and Simon, H. D.", + title = "A fast multilevel implementation of recursive + spectral bisection for partitioning unstructured + problems", + journal = "{C}oncurrency: {P}ractice and {E}xperience", + volume = "6", + number = "2", + pages = "101-117", + year = "1994" +} + +@techreport {bopore96, + author = "Boisvert, R.~F. and Pozo, R. and Remington, K.~A.", + title = "The {M}atrix {M}arket exchange formats: initial design", + type = "{NISTIR}", + number = "5935", + month = dec, + year = "1996", + institution = "{N}ational {I}nstitute of {S}tandards and {T}echnology" +} + +@misc{cecill, + key = "cecill", + title = "{CeCILL}: ``{CEA}-{CNRS}-{INRIA} {L}ogiciel {L}ibre'' free/libre software license", + note = "Available from \url{http://www.cecill.info/licenses.en.html}" +} + +@inproceedings{chpe06a, + author = "Chevalier, C. and Pellegrini, F.", + title = "Improvement of the Efficiency of Genetic Algorithms for Scalable Parallel Graph Partitioning in a Multi-Level Framework", + booktitle = "Proc\@. EuroPar, Dresden", + series = "LNCS 4128", + pages = "243--252", + month = sep, + year = "2006", + OPTpublisher = "Springer", + OPTnote = "{\tt http://\lbt www.\lbo labri.\lbo fr/\lbt \~{}pelegrin/\lbt papers/\lbt scotch\_\lbt efficient\lbo ga.\lbt pdf}" +} + +@article{chro89, + author = "Charrier, P. and Roman, J.", + title = "Algorithmique et calculs de complexit\'e pour un + solveur de type dissections embo\^\i t\'ees", + journal = "{N}umerische {M}athematik", + volume = "55", + pages = "463--476", + year = "1989" +} + +@techreport {chro92a, + author = "Charrier, P. and Roman, J.", + title = "Partitioning and Mapping for parallel nested dissection on distributed memory architectures", + type = "Rapport de recherche", + number = "92-12", + month = mar, + year = "1992", + institution = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", +} + +@inproceedings {chro92b, + author = "Charrier, P. and Roman, J.", + title = "Partitioning and Mapping for parallel nested dissection on distributed memory architectures", + booktitle = "Proc\@. CONPAR'92", + series = "LNCS 634", + pages = "295--306", + month = sep, + year = "1992", + OPTpublisher = "Springer" +} + +@inproceedings {cuma69, + author = "Cuthill, E. and Macc~Kee, J.", + title = "Reducing the bandwidth of sparse symmetric matrices", + booktitle = "Proc. 24th national conference {ACM}", + year = "1969", + pages = "157--172", + publisher = "{ACM}" +} + +@article {doho72, + author = "Donath, W. and Hoffman, A.", + title = "Algorithms for partitioning of graphs and computer logic + based on eigenvectors of connection matrices", + journal = "{IBM} {T}echnical {D}isclosure {B}ulletin", + volume = "15", + year = "1972", + pages = "938--944" +} + +@article {doho73, + author = "Donath, W. and Hoffman, A.", + title = "Lower bounds for the partitioning of graphs", + journal = "{IBM} {J}ournal of {R}esearch and {D}evelopment", + volume = "17", + year = "1973", + pages = "420--425" +} + +@inproceedings{drro94a, + author = "van Driessche, R. and Roose, D.", + title = "Dynamic load balancing with an improved spectral bisection algorithm", + booktitle = "Proc\@. {SHPCC'94}, Knoxville", + pages = "494--500", + year = "1994", + month = may, + organization = "IEEE" +} + +@techreport{drro94b, + author = "van Driessche, R. and Roose, D.", + title = "A graph contraction algorithm for the calculation of eigenvectors of the laplacian matrix of a graph with a multilevel method", + institution = "Katholieke Universiteit Leuven", + number = "TW 209", + month = may, + year = "1994" +} + +@article{duff81, + author = "Duff, I.", + title = "On Algorithms for Obtaining a Maximum Transversal", + journal = "{ACM} {T}rans. {M}ath. {S}oftware", + volume = "7", + number = "3", + pages = "315--330", + month = sep, + year = "1981" +} + +@techreport{dugrle92, + author = "Duff, I. S. and Grimes, R. G. and Lewis, J. G.", + title = "Users' guide for the {H}arwell-{B}oeing Sparse Matrix Collection", + institution = "CERFACS", + number = "TR/PA/92/86", + month = oct, + year = "1992", + address = "Toulouse, France" +} + +@article {errasa90, + author = "Ercal, F. and Ramanujam, J. and Sadayappan, P.", + title = "Task allocation onto a hypercube by recursive mincut bipartitionning", + journal = "{J}ournal of {P}arallel and {D}istributed {C}omputing", + volume = "10", + year = "1990", + pages = "35--44" +} + +@article {fied73, + author = "Fiedler, M.", + title = "Algebraic connectivity of graphs", + journal = "{C}zechoslovak {M}ath. {J}.", + volume = "23", + year = "1973", + pages = "298--305" +} + +@article {fied75, + author = "Fiedler, M.", + title = "A property of eigenvectors of non-negative + symmetric matrices and its application to graph theory", + journal = "{C}zechoslovak {M}ath. {J}.", + volume = "25", + year = "1975", + pages = "619--633" +} + +@inproceedings {fima82, + author = "Fiduccia, C. M. and Mattheyses, R. M.", + title = "A linear-time heuristic for improving network partitions", + booktitle = "Proceedings of the 19th {D}esign {A}utomation {C}onference", + year = "1982", + pages = "175--181", + publisher = "{IEEE}" +} + +@InProceedings{fope11a, + author = "Fourestier, S. and Pellegrini, F.", + title = "Adaptation au repartitionnement de graphes d'une méthode d'optimisation globale par diffusion", + booktitle = "Proc\@. RenPar'20, Saint-Malo, France", + month = may, + year = "2011" +} + +@article {gajost76, + author = "Garey, M. R. and Johnson, D. S. and Stockmeyer, L.", + title = "Some simplified {NP}-complete graph problems", + journal = "{T}heoretical {C}omputer {S}cience", + volume = "1", + year = "1976", + pages = "237--267" +} + +@book {gajo79, + author = "Garey, M. R. and Johnson, D. S.", + title = "{C}omputers and {I}ntractablility: {A} {G}uide to the {T}heory of {NP}-completeness", + publisher = "W. H. Freeman", + year = "1979", + address = "San Francisco" +} + +@article{geheling88, + author = "George, A. and Heath, M. T. and Liu, J. W.-H. and Ng, E. G.-Y.", + title = "Sparse {C}holesky factorization on a local memory multiprocessor", + journal = "{SIAM} {J}ournal on {S}cientific and {S}tatistical {C}omputing", + volume = "9", + pages = "327--340", + year = "1988" +} + +@book {geli81, + author = "George, J. A. and Liu, J. W.-H.", + title = "Computer solution of large sparse positive definite systems", + year = "1981", + publisher = "Prentice Hall" +} + +@article {geli89, + author = "George, A. and Liu, J. W.-H.", + title = "The evolution of the Minimum Degree ordering algorithm", + journal = "{SIAM} {R}eview", + volume = "31", + pages = "1--19", + year = "1989" +} + +@article{geng89, + author = "Geist, G. A. and Ng, E. G.-Y.", + title = "Task scheduling for parallel sparse {C}holesky factorization", + journal = "{I}nternational {J}ournal of {P}arallel {P}rogramming", + volume = "18", + number = "4", + pages = "291--314", + year = "1989" +} + +@article {gipost76, + author = "Gibbs, N. E. and Poole, W. G. and Stockmeyer, P. K.", + title = "A comparison of several bandwidth and profile reduction algorithms", + journal = "{ACM} Trans. Math. Software", + volume = "2", + year = "1976", + pages = "322--330", + field = "bdth about sparse matrices", + owner = "Jean ROMAN" +} + +@misc{lgpl, + key = "lgpl", + title = "{GNU} {L}esser {G}eneral {P}ublic {L}icense", + note = "Available from \url{http://www.gnu.org/copyleft/lesser.html}" +} + +@techreport{gukaku94, + author = "Gupta, A. and Karypis, G. and Kumar, V.", + title = "Highly scalable parallel algorithms for sparse matrix factorization", + institution = "{U}niversity of {M}innesota", + type = "TR", + number = "94-063", + year = "1994", + OPTnote = "To appear in {\em {IEEE} {T}rans. on {P}arallel and {D}istributed {S}ystems}, 1997" +} + +@inproceedings{gukaku96, + author = "Gupta, A. and Karypis, G. and Kumar, V.", + title = "Scalable parallel algorithms for sparse linear systems", + booktitle = "Proc. {Stratagem'96}, Sophia-Antipolis", + pages = "97--110", + year = "1996", + month = jul, + organization = "INRIA", +} + +@article{gukaku97, + author = "Gupta, A. and Karypis, G. and Kumar, V.", + title = "Highly scalable parallel algorithms for sparse matrix factorization", + journal = "{IEEE} {T}rans. {P}arallel {D}istrib. {S}yst.", + volume = "8", + number = "5", + pages = "502--520", + year = "1997" +} + +@article {gusu84, + author = "Gurari, E. M. and Sudborough, I. H.", + title = "Improved Dynamic Algorithms for Bandwidth Minimization and the Mincut Linear Arrangement Problem", + journal = "Journal of Algorithms", + volume = "5", + year = "1984", + pages = "531--546", + field = "Heuristiques pour bdth and cdth" +} + +@phdthesis {hamm92, + author = "Hammond, S. W.", + title = "Mapping unstructured grid computations to massively parallel computers", + month = feb, + year = "1992", + school = "{R}ensselaer {P}olytechnic {I}nstitute", + address = "{T}roy, {N}ew-{Y}ork" +} + +@techreport{hele93a, + author = "Hendrickson, B. and Leland, R.", + title = "Multidimensional spectral load balancing", + institution = "{S}andia {N}ational {L}aboratories", + number = "SAND93--0074", + month = jan, + year = "1993", + owner = "Francois PELLEGRINI" +} + +@techreport{hele93b, + author = "Hendrickson, B. and Leland, R.", + title = "A multilevel algorithm for partitioning graphs", + institution = "{S}andia {N}ational {L}aboratories", + number = "SAND93--1301", + month = jun, + year = "1993", + owner = "Francois PELLEGRINI" +} + +@techreport{hele93c, + author = "Hendrickson, B. and Leland, R.", + title = "The \sc {C}haco \rm user's guide", + institution = "{S}andia {N}ational {L}aboratories", + number = "SAND93--2339", + month = nov, + year = "1993", + owner = "Francois PELLEGRINI" +} + +@inproceedings{hele94a, + author = "Hendrickson, B. and Leland, R.", + title = "An empirical study of static load balancing algorithms", + booktitle = "Proc\@. {SHPCC'94}, Knoxville", + pages = "682--685", + year = "1994", + month = may, + organization = "IEEE" +} + +@techreport{hele94b, + author = "Hendrickson, B. and Leland, R.", + title = "The {\sc {C}haco} user's guide -- Version 2.0", + institution = "{S}andia {N}ational {L}aboratories", + number = "SAND94--2692", + year = "1994", + owner = "Francois PELLEGRINI" +} + +@inproceedings {hele95, + author = "Hendrickson, B. and Leland, R.", + title = "A Multilevel Algorithm for Partitioning Graphs", + booktitle = "Proc\@. ACM/IEEE conference on Supercomputing (CDROM)", + month = "dec", + year = "1995", + location = "San Diego" +} + +@inproceedings{heledr96, + author = "Hendrickson, B. and Leland, R. and Van Driessche, R.", + title = "{E}nhancing {D}ata {L}ocality by {U}sing {T}erminal + {P}ropagation", + booktitle = "Proceedings of the 29$\,^{th}$ Hawaii International Conference + on System Sciences", + year = "1996", + month = jan, + organization = "IEEE" +} + +@inproceedings {heledr97, + author = "Hendrickson, B. and Leland, R. and Van Driessche, R.", + title = "Skewed Graph Partitioning", + booktitle = "Proceedings of the 8$^{th}$ {SIAM} {C}onference on + {P}arallel {P}rocessing for {S}cientific {C}omputing", + month = mar, + year = 1997, + organization = "IEEE" +} + +@inproceedings{heperaro04a, + author = "H\'enon, P. and Pellegrini, F. and Ramet, P. and Roman, J. and Saad, Y.", + title = "High Performance Complete and Incomplete Factorizations for Very Large Sparse Systems by using {\sc {S}cotch} and {\sc {P}a{S}ti{X}} softwares", + booktitle = "Proc\@. 11$^{th}$ {SIAM} {C}onference on {P}arallel {P}rocessing for {S}cientific {C}omputing, San Francisco, {USA}", + month = feb, + year = 2004 +} + +@article{hero98, + author = "Hendrickson, B. and Rothberg, E.", + title = "Improving the Runtime and Quality of Nested Dissection Ordering", + journal = "{SIAM} {J}. {S}ci. {C}omput.", + volume = "20", + number = "2", + year = "1998", + pages = "468--489" +} + +@article {hoka73, + author = "Hopcroft, J. and Karp, R.", + title = "An $n^{5/2}$ Algorithm for Maximum Matchings in Bipartite Graphs", + journal = "{SIAM} {J}ournal of {C}omputing", + volume = "2", + number = "4", + month = dec, + year = "1973", + pages = "225--231", + field = "Sepa, ALGO" +} + +@techreport{kaku95a, + author = "Karypis, G. and Kumar, V.", + title = "A Fast and High Quality Multilevel Scheme for Partitioning + Irregular Graphs", + institution = "{U}niversity of {M}innesota", + type = "Technical Report", + number = "95-035", + month = jun, + year = "1995" +} + +@techreport{kaku95b, + author = "Karypis, G. and Kumar, V.", + title = "{\sc Me$\!$T$\!$iS} -- Unstructured Graph Partitioning and + Sparse Matrix Ordering System -- Version~2.0", + institution = "{U}niversity of {M}innesota", + month = jun, + year = "1995" +} + +@techreport{kaku95c, + author = "Karypis, G. and Kumar, V.", + title = "Multilevel $k$-way Partitioning Scheme for + Irregular Graphs", + institution = "{U}niversity of {M}innesota", + type = "Technical Report", + number = "95-064", + month = aug, + year = "1995" +} + +@manual{kaku98a, + author = "Karypis, G. and Kumar, V.", + title = "{\sc Me$\!$T$\!$iS} -- A Software Package for Partitioning + Unstructured Graphs, Partitioning Meshes, and Computing + Fill-Reducing Orderings of Sparse Matrices -- Version~4.0", + organization = "{U}niversity of {M}innesota", + month = sep, + year = "1998" +} + +@article {keli70, + author = "Kernighan, B. W. and Lin, S.", + title = "An efficient heuristic procedure for partitionning graphs", + journal = "{BELL} System Technical Journal", + month = feb, + year = "1970", + pages = "291--307", + publisher = "{BELL} {C}orporation", + field = "Sepa, ALGO" +} + +@article {lafeel94, + author = "Laguna, M. and Feo, T. A. and Elrod, H. C.", + title = "A greedy randomized adaptative search procedure for the + two-partition problem", + journal = "{O}perations {R}esearch", + month = jul, + year = "1994", + pages = "677--687", + field = "Bipa, ALGO" +} + +@techreport{leabdofe92, + author = "Leiserson, C. and Abuhamdeh, Z. and Douglas, D. and + Feynman, C. and Ganmukhi, M. and Hill, J. and + Hillis, W. and Kuszmaul, B. and Pierre, M. and + Wells, D. and Wong, M. and Yang, S. and Zak, R.", + title = "The Network Architecture of the {C}onnection + {M}achine {CM-5}", + institution = "{T}hinking {M}achines", + month = "juillet", + year = "1992" +} + +@inproceedings{lele87, + author = "Leiserson, C. and Lewis, J.", + title = "Orderings for parallel sparse symmetric factorization", + booktitle = "Third {SIAM} Conference on Parallel Processing for Scientific Computing", + year = "1987", + location = "Troms\o" +} + +@article {lirota79, + author = "Lipton, R. J. and Rose, D. J. and Tarjan, R. E.", + title = "Generalized nested dissection", + journal = "{SIAM} Journal of Numerical Analysis", + volume = "16", + number = "2", + month = apr, + year = "1979", + pages = "346--358", + publisher = "{S}ociety for {I}ndustrial and {A}pplied {M}athematics" +} + +@inproceedings {litsdukl93, + author = "Lin, M. and Tsang, R. and Du, D. H. C. and Klietz, + A. E. and Saroff, S.", + title = "Performance Evaluation of the {CM-5} + Interconnection Network", + booktitle = "Proceedings of CompCon Spring'93", + year = "1993" +} + +@phdthesis {liu-75, + author = "Liu, J. W.", + title = "On reducing the profile of sparse symmetric matrices", + school = "{U}niversity of {W}aterloo", + year = "1975", + address = "{W}aterloo, {O}ntario", +} + +@article {liu-85, + author = "Liu, J. W.-H.", + title = "Modification of the minimum-degree algorithm by multiple elimination", + journal = "{ACM} {T}rans. {M}ath. {S}oftware", + volume = "11", + number = "2", + year = 1985, + pages = "141--153" +} + +@misc{oinv, + key = "oinv", + title = "{SGI} {O}pen {I}nventor", + note = "Available from \url{http://oss.sgi.com/projects/inventor/}" +} + +@manual{pci-93, + title = "{CS-2} {P}roduct {D}escription", + organization = "{P}erformance {C}omputing {I}ndustries", + year = "1993" +} + +@Article{pell93d, + author = "Pellegrini, F.", + title = "Bounds for the Bandwidth of the $d$-ary de~{B}ruijn graph", + journal = "Parallel Processing Letters", + year = "1993", + volume = "3", + number = "4", + pages = "431--443" +} + +@inproceedings{pell94a, + author = "Pellegrini, F.", + title = "Static Mapping by Dual Recursive Bipartitioning of Process and Architecture Graphs", + booktitle = "Proc\@. {SHPCC'94}, Knoxville", + pages = "486--493", + year = "1994", + month = may, + organization = "IEEE" +} + +@inproceedings{pell94b, + author = "Pellegrini, F.", + title = "Placement statique par bipartitionnement r\'ecursif conjoint des graphes de processus et d'architecture", + booktitle = "Actes des 6\/${}^{\grave{e}mes}$ Rencontres Francophones du Parall\'elisme, RenPar'6, Lyon", + pages = "41--44", + year = "1994", + month = jun, + organization = "ENS Lyon" +} + +@phdthesis{pell95a, + author = "Pellegrini, F.", + title = "Application de m\'ethodes de partition \`a la r\'esolution de probl\`emes de graphes issus du parall\'elisme", + type = "{T}h\`ese de {D}octorat", + school = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", + number = "1244", + month = jan, + year = "1995", + address = "351 cours de la Lib\'eration, 33405 Talence, France" +} + +@inproceedings{pell07b, + author = "Pellegrini, F.", + title = "A parallelisable multi-level banded diffusion scheme for computing balanced partitions with smooth boundaries", + booktitle = "Proc\@. EuroPar, Rennes", + series = "LNCS 4641", + pages = "191--200", + month = aug, + year = "2007", + OPTeditor = "A.-M. Kermarrec, L. Boug\'e, T. Priol", + OPTpublisher = "Springer", + OPTnote = "{\tt http://\lbt www.\lbo labri.\lbo fr/\lbt \~{}pelegrin/\lbt papers/\lbt scotch\_\lbt bipart\_\lbt diffusion\_\lbt europar2007.\lbt pdf}" +} + +@techreport{pell07c, + author = "Pellegrini, F.", + title = "{\sc {S}cotch 5.0} {U}ser's {G}uide", + institution = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", + month = aug, + year = "2007", + note = "Available from \url{http://www.labri.fr/~pelegrin/scotch/}" +} + +@TechReport{pell07d, + author = "Pellegrini, F.", + title = "{\sc {PT}-{S}cotch 5.0} \mbox{U}ser's guide", + institution = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", + month = aug, + year = "2007", + note = "Available from \url{http://www.labri.fr/~pelegrin/scotch/}" +} + +@techreport{pell08b, + author = "Pellegrini, F.", + title = "{\sc {S}cotch 5.1} {U}ser's {G}uide", + institution = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", + month = aug, + year = "2008", + note = "Available from \url{http://www.labri.fr/~pelegrin/scotch/}" +} + +@TechReport{pell08c, + author = "Pellegrini, F.", + title = "{\sc {PT}-{S}cotch 5.1} \mbox{U}ser's guide", + institution = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", + month = aug, + year = "2008", + note = "Available from \url{http://www.labri.fr/~pelegrin/scotch/}" +} + +@techreport{pellegrini:hal-01671156, + title = {{Process Mapping onto Complex Architectures and Partitions Thereof}}, + author = {Pellegrini, Fran{\c c}ois and Lachat, C{\'e}dric}, + note = "Available from \url{https://hal.inria.fr/hal-01671156}", + type = {Research Report}, + number = {RR-9135}, + pages = {16}, + institution = {{Inria Bordeaux Sud-Ouest}}, + year = {2017}, + month = Dec, + pdf = {https://hal.inria.fr/hal-01671156/file/RR-9135.pdf}, + hal_id = {hal-01671156} +} + +@inproceedings{pero96a, + author = "Pellegrini, F. and Roman, J.", + title = "{\sc Scotch}: A Software Package for Static Mapping by Dual Recursive Bipartitioning of Process and Architecture Graphs", + booktitle = "Proc\@. {HPCN'96}, Brussels", + series = "LNCS 1067", + pages = "493--498", + month = apr, + year = "1996" +} + +@techreport{pero96b, + author = "Pellegrini, F. and Roman, J.", + title = "Experimental Analysis of the Dual Recursive Bipartitioning Algorithm for Static Mapping", + type = "{R}esearch {R}eport", + institution = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", + month = aug, + year = "1996", + note = "Available from \url{http://www.labri.fr/~pelegrin/papers/scotch_expanalysis.ps.gz}" +} + +@inproceedings{pero97a, + author = "Pellegrini, F. and Roman, J.", + title = "{S}parse matrix ordering with {\sc {S}cotch}", + booktitle = "Proc\@. {HPCN'97}, Vienna", + series = "LNCS 1225", + pages = "370--378", + month = apr, + year = "1997" +} + +@inproceedings{peroam99, + author = "Pellegrini, F. and Roman, J. and Amestoy, P.", + title = "Hybridizing Nested Dissection and Halo Approximate Minimum Degree for Efficient Sparse Matrix Ordering", + booktitle = "Proc\@. {Irregular'99}, San Juan", + series = "LNCS 1586", + pages = "986--995", + month = apr, + year = "1999" +} + +@article{peroam00a, + author = "Pellegrini, F. and Roman, J. and Amestoy, P.", + title = "Hybridizing Nested Dissection and Halo Approximate Minimum Degree for Efficient Sparse Matrix Ordering", + journal = "{C}oncurrency: {P}ractice and {E}xperience", + year = "2000", + volume = "12", + pages = "69--84" +} + +@article {pofa90, + author = "Pothen, A. and Fan, C.-J.", + title = "Computing the Block Triangular Form of a Sparse Matrix", + journal = "{ACM} {T}rans. {M}ath. {S}oftware", + volume = "16", + number = "4", + month = dec, + year = "1990", + pages = "303--324" +} + +@article {posili90, + author = "Pothen, A. and Simon, H. D. and Liou, K.-P.", + title = "Partitioning sparse matrices with eigenvectors of graphs", + journal = "{SIAM} {J}ournal of {M}atrix {A}nalysis", + volume = "11", + number = "3", + month = jul, + year = "1990", + pages = "430--452" +} + +@article {roha89, + author = "Roucairol, C. and Hansen, P.", + title = "Cut cost minimization in graph partitioning", + journal = "{N}umerical and {A}pplied {M}athematics", + year = "1989", + pages = "585--587", + publisher = "{S}cientific {P}ublishing" +} + +@inproceedings{rogu93, + author = "Rothberg, E. and Gupta, A.", + title = "An efficient block-oriented approach to parallel sparse {C}holesky factorization", + booktitle = "{S}upercomputing'93 {P}roceedings", + year = "1993", + organization = "IEEE" +} + +@inproceedings{rosc94, + author = "Rothberg, E. and Schreiber, R.", + title = "Improved load distribution in parallel sparse {C}holesky factorization", + booktitle = "{S}upercomputing'94 {P}roceedings", + year = "1994", + organization = "IEEE" +} + +@inproceedings{roth94, + author = "Rothberg, E.", + title = "Performance of panel and block approaches to sparse {C}holesky factorization on the {iPSC/860} and {P}aragon multicomputers", + booktitle = "Proc\@. {SHPCC'94}, Knoxville", + pages = "324--333", + year = "1994", + month = may, + organization = "IEEE" +} + +@article {roma85, + author = "Roman, J.", + title = "Calculs de complexit\'e relatifs \`a une m\'ethode de dissection embo\^\i t\'ee", + journal = "{N}umerische {M}athematik", + volume = "47", + year = "1985", + pages = "175--190" +} + +@book {rume94, + author = "de Rumeur, J.", + title = "Communication dans les r\'eseaux de processeurs", + month = oct, + year = "1994", + publisher = "Masson" +} + +@mastersthesis{scar96, + author = "Scarano, L.", + title = "Metodologie di allocazione statica con algoritmi di + bipartizionamento multilevelo", + school = "{F}acolt\'a di {I}ngegneria, {U}niversit\`a degli {S}tudi di {B}ologna", + type = "{T}esi di {L}aurea", + month = mar, + year = "1996" +} + +@inbook {sero85, + author = "Seymour, P. D. and Robertson, N.", + chapter = "Graph minors -- {A} survey", + title = "Surveys in combinatorics", + year = "1985", + pages = "153--171", + editor = "Ian Anderson", + publisher = "Cambridge University Press" +} + +@techreport{shre92, + author = "Schreiber, R.", + title = "Scalability of sparse direct solvers", + institution = "{RIACS}, {NASA} {A}mes {R}esearch {C}enter", + type = "Technical Report", + number = "TR 92.13", + month = may, + year = "1992" +} + +@article{simo91, + author = "Simon, H. D.", + title = "Partitioning of unstructured problems for parallel + processing", + journal = "{C}omputing {S}ystems in {E}ngineering", + volume = "2", + pages = "135-148", + year = "1991" +} + +@techreport{site93, + author = "Simon, H. D. and Teng, S.-H.", + title = "How good is recursive bipartition", + type = "Research report", + institution = "{NASA} {A}mes {R}esearch {C}enter", + month = jun, + year = "1993" +} + +@techreport{shsz91, + author = "Shahrokhi, F. and Szekely, L. A.", + title = "An algebraic approach to the uniform concurrent multicommodity flow -- {T}heory and Applications", + institution = "University of North Texas", + number = "CRPDC-91-4", + year = "1991", + owner = "Dominique BARTH" +} + +@article {shts85, + author = "Shen, C.-C. and Tsai, W.-H.", + title = "A graph matching approach to optimal task + assignment in distributed computing systems using a + minimax criterion", + journal = "{IEEE} {T}ransactions on {C}omputers", + volume = "C-34", + number = "3", + month = mar, + year = "1985", + pages = "197--203" +} + +@article {sinc87, + author = "Sinclair, J. B.", + title = "Efficient computation of optimal assignments for + distributed tasks", + journal = "{J}ournal of {P}arallel and {D}istributed {C}omputing", + volume = "4", + year = "1987", + pages = "342--362" +} + +@inproceedings {smar76, + author = "Smith, W. F. and Arany, I.", + title = "Another algorithm for reducing bandwidth and profile of a sparse matrix", + booktitle = "Proc. AFIPS 1976 NCC", + year = "1976", + pages = "341--352", + publisher = "AFIP Press", + address = "Montvale, New Jersey" + } + +@article{ston77, + author = "Stone, H. S.", + title = "Multiprocessor scheduling with the aid of network + flow algorithms", + journal = "{IEEE} {T}ransactions on {S}oftware {E}ngineering", + volume = "SE 3", + number = "2", + month = jan, + year = "1977", + pages = "85--93" +} + +@techreport {tamu92, + author = "Talbi, E.-G. and Muntean, T.", + title = "\'Evaluation et \'etude comparative d'algorithmes d'optimisation combinatoire: application au probl\`eme de placement de processus", + institution = "LGI-IMAG", + address = "46 av. {F}. {V}iallet, 38031 {G}renoble {CEDEX}", + type = "Rapport de Recherche", + number = "RR~886-I", + month = apr, + year = "1992" +} + +@article {tiwa67, + author = "Tinney, W. F. and Walker, J. W.", + title = "Direct solutions of sparse network equations by optimally ordered triangular factorization", + journal = "{J}. {P}roc. {IEEE}", + volume = "55", + year = "1967", + pages = "1801--1809" +} + +@inproceedings {wacrevjo95, + author = "Walshaw, C. and Cross, M. and Everett, M. G. and Johnson, S. and McManus, K.", + title = "Partitioning \& Mapping of Unstructured Meshes to Parallel Machine Topologies", + booktitle = "Proc\@. {Irregular'95}", + series = "LNCS", + number = "980", + pages = "121--126", + year = "1995" +} + +@article {waro84, + author = "Ward, M. O. and Romero, D. J.", + title = "Assigning parallel-executable, intercommunicating subtasks to processors", + journal = "{IEEE}", + year = "1984", + pages = "392--394" +} + +@inproceedings {yokaka75, + author = "Yoshizawa, H. and Kawanishi, H. and Kani, K.", + title = "A Heuristic procedure for ordering {MOS} arrays", + booktitle = "Proc\@. of Design Automation Conference", + year = "1975", + pages = "384--393" +} + +@inproceedings{zovake94, + author = "Zone, O. and Vanderstraeten, D. and Keunings, R.", + title = "Un solveur direct parall\`ele bas\'e sur une d\'ecomposition de domaine appliqu\'e aux probl\`emes d'\'el\'ements finis", + booktitle = "Actes des 6\/${}^{\grave{e}mes}$ Rencontres Francophones du Parall\'elisme, RenPar'6, Lyon", + pages = "113--118", + year = "1994", + month = jun, + organization = "ENS Lyon" +} Binary files /tmp/tmpp961_B/2VrPdjj9Sm/scotch-6.0.4.dfsg1/doc/src/scotch/scotch_logo_color.gif and /tmp/tmpp961_B/UYzcEkJWzG/scotch-6.0.6/doc/src/scotch/scotch_logo_color.gif differ diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_c.tex scotch-6.0.6/doc/src/scotch/s_c.tex --- scotch-6.0.4.dfsg1/doc/src/scotch/s_c.tex 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_c.tex 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,96 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Titre : s_c.tex % +% Sujet : Manuel de l'utilisateur % +% du projet 'Scotch' % +% Changes % +% Auteur : Francois Pellegrini % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Updates} +\label{sec-changes} + +\subsection{Changes in version 6.0 from version 5.1} + +The new \texttt{sub} abstract target architecture allows one to map a +graph onto a subset of any given target architecture (including +another \texttt{sub} architecture). This feature is meant to perform +mappings onto potentially disconnected subsets of a parallel machine, +e.g. the set of nodes assigned by a batch scheduler; see +Section~\ref{sec-lib-arch-sub}, page~\pageref{sec-lib-arch-sub} for +further information. +Also, in order to allow decomposition-defined architectures to +scale-up to the sizes of modern machines, a new version of the +\texttt{deco} architecture, called \texttt{deco~2}, has been +designed. This target architecture can be created using the +\texttt{SCOTCH\_\lbt arch\lbt Build2} routine; see +Section~\ref{sec-lib-arch-build-two}, +page~\pageref{sec-lib-arch-build-two} for further information. +For further information on the rationale and implementation of these +two features, please refer to~\cite{pellegrini:hal-01671156}. + +Direct k-way graph partitioning and static mapping methods are now +available. They are less expensive than the classical dual recursive +bipartitioning scheme, and improve quality on average for numbers of +parts above a few hundreds. Another new method aims at reducing load +imbalance in the case of source graphs with highly irregular vertex +weights; see Section~\ref{sec-algo-map-methods}, +page~\pageref{sec-algo-map-methods}. Users willing to keep using the +old recursive bipartitioning strategies of the \textsc{5.x} branch can +create default strategies with the \texttt{SCOTCH\_\lbt STRATRECURSIVE} +flag set, in addition to other flags; see +Section~\ref{sec-lib-format-strat-default}, +page~\pageref{sec-lib-format-strat-default} for further information. + +Graph repartitioning and static re-mapping features are now available; +see Sections~\ref{sec-lib-func-graphmapfixed} +to~\ref{sec-lib-func-graphremapfixed}, starting from +page~\pageref{sec-lib-func-graphmapfixed}. + +The clustering capabilities of \scotch\ can be used more easily from +the command line and library calls~; see Section~\ref{sec-prog-gmap} +and Section~\ref{sec-lib-func-stratgraphclusterbuild}. + +A new set of routines has been created in order to compute +vertex-separated, k-way partitions, that balance the loads of the +parts and of the separator vertices that surround them; see +Sections~\ref{sec-lib-format-part-ovl} +and~\ref{sec-lib-func-graphpartovl}. + +A new labeled tree-leaf architecture has been created, for nodes that +label cores in non increasing order. See +Section~\ref{sec-file-target-algo}, +page~\pageref{sec-file-target-algo} for the description of the +\texttt{ltleaf} target architecture. + +Memory footprint measurement routines are now available to users; +see Section~\ref{sec-lib-misc}, page~\pageref{sec-lib-misc}. + +Key algorithms are now multi-threaded. See the installation file +\texttt{INSTALL.txt} in the main directory for instructions on how to +compile \scotch\ with thread support enabled. + +A method for computing independently orderings on connected components +of a graph is now available; see Section~\ref{sec-lib-format-ord}, +page~\pageref{sec-lib-format-ord}, and the \texttt{SCOTCH\_\lbt +STRAT\lbt DISCON\lbt NECTED} flag in +Section~\ref{sec-lib-format-strat-default}, +page~\pageref{sec-lib-format-strat-default}. + +\subsection{Changes in version 5.1 from version 5.0} + +A new integer index type has been created in the Fortran interface, to +address array indices larger than the maximum value which can be +stored in a regular integer. Please refer to +Section~\ref{sec-install-inttypesize} for more information. + +A new set of routines has been designed, to ease the use of the +\libscotch\ as a dynamic library. The \texttt{SCOTCH\_\lbt version} +routine returns the version, release and patch level numbers of the +library being used. The \texttt{SCOTCH\_\lbt *Alloc} routines, +which are only available in the C interface at the time being, +dynamically allocate storage space for the opaque API +\scotch\ structures, which frees application programs from the need +to be systematically recompiled because of possible changes of +\scotch\ structure sizes. diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_d.tex scotch-6.0.6/doc/src/scotch/s_d.tex --- scotch-6.0.4.dfsg1/doc/src/scotch/s_d.tex 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_d.tex 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,104 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Titre : s_d.tex % +% Sujet : Manuel de l'utilisateur % +% du projet 'Scotch' % +% Distribution programmes % +% Auteur : Francois Pellegrini % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Installation} +\label{sec-install} + +Version {\sc \scotchver} of the \scotch\ software package is +distributed as free/libre software under the CeCILL-C free/libre +software license~\cite{cecill}, which is very similar to the GNU LGPL +license. Therefore, it is no longer distributed as a set of binaries, +but instead in the form of a source distribution, which can be +downloaded from the \scotch\ web page at +\url{http://www.labri.fr/~pelegrin/scotch/}~. +\\ + +All \scotch\ users are welcome to send an e-mail to the author so that +they can be added to the \scotch\ mailing list, and be automatically +informed of new releases and publications. +\\ + +The extraction process will create a {\tt scotch\_\scotchversub} +directory, containing several subdirectories and files. Please refer +to the files called {\tt LICENSE\_\lbt EN.txt} or +{\tt LICENCE\_\lbt FR.txt}, as well as file +{\tt INSTALL\_\lbt EN.txt}, to see under which conditions your +distribution of \scotch\ is licensed and how to install it. + +\subsection{Thread issues} + +To enable the use of POSIX threads in some routines, the {\tt +SCOTCH\_\lbt PTHREAD} flag must be set. If your MPI implementation is +not thread-safe, make sure this flag is not defined at compile time. + +\subsection{File compression issues} + +To enable on-the-fly compression and decompression of various formats, +the relevant flags must be defined. These flags are {\tt COMMON\_\lbt +FILE\_\lbt COMPRESS\_\lbt BZ2} for {\tt bzip2} (de)compression, {\tt +COMMON\_\lbt FILE\_\lbt COMPRESS\_\lbt GZ} for {\tt gzip} +(de)compression, and {\tt COMMON\_\lbt FILE\_\lbt COMPRESS\_\lbt LZMA} +for {\tt lzma} decompression. Note that the corresponding +development libraries must be installed on your system before compile +time, and that compressed file handling can take place only on systems +which support multi-threading or multi-processing. In the first case, +you must set the {\tt SCOTCH\_\lbt PTHREAD} flag in order to take +advantage of these features. + +On Linux systems, the development libraries to install are {\tt +libbzip2\_1-\lbt devel} for the {\tt bzip2} format, {\tt zlib1-\lbt +devel} for the {\tt gzip} format, and {\tt liblzma0-\lbt devel} for +the {\tt lzma} format. The names of the libraries may vary according +to operating systems and library versions. Ask your system engineer in +case of trouble. + +\subsection{Machine word size issues} +\label{sec-install-inttypesize} + +The integer values handled by \scotch\ are based on the +{\tt SCOTCH\_\lbt Num} type, which equates by default to the {\tt int} +C type, corresponding to the {\tt INTEGER} Fortran type, both of which +being of machine word size. To coerce the length of the +{\tt SCOTCH\_\lbt Num} integer type to 32 or 64 bits, one can use the +``{\tt -DINTSIZE32}'' or ``{\tt -DINTSIZE64}'' flags, respectively, or +else use the ``{\tt -DINT=}'' definition, at compile time. For +instance, adding ``{\tt -DINT=long}'' to the {\tt CFLAGS} variable in +the {\tt Makefile.inc} file to be placed at the root of the source +tree will make all {\tt SCOTCH\_\lbt Num} integers become {\tt long} C +integers. + +Whenever doing so, make sure to use integer types of equivalent length +to declare variables passed to \scotch\ routines from caller C and +Fortran procedures. Also, because of API conflicts, the +\metis\ compatibility library will not be usable. It is usually safer +and cleaner to tune your C and Fortran compilers to make them +interpret {\tt int} and {\tt INTEGER} types as 32 or 64 bit values, +than to use the aforementioned flags and coerce type lengths in your +own code. + +Fortran users also have to take care of another size issue: since +there are no pointers in Fortran~77, the Fortran interface of some +routines converts pointers to be returned into integer indices with +respect to a given array (e.g. see +sections~\ref{sec-lib-func-graphdata}, +\ref{sec-lib-func-meshdata} +and~\ref{sec-lib-func-geomdata}). +For 32\_64 architectures, such indices can be larger than the size of +a regular {\tt INTEGER}. This is why the indices to be returned are +defined by means of a specific integer type, {\tt SCOTCH\_Idx}. To +coerce the length of this index type to 32 or 64 bits, one can use the +``{\tt -DIDXSIZE32}'' or ``{\tt -DIDXSIZE64}'' flags, respectively, or +else use the ``{\tt -DIDX=}'' definition, at compile time. For +instance, adding ``{\tt -DIDX="long~long"}'' to the {\tt CFLAGS} +variable in the {\tt Makefile.inc} file to be placed at the root of +the source tree will equate all {\tt SCOTCH\_\lbt Idx} integers to +C {\tt long long} integers. By default, when the size of +{\tt SCOTCH\_\lbt Idx} is not explicitly defined, it is assumed to be +the same as the size of {\tt SCOTCH\_\lbt Num}. diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_e.tex scotch-6.0.6/doc/src/scotch/s_e.tex --- scotch-6.0.4.dfsg1/doc/src/scotch/s_e.tex 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_e.tex 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,176 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Titre : s_e.tex % +% Sujet : Manuel de l'utilisateur % +% du projet 'Scotch' % +% Exemples d'utilisation % +% Auteur : Francois Pellegrini % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Examples} +\label{sec-examples} + +This section contains chosen examples destined to show how the programs +of the \scotch\ project interoperate and can be combined. +It is supposed that the current directory is directory +``{\tt scotch\_\scotchver}'' of the \scotch\ distribution. +Character ``{\tt\bf \%}'' represents the shell prompt. +\begin{itemize} +\item +Partition source graph {\tt brol.grf} into $7$ parts, and save the +result to file {\tt /tmp/brol.map}. +\\ + +\noi +{\tt +{\bf\%} echo cmplt 7 > /tmp/k7.tgt\\ +{\bf\%} gmap brol.grf /tmp/k7.tgt /tmp/brol.map +} +\spa + +\noi +This can also be done in a single piped command: + +{\tt {\bf\%} echo cmplt 7 | gmap brol.grf - /tmp/brol.map} +\spa + +\noi +If compressed data handling is enabled, read the graph as a {\tt gzip} +compressed file, and output the mapping as a {\tt bzip2} file, on the fly: + +{\tt {\bf\%} echo cmplt 7 | gmap brol.grf.gz - /tmp/brol.map.bz2} +\item +Partition source graph {\tt brol.grf} into two uneven parts of +respective weights $\frac{4}{11}$ and $\frac{7}{11}$, and save +the result to file {\tt /tmp/brol.map}. +\\ + +\noi +{\tt +{\bf\%} echo cmpltw 2 4 7 > /tmp/k2w.tgt\\ +{\bf\%} gmap brol.grf /tmp/k2w.tgt /tmp/brol.map +} +\spa + +\noi +This can also be done in a single piped command: + +{\tt {\bf\%} echo cmpltw 2 4 7 | gmap brol.grf - /tmp/brol.map} +\spa + +\noi +If compressed data handling is enabled, use {\tt gzip} compressed +streams on the fly: + +{\tt {\bf\%} echo cmpltw 2 4 7 | gmap brol.grf.gz - /tmp/brol.map.gz} +\item +Map a 32 by 32 bidimensional grid source graph onto a 256-node hypercube, and +save the result to file {\tt /tmp/brol.map}. +\\ + +\noi +{\tt {\bf\%} gmk\_m2 32 32 | gmap - tgt/h8.tgt /tmp/brol.map} +\item +Build the {\sc Open Inventor} file {\tt graph.iv} that contains +the display of a source graph the source and geometry files of which +are named {\tt graph.grf} and {\tt graph.xyz}. +\\ + +\noi +{\tt {\bf\%} gout -Mn -Oi graph.grf graph.xyz - graph.iv} +\spa + +\noi +Although no mapping data is required because of the ``{\tt -Mn}'' option, +note the presence of the dummy input mapping file name ``{\tt -}'', which is +needed to specify the output visualization file name. +\item +Given the source and geometry files {\tt graph.grf} and {\tt graph.xyz} of +a source graph, map the graph on a 8 by 8 bidimensional mesh and display +the mapping result on a color screen by means of the public-domain +{\tt ghostview} PostScript previewer. +\\ + +\noi +{\tt {\bf\%} gmap graph.grf tgt/m8x8.tgt | gout graph.grf graph.xyz '-Op\{c,f,l\}' | ghostview -} +\item +Build a 24-node Cube-Connected-Cycles graph target architecture which will be +frequently used. Then, map compressed source file {\tt graph.grf.gz} onto it, +and save the result to file {\tt /tmp/brol.map}. +\\ + +\noi +{\tt +{\bf\%} amk\_ccc 3 | acpl - /tmp/ccc3.tgt\\ +{\bf\%} gunzip -c graph.grf.gz | gmap - /tmp/ccc3.tgt /tmp/brol.map +} +\spa + +\noi +To speed up target architecture loading in the future, the +decomposition-defined target architecture is compiled by means of {\tt acpl}. +\item +Build an architecture graph which is the subgraph of the $8$-node de~Bruijn +graph restricted to vertices labeled $1$, $2$, $4$, $5$, $6$, map graph +{\tt graph.grf} onto it, and save the result to file {\tt /tmp/brol.map}. +\\ + +\noi +{\tt +{\bf\%} (gmk\_ub2 3; echo 5 1 2 4 5 6) | amk\_grf -L | +gmap graph.grf - /tmp/brol.map} +\spa + +\noi +Note how the two input streams of program {\tt amk\_grf} (that is, the +de~Bruijn source graph and the five-elements vertex label list) are +concatenated into a single stream to be read from the standard input. +%% \item +%% Output the pattern of the adjacency matrix associated with graph +%% {\tt graph.grf.gz} to the encapsulated PostScript file {\tt graph.pattern.ps}. +%% \\ + +%% \noi +%% {\tt +%% {\bf\%} gunzip -c graph.grf.gz | gout - - - -Gn -Mn '-Om\{e\}' graph.pattern.ps} +%% \item +%% Output the pattern of the factored reordered matrix associated with graph +%% {\tt graph.grf} to the encapsulated PostScript file {\tt graph\_\lbt pattern.ps}. +%% \\ + +%% \noi +%% {\tt +%% {\bf\%} gord graph.grf -F- /dev/null | gout graph.grf - - -Gn -Mn '-Om\{e\}' graph\_\lbt pattern.ps} +\item +Compile and link the user application {\tt brol.c} with the \libscotch\ library, +using the default error handler. +\\ + +\noi +{\tt +{\bf\%} cc brol.c -o brol -lscotch -lscotcherr -lm} +\spa + +\noi +Note that the mathematical library should also be included, after +all of the \scotch\ libraries. +\item +Recompile a program that used \metis\ so that it uses \scotch\ instead. +\\ + +\noi +{\tt +{\bf\%} cc brol.c -o brol -I\$\{metisdir\} -lscotchmetis -lscotch -lscotcherr -lmetis -lm} +\spa + +\noi +Note that the ``{\tt -lscotch\lbt metis}'' option must be placed before the +``{\tt -lmetis}'' one, so that routines that are redefined by \scotch\ are +selected instead of their \metis\ counterpart. When no other +\metis\ routines than the ones redefined by \scotch\ are used, the +``{\tt -lmetis}'' option can be omitted. The ``{\tt -I\$\{metisdir\}}'' +option may be necessary to provide the path to the original {\tt metis.h} +include file, which contains the prototypes of all of the \metis\ routines. + +\end{itemize} diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_d.eps scotch-6.0.6/doc/src/scotch/s_f_d.eps --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_d.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_d.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,314 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: stdin +%%Creator: fig2dev Version 3.2 Patchlevel 3c +%%CreationDate: Wed May 16 15:53:25 2001 +%%For: pelegrin@trol.labri.fr (Francois PELLEGRINI) +%%BoundingBox: 0 0 216 212 +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 212 moveto 0 0 lineto 216 0 lineto 216 212 lineto closepath clip newpath +-66.0 264.0 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawSplineSection { + /y3 exch def + /x3 exch def + /y2 exch def + /x2 exch def + /y1 exch def + /x1 exch def + /xa x1 x2 x1 sub 0.666667 mul add def + /ya y1 y2 y1 sub 0.666667 mul add def + /xb x3 x2 x3 sub 0.666667 mul add def + /yb y3 y2 y3 sub 0.666667 mul add def + x1 y1 lineto + xa ya xb yb x3 y3 curveto + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +%%Page: 1 1 +10 setmiterlimit + 0.90000 0.90000 sc +% +% Fig objects follow +% +% Polyline +2.000 slw +n 169 249 m + 219 249 l gs col-1 s gr +% Polyline +n 99 219 m + 159 279 l gs col-1 s gr +% Polyline +n 99 219 m + 89 249 l gs col-1 s gr +% Polyline +n 89 249 m + 159 279 l gs col-1 s gr +% Polyline +n 229 219 m + 299 249 l gs col-1 s gr +% Polyline +n 299 249 m + 289 279 l gs col-1 s gr +% Polyline +n 229 219 m + 289 279 l gs col-1 s gr +% Polyline +n 99 219 m + 229 219 l gs col-1 s gr +% Polyline +n 229 219 m + 219 249 l gs col-1 s gr +% Polyline +n 169 249 m + 99 219 l gs col-1 s gr +% Polyline +n 169 249 m + 159 279 l gs col-1 s gr +% Polyline +n 219 249 m + 289 279 l gs col-1 s gr +% Polyline +n 159 279 m + 289 279 l gs col-1 s gr +% Polyline +0.500 slw +n 229 189 m 229 189 l gs col-1 s gr +% Polyline +n 129 94 m 194 74 l + 259 94 l gs col-1 s gr +% Polyline +n 94 134 m 129 114 l + 164 134 l gs col-1 s gr +% Polyline +n 89 174 m 94 154 l + 99 174 l gs col-1 s gr +% Polyline +n 159 174 m 164 154 l + 169 174 l gs col-1 s gr +% Polyline +n 219 174 m 224 154 l + 289 174 l gs col-1 s gr +% Polyline +n 229 174 m 294 154 l + 299 174 l gs col-1 s gr +% Polyline +n 224 134 m 259 114 l + 294 134 l gs col-1 s gr +/Times-Roman ff 16.00 scf sf +189 69 m +gs 1 -1 sc (1) col-1 sh gr +/Times-Roman ff 16.00 scf sf +89 149 m +gs 1 -1 sc (7) col-1 sh gr +/Times-Roman ff 16.00 scf sf +124 109 m +gs 1 -1 sc (3) col-1 sh gr +/Times-Roman ff 16.00 scf sf +159 149 m +gs 1 -1 sc (6) col-1 sh gr +/Times-Roman ff 16.00 scf sf +144 189 m +gs 1 -1 sc (12) col-1 sh gr +/Times-Roman ff 16.00 scf sf +169 189 m +gs 1 -1 sc (13) col-1 sh gr +/Times-Roman ff 16.00 scf sf +214 189 m +gs 1 -1 sc (9) col-1 sh gr +/Times-Roman ff 16.00 scf sf +229 189 m +gs 1 -1 sc (11) col-1 sh gr +/Times-Roman ff 16.00 scf sf +284 189 m +gs 1 -1 sc (8) col-1 sh gr +/Times-Roman ff 16.00 scf sf +299 189 m +gs 1 -1 sc (10) col-1 sh gr +/Times-Roman ff 16.00 scf sf +289 149 m +gs 1 -1 sc (5) col-1 sh gr +/Times-Roman ff 16.00 scf sf +219 149 m +gs 1 -1 sc (4) col-1 sh gr +/Times-Roman ff 16.00 scf sf +254 109 m +gs 1 -1 sc (2) col-1 sh gr +/Times-Roman ff 16.00 scf sf +99 189 m +gs 1 -1 sc (14) col-1 sh gr +/Times-Roman ff 16.00 scf sf +74 189 m +gs 1 -1 sc (15) col-1 sh gr +% Polyline + [1 3] 3 sd +n 219 249 m + 219 194 l gs col-1 s gr [] 0 sd +% Polyline + [1 3] 3 sd +n 229 219 m + 229 194 l gs col-1 s gr [] 0 sd +% Polyline + [1 3] 3 sd +n 299 249 m + 299 194 l gs col-1 s gr [] 0 sd +% Polyline + [1 3] 3 sd +n 169 249 m + 169 194 l gs col-1 s gr [] 0 sd +% Polyline + [1 3] 3 sd +n 159 274 m + 159 194 l gs col-1 s gr [] 0 sd +% Polyline + [1 3] 3 sd +n 99 219 m + 99 194 l gs col-1 s gr [] 0 sd +% Polyline + [1 3] 3 sd +n 89 249 m + 89 194 l gs col-1 s gr [] 0 sd +% Polyline + [1 3] 3 sd +n 289 279 m + 289 194 l gs col-1 s gr [] 0 sd +% Closed spline +gs n 151.5 281.5 m + 151.5 281.5 149.0 274.0 154.0 259.0 DrawSplineSection + 154.0 259.0 159.0 244.0 166.5 241.5 DrawSplineSection + 166.5 241.5 174.0 239.0 176.5 246.5 DrawSplineSection + 176.5 246.5 179.0 254.0 174.0 269.0 DrawSplineSection + 174.0 269.0 169.0 284.0 161.5 286.5 DrawSplineSection + 161.5 286.5 154.0 289.0 151.5 281.5 DrawSplineSection closepath gs col-1 s gr + gr + +% Closed spline +gs n 81.5 251.5 m + 81.5 251.5 79.0 244.0 84.0 229.0 DrawSplineSection + 84.0 229.0 89.0 214.0 96.5 211.5 DrawSplineSection + 96.5 211.5 104.0 209.0 106.5 216.5 DrawSplineSection + 106.5 216.5 109.0 224.0 104.0 239.0 DrawSplineSection + 104.0 239.0 99.0 254.0 91.5 256.5 DrawSplineSection + 91.5 256.5 84.0 259.0 81.5 251.5 DrawSplineSection closepath gs col-1 s gr + gr + +% Closed spline +gs n 269.0 219.0 m + 269.0 219.0 304.0 234.0 309.0 244.0 DrawSplineSection + 309.0 244.0 314.0 254.0 309.0 269.0 DrawSplineSection + 309.0 269.0 304.0 284.0 294.0 289.0 DrawSplineSection + 294.0 289.0 284.0 294.0 249.0 279.0 DrawSplineSection + 249.0 279.0 214.0 264.0 209.0 254.0 DrawSplineSection + 209.0 254.0 204.0 244.0 209.0 229.0 DrawSplineSection + 209.0 229.0 214.0 214.0 224.0 209.0 DrawSplineSection + 224.0 209.0 234.0 204.0 269.0 219.0 DrawSplineSection closepath gs col-1 s gr + gr + +% Closed spline +gs n 139.0 219.0 m + 139.0 219.0 174.0 234.0 179.0 244.0 DrawSplineSection + 179.0 244.0 184.0 254.0 179.0 269.0 DrawSplineSection + 179.0 269.0 174.0 284.0 164.0 289.0 DrawSplineSection + 164.0 289.0 154.0 294.0 119.0 279.0 DrawSplineSection + 119.0 279.0 84.0 264.0 79.0 254.0 DrawSplineSection + 79.0 254.0 74.0 244.0 79.0 229.0 DrawSplineSection + 79.0 229.0 84.0 214.0 94.0 209.0 DrawSplineSection + 94.0 209.0 104.0 204.0 139.0 219.0 DrawSplineSection closepath gs col-1 s gr + gr + +% Closed spline +gs n 226.5 211.5 m + 226.5 211.5 219.0 214.0 221.5 221.5 DrawSplineSection + 221.5 221.5 224.0 229.0 259.0 244.0 DrawSplineSection + 259.0 244.0 294.0 259.0 301.5 256.5 DrawSplineSection + 301.5 256.5 309.0 254.0 306.5 246.5 DrawSplineSection + 306.5 246.5 304.0 239.0 269.0 224.0 DrawSplineSection + 269.0 224.0 234.0 209.0 226.5 211.5 DrawSplineSection closepath gs col-1 s gr + gr + +% Closed spline +gs n 216.5 241.5 m + 216.5 241.5 209.0 244.0 211.5 251.5 DrawSplineSection + 211.5 251.5 214.0 259.0 249.0 274.0 DrawSplineSection + 249.0 274.0 284.0 289.0 291.5 286.5 DrawSplineSection + 291.5 286.5 299.0 284.0 299.0 279.0 DrawSplineSection + 299.0 279.0 299.0 274.0 261.5 256.5 DrawSplineSection + 261.5 256.5 224.0 239.0 216.5 241.5 DrawSplineSection closepath gs col-1 s gr + gr + +$F2psEnd +rs diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_d.fig scotch-6.0.6/doc/src/scotch/s_f_d.fig --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_d.fig 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_d.fig 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,91 @@ +#FIG 2.1 +80 2 +6 84 214 304 284 +2 1 0 3 -1 0 0 0 0.000 7 0 0 + 169 249 219 249 9999 9999 +2 1 0 3 -1 0 0 0 0.000 -1 0 0 + 99 219 159 279 9999 9999 +2 1 0 3 -1 0 0 0 0.000 -1 0 0 + 99 219 89 249 9999 9999 +2 1 0 3 -1 0 0 0 0.000 -1 0 0 + 89 249 159 279 9999 9999 +2 1 0 3 -1 0 0 0 0.000 -1 0 0 + 229 219 299 249 9999 9999 +2 1 0 3 -1 0 0 0 0.000 -1 0 0 + 299 249 289 279 9999 9999 +2 1 0 3 -1 0 0 0 0.000 -1 0 0 + 229 219 289 279 9999 9999 +2 1 0 3 -1 0 0 0 0.000 -1 0 0 + 99 219 229 219 9999 9999 +2 1 0 3 -1 0 0 0 0.000 -1 0 0 + 229 219 219 249 9999 9999 +2 1 0 3 -1 0 0 0 0.000 -1 0 0 + 169 249 99 219 9999 9999 +2 1 0 3 -1 0 0 0 0.000 -1 0 0 + 169 249 159 279 9999 9999 +2 1 0 3 -1 0 0 0 0.000 -1 0 0 + 219 249 289 279 9999 9999 +2 1 0 3 -1 0 0 0 0.000 -1 0 0 + 159 279 289 279 9999 9999 +-6 +6 74 54 314 189 +2 1 2 1 -1 0 0 0 3.000 -1 0 0 + 229 189 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 129 94 194 74 259 94 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 94 134 129 114 164 134 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 89 174 94 154 99 174 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 159 174 164 154 169 174 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 219 174 224 154 289 174 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 229 174 294 154 299 174 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 224 134 259 114 294 134 9999 9999 +4 0 0 16 0 -1 0 0.00000 4 11 8 189 69 1 +4 0 0 16 0 -1 0 0.00000 4 19 7 89 149 7 +4 0 0 16 0 -1 0 0.00000 4 19 7 124 109 3 +4 0 0 16 0 -1 0 0.00000 4 19 7 159 149 6 +4 0 0 16 0 -1 0 0.00000 4 19 14 144 189 12 +4 0 0 16 0 -1 0 0.00000 4 19 14 169 189 13 +4 0 0 16 0 -1 0 0.00000 4 19 7 214 189 9 +4 0 0 16 0 -1 0 0.00000 4 19 14 229 189 11 +4 0 0 16 0 -1 0 0.00000 4 19 7 284 189 8 +4 0 0 16 0 -1 0 0.00000 4 19 14 299 189 10 +4 0 0 16 0 -1 0 0.00000 4 19 7 289 149 5 +4 0 0 16 0 -1 0 0.00000 4 19 7 219 149 4 +4 0 0 16 0 -1 0 0.00000 4 19 7 254 109 2 +4 0 0 16 0 -1 0 0.00000 4 19 14 99 189 14 +4 0 0 16 0 -1 0 0.00000 4 19 14 74 189 15 +-6 +2 1 2 1 -1 0 0 0 3.000 -1 0 0 + 219 249 219 194 9999 9999 +2 1 2 1 -1 0 0 0 3.000 -1 0 0 + 229 219 229 194 9999 9999 +2 1 2 1 -1 0 0 0 3.000 -1 0 0 + 299 249 299 194 9999 9999 +2 1 2 1 -1 0 0 0 3.000 -1 0 0 + 169 249 169 194 9999 9999 +2 1 2 1 -1 0 0 0 3.000 -1 0 0 + 159 274 159 194 9999 9999 +2 1 2 1 -1 0 0 0 3.000 -1 0 0 + 99 219 99 194 9999 9999 +2 1 2 1 -1 0 0 0 3.000 -1 0 0 + 89 249 89 194 9999 9999 +2 1 2 1 -1 0 0 0 3.000 -1 0 0 + 289 279 289 194 9999 9999 +3 1 0 1 -1 0 0 0 0.000 0 0 + 154 289 149 274 159 244 174 239 179 254 169 284 154 289 9999 9999 +3 1 0 1 -1 0 0 0 0.000 0 0 + 84 259 79 244 89 214 104 209 109 224 99 254 84 259 9999 9999 +3 1 0 1 -1 0 0 0 0.000 0 0 + 234 204 304 234 314 254 304 284 284 294 214 264 204 244 214 214 234 204 9999 9999 +3 1 0 1 -1 0 0 0 0.000 0 0 + 104 204 174 234 184 254 174 284 154 294 84 264 74 244 84 214 104 204 9999 9999 +3 1 0 1 -1 0 0 0 0.000 0 0 + 234 209 219 214 224 229 294 259 309 254 304 239 234 209 9999 9999 +3 1 0 1 -1 0 0 0 0.000 0 0 + 224 239 209 244 214 259 284 289 299 284 299 274 224 239 9999 9999 diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_do1.ps scotch-6.0.6/doc/src/scotch/s_f_do1.ps --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_do1.ps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_do1.ps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,196 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ../graph/ar_m8x8.src ../graph/ar_m8x8.xyz - +%%Creator: out (F. Pellegrini, LaBRI, Bordeaux) +%%CreationDate: Wed Nov 2 13:15:44 1994 +%%BoundingBox: 0 0 475 475 +%%Pages: 0 +%%EndComments +/A { arc fill } bind def +/c { setrgbcolor } bind def +/g { setgray } bind def +/L { lineto stroke } bind def +/l { lineto } bind def +/m { moveto } bind def +/n { newpath } bind def +gsave +1 setlinecap +0.007200 0.007200 scale +n 0 0 m 66000 0 l 66000 66000 l 0 66000 l closepath clip +0 g +n 4125 4125 m 4125 12374 L +n 4125 4125 m 12374 4125 L +n 4125 12374 m 4125 20625 L +n 4125 12374 m 12374 12374 L +n 4125 20625 m 4125 28874 L +n 4125 20625 m 12374 20625 L +n 4125 28874 m 4125 37125 L +n 4125 28874 m 12374 28874 L +n 4125 37125 m 4125 45375 L +n 4125 37125 m 12374 37125 L +n 4125 45375 m 4125 53625 L +n 4125 45375 m 12374 45375 L +n 4125 53625 m 4125 61875 L +n 4125 53625 m 12374 53625 L +n 4125 61875 m 12374 61875 L +n 12374 4125 m 12374 12374 L +n 12374 4125 m 20625 4125 L +n 12374 12374 m 12374 20625 L +n 12374 12374 m 20625 12374 L +n 12374 20625 m 12374 28874 L +n 12374 20625 m 20625 20625 L +n 12374 28874 m 12374 37125 L +n 12374 28874 m 20625 28874 L +n 12374 37125 m 12374 45375 L +n 12374 37125 m 20625 37125 L +n 12374 45375 m 12374 53625 L +n 12374 45375 m 20625 45375 L +n 12374 53625 m 12374 61875 L +n 12374 53625 m 20625 53625 L +n 12374 61875 m 20625 61875 L +n 20625 4125 m 20625 12374 L +n 20625 4125 m 28874 4125 L +n 20625 12374 m 20625 20625 L +n 20625 12374 m 28874 12374 L +n 20625 20625 m 20625 28874 L +n 20625 20625 m 28874 20625 L +n 20625 28874 m 20625 37125 L +n 20625 28874 m 28874 28874 L +n 20625 37125 m 20625 45375 L +n 20625 37125 m 28874 37125 L +n 20625 45375 m 20625 53625 L +n 20625 45375 m 28874 45375 L +n 20625 53625 m 20625 61875 L +n 20625 53625 m 28874 53625 L +n 20625 61875 m 28874 61875 L +n 28874 4125 m 28874 12374 L +n 28874 4125 m 37125 4125 L +n 28874 12374 m 28874 20625 L +n 28874 12374 m 37125 12374 L +n 28874 20625 m 28874 28874 L +n 28874 20625 m 37125 20625 L +n 28874 28874 m 28874 37125 L +n 28874 28874 m 37125 28874 L +n 28874 37125 m 28874 45375 L +n 28874 37125 m 37125 37125 L +n 28874 45375 m 28874 53625 L +n 28874 45375 m 37125 45375 L +n 28874 53625 m 28874 61875 L +n 28874 53625 m 37125 53625 L +n 28874 61875 m 37125 61875 L +n 37125 4125 m 37125 12374 L +n 37125 4125 m 45375 4125 L +n 37125 12374 m 37125 20625 L +n 37125 12374 m 45375 12374 L +n 37125 20625 m 37125 28874 L +n 37125 20625 m 45375 20625 L +n 37125 28874 m 37125 37125 L +n 37125 28874 m 45375 28874 L +n 37125 37125 m 37125 45375 L +n 37125 37125 m 45375 37125 L +n 37125 45375 m 37125 53625 L +n 37125 45375 m 45375 45375 L +n 37125 53625 m 37125 61875 L +n 37125 53625 m 45375 53625 L +n 37125 61875 m 45375 61875 L +n 45375 4125 m 45375 12374 L +n 45375 4125 m 53625 4125 L +n 45375 12374 m 45375 20625 L +n 45375 12374 m 53625 12374 L +n 45375 20625 m 45375 28874 L +n 45375 20625 m 53625 20625 L +n 45375 28874 m 45375 37125 L +n 45375 28874 m 53625 28874 L +n 45375 37125 m 45375 45375 L +n 45375 37125 m 53625 37125 L +n 45375 45375 m 45375 53625 L +n 45375 45375 m 53625 45375 L +n 45375 53625 m 45375 61875 L +n 45375 53625 m 53625 53625 L +n 45375 61875 m 53625 61875 L +n 53625 4125 m 53625 12374 L +n 53625 4125 m 61875 4125 L +n 53625 12374 m 53625 20625 L +n 53625 12374 m 61875 12374 L +n 53625 20625 m 53625 28874 L +n 53625 20625 m 61875 20625 L +n 53625 28874 m 53625 37125 L +n 53625 28874 m 61875 28874 L +n 53625 37125 m 53625 45375 L +n 53625 37125 m 61875 37125 L +n 53625 45375 m 53625 53625 L +n 53625 45375 m 61875 45375 L +n 53625 53625 m 53625 61875 L +n 53625 53625 m 61875 53625 L +n 53625 61875 m 61875 61875 L +n 61875 4125 m 61875 12374 L +n 61875 12374 m 61875 20625 L +n 61875 20625 m 61875 28874 L +n 61875 28874 m 61875 37125 L +n 61875 37125 m 61875 45375 L +n 61875 45375 m 61875 53625 L +n 61875 53625 m 61875 61875 L +1 0.5 0.5 c n 4125 4125 4124 0 360 A +1 0.5 0.5 c n 4125 12374 4124 0 360 A +1 0.5 0.5 c n 4125 20625 4124 0 360 A +1 0.5 0.5 c n 4125 28874 4124 0 360 A +1 0.5 0.5 c n 4125 37125 4124 0 360 A +1 0.5 0.5 c n 4125 45375 4124 0 360 A +1 0.5 0.5 c n 4125 53625 4124 0 360 A +1 0.5 0.5 c n 4125 61875 4124 0 360 A +1 0.5 0.5 c n 12374 4125 4124 0 360 A +1 0.5 0.5 c n 12374 12374 4124 0 360 A +1 0.5 0.5 c n 12374 20625 4124 0 360 A +1 0.5 0.5 c n 12374 28874 4124 0 360 A +1 0.5 0.5 c n 12374 37125 4124 0 360 A +1 0.5 0.5 c n 12374 45375 4124 0 360 A +1 0.5 0.5 c n 12374 53625 4124 0 360 A +1 0.5 0.5 c n 12374 61875 4124 0 360 A +1 0.5 0.5 c n 20625 4125 4124 0 360 A +1 0.5 0.5 c n 20625 12374 4124 0 360 A +1 0.5 0.5 c n 20625 20625 4124 0 360 A +1 0.5 0.5 c n 20625 28874 4124 0 360 A +1 0.5 0.5 c n 20625 37125 4124 0 360 A +1 0.5 0.5 c n 20625 45375 4124 0 360 A +1 0.5 0.5 c n 20625 53625 4124 0 360 A +1 0.5 0.5 c n 20625 61875 4124 0 360 A +1 0.5 0.5 c n 28874 4125 4124 0 360 A +1 0.5 0.5 c n 28874 12374 4124 0 360 A +1 0.5 0.5 c n 28874 20625 4124 0 360 A +1 0.5 0.5 c n 28874 28874 4124 0 360 A +1 0.5 0.5 c n 28874 37125 4124 0 360 A +1 0.5 0.5 c n 28874 45375 4124 0 360 A +1 0.5 0.5 c n 28874 53625 4124 0 360 A +1 0.5 0.5 c n 28874 61875 4124 0 360 A +1 0.5 0.5 c n 37125 4125 4124 0 360 A +1 0.5 0.5 c n 37125 12374 4124 0 360 A +1 0.5 0.5 c n 37125 20625 4124 0 360 A +1 0.5 0.5 c n 37125 28874 4124 0 360 A +1 0.5 0.5 c n 37125 37125 4125 0 360 A +1 0.5 0.5 c n 37125 45375 4125 0 360 A +1 0.5 0.5 c n 37125 53625 4125 0 360 A +1 0.5 0.5 c n 37125 61875 4125 0 360 A +0 0 0 c n 45375 4125 4124 0 360 A +0 0 0 c n 45375 12374 4124 0 360 A +0 0 0 c n 45375 20625 4124 0 360 A +0 0 0 c n 45375 28874 4124 0 360 A +1 0.5 0.5 c n 45375 37125 4125 0 360 A +1 0.5 0.5 c n 45375 45375 4125 0 360 A +1 0.5 0.5 c n 45375 53625 4125 0 360 A +1 0.5 0.5 c n 45375 61875 4125 0 360 A +0 0 0 c n 53625 4125 4124 0 360 A +0 0 0 c n 53625 12374 4124 0 360 A +0 0 0 c n 53625 20625 4124 0 360 A +0 0 0 c n 53625 28874 4124 0 360 A +1 0.5 0.5 c n 53625 37125 4125 0 360 A +1 0.5 0.5 c n 53625 45375 4125 0 360 A +1 0.5 0.5 c n 53625 53625 4125 0 360 A +1 0.5 0.5 c n 53625 61875 4125 0 360 A +0 0 0 c n 61875 4125 4124 0 360 A +0 0 0 c n 61875 12374 4124 0 360 A +0 0 0 c n 61875 20625 4124 0 360 A +0 0 0 c n 61875 28874 4124 0 360 A +0 0 0 c n 61875 37125 4125 0 360 A +1 0.5 0.5 c n 61875 45375 4125 0 360 A +1 0.5 0.5 c n 61875 53625 4125 0 360 A +1 0.5 0.5 c n 61875 61875 4125 0 360 A +grestore diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_do2.ps scotch-6.0.6/doc/src/scotch/s_f_do2.ps --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_do2.ps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_do2.ps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,157 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ../graph/ar_m8x8-13.src ../graph/ar_m8x8-13.xyz - +%%Creator: out (F. Pellegrini, LaBRI, Bordeaux) +%%CreationDate: Wed Nov 2 13:57:20 1994 +%%BoundingBox: 0 0 475 475 +%%Pages: 0 +%%EndComments +/A { arc fill } bind def +/c { setrgbcolor } bind def +/g { setgray } bind def +/L { lineto stroke } bind def +/l { lineto } bind def +/m { moveto } bind def +/n { newpath } bind def +gsave +1 setlinecap +0.007200 0.007200 scale +n 0 0 m 66000 0 l 66000 66000 l 0 66000 l closepath clip +0 g +n 4125 4125 m 4125 12374 L +n 4125 4125 m 12374 4125 L +n 4125 12374 m 4125 20625 L +n 4125 12374 m 12374 12374 L +n 4125 20625 m 4125 28874 L +n 4125 20625 m 12374 20625 L +n 4125 28874 m 4125 37125 L +n 4125 28874 m 12374 28874 L +n 4125 37125 m 4125 45375 L +n 4125 37125 m 12374 37125 L +n 4125 45375 m 4125 53625 L +n 4125 45375 m 12374 45375 L +n 4125 53625 m 4125 61875 L +n 4125 53625 m 12374 53625 L +n 4125 61875 m 12374 61875 L +n 12374 4125 m 12374 12374 L +n 12374 4125 m 20625 4125 L +n 12374 12374 m 12374 20625 L +n 12374 12374 m 20625 12374 L +n 12374 20625 m 12374 28874 L +n 12374 20625 m 20625 20625 L +n 12374 28874 m 12374 37125 L +n 12374 28874 m 20625 28874 L +n 12374 37125 m 12374 45375 L +n 12374 37125 m 20625 37125 L +n 12374 45375 m 12374 53625 L +n 12374 45375 m 20625 45375 L +n 12374 53625 m 12374 61875 L +n 12374 53625 m 20625 53625 L +n 12374 61875 m 20625 61875 L +n 20625 4125 m 20625 12374 L +n 20625 4125 m 28874 4125 L +n 20625 12374 m 20625 20625 L +n 20625 12374 m 28874 12374 L +n 20625 20625 m 20625 28874 L +n 20625 20625 m 28874 20625 L +n 20625 28874 m 20625 37125 L +n 20625 28874 m 28874 28874 L +n 20625 37125 m 20625 45375 L +n 20625 37125 m 28874 37125 L +n 20625 45375 m 20625 53625 L +n 20625 45375 m 28874 45375 L +n 20625 53625 m 20625 61875 L +n 20625 53625 m 28874 53625 L +n 20625 61875 m 28874 61875 L +n 28874 4125 m 28874 12374 L +n 28874 4125 m 37125 4125 L +n 28874 12374 m 28874 20625 L +n 28874 12374 m 37125 12374 L +n 28874 20625 m 28874 28874 L +n 28874 20625 m 37125 20625 L +n 28874 28874 m 28874 37125 L +n 28874 28874 m 37125 28874 L +n 28874 37125 m 28874 45375 L +n 28874 37125 m 37125 37125 L +n 28874 45375 m 28874 53625 L +n 28874 45375 m 37125 45375 L +n 28874 53625 m 28874 61875 L +n 28874 53625 m 37125 53625 L +n 28874 61875 m 37125 61875 L +n 37125 4125 m 37125 12374 L +n 37125 12374 m 37125 20625 L +n 37125 20625 m 37125 28874 L +n 37125 28874 m 37125 37125 L +n 37125 37125 m 37125 45375 L +n 37125 37125 m 45375 37125 L +n 37125 45375 m 37125 53625 L +n 37125 45375 m 45375 45375 L +n 37125 53625 m 37125 61875 L +n 37125 53625 m 45375 53625 L +n 37125 61875 m 45375 61875 L +n 45375 37125 m 45375 45375 L +n 45375 37125 m 53625 37125 L +n 45375 45375 m 45375 53625 L +n 45375 45375 m 53625 45375 L +n 45375 53625 m 45375 61875 L +n 45375 53625 m 53625 53625 L +n 45375 61875 m 53625 61875 L +n 53625 37125 m 53625 45375 L +n 53625 45375 m 53625 53625 L +n 53625 45375 m 61875 45375 L +n 53625 53625 m 53625 61875 L +n 53625 53625 m 61875 53625 L +n 53625 61875 m 61875 61875 L +n 61875 45375 m 61875 53625 L +n 61875 53625 m 61875 61875 L +0 0 0 c n 4125 4125 4124 0 360 A +0 0 0 c n 4125 12374 4124 0 360 A +0 0 0 c n 4125 20625 4124 0 360 A +0 0 0 c n 4125 28874 4124 0 360 A +1 0.5 0.5 c n 4125 37125 4124 0 360 A +1 0.5 0.5 c n 4125 45375 4124 0 360 A +1 0.5 0.5 c n 4125 53625 4124 0 360 A +1 0.5 0.5 c n 4125 61875 4124 0 360 A +0 0 0 c n 12374 4125 4124 0 360 A +0 0 0 c n 12374 12374 4124 0 360 A +0 0 0 c n 12374 20625 4124 0 360 A +0 0 0 c n 12374 28874 4124 0 360 A +1 0.5 0.5 c n 12374 37125 4124 0 360 A +1 0.5 0.5 c n 12374 45375 4124 0 360 A +1 0.5 0.5 c n 12374 53625 4124 0 360 A +1 0.5 0.5 c n 12374 61875 4124 0 360 A +0 0 0 c n 20625 4125 4124 0 360 A +0 0 0 c n 20625 12374 4124 0 360 A +0 0 0 c n 20625 20625 4124 0 360 A +1 0.5 0.5 c n 20625 28874 4124 0 360 A +1 0.5 0.5 c n 20625 37125 4124 0 360 A +1 0.5 0.5 c n 20625 45375 4124 0 360 A +1 0.5 0.5 c n 20625 53625 4124 0 360 A +1 0.5 0.5 c n 20625 61875 4124 0 360 A +0 0 0 c n 28874 4125 4124 0 360 A +0 0 0 c n 28874 12374 4124 0 360 A +0 0 0 c n 28874 20625 4124 0 360 A +1 0.5 0.5 c n 28874 28874 4124 0 360 A +1 0.5 0.5 c n 28874 37125 4124 0 360 A +1 0.5 0.5 c n 28874 45375 4124 0 360 A +1 0.5 0.5 c n 28874 53625 4124 0 360 A +1 0.5 0.5 c n 28874 61875 4124 0 360 A +0 0 0 c n 37125 4125 4124 0 360 A +0 0 0 c n 37125 12374 4124 0 360 A +0 0 0 c n 37125 20625 4124 0 360 A +1 0.5 0.5 c n 37125 28874 4124 0 360 A +1 0.5 0.5 c n 37125 37125 4125 0 360 A +1 0.5 0.5 c n 37125 45375 4125 0 360 A +1 0.5 0.5 c n 37125 53625 4125 0 360 A +1 0.5 0.5 c n 37125 61875 4125 0 360 A +1 0.5 0.5 c n 45375 37125 4125 0 360 A +1 0.5 0.5 c n 45375 45375 4125 0 360 A +1 0.5 0.5 c n 45375 53625 4125 0 360 A +1 0.5 0.5 c n 45375 61875 4125 0 360 A +1 0.5 0.5 c n 53625 37125 4125 0 360 A +1 0.5 0.5 c n 53625 45375 4125 0 360 A +1 0.5 0.5 c n 53625 53625 4125 0 360 A +1 0.5 0.5 c n 53625 61875 4125 0 360 A +1 0.5 0.5 c n 61875 45375 4125 0 360 A +1 0.5 0.5 c n 61875 53625 4125 0 360 A +1 0.5 0.5 c n 61875 61875 4125 0 360 A +grestore diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_d.ps scotch-6.0.6/doc/src/scotch/s_f_d.ps --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_d.ps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_d.ps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,225 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: stdin +%%Creator: fig2dev +%%CreationDate: Wed Jul 19 17:06:41 1995 +%%For: pelegrin@firmin (Francois PELLEGRINI) +%%BoundingBox: 0 0 215 210 +%%Pages: 0 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/l {lineto} bind def +/m {moveto} bind def +/s {stroke} bind def +/n {newpath} bind def +/gs {gsave} bind def +/gr {grestore} bind def +/clp {closepath} bind def +/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul +4 -2 roll mul setrgbcolor} bind def +/col-1 {} def +/col0 {0 0 0 setrgbcolor} bind def +/col1 {0 0 1 setrgbcolor} bind def +/col2 {0 1 0 setrgbcolor} bind def +/col3 {0 1 1 setrgbcolor} bind def +/col4 {1 0 0 setrgbcolor} bind def +/col5 {1 0 1 setrgbcolor} bind def +/col6 {1 1 0 setrgbcolor} bind def +/col7 {1 1 1 setrgbcolor} bind def + /DrawSplineSection { + /y3 exch def + /x3 exch def + /y2 exch def + /x2 exch def + /y1 exch def + /x1 exch def + /xa x1 x2 x1 sub 0.666667 mul add def + /ya y1 y2 y1 sub 0.666667 mul add def + /xb x3 x2 x3 sub 0.666667 mul add def + /yb y3 y2 y3 sub 0.666667 mul add def + x1 y1 lineto + xa ya xb yb x3 y3 curveto + } def + + end +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def +%%EndProlog + +$F2psBegin +0 setlinecap 0 setlinejoin +-67.0 263.0 translate 0.900 -0.900 scale +2.000 setlinewidth +% Polyline +n 169 249 m 219 249 l gs col-1 s gr +% Polyline +n 99 219 m 159 279 l gs col-1 s gr +% Polyline +n 99 219 m 89 249 l gs col-1 s gr +% Polyline +n 89 249 m 159 279 l gs col-1 s gr +% Polyline +n 229 219 m 299 249 l gs col-1 s gr +% Polyline +n 299 249 m 289 279 l gs col-1 s gr +% Polyline +n 229 219 m 289 279 l gs col-1 s gr +% Polyline +n 99 219 m 229 219 l gs col-1 s gr +% Polyline +n 229 219 m 219 249 l gs col-1 s gr +% Polyline +n 169 249 m 99 219 l gs col-1 s gr +% Polyline +n 169 249 m 159 279 l gs col-1 s gr +% Polyline +n 219 249 m 289 279 l gs col-1 s gr +% Polyline +n 159 279 m 289 279 l gs col-1 s gr +0.500 setlinewidth +n 229 189 m 229 189 l gs col-1 s gr +% Polyline +n 129 94 m 194 74 l 259 94 l gs col-1 s gr +% Polyline +n 94 134 m 129 114 l 164 134 l gs col-1 s gr +% Polyline +n 89 174 m 94 154 l 99 174 l gs col-1 s gr +% Polyline +n 159 174 m 164 154 l 169 174 l gs col-1 s gr +% Polyline +n 219 174 m 224 154 l 289 174 l gs col-1 s gr +% Polyline +n 229 174 m 294 154 l 299 174 l gs col-1 s gr +% Polyline +n 224 134 m 259 114 l 294 134 l gs col-1 s gr +/Times-Roman findfont 16.00 scalefont setfont +189 69 m +gs 1 -1 scale (1) col-1 show gr +/Times-Roman findfont 16.00 scalefont setfont +89 149 m +gs 1 -1 scale (7) col-1 show gr +/Times-Roman findfont 16.00 scalefont setfont +124 109 m +gs 1 -1 scale (3) col-1 show gr +/Times-Roman findfont 16.00 scalefont setfont +159 149 m +gs 1 -1 scale (6) col-1 show gr +/Times-Roman findfont 16.00 scalefont setfont +144 189 m +gs 1 -1 scale (12) col-1 show gr +/Times-Roman findfont 16.00 scalefont setfont +169 189 m +gs 1 -1 scale (13) col-1 show gr +/Times-Roman findfont 16.00 scalefont setfont +214 189 m +gs 1 -1 scale (9) col-1 show gr +/Times-Roman findfont 16.00 scalefont setfont +229 189 m +gs 1 -1 scale (11) col-1 show gr +/Times-Roman findfont 16.00 scalefont setfont +284 189 m +gs 1 -1 scale (8) col-1 show gr +/Times-Roman findfont 16.00 scalefont setfont +299 189 m +gs 1 -1 scale (10) col-1 show gr +/Times-Roman findfont 16.00 scalefont setfont +289 149 m +gs 1 -1 scale (5) col-1 show gr +/Times-Roman findfont 16.00 scalefont setfont +219 149 m +gs 1 -1 scale (4) col-1 show gr +/Times-Roman findfont 16.00 scalefont setfont +254 109 m +gs 1 -1 scale (2) col-1 show gr +/Times-Roman findfont 16.00 scalefont setfont +99 189 m +gs 1 -1 scale (14) col-1 show gr +/Times-Roman findfont 16.00 scalefont setfont +74 189 m +gs 1 -1 scale (15) col-1 show gr + 1 setlinecap [1 3.000000] 3.000000 setdash +% Polyline +n 219 249 m 219 194 l gs col-1 s gr + [] 0 setdash 0 setlinecap + 1 setlinecap [1 3.000000] 3.000000 setdash +% Polyline +n 229 219 m 229 194 l gs col-1 s gr + [] 0 setdash 0 setlinecap + 1 setlinecap [1 3.000000] 3.000000 setdash +% Polyline +n 299 249 m 299 194 l gs col-1 s gr + [] 0 setdash 0 setlinecap + 1 setlinecap [1 3.000000] 3.000000 setdash +% Polyline +n 169 249 m 169 194 l gs col-1 s gr + [] 0 setdash 0 setlinecap + 1 setlinecap [1 3.000000] 3.000000 setdash +% Polyline +n 159 274 m 159 194 l gs col-1 s gr + [] 0 setdash 0 setlinecap + 1 setlinecap [1 3.000000] 3.000000 setdash +% Polyline +n 99 219 m 99 194 l gs col-1 s gr + [] 0 setdash 0 setlinecap + 1 setlinecap [1 3.000000] 3.000000 setdash +% Polyline +n 89 249 m 89 194 l gs col-1 s gr + [] 0 setdash 0 setlinecap + 1 setlinecap [1 3.000000] 3.000000 setdash +% Polyline +n 289 279 m 289 194 l gs col-1 s gr + [] 0 setdash 0 setlinecap +% Closed spline +n 151.500 281.500 m + 151.500 281.500 149.000 274.000 154.000 259.000 DrawSplineSection + 154.000 259.000 159.000 244.000 166.500 241.500 DrawSplineSection + 166.500 241.500 174.000 239.000 176.500 246.500 DrawSplineSection + 176.500 246.500 179.000 254.000 174.000 269.000 DrawSplineSection + 174.000 269.000 169.000 284.000 161.500 286.500 DrawSplineSection + 161.500 286.500 154.000 289.000 151.500 281.500 DrawSplineSection closepath gs col-1 s gr +% Closed spline +n 81.500 251.500 m + 81.500 251.500 79.000 244.000 84.000 229.000 DrawSplineSection + 84.000 229.000 89.000 214.000 96.500 211.500 DrawSplineSection + 96.500 211.500 104.000 209.000 106.500 216.500 DrawSplineSection + 106.500 216.500 109.000 224.000 104.000 239.000 DrawSplineSection + 104.000 239.000 99.000 254.000 91.500 256.500 DrawSplineSection + 91.500 256.500 84.000 259.000 81.500 251.500 DrawSplineSection closepath gs col-1 s gr +% Closed spline +n 269.000 219.000 m + 269.000 219.000 304.000 234.000 309.000 244.000 DrawSplineSection + 309.000 244.000 314.000 254.000 309.000 269.000 DrawSplineSection + 309.000 269.000 304.000 284.000 294.000 289.000 DrawSplineSection + 294.000 289.000 284.000 294.000 249.000 279.000 DrawSplineSection + 249.000 279.000 214.000 264.000 209.000 254.000 DrawSplineSection + 209.000 254.000 204.000 244.000 209.000 229.000 DrawSplineSection + 209.000 229.000 214.000 214.000 224.000 209.000 DrawSplineSection + 224.000 209.000 234.000 204.000 269.000 219.000 DrawSplineSection closepath gs col-1 s gr +% Closed spline +n 139.000 219.000 m + 139.000 219.000 174.000 234.000 179.000 244.000 DrawSplineSection + 179.000 244.000 184.000 254.000 179.000 269.000 DrawSplineSection + 179.000 269.000 174.000 284.000 164.000 289.000 DrawSplineSection + 164.000 289.000 154.000 294.000 119.000 279.000 DrawSplineSection + 119.000 279.000 84.000 264.000 79.000 254.000 DrawSplineSection + 79.000 254.000 74.000 244.000 79.000 229.000 DrawSplineSection + 79.000 229.000 84.000 214.000 94.000 209.000 DrawSplineSection + 94.000 209.000 104.000 204.000 139.000 219.000 DrawSplineSection closepath gs col-1 s gr +% Closed spline +n 226.500 211.500 m + 226.500 211.500 219.000 214.000 221.500 221.500 DrawSplineSection + 221.500 221.500 224.000 229.000 259.000 244.000 DrawSplineSection + 259.000 244.000 294.000 259.000 301.500 256.500 DrawSplineSection + 301.500 256.500 309.000 254.000 306.500 246.500 DrawSplineSection + 306.500 246.500 304.000 239.000 269.000 224.000 DrawSplineSection + 269.000 224.000 234.000 209.000 226.500 211.500 DrawSplineSection closepath gs col-1 s gr +% Closed spline +n 216.500 241.500 m + 216.500 241.500 209.000 244.000 211.500 251.500 DrawSplineSection + 211.500 251.500 214.000 259.000 249.000 274.000 DrawSplineSection + 249.000 274.000 284.000 289.000 291.500 286.500 DrawSplineSection + 291.500 286.500 299.000 284.000 299.000 279.000 DrawSplineSection + 299.000 279.000 299.000 274.000 261.500 256.500 DrawSplineSection + 261.500 256.500 224.000 239.000 216.500 241.500 DrawSplineSection closepath gs col-1 s gr +$F2psEnd diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_gr1.eps scotch-6.0.6/doc/src/scotch/s_f_gr1.eps --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_gr1.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_gr1.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,763 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: stdin +%%Creator: fig2dev Version 3.2 Patchlevel 4 +%%CreationDate: Tue Nov 4 10:38:33 2003 +%%For: pelegrin@brol.labri.fr (Francois PELLEGRINI) +%%BoundingBox: 0 0 523 362 +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 362 moveto 0 0 lineto 523 0 lineto 523 362 lineto closepath clip newpath +-36.0 396.7 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +% +% Fig objects follow +% +% +% here starts figure with depth 20 +% Polyline +7.500 slw +n 7125 3150 m 8625 3150 l 7725 1950 l 8925 1950 l + 8625 1050 l gs col0 s gr +% Polyline +n 6525 1950 m 7425 750 l 7725 1950 l 6525 1950 l 7125 3150 l 7725 1950 l + 8625 1050 l + 7425 750 l gs col0 s gr +% Polyline +n 8925 1950 m + 8625 3150 l gs col0 s gr +/Courier ff 240.00 scf sf +600 825 m +gs 1 -1 sc (baseval) col0 sh gr +% Polyline + [15 45] 45 sd +n 1800 2400 m 2100 2400 l 2100 2700 l 1800 2700 l + cp gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2100 2400 m + 1800 2700 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1800 2400 m + 2100 2700 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 9000 5550 m 9300 5550 l 9300 5850 l 9000 5850 l + cp gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 9300 5550 m + 9000 5850 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 9000 5550 m + 9300 5850 l gs col0 s gr [] 0 sd +% Polyline +gs clippath +9120 5565 m 9180 5565 l 9180 5414 l 9150 5534 l 9120 5414 l cp +eoclip +n 4050 4500 m 4050 4800 l 9150 4800 l + 9150 5550 l gs col0 s gr gr + +% arrowhead +n 9120 5414 m 9150 5534 l 9180 5414 l 9120 5414 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +8220 5565 m 8280 5565 l 8280 5414 l 8250 5534 l 8220 5414 l cp +eoclip +n 3750 4500 m 3750 4875 l 8250 4875 l + 8250 5550 l gs col0 s gr gr + +% arrowhead +n 8220 5414 m 8250 5534 l 8280 5414 l 8220 5414 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +7320 5565 m 7380 5565 l 7380 5414 l 7350 5534 l 7320 5414 l cp +eoclip +n 3450 4500 m 3450 4950 l 7350 4950 l + 7350 5550 l gs col0 s gr gr + +% arrowhead +n 7320 5414 m 7350 5534 l 7380 5414 l 7320 5414 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6420 5565 m 6480 5565 l 6480 5414 l 6450 5534 l 6420 5414 l cp +eoclip +n 3150 4500 m 3150 5025 l 6450 5025 l + 6450 5550 l gs col0 s gr gr + +% arrowhead +n 6420 5414 m 6450 5534 l 6480 5414 l 6420 5414 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +5520 5565 m 5580 5565 l 5580 5414 l 5550 5534 l 5520 5414 l cp +eoclip +n 2850 4500 m 2850 5100 l 5550 5100 l + 5550 5550 l gs col0 s gr gr + +% arrowhead +n 5520 5414 m 5550 5534 l 5580 5414 l 5520 5414 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4620 5565 m 4680 5565 l 4680 5414 l 4650 5534 l 4620 5414 l cp +eoclip +n 2550 4500 m 2550 5175 l 4650 5175 l + 4650 5550 l gs col0 s gr gr + +% arrowhead +n 4620 5414 m 4650 5534 l 4680 5414 l 4620 5414 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +2820 5565 m 2880 5565 l 2880 5414 l 2850 5534 l 2820 5414 l cp +eoclip +n 2250 4500 m 2250 5250 l 2850 5250 l + 2850 5550 l gs col0 s gr gr + +% arrowhead +n 2820 5414 m 2850 5534 l 2880 5414 l 2820 5414 l cp gs 0.00 setgray ef gr col0 s +/Courier ff 240.00 scf sf +600 1425 m +gs 1 -1 sc (vertnbr) col0 sh gr +/Courier ff 240.00 scf sf +600 2025 m +gs 1 -1 sc (edgenbr) col0 sh gr +/Courier ff 240.00 scf sf +600 2625 m +gs 1 -1 sc (vlbltab) col0 sh gr +/Courier ff 240.00 scf sf +600 4425 m +gs 1 -1 sc (verttab) col0 sh gr +/Courier ff 240.00 scf sf +600 5775 m +gs 1 -1 sc (edgetab) col0 sh gr +/Courier ff 240.00 scf sf +600 6525 m +gs 1 -1 sc (edlotab) col0 sh gr +/Courier ff 240.00 scf sf +600 3225 m +gs 1 -1 sc (velotab) col0 sh gr +/Courier ff 240.00 scf sf +600 3825 m +gs 1 -1 sc (vendtab) col0 sh gr +% here ends figure; +% +% here starts figure with depth 15 +% Polyline +7.500 slw +n 1800 600 m 2100 600 l 2100 900 l 1800 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 1800 m 2100 1800 l 2100 2100 l 1800 2100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +1825 2040 m +gs 1 -1 sc (24) col0 sh gr +% Polyline +n 1800 1200 m 2100 1200 l 2100 1500 l 1800 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2100 4200 m 2400 4200 l 2400 4500 l 2100 4500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2200 4440 m +gs 1 -1 sc (4) col0 sh gr +% Polyline +n 2400 4200 m 2700 4200 l 2700 4500 l 2400 4500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2425 4440 m +gs 1 -1 sc (10) col0 sh gr +% Polyline +n 2700 4200 m 3000 4200 l 3000 4500 l 2700 4500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2725 4440 m +gs 1 -1 sc (13) col0 sh gr +% Polyline +n 3000 4200 m 3300 4200 l 3300 4500 l 3000 4500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3025 4440 m +gs 1 -1 sc (16) col0 sh gr +% Polyline +n 3300 4200 m 3600 4200 l 3600 4500 l 3300 4500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3325 4440 m +gs 1 -1 sc (19) col0 sh gr +% Polyline +n 3600 4200 m 3900 4200 l 3900 4500 l 3600 4500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3625 4440 m +gs 1 -1 sc (22) col0 sh gr +% Polyline +n 1800 4200 m 2100 4200 l 2100 4500 l 1800 4500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3900 4200 m 4200 4200 l 4200 4500 l 3900 4500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3925 4440 m +gs 1 -1 sc (25) col0 sh gr +% Polyline +n 2100 5550 m 2400 5550 l 2400 5850 l 2100 5850 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 5550 m 2700 5550 l 2700 5850 l 2400 5850 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 5550 m 3000 5550 l 3000 5850 l 2700 5850 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 5550 m 3300 5550 l 3300 5850 l 3000 5850 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3300 5550 m 3600 5550 l 3600 5850 l 3300 5850 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3600 5550 m 3900 5550 l 3900 5850 l 3600 5850 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3900 5550 m 4200 5550 l 4200 5850 l 3900 5850 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4200 5550 m 4500 5550 l 4500 5850 l 4200 5850 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4500 5550 m 4800 5550 l 4800 5850 l 4500 5850 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4800 5550 m 5100 5550 l 5100 5850 l 4800 5850 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5100 5550 m 5400 5550 l 5400 5850 l 5100 5850 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5400 5550 m 5700 5550 l 5700 5850 l 5400 5850 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5700 5550 m 6000 5550 l 6000 5850 l 5700 5850 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6000 5550 m 6300 5550 l 6300 5850 l 6000 5850 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6300 5550 m 6600 5550 l 6600 5850 l 6300 5850 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6600 5550 m 6900 5550 l 6900 5850 l 6600 5850 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6900 5550 m 7200 5550 l 7200 5850 l 6900 5850 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7200 5550 m 7500 5550 l 7500 5850 l 7200 5850 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7500 5550 m 7800 5550 l 7800 5850 l 7500 5850 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7800 5550 m 8100 5550 l 8100 5850 l 7800 5850 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8100 5550 m 8400 5550 l 8400 5850 l 8100 5850 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8400 5550 m 8700 5550 l 8700 5850 l 8400 5850 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8700 5550 m 9000 5550 l 9000 5850 l 8700 5850 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 5550 m 2100 5550 l 2100 5850 l 1800 5850 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 6300 m 2100 6300 l 2100 6600 l 1800 6600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2100 6300 m 2400 6300 l 2400 6600 l 2100 6600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 6300 m 2700 6300 l 2700 6600 l 2400 6600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3300 6300 m 3600 6300 l 3600 6600 l 3300 6600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 6300 m 3000 6300 l 3000 6600 l 2700 6600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 6300 m 3300 6300 l 3300 6600 l 3000 6600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3600 6300 m 3900 6300 l 3900 6600 l 3600 6600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3900 6300 m 4200 6300 l 4200 6600 l 3900 6600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4200 6300 m 4500 6300 l 4500 6600 l 4200 6600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4500 6300 m 4800 6300 l 4800 6600 l 4500 6600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4800 6300 m 5100 6300 l 5100 6600 l 4800 6600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5100 6300 m 5400 6300 l 5400 6600 l 5100 6600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5700 6300 m 6000 6300 l 6000 6600 l 5700 6600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5400 6300 m 5700 6300 l 5700 6600 l 5400 6600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6000 6300 m 6300 6300 l 6300 6600 l 6000 6600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6300 6300 m 6600 6300 l 6600 6600 l 6300 6600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6600 6300 m 6900 6300 l 6900 6600 l 6600 6600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6900 6300 m 7200 6300 l 7200 6600 l 6900 6600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7200 6300 m 7500 6300 l 7500 6600 l 7200 6600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7500 6300 m 7800 6300 l 7800 6600 l 7500 6600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7800 6300 m 8100 6300 l 8100 6600 l 7800 6600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8100 6300 m 8400 6300 l 8400 6600 l 8100 6600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8400 6300 m 8700 6300 l 8700 6600 l 8400 6600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8700 6300 m 9000 6300 l 9000 6600 l 8700 6600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 3000 m 2100 3000 l 2100 3300 l 1800 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2100 3000 m 2400 3000 l 2400 3300 l 2100 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 3000 m 2700 3000 l 2700 3300 l 2400 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 3000 m 3000 3000 l 3000 3300 l 2700 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 3000 m 3300 3000 l 3300 3300 l 3000 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3300 3000 m 3600 3000 l 3600 3300 l 3300 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3600 3000 m 3900 3000 l 3900 3300 l 3600 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +gs clippath +1920 5565 m 1980 5565 l 1980 5414 l 1950 5534 l 1920 5414 l cp +eoclip +n 1950 4500 m + 1950 5550 l gs col0 s gr gr + +% arrowhead +n 1920 5414 m 1950 5534 l 1980 5414 l 1920 5414 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +2070 4215 m 2130 4215 l 2130 4064 l 2100 4184 l 2070 4064 l cp +eoclip +n 1800 3750 m 2100 3750 l + 2100 4200 l gs col0 s gr gr + +% arrowhead +n 2070 4064 m 2100 4184 l 2130 4064 l 2070 4064 l cp gs 0.00 setgray ef gr col0 s +% here ends figure; +% +% here starts figure with depth 12 +% Ellipse +7.500 slw +n 6525 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 7725 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 7425 750 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 8625 1050 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 8625 3150 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 7125 3150 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 8925 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +/Times-Bold ff 240.00 scf sf +6150 2025 m +gs 1 -1 sc (4) col0 sh gr +/Times-Bold ff 240.00 scf sf +8625 825 m +gs 1 -1 sc (4) col0 sh gr +/Times-Bold ff 240.00 scf sf +9150 1875 m +gs 1 -1 sc (4) col0 sh gr +/Times-Bold ff 240.00 scf sf +8850 3300 m +gs 1 -1 sc (4) col0 sh gr +/Times-Bold ff 240.00 scf sf +7275 3450 m +gs 1 -1 sc (4) col0 sh gr +/Times-Bold ff 240.00 scf sf +7425 2175 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +7950 825 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +7650 1425 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +8250 1650 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +8850 1575 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +8850 2625 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +8175 2475 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +7875 3075 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +7500 2775 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +6900 2550 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +7125 1875 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +6750 1425 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +8400 2175 m +gs 1 -1 sc (2) col0 sh gr +/Times-Bold ff 240.00 scf sf +7050 825 m +gs 1 -1 sc (4) col0 sh gr +% here ends figure; +% +% here starts figure with depth 10 +/Times-Roman ff 240.00 scf sf +6475 2040 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +7675 2040 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +7375 840 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +8575 1140 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +8575 3240 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +7075 3240 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +1900 840 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +1900 1440 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +1900 4440 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +2200 5790 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 5790 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 5790 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +3100 5790 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +3400 5790 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +3700 5790 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +4000 5790 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +4300 5790 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +4600 5790 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +4900 5790 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +5200 5790 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +5500 5790 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +5800 5790 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +6100 5790 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +6400 5790 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +6700 5790 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +7000 5790 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +7300 5790 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +7600 5790 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +7900 5790 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +8200 5790 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +8500 5790 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +8800 5790 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +1900 5790 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +1900 6540 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +2200 6540 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 6540 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +3400 6540 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 6540 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +3100 6540 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +3700 6540 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +4000 6540 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +4300 6540 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +4600 6540 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +4900 6540 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +5200 6540 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +5800 6540 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +5500 6540 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +6100 6540 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +6400 6540 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +6700 6540 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +7000 6540 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +7300 6540 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +7600 6540 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +7900 6540 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +8200 6540 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +8500 6540 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +8800 6540 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +1900 3240 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +2200 3240 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 3240 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 3240 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +3100 3240 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +3400 3240 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +3700 3240 m +gs 1 -1 sc (4) col0 sh gr +% here ends figure; +% +% here starts figure with depth 8 +/Times-Roman ff 240.00 scf sf +8875 2040 m +gs 1 -1 sc (7) col0 sh gr +% here ends figure; +$F2psEnd +rs +showpage diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_gr1.fig scotch-6.0.6/doc/src/scotch/s_f_gr1.fig --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_gr1.fig 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_gr1.fig 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,447 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +0 +1200 2 +6 6150 600 9300 3450 +6 6375 1800 6675 2100 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6525 1950 150 150 6525 1950 6675 1950 +4 0 0 10 0 0 16 0.0000 4 180 120 6475 2040 1\001 +-6 +6 7575 1800 7875 2100 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7725 1950 150 150 7725 1950 7875 1950 +4 0 0 10 0 0 16 0.0000 4 165 120 7675 2040 2\001 +-6 +6 7275 600 7575 900 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7425 750 150 150 7425 750 7575 750 +4 0 0 10 0 0 16 0.0000 4 180 120 7375 840 3\001 +-6 +6 8475 900 8775 1200 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8625 1050 150 150 8625 1050 8775 1050 +4 0 0 10 0 0 16 0.0000 4 165 120 8575 1140 4\001 +-6 +6 8475 3000 8775 3300 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8625 3150 150 150 8625 3150 8775 3150 +4 0 0 10 0 0 16 0.0000 4 180 120 8575 3240 5\001 +-6 +6 6975 3000 7275 3300 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7125 3150 150 150 7125 3150 7275 3150 +4 0 0 10 0 0 16 0.0000 4 180 120 7075 3240 6\001 +-6 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8925 1950 150 150 8925 1950 9075 1950 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 5 + 7125 3150 8625 3150 7725 1950 8925 1950 8625 1050 +2 1 0 1 0 7 20 0 -1 0.000 0 0 7 0 0 8 + 6525 1950 7425 750 7725 1950 6525 1950 7125 3150 7725 1950 + 8625 1050 7425 750 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 + 8925 1950 8625 3150 +4 0 0 12 0 2 16 0.0000 4 165 120 6150 2025 4\001 +4 0 0 12 0 2 16 0.0000 4 165 120 8625 825 4\001 +4 0 0 12 0 2 16 0.0000 4 165 120 9150 1875 4\001 +4 0 0 12 0 2 16 0.0000 4 165 120 8850 3300 4\001 +4 0 0 12 0 2 16 0.0000 4 165 120 7275 3450 4\001 +4 0 0 12 0 2 16 0.0000 4 165 120 7425 2175 1\001 +4 0 0 12 0 -1 16 0.0000 4 165 120 7950 825 2\001 +4 0 0 12 0 -1 16 0.0000 4 165 120 7650 1425 2\001 +4 0 0 12 0 -1 16 0.0000 4 165 120 8250 1650 2\001 +4 0 0 12 0 -1 16 0.0000 4 180 120 8850 1575 1\001 +4 0 0 12 0 -1 16 0.0000 4 180 120 8850 2625 1\001 +4 0 0 12 0 -1 16 0.0000 4 180 120 8175 2475 3\001 +4 0 0 12 0 -1 16 0.0000 4 180 120 7875 3075 3\001 +4 0 0 12 0 -1 16 0.0000 4 180 120 7500 2775 3\001 +4 0 0 12 0 -1 16 0.0000 4 180 120 6900 2550 1\001 +4 0 0 12 0 -1 16 0.0000 4 180 120 7125 1875 1\001 +4 0 0 12 0 -1 16 0.0000 4 180 120 6750 1425 1\001 +4 0 0 12 0 -1 16 0.0000 4 165 120 8400 2175 2\001 +4 0 0 12 0 2 16 0.0000 4 165 120 7050 825 4\001 +4 0 0 8 0 0 16 0.0000 4 165 120 8875 2040 7\001 +-6 +6 600 600 2100 900 +6 1800 600 2100 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 600 2100 600 2100 900 1800 900 1800 600 +4 0 0 10 0 0 16 0.0000 4 180 120 1900 840 1\001 +-6 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 825 baseval\001 +-6 +6 1800 1800 2100 2100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 1800 2100 1800 2100 2100 1800 2100 1800 1800 +4 0 0 15 0 0 16 0.0000 4 165 240 1825 2040 24\001 +-6 +6 1800 1200 2100 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 1200 2100 1200 2100 1500 1800 1500 1800 1200 +4 0 0 10 0 0 16 0.0000 4 165 120 1900 1440 7\001 +-6 +6 1800 2400 2100 2700 +2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 + 1800 2400 2100 2400 2100 2700 1800 2700 1800 2400 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 2100 2400 1800 2700 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 1800 2400 2100 2700 +-6 +6 2100 4200 2400 4500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 4200 2400 4200 2400 4500 2100 4500 2100 4200 +4 0 0 15 0 0 16 0.0000 4 165 120 2200 4440 4\001 +-6 +6 2400 4200 2700 4500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 4200 2700 4200 2700 4500 2400 4500 2400 4200 +4 0 0 15 0 0 16 0.0000 4 180 240 2425 4440 10\001 +-6 +6 2700 4200 3000 4500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 4200 3000 4200 3000 4500 2700 4500 2700 4200 +4 0 0 15 0 0 16 0.0000 4 195 240 2725 4440 13\001 +-6 +6 3000 4200 3300 4500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 4200 3300 4200 3300 4500 3000 4500 3000 4200 +4 0 0 15 0 0 16 0.0000 4 180 240 3025 4440 16\001 +-6 +6 3300 4200 3600 4500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 4200 3600 4200 3600 4500 3300 4500 3300 4200 +4 0 0 15 0 0 16 0.0000 4 195 240 3325 4440 19\001 +-6 +6 3600 4200 3900 4500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 4200 3900 4200 3900 4500 3600 4500 3600 4200 +4 0 0 15 0 0 16 0.0000 4 165 240 3625 4440 22\001 +-6 +6 1800 4200 2100 4500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 4200 2100 4200 2100 4500 1800 4500 1800 4200 +4 0 0 10 0 0 16 0.0000 4 180 120 1900 4440 1\001 +-6 +6 9000 5550 9300 5850 +2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 + 9000 5550 9300 5550 9300 5850 9000 5850 9000 5550 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 9300 5550 9000 5850 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 9000 5550 9300 5850 +-6 +6 3900 4200 4200 4500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3900 4200 4200 4200 4200 4500 3900 4500 3900 4200 +4 0 0 15 0 0 16 0.0000 4 180 240 3925 4440 25\001 +-6 +6 2100 5550 2400 5850 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 5550 2400 5550 2400 5850 2100 5850 2100 5550 +4 0 0 10 0 0 16 0.0000 4 165 120 2200 5790 2\001 +-6 +6 2400 5550 2700 5850 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 5550 2700 5550 2700 5850 2400 5850 2400 5550 +4 0 0 10 0 0 16 0.0000 4 180 120 2500 5790 6\001 +-6 +6 2700 5550 3000 5850 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 5550 3000 5550 3000 5850 2700 5850 2700 5550 +4 0 0 10 0 0 16 0.0000 4 180 120 2800 5790 3\001 +-6 +6 3000 5550 3300 5850 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 5550 3300 5550 3300 5850 3000 5850 3000 5550 +4 0 0 10 0 0 16 0.0000 4 165 120 3100 5790 4\001 +-6 +6 3300 5550 3600 5850 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 5550 3600 5550 3600 5850 3300 5850 3300 5550 +4 0 0 10 0 0 16 0.0000 4 180 120 3400 5790 1\001 +-6 +6 3600 5550 3900 5850 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 5550 3900 5550 3900 5850 3600 5850 3600 5550 +4 0 0 10 0 0 16 0.0000 4 165 120 3700 5790 7\001 +-6 +6 3900 5550 4200 5850 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3900 5550 4200 5550 4200 5850 3900 5850 3900 5550 +4 0 0 10 0 0 16 0.0000 4 180 120 4000 5790 6\001 +-6 +6 4200 5550 4500 5850 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4200 5550 4500 5550 4500 5850 4200 5850 4200 5550 +4 0 0 10 0 0 16 0.0000 4 180 120 4300 5790 5\001 +-6 +6 4500 5550 4800 5850 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4500 5550 4800 5550 4800 5850 4500 5850 4500 5550 +4 0 0 10 0 0 16 0.0000 4 180 120 4600 5790 1\001 +-6 +6 4800 5550 5100 5850 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4800 5550 5100 5550 5100 5850 4800 5850 4800 5550 +4 0 0 10 0 0 16 0.0000 4 165 120 4900 5790 2\001 +-6 +6 5100 5550 5400 5850 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5100 5550 5400 5550 5400 5850 5100 5850 5100 5550 +4 0 0 10 0 0 16 0.0000 4 165 120 5200 5790 4\001 +-6 +6 5400 5550 5700 5850 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5400 5550 5700 5550 5700 5850 5400 5850 5400 5550 +4 0 0 10 0 0 16 0.0000 4 165 120 5500 5790 2\001 +-6 +6 5700 5550 6000 5850 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5700 5550 6000 5550 6000 5850 5700 5850 5700 5550 +4 0 0 10 0 0 16 0.0000 4 165 120 5800 5790 7\001 +-6 +6 6000 5550 6300 5850 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6000 5550 6300 5550 6300 5850 6000 5850 6000 5550 +4 0 0 10 0 0 16 0.0000 4 180 120 6100 5790 3\001 +-6 +6 6300 5550 6600 5850 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6300 5550 6600 5550 6600 5850 6300 5850 6300 5550 +4 0 0 10 0 0 16 0.0000 4 165 120 6400 5790 7\001 +-6 +6 6600 5550 6900 5850 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6600 5550 6900 5550 6900 5850 6600 5850 6600 5550 +4 0 0 10 0 0 16 0.0000 4 165 120 6700 5790 2\001 +-6 +6 6900 5550 7200 5850 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6900 5550 7200 5550 7200 5850 6900 5850 6900 5550 +4 0 0 10 0 0 16 0.0000 4 180 120 7000 5790 6\001 +-6 +6 7200 5550 7500 5850 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7200 5550 7500 5550 7500 5850 7200 5850 7200 5550 +4 0 0 10 0 0 16 0.0000 4 165 120 7300 5790 2\001 +-6 +6 7500 5550 7800 5850 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7500 5550 7800 5550 7800 5850 7500 5850 7500 5550 +4 0 0 10 0 0 16 0.0000 4 180 120 7600 5790 1\001 +-6 +6 7800 5550 8100 5850 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7800 5550 8100 5550 8100 5850 7800 5850 7800 5550 +4 0 0 10 0 0 16 0.0000 4 180 120 7900 5790 5\001 +-6 +6 8100 5550 8400 5850 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8100 5550 8400 5550 8400 5850 8100 5850 8100 5550 +4 0 0 10 0 0 16 0.0000 4 180 120 8200 5790 5\001 +-6 +6 8400 5550 8700 5850 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8400 5550 8700 5550 8700 5850 8400 5850 8400 5550 +4 0 0 10 0 0 16 0.0000 4 165 120 8500 5790 2\001 +-6 +6 8700 5550 9000 5850 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8700 5550 9000 5550 9000 5850 8700 5850 8700 5550 +4 0 0 10 0 0 16 0.0000 4 165 120 8800 5790 4\001 +-6 +6 1800 5550 2100 5850 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 5550 2100 5550 2100 5850 1800 5850 1800 5550 +4 0 0 10 0 0 16 0.0000 4 180 120 1900 5790 3\001 +-6 +6 1800 6300 2100 6600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 6300 2100 6300 2100 6600 1800 6600 1800 6300 +4 0 0 10 0 0 16 0.0000 4 180 120 1900 6540 1\001 +-6 +6 2100 6300 2400 6600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 6300 2400 6300 2400 6600 2100 6600 2100 6300 +4 0 0 10 0 0 16 0.0000 4 180 120 2200 6540 1\001 +-6 +6 2400 6300 2700 6600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 6300 2700 6300 2700 6600 2400 6600 2400 6300 +4 0 0 10 0 0 16 0.0000 4 180 120 2500 6540 1\001 +-6 +6 3300 6300 3600 6600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 6300 3600 6300 3600 6600 3300 6600 3300 6300 +4 0 0 10 0 0 16 0.0000 4 180 120 3400 6540 1\001 +-6 +6 2700 6300 3000 6600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 6300 3000 6300 3000 6600 2700 6600 2700 6300 +4 0 0 10 0 0 16 0.0000 4 165 120 2800 6540 2\001 +-6 +6 3000 6300 3300 6600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 6300 3300 6300 3300 6600 3000 6600 3000 6300 +4 0 0 10 0 0 16 0.0000 4 165 120 3100 6540 2\001 +-6 +6 3600 6300 3900 6600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 6300 3900 6300 3900 6600 3600 6600 3600 6300 +4 0 0 10 0 0 16 0.0000 4 165 120 3700 6540 2\001 +-6 +6 3900 6300 4200 6600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3900 6300 4200 6300 4200 6600 3900 6600 3900 6300 +4 0 0 10 0 0 16 0.0000 4 180 120 4000 6540 3\001 +-6 +6 4200 6300 4500 6600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4200 6300 4500 6300 4500 6600 4200 6600 4200 6300 +4 0 0 10 0 0 16 0.0000 4 180 120 4300 6540 3\001 +-6 +6 4500 6300 4800 6600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4500 6300 4800 6300 4800 6600 4500 6600 4500 6300 +4 0 0 10 0 0 16 0.0000 4 180 120 4600 6540 1\001 +-6 +6 4800 6300 5100 6600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4800 6300 5100 6300 5100 6600 4800 6600 4800 6300 +4 0 0 10 0 0 16 0.0000 4 165 120 4900 6540 2\001 +-6 +6 5100 6300 5400 6600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5100 6300 5400 6300 5400 6600 5100 6600 5100 6300 +4 0 0 10 0 0 16 0.0000 4 165 120 5200 6540 2\001 +-6 +6 5700 6300 6000 6600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5700 6300 6000 6300 6000 6600 5700 6600 5700 6300 +4 0 0 10 0 0 16 0.0000 4 180 120 5800 6540 1\001 +-6 +6 5400 6300 5700 6600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5400 6300 5700 6300 5700 6600 5400 6600 5400 6300 +4 0 0 10 0 0 16 0.0000 4 165 120 5500 6540 2\001 +-6 +6 6000 6300 6300 6600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6000 6300 6300 6300 6300 6600 6000 6600 6000 6300 +4 0 0 10 0 0 16 0.0000 4 165 120 6100 6540 2\001 +-6 +6 6300 6300 6600 6600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6300 6300 6600 6300 6600 6600 6300 6600 6300 6300 +4 0 0 10 0 0 16 0.0000 4 180 120 6400 6540 1\001 +-6 +6 6600 6300 6900 6600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6600 6300 6900 6300 6900 6600 6600 6600 6600 6300 +4 0 0 10 0 0 16 0.0000 4 180 120 6700 6540 3\001 +-6 +6 6900 6300 7200 6600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6900 6300 7200 6300 7200 6600 6900 6600 6900 6300 +4 0 0 10 0 0 16 0.0000 4 180 120 7000 6540 3\001 +-6 +6 7200 6300 7500 6600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7200 6300 7500 6300 7500 6600 7200 6600 7200 6300 +4 0 0 10 0 0 16 0.0000 4 180 120 7300 6540 3\001 +-6 +6 7500 6300 7800 6600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7500 6300 7800 6300 7800 6600 7500 6600 7500 6300 +4 0 0 10 0 0 16 0.0000 4 180 120 7600 6540 1\001 +-6 +6 7800 6300 8100 6600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7800 6300 8100 6300 8100 6600 7800 6600 7800 6300 +4 0 0 10 0 0 16 0.0000 4 180 120 7900 6540 3\001 +-6 +6 8100 6300 8400 6600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8100 6300 8400 6300 8400 6600 8100 6600 8100 6300 +4 0 0 10 0 0 16 0.0000 4 180 120 8200 6540 1\001 +-6 +6 8400 6300 8700 6600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8400 6300 8700 6300 8700 6600 8400 6600 8400 6300 +4 0 0 10 0 0 16 0.0000 4 165 120 8500 6540 2\001 +-6 +6 8700 6300 9000 6600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8700 6300 9000 6300 9000 6600 8700 6600 8700 6300 +4 0 0 10 0 0 16 0.0000 4 180 120 8800 6540 1\001 +-6 +6 1800 3000 2100 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 3000 2100 3000 2100 3300 1800 3300 1800 3000 +4 0 0 10 0 0 16 0.0000 4 165 120 1900 3240 4\001 +-6 +6 2100 3000 2400 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 3000 2400 3000 2400 3300 2100 3300 2100 3000 +4 0 0 10 0 0 16 0.0000 4 180 120 2200 3240 1\001 +-6 +6 2400 3000 2700 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 3000 2700 3000 2700 3300 2400 3300 2400 3000 +4 0 0 10 0 0 16 0.0000 4 165 120 2500 3240 4\001 +-6 +6 2700 3000 3000 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 3000 3000 3000 3000 3300 2700 3300 2700 3000 +4 0 0 10 0 0 16 0.0000 4 165 120 2800 3240 4\001 +-6 +6 3000 3000 3300 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 3000 3300 3000 3300 3300 3000 3300 3000 3000 +4 0 0 10 0 0 16 0.0000 4 165 120 3100 3240 4\001 +-6 +6 3300 3000 3600 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 3000 3600 3000 3600 3300 3300 3300 3300 3000 +4 0 0 10 0 0 16 0.0000 4 165 120 3400 3240 4\001 +-6 +6 3600 3000 3900 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 3000 3900 3000 3900 3300 3600 3300 3600 3000 +4 0 0 10 0 0 16 0.0000 4 165 120 3700 3240 4\001 +-6 +2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 2 + 1 1 1.00 60.00 120.00 + 1950 4500 1950 5550 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 4050 4500 4050 4800 9150 4800 9150 5550 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3750 4500 3750 4875 8250 4875 8250 5550 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3450 4500 3450 4950 7350 4950 7350 5550 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3150 4500 3150 5025 6450 5025 6450 5550 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2850 4500 2850 5100 5550 5100 5550 5550 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2550 4500 2550 5175 4650 5175 4650 5550 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2250 4500 2250 5250 2850 5250 2850 5550 +2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 3 + 1 1 1.00 60.00 120.00 + 1800 3750 2100 3750 2100 4200 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 1425 vertnbr\001 +4 0 0 20 0 12 16 0.0000 4 210 1050 600 2025 edgenbr\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 2625 vlbltab\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 4425 verttab\001 +4 0 0 20 0 12 16 0.0000 4 210 1050 600 5775 edgetab\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 6525 edlotab\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 3225 velotab\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 3825 vendtab\001 diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_gr2.eps scotch-6.0.6/doc/src/scotch/s_f_gr2.eps --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_gr2.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_gr2.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,662 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: stdin +%%Creator: fig2dev Version 3.2 Patchlevel 4 +%%CreationDate: Tue Nov 4 11:45:49 2003 +%%For: pelegrin@brol.labri.fr (Francois PELLEGRINI) +%%BoundingBox: 0 0 631 218 +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 218 moveto 0 0 lineto 631 0 lineto 631 218 lineto closepath clip newpath +-36.0 252.7 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +% +% Fig objects follow +% +% +% here starts figure with depth 50 +% Polyline +7.500 slw +n 1800 1950 m 2100 1950 l 2100 2250 l 1800 2250 l + cp gs col0 s gr +% Polyline +n 3900 1950 m 4200 1950 l 4200 2250 l 3900 2250 l + cp gs col0 s gr +% Polyline +n 4200 1950 m 4500 1950 l 4500 2250 l 4200 2250 l + cp gs col0 s gr +% Polyline +n 6300 1950 m 6600 1950 l 6600 2250 l 6300 2250 l + cp gs col0 s gr +% Polyline +n 9300 1950 m 9600 1950 l 9600 2250 l 9300 2250 l + cp gs col0 s gr +% Polyline +n 10500 1950 m 10800 1950 l 10800 2250 l 10500 2250 l + cp gs col0 s gr +% Polyline +n 10800 1950 m 11100 1950 l 11100 2250 l 10800 2250 l + cp gs col0 s gr +% Polyline +n 1800 3900 m 2100 3900 l 2100 4200 l 1800 4200 l + cp gs col0 s gr +% Polyline +n 3900 3900 m 4200 3900 l 4200 4200 l 3900 4200 l + cp gs col0 s gr +% Polyline +n 4200 3900 m 4500 3900 l 4500 4200 l 4200 4200 l + cp gs col0 s gr +% Polyline +n 6300 3900 m 6600 3900 l 6600 4200 l 6300 4200 l + cp gs col0 s gr +% Polyline +n 9300 3900 m 9600 3900 l 9600 4200 l 9300 4200 l + cp gs col0 s gr +% Polyline +n 10500 3900 m 10800 3900 l 10800 4200 l 10500 4200 l + cp gs col0 s gr +% Polyline +n 10800 3900 m 11100 3900 l 11100 4200 l 10800 4200 l + cp gs col0 s gr +% here ends figure; +% +% here starts figure with depth 20 +% Polyline +7.500 slw +gs clippath +8520 1965 m 8580 1965 l 8580 1814 l 8550 1934 l 8520 1814 l cp +eoclip +n 3750 900 m 3750 1275 l 8550 1275 l + 8550 1950 l gs col0 s gr gr + +% arrowhead +n 8520 1814 m 8550 1934 l 8580 1814 l 8520 1814 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +9720 1965 m 9780 1965 l 9780 1814 l 9750 1934 l 9720 1814 l cp +eoclip +n 3450 900 m 3450 1350 l 9750 1350 l + 9750 1950 l gs col0 s gr gr + +% arrowhead +n 9720 1814 m 9750 1934 l 9780 1814 l 9720 1814 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +7620 1965 m 7680 1965 l 7680 1814 l 7650 1934 l 7620 1814 l cp +eoclip +n 3150 900 m 3150 1425 l 7650 1425 l + 7650 1950 l gs col0 s gr gr + +% arrowhead +n 7620 1814 m 7650 1934 l 7680 1814 l 7620 1814 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4620 1965 m 4680 1965 l 4680 1814 l 4650 1934 l 4620 1814 l cp +eoclip +n 2850 900 m 2850 1500 l 4650 1500 l + 4650 1950 l gs col0 s gr gr + +% arrowhead +n 4620 1814 m 4650 1934 l 4680 1814 l 4620 1814 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +5520 1965 m 5580 1965 l 5580 1814 l 5550 1934 l 5520 1814 l cp +eoclip +n 2550 900 m 2550 1575 l 5550 1575 l + 5550 1950 l gs col0 s gr gr + +% arrowhead +n 5520 1814 m 5550 1934 l 5580 1814 l 5520 1814 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +2220 1965 m 2280 1965 l 2280 1814 l 2250 1934 l 2220 1814 l cp +eoclip +n 2250 900 m + 2250 1950 l gs col0 s gr gr + +% arrowhead +n 2220 1814 m 2250 1934 l 2280 1814 l 2220 1814 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +9480 2235 m 9420 2235 l 9420 2386 l 9450 2266 l 9480 2386 l cp +eoclip +n 3750 3300 m 3750 3000 l 9450 3000 l + 9450 2250 l gs col0 s gr gr + +% arrowhead +n 9480 2386 m 9450 2266 l 9420 2386 l 9480 2386 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +10680 2235 m 10620 2235 l 10620 2386 l 10650 2266 l 10680 2386 l cp +eoclip +n 3450 3300 m 3450 2925 l 10650 2925 l + 10650 2250 l gs col0 s gr gr + +% arrowhead +n 10680 2386 m 10650 2266 l 10620 2386 l 10680 2386 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +8580 2235 m 8520 2235 l 8520 2386 l 8550 2266 l 8580 2386 l cp +eoclip +n 3150 3300 m 3150 2850 l 8550 2850 l + 8550 2250 l gs col0 s gr gr + +% arrowhead +n 8580 2386 m 8550 2266 l 8520 2386 l 8580 2386 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +5580 2235 m 5520 2235 l 5520 2386 l 5550 2266 l 5580 2386 l cp +eoclip +n 2850 3300 m 2850 2775 l 5550 2775 l + 5550 2250 l gs col0 s gr gr + +% arrowhead +n 5580 2386 m 5550 2266 l 5520 2386 l 5580 2386 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6480 2235 m 6420 2235 l 6420 2386 l 6450 2266 l 6480 2386 l cp +eoclip +n 2550 3300 m 2550 2700 l 6450 2700 l + 6450 2250 l gs col0 s gr gr + +% arrowhead +n 6480 2386 m 6450 2266 l 6420 2386 l 6480 2386 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4080 2235 m 4020 2235 l 4020 2386 l 4050 2266 l 4080 2386 l cp +eoclip +n 2250 3300 m 2250 2625 l 4050 2625 l + 4050 2250 l gs col0 s gr gr + +% arrowhead +n 4080 2386 m 4050 2266 l 4020 2386 l 4080 2386 l cp gs 0.00 setgray ef gr col0 s +/Courier ff 240.00 scf sf +600 2175 m +gs 1 -1 sc (edgetab) col0 sh gr +/Courier ff 240.00 scf sf +600 825 m +gs 1 -1 sc (verttab) col0 sh gr +/Courier ff 240.00 scf sf +600 3525 m +gs 1 -1 sc (vendtab) col0 sh gr +/Courier ff 240.00 scf sf +600 4125 m +gs 1 -1 sc (edlotab) col0 sh gr +% here ends figure; +% +% here starts figure with depth 15 +% Polyline +7.500 slw +n 2100 1950 m 2400 1950 l 2400 2250 l 2100 2250 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 1950 m 2700 1950 l 2700 2250 l 2400 2250 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 1950 m 3000 1950 l 3000 2250 l 2700 2250 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 1950 m 3300 1950 l 3300 2250 l 3000 2250 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3300 1950 m 3600 1950 l 3600 2250 l 3300 2250 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3600 1950 m 3900 1950 l 3900 2250 l 3600 2250 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4500 1950 m 4800 1950 l 4800 2250 l 4500 2250 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4800 1950 m 5100 1950 l 5100 2250 l 4800 2250 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5100 1950 m 5400 1950 l 5400 2250 l 5100 2250 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5400 1950 m 5700 1950 l 5700 2250 l 5400 2250 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5700 1950 m 6000 1950 l 6000 2250 l 5700 2250 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6000 1950 m 6300 1950 l 6300 2250 l 6000 2250 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6900 1950 m 7200 1950 l 7200 2250 l 6900 2250 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7200 1950 m 7500 1950 l 7500 2250 l 7200 2250 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6600 1950 m 6900 1950 l 6900 2250 l 6600 2250 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7500 1950 m 7800 1950 l 7800 2250 l 7500 2250 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7800 1950 m 8100 1950 l 8100 2250 l 7800 2250 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8100 1950 m 8400 1950 l 8400 2250 l 8100 2250 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8400 1950 m 8700 1950 l 8700 2250 l 8400 2250 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8700 1950 m 9000 1950 l 9000 2250 l 8700 2250 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 9000 1950 m 9300 1950 l 9300 2250 l 9000 2250 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 9600 1950 m 9900 1950 l 9900 2250 l 9600 2250 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 9900 1950 m 10200 1950 l 10200 2250 l 9900 2250 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 10200 1950 m 10500 1950 l 10500 2250 l 10200 2250 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 3900 m 3000 3900 l 3000 4200 l 2700 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2100 3900 m 2400 3900 l 2400 4200 l 2100 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 3900 m 2700 3900 l 2700 4200 l 2400 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 3900 m 3300 3900 l 3300 4200 l 3000 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3300 3900 m 3600 3900 l 3600 4200 l 3300 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3600 3900 m 3900 3900 l 3900 4200 l 3600 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4800 3900 m 5100 3900 l 5100 4200 l 4800 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4500 3900 m 4800 3900 l 4800 4200 l 4500 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5100 3900 m 5400 3900 l 5400 4200 l 5100 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5400 3900 m 5700 3900 l 5700 4200 l 5400 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5700 3900 m 6000 3900 l 6000 4200 l 5700 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6000 3900 m 6300 3900 l 6300 4200 l 6000 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6600 3900 m 6900 3900 l 6900 4200 l 6600 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6900 3900 m 7200 3900 l 7200 4200 l 6900 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7200 3900 m 7500 3900 l 7500 4200 l 7200 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7500 3900 m 7800 3900 l 7800 4200 l 7500 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7800 3900 m 8100 3900 l 8100 4200 l 7800 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8100 3900 m 8400 3900 l 8400 4200 l 8100 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8400 3900 m 8700 3900 l 8700 4200 l 8400 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8700 3900 m 9000 3900 l 9000 4200 l 8700 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 9000 3900 m 9300 3900 l 9300 4200 l 9000 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 9600 3900 m 9900 3900 l 9900 4200 l 9600 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 9900 3900 m 10200 3900 l 10200 4200 l 9900 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 10200 3900 m 10500 3900 l 10500 4200 l 10200 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 600 m 2100 600 l 2100 900 l 1800 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +1825 840 m +gs 1 -1 sc (17) col0 sh gr +% Polyline +n 2100 600 m 2400 600 l 2400 900 l 2100 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2200 840 m +gs 1 -1 sc (2) col0 sh gr +% Polyline +n 2400 600 m 2700 600 l 2700 900 l 2400 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2425 840 m +gs 1 -1 sc (13) col0 sh gr +% Polyline +n 2700 600 m 3000 600 l 3000 900 l 2700 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2725 840 m +gs 1 -1 sc (10) col0 sh gr +% Polyline +n 3600 600 m 3900 600 l 3900 900 l 3600 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3625 840 m +gs 1 -1 sc (23) col0 sh gr +% Polyline +n 3300 600 m 3600 600 l 3600 900 l 3300 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3325 840 m +gs 1 -1 sc (27) col0 sh gr +% Polyline +n 3000 600 m 3300 600 l 3300 900 l 3000 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3025 840 m +gs 1 -1 sc (20) col0 sh gr +% Polyline +n 2100 3300 m 2400 3300 l 2400 3600 l 2100 3600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2200 3540 m +gs 1 -1 sc (8) col0 sh gr +% Polyline +n 1800 3300 m 2100 3300 l 2100 3600 l 1800 3600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +1825 3540 m +gs 1 -1 sc (20) col0 sh gr +% Polyline +n 2400 3300 m 2700 3300 l 2700 3600 l 2400 3600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2425 3540 m +gs 1 -1 sc (16) col0 sh gr +% Polyline +n 2700 3300 m 3000 3300 l 3000 3600 l 2700 3600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2725 3540 m +gs 1 -1 sc (13) col0 sh gr +% Polyline +n 3600 3300 m 3900 3300 l 3900 3600 l 3600 3600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3625 3540 m +gs 1 -1 sc (26) col0 sh gr +% Polyline +n 3300 3300 m 3600 3300 l 3600 3600 l 3300 3600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3325 3540 m +gs 1 -1 sc (30) col0 sh gr +% Polyline +n 3000 3300 m 3300 3300 l 3300 3600 l 3000 3600 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3025 3540 m +gs 1 -1 sc (23) col0 sh gr +% Polyline +gs clippath +6720 1965 m 6780 1965 l 6780 1814 l 6750 1934 l 6720 1814 l cp +eoclip +n 1950 900 m 1950 1650 l 6750 1650 l + 6750 1950 l gs col0 s gr gr + +% arrowhead +n 6720 1814 m 6750 1934 l 6780 1814 l 6720 1814 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +7680 2235 m 7620 2235 l 7620 2386 l 7650 2266 l 7680 2386 l cp +eoclip +n 1950 3300 m 1950 2550 l 7650 2550 l + 7650 2250 l gs col0 s gr gr + +% arrowhead +n 7680 2386 m 7650 2266 l 7620 2386 l 7680 2386 l cp gs 0.00 setgray ef gr col0 s +% here ends figure; +% +% here starts figure with depth 10 +/Times-Roman ff 240.00 scf sf +2200 2190 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 2190 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 2190 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +3100 2190 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +3400 2190 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +3700 2190 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +4600 2190 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +4900 2190 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +5200 2190 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +5500 2190 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +5800 2190 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +6100 2190 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +7000 2190 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +7300 2190 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +6700 2190 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +7600 2190 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +7900 2190 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +8200 2190 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +8500 2190 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +8800 2190 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +9100 2190 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +9700 2190 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +10000 2190 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +10300 2190 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 4140 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +2200 4140 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 4140 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +3100 4140 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +3400 4140 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +3700 4140 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +4900 4140 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +4600 4140 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +5200 4140 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +5500 4140 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +5800 4140 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +6100 4140 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +6700 4140 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +7000 4140 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +7300 4140 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +7600 4140 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +7900 4140 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +8200 4140 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +8500 4140 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +8800 4140 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +9100 4140 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +9700 4140 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +10000 4140 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +10300 4140 m +gs 1 -1 sc (3) col0 sh gr +% here ends figure; +$F2psEnd +rs +showpage diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_gr2.fig scotch-6.0.6/doc/src/scotch/s_f_gr2.fig --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_gr2.fig 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_gr2.fig 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,425 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +0 +1200 2 +6 1800 1950 11100 2250 +6 2100 1950 3900 2250 +6 2100 1950 2400 2250 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 1950 2400 1950 2400 2250 2100 2250 2100 1950 +4 0 0 10 0 0 16 0.0000 4 180 120 2200 2190 3\001 +-6 +6 2400 1950 2700 2250 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 1950 2700 1950 2700 2250 2400 2250 2400 1950 +4 0 0 10 0 0 16 0.0000 4 165 120 2500 2190 4\001 +-6 +6 2700 1950 3000 2250 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 1950 3000 1950 3000 2250 2700 2250 2700 1950 +4 0 0 10 0 0 16 0.0000 4 180 120 2800 2190 1\001 +-6 +6 3000 1950 3300 2250 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 1950 3300 1950 3300 2250 3000 2250 3000 1950 +4 0 0 10 0 0 16 0.0000 4 165 120 3100 2190 7\001 +-6 +6 3300 1950 3600 2250 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 1950 3600 1950 3600 2250 3300 2250 3300 1950 +4 0 0 10 0 0 16 0.0000 4 180 120 3400 2190 6\001 +-6 +6 3600 1950 3900 2250 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 1950 3900 1950 3900 2250 3600 2250 3600 1950 +4 0 0 10 0 0 16 0.0000 4 180 120 3700 2190 5\001 +-6 +-6 +6 4500 1950 5400 2250 +6 4500 1950 4800 2250 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4500 1950 4800 1950 4800 2250 4500 2250 4500 1950 +4 0 0 10 0 0 16 0.0000 4 165 120 4600 2190 2\001 +-6 +6 4800 1950 5100 2250 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4800 1950 5100 1950 5100 2250 4800 2250 4800 1950 +4 0 0 10 0 0 16 0.0000 4 165 120 4900 2190 7\001 +-6 +6 5100 1950 5400 2250 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5100 1950 5400 1950 5400 2250 5100 2250 5100 1950 +4 0 0 10 0 0 16 0.0000 4 180 120 5200 2190 3\001 +-6 +-6 +6 5400 1950 6300 2250 +6 5400 1950 5700 2250 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5400 1950 5700 1950 5700 2250 5400 2250 5400 1950 +4 0 0 10 0 0 16 0.0000 4 180 120 5500 2190 1\001 +-6 +6 5700 1950 6000 2250 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5700 1950 6000 1950 6000 2250 5700 2250 5700 1950 +4 0 0 10 0 0 16 0.0000 4 165 120 5800 2190 2\001 +-6 +6 6000 1950 6300 2250 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6000 1950 6300 1950 6300 2250 6000 2250 6000 1950 +4 0 0 10 0 0 16 0.0000 4 165 120 6100 2190 4\001 +-6 +-6 +6 6600 1950 7500 2250 +6 6900 1950 7200 2250 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6900 1950 7200 1950 7200 2250 6900 2250 6900 1950 +4 0 0 10 0 0 16 0.0000 4 165 120 7000 2190 2\001 +-6 +6 7200 1950 7500 2250 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7200 1950 7500 1950 7500 2250 7200 2250 7200 1950 +4 0 0 10 0 0 16 0.0000 4 180 120 7300 2190 6\001 +-6 +6 6600 1950 6900 2250 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6600 1950 6900 1950 6900 2250 6600 2250 6600 1950 +4 0 0 10 0 0 16 0.0000 4 180 120 6700 2190 3\001 +-6 +-6 +6 7500 1950 8400 2250 +6 7500 1950 7800 2250 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7500 1950 7800 1950 7800 2250 7500 2250 7500 1950 +4 0 0 10 0 0 16 0.0000 4 165 120 7600 2190 7\001 +-6 +6 7800 1950 8100 2250 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7800 1950 8100 1950 8100 2250 7800 2250 7800 1950 +4 0 0 10 0 0 16 0.0000 4 165 120 7900 2190 2\001 +-6 +6 8100 1950 8400 2250 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8100 1950 8400 1950 8400 2250 8100 2250 8100 1950 +4 0 0 10 0 0 16 0.0000 4 180 120 8200 2190 6\001 +-6 +-6 +6 8400 1950 9300 2250 +6 8400 1950 8700 2250 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8400 1950 8700 1950 8700 2250 8400 2250 8400 1950 +4 0 0 10 0 0 16 0.0000 4 180 120 8500 2190 5\001 +-6 +6 8700 1950 9000 2250 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8700 1950 9000 1950 9000 2250 8700 2250 8700 1950 +4 0 0 10 0 0 16 0.0000 4 165 120 8800 2190 2\001 +-6 +6 9000 1950 9300 2250 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9000 1950 9300 1950 9300 2250 9000 2250 9000 1950 +4 0 0 10 0 0 16 0.0000 4 165 120 9100 2190 4\001 +-6 +-6 +6 9600 1950 10500 2250 +6 9600 1950 9900 2250 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9600 1950 9900 1950 9900 2250 9600 2250 9600 1950 +4 0 0 10 0 0 16 0.0000 4 165 120 9700 2190 2\001 +-6 +6 9900 1950 10200 2250 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9900 1950 10200 1950 10200 2250 9900 2250 9900 1950 +4 0 0 10 0 0 16 0.0000 4 180 120 10000 2190 1\001 +-6 +6 10200 1950 10500 2250 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 10200 1950 10500 1950 10500 2250 10200 2250 10200 1950 +4 0 0 10 0 0 16 0.0000 4 180 120 10300 2190 5\001 +-6 +-6 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 1800 1950 2100 1950 2100 2250 1800 2250 1800 1950 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 3900 1950 4200 1950 4200 2250 3900 2250 3900 1950 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 4200 1950 4500 1950 4500 2250 4200 2250 4200 1950 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 6300 1950 6600 1950 6600 2250 6300 2250 6300 1950 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 9300 1950 9600 1950 9600 2250 9300 2250 9300 1950 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 10500 1950 10800 1950 10800 2250 10500 2250 10500 1950 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 10800 1950 11100 1950 11100 2250 10800 2250 10800 1950 +-6 +6 1800 3900 11100 4200 +6 2100 3900 3900 4200 +6 2700 3900 3000 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 3900 3000 3900 3000 4200 2700 4200 2700 3900 +4 0 0 10 0 0 16 0.0000 4 180 120 2800 4140 1\001 +-6 +6 2100 3900 2400 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 3900 2400 3900 2400 4200 2100 4200 2100 3900 +4 0 0 10 0 0 16 0.0000 4 165 120 2200 4140 2\001 +-6 +6 2400 3900 2700 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 3900 2700 3900 2700 4200 2400 4200 2400 3900 +4 0 0 10 0 0 16 0.0000 4 165 120 2500 4140 2\001 +-6 +6 3000 3900 3300 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 3900 3300 3900 3300 4200 3000 4200 3000 3900 +4 0 0 10 0 0 16 0.0000 4 165 120 3100 4140 2\001 +-6 +6 3300 3900 3600 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 3900 3600 3900 3600 4200 3300 4200 3300 3900 +4 0 0 10 0 0 16 0.0000 4 180 120 3400 4140 3\001 +-6 +6 3600 3900 3900 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 3900 3900 3900 3900 4200 3600 4200 3600 3900 +4 0 0 10 0 0 16 0.0000 4 180 120 3700 4140 3\001 +-6 +-6 +6 4500 3900 5400 4200 +6 4800 3900 5100 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4800 3900 5100 3900 5100 4200 4800 4200 4800 3900 +4 0 0 10 0 0 16 0.0000 4 180 120 4900 4140 1\001 +-6 +6 4500 3900 4800 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4500 3900 4800 3900 4800 4200 4500 4200 4500 3900 +4 0 0 10 0 0 16 0.0000 4 165 120 4600 4140 2\001 +-6 +6 5100 3900 5400 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5100 3900 5400 3900 5400 4200 5100 4200 5100 3900 +4 0 0 10 0 0 16 0.0000 4 165 120 5200 4140 2\001 +-6 +-6 +6 5400 3900 6300 4200 +6 5400 3900 5700 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5400 3900 5700 3900 5700 4200 5400 4200 5400 3900 +4 0 0 10 0 0 16 0.0000 4 180 120 5500 4140 1\001 +-6 +6 5700 3900 6000 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5700 3900 6000 3900 6000 4200 5700 4200 5700 3900 +4 0 0 10 0 0 16 0.0000 4 165 120 5800 4140 2\001 +-6 +6 6000 3900 6300 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6000 3900 6300 3900 6300 4200 6000 4200 6000 3900 +4 0 0 10 0 0 16 0.0000 4 165 120 6100 4140 2\001 +-6 +-6 +6 6600 3900 7500 4200 +6 6600 3900 6900 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6600 3900 6900 3900 6900 4200 6600 4200 6600 3900 +4 0 0 10 0 0 16 0.0000 4 180 120 6700 4140 1\001 +-6 +6 6900 3900 7200 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6900 3900 7200 3900 7200 4200 6900 4200 6900 3900 +4 0 0 10 0 0 16 0.0000 4 180 120 7000 4140 1\001 +-6 +6 7200 3900 7500 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7200 3900 7500 3900 7500 4200 7200 4200 7200 3900 +4 0 0 10 0 0 16 0.0000 4 180 120 7300 4140 1\001 +-6 +-6 +6 7500 3900 8400 4200 +6 7500 3900 7800 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7500 3900 7800 3900 7800 4200 7500 4200 7500 3900 +4 0 0 10 0 0 16 0.0000 4 180 120 7600 4140 1\001 +-6 +6 7800 3900 8100 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7800 3900 8100 3900 8100 4200 7800 4200 7800 3900 +4 0 0 10 0 0 16 0.0000 4 180 120 7900 4140 3\001 +-6 +6 8100 3900 8400 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8100 3900 8400 3900 8400 4200 8100 4200 8100 3900 +4 0 0 10 0 0 16 0.0000 4 180 120 8200 4140 3\001 +-6 +-6 +6 8400 3900 9300 4200 +6 8400 3900 8700 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8400 3900 8700 3900 8700 4200 8400 4200 8400 3900 +4 0 0 10 0 0 16 0.0000 4 180 120 8500 4140 1\001 +-6 +6 8700 3900 9000 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8700 3900 9000 3900 9000 4200 8700 4200 8700 3900 +4 0 0 10 0 0 16 0.0000 4 165 120 8800 4140 2\001 +-6 +6 9000 3900 9300 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9000 3900 9300 3900 9300 4200 9000 4200 9000 3900 +4 0 0 10 0 0 16 0.0000 4 180 120 9100 4140 1\001 +-6 +-6 +6 9600 3900 10500 4200 +6 9600 3900 9900 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9600 3900 9900 3900 9900 4200 9600 4200 9600 3900 +4 0 0 10 0 0 16 0.0000 4 180 120 9700 4140 3\001 +-6 +6 9900 3900 10200 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9900 3900 10200 3900 10200 4200 9900 4200 9900 3900 +4 0 0 10 0 0 16 0.0000 4 180 120 10000 4140 1\001 +-6 +6 10200 3900 10500 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 10200 3900 10500 3900 10500 4200 10200 4200 10200 3900 +4 0 0 10 0 0 16 0.0000 4 180 120 10300 4140 3\001 +-6 +-6 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 1800 3900 2100 3900 2100 4200 1800 4200 1800 3900 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 3900 3900 4200 3900 4200 4200 3900 4200 3900 3900 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 4200 3900 4500 3900 4500 4200 4200 4200 4200 3900 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 6300 3900 6600 3900 6600 4200 6300 4200 6300 3900 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 9300 3900 9600 3900 9600 4200 9300 4200 9300 3900 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 10500 3900 10800 3900 10800 4200 10500 4200 10500 3900 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 10800 3900 11100 3900 11100 4200 10800 4200 10800 3900 +-6 +6 1800 600 2100 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 600 2100 600 2100 900 1800 900 1800 600 +4 0 0 15 0 0 16 0.0000 4 180 240 1825 840 17\001 +-6 +6 2100 600 2400 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 600 2400 600 2400 900 2100 900 2100 600 +4 0 0 15 0 0 16 0.0000 4 165 120 2200 840 2\001 +-6 +6 2400 600 2700 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 600 2700 600 2700 900 2400 900 2400 600 +4 0 0 15 0 0 16 0.0000 4 195 240 2425 840 13\001 +-6 +6 2700 600 3000 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 600 3000 600 3000 900 2700 900 2700 600 +4 0 0 15 0 0 16 0.0000 4 180 240 2725 840 10\001 +-6 +6 3600 600 3900 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 600 3900 600 3900 900 3600 900 3600 600 +4 0 0 15 0 0 16 0.0000 4 180 240 3625 840 23\001 +-6 +6 3300 600 3600 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 600 3600 600 3600 900 3300 900 3300 600 +4 0 0 15 0 0 16 0.0000 4 165 240 3325 840 27\001 +-6 +6 3000 600 3300 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 600 3300 600 3300 900 3000 900 3000 600 +4 0 0 15 0 0 16 0.0000 4 165 240 3025 840 20\001 +-6 +6 2100 3300 2400 3600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 3300 2400 3300 2400 3600 2100 3600 2100 3300 +4 0 0 15 0 0 16 0.0000 4 165 120 2200 3540 8\001 +-6 +6 1800 3300 2100 3600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 3300 2100 3300 2100 3600 1800 3600 1800 3300 +4 0 0 15 0 0 16 0.0000 4 165 240 1825 3540 20\001 +-6 +6 2400 3300 2700 3600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 3300 2700 3300 2700 3600 2400 3600 2400 3300 +4 0 0 15 0 0 16 0.0000 4 180 240 2425 3540 16\001 +-6 +6 2700 3300 3000 3600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 3300 3000 3300 3000 3600 2700 3600 2700 3300 +4 0 0 15 0 0 16 0.0000 4 195 240 2725 3540 13\001 +-6 +6 3600 3300 3900 3600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 3300 3900 3300 3900 3600 3600 3600 3600 3300 +4 0 0 15 0 0 16 0.0000 4 180 240 3625 3540 26\001 +-6 +6 3300 3300 3600 3600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 3300 3600 3300 3600 3600 3300 3600 3300 3300 +4 0 0 15 0 0 16 0.0000 4 180 240 3325 3540 30\001 +-6 +6 3000 3300 3300 3600 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 3300 3300 3300 3300 3600 3000 3600 3000 3300 +4 0 0 15 0 0 16 0.0000 4 180 240 3025 3540 23\001 +-6 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3750 900 3750 1275 8550 1275 8550 1950 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3450 900 3450 1350 9750 1350 9750 1950 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3150 900 3150 1425 7650 1425 7650 1950 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2850 900 2850 1500 4650 1500 4650 1950 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2550 900 2550 1575 5550 1575 5550 1950 +2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 4 + 1 1 1.00 60.00 120.00 + 1950 900 1950 1650 6750 1650 6750 1950 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 2250 900 2250 1950 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3750 3300 3750 3000 9450 3000 9450 2250 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3450 3300 3450 2925 10650 2925 10650 2250 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3150 3300 3150 2850 8550 2850 8550 2250 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2850 3300 2850 2775 5550 2775 5550 2250 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2550 3300 2550 2700 6450 2700 6450 2250 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2250 3300 2250 2625 4050 2625 4050 2250 +2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 4 + 1 1 1.00 60.00 120.00 + 1950 3300 1950 2550 7650 2550 7650 2250 +4 0 0 20 0 12 16 0.0000 4 210 1050 600 2175 edgetab\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 825 verttab\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 3525 vendtab\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 4125 edlotab\001 diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_lea.eps scotch-6.0.6/doc/src/scotch/s_f_lea.eps --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_lea.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_lea.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,280 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: s_f_lea.fig +%%Creator: fig2dev Version 3.2 Patchlevel 5a +%%CreationDate: Fri Jun 25 18:03:31 2010 +%%For: pelegrin@brol (Francois PELLEGRINI) +%%BoundingBox: 0 0 437 118 +%Magnification: 1.0000 +%%EndComments +%%BeginProlog +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +/pageheader { +save +newpath 0 118 moveto 0 0 lineto 437 0 lineto 437 118 lineto closepath clip newpath +-44.3 221.0 translate +1 -1 scale +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +} bind def +/pagefooter { +$F2psEnd +restore +} bind def +%%EndProlog +pageheader +% +% Fig objects follow +% +% +% here starts figure with depth 50 +% Polyline +0 slj +0 slc +7.500 slw + [60 27 15 20 15 27] 0 sd +n 750 2700 m + 7650 2700 l gs col0 s gr [] 0 sd +% Polyline + [60 27 15 20 15 27] 0 sd +n 750 3300 m + 7650 3300 l gs col0 s gr [] 0 sd +% Polyline + [60 27 15 20 15 27] 0 sd +n 750 2100 m + 7650 2100 l gs col0 s gr [] 0 sd +/Times-Roman ff 266.67 scf sf +7725 2775 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 266.67 scf sf +7725 3375 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 266.67 scf sf +7725 2175 m +gs 1 -1 sc (20) col0 sh gr +% here ends figure; +% +% here starts figure with depth 11 +% Polyline +0 slj +0 slc +7.500 slw +n 900 3600 m + 1200 3000 l gs 0.50 setgray ef gr gs col-1 s gr +% Polyline +n 1200 3000 m + 1500 3600 l gs 0.50 setgray ef gr gs col-1 s gr +% Polyline +n 2100 3600 m + 2400 3000 l gs 0.50 setgray ef gr gs col-1 s gr +% Polyline +n 2400 3000 m + 2700 3600 l gs 0.50 setgray ef gr gs col-1 s gr +% Polyline +n 3300 3600 m + 3600 3000 l gs 0.50 setgray ef gr gs col-1 s gr +% Polyline +n 3600 3000 m + 3900 3600 l gs 0.50 setgray ef gr gs col-1 s gr +% Polyline +n 4500 3600 m + 4800 3000 l gs 0.50 setgray ef gr gs col-1 s gr +% Polyline +n 4800 3000 m + 5100 3600 l gs 0.50 setgray ef gr gs col-1 s gr +% Polyline +n 3600 3000 m + 4200 2400 l gs 0.50 setgray ef gr gs col-1 s gr +% Polyline +n 4200 2400 m + 4800 3000 l gs 0.50 setgray ef gr gs col-1 s gr +% Polyline +n 5700 3600 m + 6000 3000 l gs 0.50 setgray ef gr gs col-1 s gr +% Polyline +n 6000 3000 m + 6300 3600 l gs 0.50 setgray ef gr gs col-1 s gr +% Polyline +n 6900 3600 m + 7200 3000 l gs 0.50 setgray ef gr gs col-1 s gr +% Polyline +n 7200 3000 m + 7500 3600 l gs 0.50 setgray ef gr gs col-1 s gr +% Polyline +n 6000 3000 m + 6600 2400 l gs 0.50 setgray ef gr gs col-1 s gr +% Polyline +n 6600 2400 m + 7200 3000 l gs 0.50 setgray ef gr gs col-1 s gr +% Polyline +n 1200 3000 m + 1800 2400 l gs 0.50 setgray ef gr gs col-1 s gr +% Polyline +n 1800 2400 m + 2400 3000 l gs 0.50 setgray ef gr gs col-1 s gr +% Polyline +n 1800 2400 m + 4200 1800 l gs 0.50 setgray ef gr gs col-1 s gr +% Polyline +n 4200 1800 m + 4200 2400 l gs 0.50 setgray ef gr gs col-1 s gr +% Polyline +n 4200 1800 m + 6600 2400 l gs 0.50 setgray ef gr gs col-1 s gr +% Ellipse +n 900 3600 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 1500 3600 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 1200 3000 75 75 0 360 DrawEllipse gs 0.75 setgray ef gr gs col-1 s gr + +% Ellipse +n 2100 3600 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 2700 3600 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 2400 3000 75 75 0 360 DrawEllipse gs 0.75 setgray ef gr gs col-1 s gr + +% Ellipse +n 3300 3600 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 3900 3600 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 3600 3000 75 75 0 360 DrawEllipse gs 0.75 setgray ef gr gs col-1 s gr + +% Ellipse +n 4500 3600 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 5100 3600 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 4800 3000 75 75 0 360 DrawEllipse gs 0.75 setgray ef gr gs col-1 s gr + +% Ellipse +n 4200 2385 75 75 0 360 DrawEllipse gs 0.75 setgray ef gr gs col-1 s gr + +% Ellipse +n 5700 3600 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 6300 3600 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 6000 3000 75 75 0 360 DrawEllipse gs 0.75 setgray ef gr gs col-1 s gr + +% Ellipse +n 6900 3600 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 7500 3600 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 7200 3000 75 75 0 360 DrawEllipse gs 0.75 setgray ef gr gs col-1 s gr + +% Ellipse +n 6600 2385 75 75 0 360 DrawEllipse gs 0.75 setgray ef gr gs col-1 s gr + +% Ellipse +n 1800 2385 75 75 0 360 DrawEllipse gs 0.75 setgray ef gr gs col-1 s gr + +% Ellipse +n 4200 1800 75 75 0 360 DrawEllipse gs 0.75 setgray ef gr gs col-1 s gr + +% here ends figure; +pagefooter +showpage +%%Trailer +%EOF diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_lea.fig scotch-6.0.6/doc/src/scotch/s_f_lea.fig --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_lea.fig 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_lea.fig 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,98 @@ +#FIG 3.2 Produced by xfig version 3.2.5b +Landscape +Center +Inches +Letter +100.00 +Single +-2 +1200 2 +6 825 2925 1650 3675 +1 3 0 1 -1 -1 10 0 20 0.000 1 0.0000 900 3600 75 75 900 3600 975 3600 +1 3 0 1 -1 -1 10 0 20 0.000 1 0.0000 1500 3600 75 75 1500 3600 1575 3600 +1 3 0 1 -1 -1 10 0 5 0.000 1 0.0000 1200 3000 75 75 1200 3000 1275 3075 +2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 + 900 3600 1200 3000 +2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 + 1200 3000 1500 3600 +-6 +6 2025 2925 2850 3675 +1 3 0 1 -1 -1 10 0 20 0.000 1 0.0000 2100 3600 75 75 2100 3600 2175 3600 +1 3 0 1 -1 -1 10 0 20 0.000 1 0.0000 2700 3600 75 75 2700 3600 2775 3600 +1 3 0 1 -1 -1 10 0 5 0.000 1 0.0000 2400 3000 75 75 2400 3000 2475 3075 +2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 + 2100 3600 2400 3000 +2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 + 2400 3000 2700 3600 +-6 +6 3225 2250 5250 3675 +6 3225 2925 4050 3675 +1 3 0 1 -1 -1 10 0 20 0.000 1 0.0000 3300 3600 75 75 3300 3600 3375 3600 +1 3 0 1 -1 -1 10 0 20 0.000 1 0.0000 3900 3600 75 75 3900 3600 3975 3600 +1 3 0 1 -1 -1 10 0 5 0.000 1 0.0000 3600 3000 75 75 3600 3000 3675 3075 +2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 + 3300 3600 3600 3000 +2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 + 3600 3000 3900 3600 +-6 +6 4425 2925 5250 3675 +1 3 0 1 -1 -1 10 0 20 0.000 1 0.0000 4500 3600 75 75 4500 3600 4575 3600 +1 3 0 1 -1 -1 10 0 20 0.000 1 0.0000 5100 3600 75 75 5100 3600 5175 3600 +1 3 0 1 -1 -1 10 0 5 0.000 1 0.0000 4800 3000 75 75 4800 3000 4875 3075 +2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 + 4500 3600 4800 3000 +2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 + 4800 3000 5100 3600 +-6 +1 3 0 1 -1 -1 10 0 5 0.000 1 0.0000 4200 2385 75 75 4200 2385 4275 2460 +2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 + 3600 3000 4200 2400 +2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 + 4200 2400 4800 3000 +-6 +6 5625 2250 7650 3675 +6 5625 2925 6450 3675 +1 3 0 1 -1 -1 10 0 20 0.000 1 0.0000 5700 3600 75 75 5700 3600 5775 3600 +1 3 0 1 -1 -1 10 0 20 0.000 1 0.0000 6300 3600 75 75 6300 3600 6375 3600 +1 3 0 1 -1 -1 10 0 5 0.000 1 0.0000 6000 3000 75 75 6000 3000 6075 3075 +2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 + 5700 3600 6000 3000 +2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 + 6000 3000 6300 3600 +-6 +6 6825 2925 7650 3675 +1 3 0 1 -1 -1 10 0 20 0.000 1 0.0000 6900 3600 75 75 6900 3600 6975 3600 +1 3 0 1 -1 -1 10 0 20 0.000 1 0.0000 7500 3600 75 75 7500 3600 7575 3600 +1 3 0 1 -1 -1 10 0 5 0.000 1 0.0000 7200 3000 75 75 7200 3000 7275 3075 +2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 + 6900 3600 7200 3000 +2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 + 7200 3000 7500 3600 +-6 +1 3 0 1 -1 -1 10 0 5 0.000 1 0.0000 6600 2385 75 75 6600 2385 6675 2460 +2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 + 6000 3000 6600 2400 +2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 + 6600 2400 7200 3000 +-6 +1 3 0 1 -1 -1 10 0 5 0.000 1 0.0000 1800 2385 75 75 1800 2385 1875 2460 +1 3 0 1 -1 -1 10 0 5 0.000 1 0.0000 4200 1800 75 75 4200 1800 4275 1875 +2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 + 1200 3000 1800 2400 +2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 + 1800 2400 2400 3000 +2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 + 1800 2400 4200 1800 +2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 + 4200 1800 4200 2400 +2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 + 4200 1800 6600 2400 +2 1 4 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 750 2700 7650 2700 +2 1 4 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 750 3300 7650 3300 +2 1 4 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 750 2100 7650 2100 +4 0 0 50 -1 0 16 0.0000 4 195 135 7725 2775 7\001 +4 0 0 50 -1 0 16 0.0000 4 195 135 7725 3375 2\001 +4 0 0 50 -1 0 16 0.0000 4 195 270 7725 2175 20\001 Binary files /tmp/tmpp961_B/2VrPdjj9Sm/scotch-6.0.4.dfsg1/doc/src/scotch/s_f_lea.pdf and /tmp/tmpp961_B/UYzcEkJWzG/scotch-6.0.6/doc/src/scotch/s_f_lea.pdf differ diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_lea.ps scotch-6.0.6/doc/src/scotch/s_f_lea.ps --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_lea.ps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_lea.ps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,138 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: stdin +%%Creator: fig2dev +%%CreationDate: Mon Jan 9 16:52:38 1995 +%%For: pelegrin@brol (Francois PELLEGRINI) +%%BoundingBox: 0 0 261 117 +%%Pages: 0 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/l {lineto} bind def +/m {moveto} bind def +/s {stroke} bind def +/n {newpath} bind def +/gs {gsave} bind def +/gr {grestore} bind def +/clp {closepath} bind def +/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul +4 -2 roll mul setrgbcolor} bind def +/col-1 {} def +/col0 {0 0 0 setrgbcolor} bind def +/col1 {0 0 1 setrgbcolor} bind def +/col2 {0 1 0 setrgbcolor} bind def +/col3 {0 1 1 setrgbcolor} bind def +/col4 {1 0 0 setrgbcolor} bind def +/col5 {1 0 1 setrgbcolor} bind def +/col6 {1 1 0 setrgbcolor} bind def +/col7 {1 1 1 setrgbcolor} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y translate xrad yrad scale 0 0 1 startangle endangle arc + savematrix setmatrix + } def + + end +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def +%%EndProlog + +$F2psBegin +0 setlinecap 0 setlinejoin +-49.0 220.0 translate 0.900 -0.900 scale +0.500 setlinewidth +% Polyline +n 239 199 m 259 239 l gs 0.50 setgray fill gr +gs col-1 s gr +% Polyline +n 119 159 m 199 119 l gs 0.50 setgray fill gr +gs col-1 s gr +% Polyline +n 279 159 m 319 199 l gs 0.50 setgray fill gr +gs col-1 s gr +% Polyline +n 59 239 m 79 199 l gs 0.50 setgray fill gr +gs col-1 s gr +% Polyline +n 79 199 m 99 239 l gs 0.50 setgray fill gr +gs col-1 s gr +% Polyline +n 199 119 m 279 159 l gs 0.50 setgray fill gr +gs col-1 s gr +% Polyline +n 119 159 m 159 199 l gs 0.50 setgray fill gr +gs col-1 s gr +% Polyline +n 79 199 m 119 159 l gs 0.50 setgray fill gr +gs col-1 s gr +% Polyline +n 139 239 m 159 199 l gs 0.50 setgray fill gr +gs col-1 s gr +% Polyline +n 159 199 m 179 239 l gs 0.50 setgray fill gr +gs col-1 s gr +% Polyline +n 219 239 m 239 199 l gs 0.50 setgray fill gr +gs col-1 s gr +% Polyline +n 319 199 m 339 239 l gs 0.50 setgray fill gr +gs col-1 s gr +% Polyline +n 299 239 m 319 199 l gs 0.50 setgray fill gr +gs col-1 s gr +% Polyline +n 239 199 m 279 159 l gs 0.50 setgray fill gr +gs col-1 s gr +% Ellipse +n 219 239 5 5 0 360 DrawEllipse gs 0.00 setgray fill gr +gs col-1 s gr +% Ellipse +n 59 239 5 5 0 360 DrawEllipse gs 0.00 setgray fill gr +gs col-1 s gr +% Ellipse +n 259 239 5 5 0 360 DrawEllipse gs 0.00 setgray fill gr +gs col-1 s gr +% Ellipse +n 319 199 5 5 0 360 DrawEllipse gs 0.75 setgray fill gr +gs col-1 s gr +% Ellipse +n 239 199 5 5 0 360 DrawEllipse gs 0.75 setgray fill gr +gs col-1 s gr +% Ellipse +n 139 239 5 5 0 360 DrawEllipse gs 0.00 setgray fill gr +gs col-1 s gr +% Ellipse +n 198 119 5 5 0 360 DrawEllipse gs 0.75 setgray fill gr +gs col-1 s gr +% Ellipse +n 279 158 5 5 0 360 DrawEllipse gs 0.75 setgray fill gr +gs col-1 s gr +% Ellipse +n 119 158 5 5 0 360 DrawEllipse gs 0.75 setgray fill gr +gs col-1 s gr +% Ellipse +n 159 199 5 5 0 360 DrawEllipse gs 0.75 setgray fill gr +gs col-1 s gr +% Ellipse +n 339 239 5 5 0 360 DrawEllipse gs 0.00 setgray fill gr +gs col-1 s gr +% Ellipse +n 179 239 5 5 0 360 DrawEllipse gs 0.00 setgray fill gr +gs col-1 s gr +% Ellipse +n 79 199 5 5 0 360 DrawEllipse gs 0.75 setgray fill gr +gs col-1 s gr +% Ellipse +n 299 239 5 5 0 360 DrawEllipse gs 0.00 setgray fill gr +gs col-1 s gr +% Ellipse +n 99 239 5 5 0 360 DrawEllipse gs 0.00 setgray fill gr +gs col-1 s gr +$F2psEnd diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_logo.ps scotch-6.0.6/doc/src/scotch/s_f_logo.ps --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_logo.ps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_logo.ps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,1447 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: scotch_logo_color.ps +%%Creator: XV Version 3.00 Rev: 3/30/93 - by John Bradley +%%BoundingBox: 138 361 458 489 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +138 361 translate + +% size of image (on paper, in 1/72inch coords) +319.96800 128.01600 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 36 string def + + +% load up the colormap +currentfile cmap readhexstring +0e5100 000000 c7c700 c10001 cfcfcf c0c033 f47d26 ffa142 ffba54 ffe6a7 +ffd07c ffffff +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +320 128 8 % dimensions of data +[320 0 0 -128 0 128] % mapping matrix +rlecmapimage + +010081010001008101000100810102010281010001008101000100810100010081030001 +008103000100810300010081030001008101000100810100010081010201028101000100 +810100010081010001008101000100810100010081010201028101000100810100010081 +010001008103000100810300010081030001008103000100810100010081010001008101 +020102810100010081010001008101000100810100010081010001008101020102810100 +010081010001008101000100810300010081030001008103000100810300010081010001 +008101000100810102010281010001008101000100810100010081010001008101000100 +810102010281010001008101000100810100010081030001008103000100810300010081 +030001008101000100810100010081010201028101000100810100010081010001008101 +000100810100010081010201028101000100810100010081010001008103000100810300 +010081030001008103000100810100010081010001008101020102810100010081010001 +00810100 +820100010101810001010181000101018102010101810001010181000183010300030103 +820003048204000301038100038303010001010181000101018100010101810201010181 +000101018100010101810001010181000101018100010101810201010181000101018100 +018301030003010382000304820400030103810003830301000101018100010101810001 +010181020101018100010101810001010181000101018100010101810001010181020101 +018100010101810001830103000301038200030482040003010381000383030100010101 +810001010181000101018102010101810001010181000101018100010101810001010181 +000101018102010101810001010181000183010300030103820003048204000301038100 +038303010001010181000101018100010101810201010181000101018100010101810001 +010181000101018100010101810201010181000101018100018301030003010382000304 +820400030103810003830301000101018100010101810001010181020101018100010101 +8100010001 +010181000101018100010101810201010181000101018100010101820001038203000301 +038100048304030003010382000301820100010101810001010181020101018100010101 +810001010181000101018100010101810001010181020101018100010101810001010182 +000103820300030103810004830403000301038200030182010001010181000101018102 +010101810001010181000101018100010101810001010181000101018102010101810001 +010181000101018200010382030003010381000483040300030103820003018201000101 +018100010101810201010181000101018100010101810001010181000101018100010101 +810201010181000101018100010101820001038203000301038100048304030003010382 +000301820100010101810001010181020101018100010101810001010181000101018100 +010101810001010181020101018100010101810001010182000103820300030103810004 +830403000301038200030182010001010181000101018102010101810001010181000101 +01810001 +820001000100810100010081010201028101000100810100010081010001008103000100 +810300010081030001008103000100810100010081010001008101020102810100010081 +010001008101000100810100010081010001008101020102810100010081010001008101 +000100810300010081030001008103000100810300010081010001008101000100810102 +010281010001008101000100810100010081010001008101000100810102010281010001 +008101000100810100010081030001008103000100810300010081030001008101000100 +810100010081010201028101000100810100010081010001008101000100810100010081 +010201028101000100810100010081010001008103000100810300010081030001008103 +000100810100010081010001008101020102810100010081010001008101000100810100 +010081010001008101020102810100010081010001008101000100810300010081030001 +008103000100810300010081010001008101000100810102010281010001008101000100 +8101000000 +010081010001008101000100810102010281010001008101000100810100010081030001 +008103000100810300010081030001008101000100810100010081010201028101000100 +810100010081010001008101000100810100010081010201028101000100810100010081 +010001008103000100810300010081030001008103000100810100010081010001008101 +020102810100010081010001008101000100810100010081010001008101020102810100 +010081010001008101000100810300010081030001008103000100810300010081010001 +008101000100810102010281010001008101000100810100010081010001008101000100 +810102010281010001008101000100810100010081030001008103000100810300010081 +030001008101000100810100010081010201028101000100810100010081010001008101 +000100810100010081010201028101000100810100010081010001008103000100810300 +010081030001008103000100810100010081010001008101020102810100010081010001 +00810100 +820100010101810001010181000101018102010101810001010181000183010300030103 +820003048204000301038100038303010001010181000101018100010101810201010181 +000101018100010101810001010181000101018100010101810201010181000101018100 +018301030003010382000304820400030103810003830301000101018100010101810001 +010181020101018100010101810001010181000101018100010101810001010181020101 +018100010101810001830103000301038200030482040003010381000383030100010101 +810001010181000101018102010101810001010181000101018100010101810001010181 +000101018102010101810001010181000183010300030103820003048204000301038100 +038303010001010181000101018100010101810201010181000101018100010101810001 +010181000101018100010101810201010181000101018100018301030003010382000304 +820400030103810003830301000101018100010101810001010181020101018100010101 +8100010001 +010181000101018100010101810201010181000101018100010101820001038203000301 +038100048304030003010382000301820100010101810001010181020101018100010101 +810001010181000101018100010101810001010181020101018100010101810001010182 +000103820300030103810004830403000301038200030182010001010181000101018102 +010101810001010181000101018100010101810001010181000101018102010101810001 +010181000101018200010382030003010381000483040300030103820003018201000101 +018100010101810201010181000101018100010101810001010181000101018100010101 +810201010181000101018100010101820001038203000301038100048304030003010382 +000301820100010101810001010181020101018100010101810001010181000101018100 +010101810001010181020101018100010101810001010182000103820300030103810004 +830403000301038200030182010001010181000101018102010101810001010181000101 +01810001 +820001000100810100010081010201028101000100810100010081010001008103000100 +810300010081030001008103000100810100010081010001008101020102810100010081 +010001008101000100810100010081010001008101020102810100010081010001008101 +000100810300010081030001008103000100810300010081010001008101000100810102 +010281010001008101000100810100010081010001008101000100810102010281010001 +008101000100810100010081030001008103000100810300010081030001008101000100 +810100010081010201028101000100810100010081010001008101000100810100010081 +010201028101000100810100010081010001008103000100810300010081030001008103 +000100810100010081010001008101020102810100010081010001008101000100810100 +010081010001008101020102810100010081010001008101000100810300010081030001 +008103000100810300010081010001008101000100810102010281010001008101000100 +8101000000 +010081010001008101000100810102010281010001008101000100810100010081030001 +008103000100810300010081030001008101000100810100010081010201028101000100 +810100010081010001008101000100810100010081010201028101000100810100010081 +010001008103000100810300010081030001008103000100810100010081010001008101 +020102810100010081010001008101000100810100010081010001008101020102810100 +010081010001008101000100810300010081030001008103000100810300010081010001 +008101000100810102010281010001008101000100810100010081010001008101000100 +810102010281010001008101000100810100010081030001008103000100810300010081 +030001008101000100810100010081010201028101000100810100010081010001008101 +000100810100010081010201028101000100810100010081010001008103000100810300 +010081030001008103000100810100010081010001008101020102810100010081010001 +00810100 +820100010101810001010181000101018102010101810001010181000183010300030103 +820003048204000301038100038303010001010181000101018100010101810201010181 +000101018100010101810001010181000101018100010101810201010181000101018100 +018301030003010382000304820400030103810003830301000101018100010101810001 +010181020101018100010101810001010181000101018100010101810001010181020101 +018100010101810001830103000301038200030482040003010381000383030100010101 +810001010181000101018102010101810001010181000101018100010101810001010181 +000101018102010101810001010181000183010300030103820003048204000301038100 +038303010001010181000101018100010101810201010181000101018100010101810001 +010181000101018100010101810201010181000101018100018301030003010382000304 +820400030103810003830301000101018100010101810001010181020101018100010101 +8100010001 +010181020101018102010101040202018102010101820201038203050301038105048304 +030503010382050301820102010101810201010104020201810201010181020101018102 +010101810201010104020201810201010182020103820305030103810504830403050301 +038205030182010201010181020101010402020181020101018102010101810201010181 +020101010402020181020101018202010382030503010381050483040305030103820503 +018201020101018102010101040202018102010101810201010181020101018102010101 +040202018102010101820201038203050301038105048304030503010382050301820102 +010101810201010104020201810201010181020101018102010101810201010104020201 +810201010182020103820305030103810504830403050301038205030182010201010181 +02010101040202018102010101810201 +820201020102810102010281010205028101020102810102830205030501058103050105 +810305010581030583050201020102810102010281010205028101020102810102010281 +010201028101020102810102050281010201028101028302050305010581030501058103 +050105810305830502010201028101020102810102050281010201028101020102810102 +010281010201028101020502810102010281010283020503050105810305010581030501 +058103058305020102010281010201028101020502810102010281010201028101020102 +810102010281010205028101020102810102830205030501058103050105810305010581 +030583050201020102810102010281010205028101020102810102010281010201028101 +020102810102050281010201028101028302050305010581030501058103050105810305 +830502010201028101020102810102050281010201028101020002 +010281010201028101020502810102010281010201028201020582050305010581030501 +058103050105820305028202010201028101020502810102010281010201028101020102 +810102010281010205028101020102810102010282010205820503050105810305010581 +030501058203050282020102010281010205028101020102810102010281010201028101 +020102810102050281010201028101020102820102058205030501058103050105810305 +010582030502820201020102810102050281010201028101020102810102010281010201 +028101020502810102010281010201028201020582050305010581030501058103050105 +820305028202010201028101020502810102010281010201028101020102810102010281 +010205028101020102810102010282010205820503050105810305010581030501058203 +0502820201020102810102050281010201028101020102810102 +820102010101810201010104020201810201010181020183010305030103820503048204 +050301038105038303010201010181020101010402020181020101018102010101810201 +010181020101010402020181020101018102018301030503010382050304820405030103 +810503830301020101018102010101040202018102010101810201010181020101018102 +010101040202018102010101810201830103050301038205030482040503010381050383 +030102010101810201010104020201810201010181020101018102010101810201010104 +020201810201010181020183010305030103820503048204050301038105038303010201 +010181020101010402020181020101018102010101810201010181020101010402020181 +020101018102018301030503010382050304820405030103810503830301020101018102 +0101010402020181020101018102010001 +010181000101018100010101810201010181000101018100010101820001038203000301 +038100048304030003010382000301820100010101810001010181020101018100010101 +810001010181000101018100010101810001010181020101018100010101810001010182 +000103820300030103810004830403000301038200030182010001010181000101018102 +010101810001010181000101018100010101810001010181000101018102010101810001 +010181000101018200010382030003010381000483040300030103820003018201000101 +018100010101810201010181000101018100010101810001010181000101018100010101 +810201010181000101018100010101820001038203000301038100048304030003010382 +000301820100010101810001010181020101018100010101810001010181000101018100 +010101810001010181020101018100010101810001010182000103820300030103810004 +830403000301038200030182010001010181000101018102010101810001010181000101 +01810001 +820001000100810100010081010201028101000100810100010081010001008103000100 +810300010081030001008103000100810100010081010001008101020102810100010081 +010001008101000100810100010081010001008101020102810100010081010001008101 +000100810300010081030001008103000100810300010081010001008101000100810102 +010281010001008101000100810100010081010001008101000100810102010281010001 +008101000100810100010081030001008103000100810300010081030001008101000100 +810100010081010201028101000100810100010081010001008101000100810100010081 +010201028101000100810100010081010001008103000100810300010081030001008103 +000100810100010081010001008101020102810100010081010001008101000100810100 +010081010001008101020102810100010081010001008101000100810300010081030001 +008103000100810300010081010001008101000100810102010281010001008101000100 +8101000000 +010081010001008101000100810102010281010001008101000100810100010081030001 +008103000100810300010081030001008101000100810100010081010201028101000100 +810100010081010001008101000100810100010081010201028101000100810100010081 +010001008103000100810300010081030001008103000100810100010081010001008101 +020102810100010081010001008101000100810100010081010001008101020102810100 +010081010001008101000100810300010081030001008103000100810300010081010001 +008101000100810102010281010001008101000100810100010081010001008101000100 +810102010281010001008101000100810100010081030001008103000100810300010081 +030001008101000100810100010081010201028101000100810100010081010001008101 +000100810100010081010201028101000100810100010081010001008103000100810300 +010081030001008103000100810100010081010001008101020102810100010081010001 +00810100 +820100010101810001010181000101018102010101810001010181000183010300030103 +820003048204000301038100038303010001010181000101018100010101810201010181 +000101018100010101810001010181000101018100010101810201010181000101018100 +018301030003010382000304820400030103810003830301000101018100010101810001 +010181020101018100010101810001010181000101018100010101810001010181020101 +018100010101810001830103000301038200030482040003010381000383030100010101 +810001010181000101018102010101810001010181000101018100010101810001010181 +000101018102010101810001010181000183010300030103820003048204000301038100 +038303010001010181000101018100010101810201010181000101018100010101810001 +010181000101018100010101810201010181000101018100018301030003010382000304 +820400030103810003830301000101018100010101810001010181020101018100010101 +8100010001 +010181000101018100010101810201010181000101018100010101820001038203000301 +038100048304030003010382000301820100010101810001010181020101018100010101 +810001010181000101018100010101810001010181020101018100010101810001010182 +000103820300030103810004830403000301038200030182010001010181000101018102 +010101810001010181000101018100010101810001010181000101018102010101810001 +010181000101018200010382030003010381000483040300030103820003018201000101 +018100010101810201010181000101018100010101810001010181000101018100010101 +810201010181000101018100010101820001038203000301038100048304030003010382 +000301820100010101810001010181020101018100010101810001010181000101018100 +010101810001010181020101018100010101810001010182000103820300030103810004 +830403000301038200030182010001010181000101018102010101810001010181000101 +01810001 +820001000100810100010081010201028101000100810100010081010001008103000100 +810300010081030001008103000100810100010081010001008101020102810100010081 +010001008101000100810100010081010001008101020102810100010081010001008101 +000100810300010081030001008103000100810300010081010001008101000100810102 +010281010001008101000100810100010081010001008101000100810102010281010001 +008101000100810100010081030001008103000100810300010081030001008101000100 +810100010081010201028101000100810100010081010001008101000100810100010081 +010201028101000100810100010081010001008103000100810300010081030001008103 +000100810100010081010001008101020102810100010081010001008101000100810100 +010081010001008101020102810100010081010001008101000100810300010081030001 +008103000100810300010081010001008101000100810102010281010001008101000100 +8101000000 +010081010001008101000100810102010281010001008101000100810100010081030001 +008103000100810300010081030001008101000100810100010081010201028101000100 +810100010081010001008101000100810100010081010201028101000100810100010081 +010001008103000100810300010081030001008103000100810100010081010001008101 +020102810100010081010001008101000100810100010081010001008101020102810100 +010081010001008101000100810300010081030001008103000100810300010081010001 +008101000100810102010281010001008101000100810100010081010001008101000100 +810102010281010001008101000100810100010081030001008103000100810300010081 +030001008101000100810100010081010201028101000100810100010081010001008101 +000100810100010081010201028101000100810100010081010001008103000100810300 +010081030001008103000100810100010081010001008101020102810100010081010001 +00810100 +820100010101810001010181000101018102010101810001010181000183010300030103 +820003048204000301038100038303010001010181000101018100010101810201010181 +000101018100010101810001010181000101018100010101810201010181000101018100 +018301030003010382000304820400030103810003830301000101018100010101810001 +010181020101018100010101810001010181000101018100010101810001010181020101 +018100010101810001830103000301038200030482040003010381000383030100010101 +810001010181000101018102010101810001010181000101018100010101810001010181 +000101018102010101810001010181000183010300030103820003048204000301038100 +038303010001010181000101018100010101810201010181000101018100010101810001 +010181000101018100010101810201010181000101018100018301030003010382000304 +820400030103810003830301000101018100010101810001010181020101018100010101 +8100010001 +010181000101018100010101810201010181000101018100010101820001038203000301 +038100048304030003010382000301820100010101810001010181020101018100010101 +810001010181000101018100010101810001010181020101018100010101810001010182 +000103820300030103810004830403000301038200030182010001010181000101018102 +010101810001010181000101018100010101810001010181000101018102010101810001 +010181000101018200010382030003010381000483040300030103820003018201000101 +018100010101810201010181000101018100010101810001010181000101018100010101 +810201010181000101018100010101820001038203000301038100048304030003010382 +000301820100010101810001010181020101018100010101810001010181000101018100 +010101810001010181020101018100010101810001010182000103820300030103810004 +830403000301038200030182010001010181000101018102010101810001010181000101 +01810001 +820001000100810100010081010201028101000100810100010081010001008103000100 +810300010081030001008103000100810100010081010001008101020102810100010081 +010001008101000100810100010081010001008101020102810100010081010001008101 +000100810300010081030001008103000100810300010081010001008101000100810102 +010281010001008101000100810100010081010001008101000100810102010281010001 +008101000100810100010081030001008103000100810300010081030001008101000100 +810100010081010201028101000100810100010081010001008101000100810100010081 +010201028101000100810100010081010001008103000100810300010081030001008103 +000100810100010081010001008101020102810100010081010001008101000100810100 +010081010001008101020102810100010081010001008101000100810300010081030001 +008103000100810300010081010001008101000100810102010281010001008101000100 +8101000000 +010081030001008103000100810305010581030001008103000100820300030503010006 +030100810300010081030001008103050105810300010081030001008103000100810300 +010081030001008103050105810300010081030001008203000305030100060301008103 +000100810300010081030501058103000100810300010081030001008103000100810300 +010081030501058103000100810300010082030003050301000603010081030001008103 +000100810305010581030001008103000100810300010081030001008103000100810305 +010581030001008103000100820300030503010006030100810300010081030001008103 +050105810300010081030001008103000100810300010081030001008103050105810300 +010081030001008203000305030100060301008103000100810300010081030501058103 +0001008103000100810300 +820300030103810003010381000301038105030103810003010381000307030104070381 +000301038100030103810003010381050301038100030103810003010381000301038100 +030103810003010381050301038100030103810003070301040703810003010381000301 +038100030103810503010381000301038100030103810003010381000301038100030103 +810503010381000301038100030703010407038100030103810003010381000301038105 +030103810003010381000301038100030103810003010381000301038105030103810003 +010381000307030104070381000301038100030103810003010381050301038100030103 +810003010381000301038100030103810003010381050301038100030103810003070301 +040703810003010381000301038100030103810503010381000301038100030003 +010381000301038100030103810503010381000301038100030103810003060301040803 +810003010381000301038105030103810003010381000301038100030103810003010381 +000301038105030103810003010381000301038100030603010408038100030103810003 +010381050301038100030103810003010381000301038100030103810003010381050301 +038100030103810003010381000306030104080381000301038100030103810503010381 +000301038100030103810003010381000301038100030103810503010381000301038100 +030103810003060301040803810003010381000301038105030103810003010381000301 +038100030103810003010381000603060103810003010381000301038100030603010408 +0381000301038100030103810503010381000301038100030103810003 +820003000100810300010081030501058103000100810300010081030081000305030100 +060382000300010081030001008103050105810300010081030001008103000100810300 +010081030001008103050105810300010081030001008103008100030503010006038200 +030001008103000100810305010581030001008103000100810300010081030001008103 +000100810305010581030001008103000100810300810003050301000603820003000100 +810300010081030501058103000100810300010081030001008103000100810300010081 +030501058103000100810300010081030081000305030100060382000300010081030001 +008103050105810300010081030001008103060c06820503000100810300010081030081 +000305030100060382000300010081030001008103050105810300010081030001008103 +000000 +010081030001008103000100810305010581030001008103000100820300030503010006 +030100810300010081030001008103050105810300010081030001008103000100810300 +010081030001008103050105810300010081030001008203000305030100060301008103 +000100810300010081030501058103000100810300010081030001008103000100810300 +010081030501058103000100810300010082030003050301000603010081030001008103 +000100810305010581030001008103000100810300010081030001008103000100810305 +010581030001008103000100820300030503010006030100810300010081030001008103 +050105810306120602058103000100810300010082030003050301000603010081030001 +008103000100810305010581030001008103000100810300 +820300030103810003010381000301038105030103810003010381000307030104070381 +0003010381000301030e0682030003010381000301038100030103810503010381000301 +038100030703010407038100030103810003010381000301038105030103810003010381 +000301038100030103810003010381000301038105030103810003010381000307030104 +070381000301038100030103810003010381050301038100030103810003010381000301 +038100030103810003010381050301038100030103810003070301040703810003010381 +000301038100030103820503061206010381050301038100030103810003070301040703 +810003010381000301038100030103810503010381000301038100030003 +010381000301038100030103810503010381000301038100030103810003060301040803 +810003010314060203810003010381050301038100030103810003010381000306030104 +080381000301038100030103810503010381000301038100030103810003010381000301 +038100030103810503010381000301038100030103810003060301040803810003010381 +000301038105030103810003010381000301038100030103810003010381000301038105 +030103810003010381000301038100030603010408038100030103810003010381050301 +031406020381000301038100030103810003060301040803810003010381000301038105 +03010381000301038100030103810003 +820004000100810400010081040501058104000100810400010081040001008104000100 +820400040104020081040001008104008100061806020081040501058104000100810400 +010081040001008104000100820400040104020081040001008104000100810400010081 +040501058104000100810400010081040001008104000100810400010081040501058104 +000100810400010081040001008104000100820400040104020081040001008104000100 +810400010081040501058104000100810400010081040001008104000100810400010081 +040501058104000100810400010081040001008104000100820400040104020081040001 +008104000100810400010081040501058104000100110601058104000100810400010081 +040001008104000100820400040104020081040001008104000100810400010081040501 +05810400010081040001008104000000 +010081040001008104000100810405010581040001008104000100810400010081040001 +00020482000400010081040001001d060100810405010581040001008104000100810400 +010081040001000204820004000100810400010081040001008104000100810405010581 +040001008104000100810400010081040001008104000100810405010581040001008104 +000100810400010081040001000204820004000100810400010081040001008104000100 +810405010581040001008104000100810400010081040001008104000100810405010581 +040001008104000100810400010081040001000204820004000100810400010081040001 +008104000100810405010581040001008104008100060b06810405010581040001008104 +000100810400010081040001000204820004000100810400010081040001008104000100 +810405010581040001008104000100810400 +82030003010381000301038100030103810503010381000301038100030703010407030a +068203050301038100038103060b06810003010381050301038100030103810003070301 +040703810003010381000301038100030103810503010381000301038100030103810003 +010381000301038100030103810503010381000301038100030703010407038100030103 +810003010381000301038105030103810003010381000301038100030103810003010381 +000301038105030103810003010381000307030104070381000301038100030103810003 +0103810503010381000301030c0602038105030103810003010381000307030104070381 +0003010381000301038100030103810503010381000301038100030003 +010381000301038100030103810503010381000301038100030103810003060301040503 +0b060203810003010381000301030b068105030103810003010381000301038100030603 +010408038100030103810003010381050301038100030103810003010381000301038100 +030103810003010381050301038100030103810003010381000306030104080381000301 +038100030103810503010381000301038100030103810003010381000301038100030103 +810503010381000301038100030103810003060301040803810003010381000301038105 +03010381000301038100038103060b068105030103810003010381000301038100030603 +0104080381000301038100030103810503010381000301038100030103810003 +820003000100810300010081030501058103000100810300010081030081000305030100 +05030a060205810300010081030001008203000609060205810300010081030001008103 +008100030503010006038200030001008103000100810305010581030001008103000100 +810300010081030001008103000100810305010581030001008103000100810300810003 +050301000603820003000100810300010081030501058103000100810300010081030081 +000681060001008103000100810305010581030001008103000100810300810003050301 +00060382000300010081030001008103050105810300010081030001000c060205810300 +010081030001008103008100030503010006038200030001008103000100810305010581 +0300010081030001008103000000 +010081030001008103000100810305010581030001008103000100820300030503010004 +030a06820003050105810300010081030001008203000607068200030501058103000100 +810300010082030003050301000603010081030001008103000100810305010581030001 +008103000100810300010081030001008103000100810305010581030001008103000100 +820300030503010006030100810300010081030001008103050105810300010081030001 +000306810300010081030001008103050105810300010081030001008203000305030100 +0603010081030001008103000100810305010581030001008103008100060a0682000305 +010581030001008103000100820300030503010006030100810300010081030001008103 +05010581030001008103000100810300 +82030003010381000301038100030103810503010381000301038100030703010403030a +068203000301038105030103810003010381000301030306010701068100030103810503 +010381000301038100030703010407038100030103810003010381000301038105030103 +810003010381000301038100030103810003010381000301038105030103810003010381 +000307030104070381000301038100030103810003010381050301038100038103060406 +020381000301038100030103810503010381000301038100030703010407038100030103 +8100030103810003010381050301038100038103060b0681000301038105030103810003 +010381000307030104070381000301038100030103810003010381050301038100030103 +8100030003 +010381000301038100030103810503010381000301038100030103810003060301040203 +0b0601038105030103810003010381000301038100030103060682030503010381000301 +038100030103810003060301040803810003010381000301038105030103810003010381 +000301038100030103810003010381000301038105030103810003010381000301038100 +030603010408038100030103810003010381050301038100030103070681000301038100 +030103810503010381000301038100030103810003060301040803810003010381000301 +0381050301038100030103820003060b0682030503010381000301038100030103810003 +06030104080381000301038100030103810503010381000301038100030103810003 +820003000100810300010081030501058103000100810300010081030081000305030100 +02030a060100810305010581030001008103000100810300010081030605068103050105 +810300010081030001008103008100030503010006038200030001008103000100810305 +010581030001008103000100810300010081030001008103000100810305010581030001 +008103000100810300810003050301000603820003000100810300010081030501058103 +008100060706810300010081030001008103050105810300010081030001008103008100 +030503010006038200030001008103000100810305010581030001008103008100060b06 +810305010581030001008103000100810300810003050301000603820003000100810300 +01008103050105810300010081030001008103000000 +010081010001008101000100810102010281010001008101000100810100010081030001 +008103000100810306020602070406020081010201028101000100810100010081010001 +008201070686060807060001020102810100010081010001008101000100810300010081 +030001008103000100810300010081010001008101000100810102010281010001008101 +000100810100010081010001008101000100810102010281010001008101000100810100 +010081030001008103000100810300010081030001008101000100810100010081010201 +020a06820001000100810100010081010201028101000100810100010081010001008103 +000100810300010081030001008103000100810100010081010001008101020102810100 +0100820100060a0601008101020102810100010081010001008101000100810300010081 +030001008103000100810300010081010001008101000100810102010281010001008101 +000100810100 +820100010101810001010181000101018102010101810001010181000183010300030103 +820003048304000306020602078106078107068106018201000101018102010101810001 +010181000101018200010681060884080601000101018102010101810001010181000183 +010300030103820003048204000301038100038303010001010181000101018100010101 +810201010181000101018100010101810001010181000101018100010101810201010181 +000101018100018301030003010382000304820400030103810003830301000101018100 +0101018100018101060b0681000101018100010101810001010181020101018100010101 +810001830103000301038200030482040003010381000383030100010101810001010181 +000101018102010101820001060b06820100010101810201010181000101018100018301 +030003010382000304820400030103810003830301000101018100010101810001010181 +0201010181000101018100010001 +010181000101018100010101810201010181000101018100010101820001038203000301 +038100048404030006070107860608070607060781070101018102010101810001010181 +000101018100010101840006080906810601820102010101810001010181000101018200 +010382030003010381000483040300030103820003018201000101018100010101810201 +010181000101018100010101810001010181000101018100010101810201010181000101 +018100010101820001038203000301038100048304030003010382000301820100010101 +81000101018102060b060101810001010181000101018102010101810001010181000101 +018200010382030003010381000483040300030103820003018201000101018100010101 +810201010181000101018100060b06010181020101018100010101810001010182000103 +820300030103810004830403000301038200030182010001010181000101018102010101 +81000101018100010101810001 +820001000100810100010081010201028101000100810100010081010001008103000100 +810300010081030601068207080901098507080907060082000102010281010001008101 +000100810100010082010007860706070600010201028101000100810100010081010001 +008103000100810300010081030001008103000100810100010081010001008101020102 +810100010081010001008101000100810100010081010001008101020102810100010081 +010001008101000100810300010081030001008103000100810300010081010001008101 +000100820102060206030804068200010001008101000100810102010281010001008101 +000100810100010081030001008103000100810300010081030001008101000100810100 +010081010201028101000100820100060406810706040682000102010281010001008101 +000100810100010081030001008103000100810300010081030001008101000100810100 +01008101020102810100010081010001008101000000 +010081010001008101000100810102010281010001008101000100810100010081030001 +008103000100840607060806010601070106820706000100810102010281010001008101 +000100810100010082010006020601008101020102810100010081010001008101000100 +810300010081030001008103000100810300010081010001008101000100810102010281 +010001008101000100810100010081010001008101000100810102010281010001008101 +000100810100010081030001008103000100810300010081030001008101000100810100 +010081010601060108820607068206080601060100810100010081010001008101020102 +810100010081010001008101000100810300010081030001008103000100810300010081 +010001008101000100810102010281010001008101060306010782060706010602008101 +020102810100010081010001008101000100810300010081030001008103000100810300 +010081010001008101000100810102010281010001008101000100810100 +820100010101810001010181000101018102010101810001010181000183010300030103 +820003048504000708070681060781070604060101810001010181020101018100010101 +810001010181000181010602068201000101018102010101810001010181000183010300 +030103820003048204000301038100038303010001010181000101018100010101810201 +010181000101018100010101810001010181000101018100010101810201010181000101 +018100018301030003010382000304820400030103810003830301000101018100010101 +860001060708090701070108010781080182010001010181000101018100010101810201 +010181000101018100018301030003010382000304820400030103810003830301000101 +018100010101810001010181020101018300010607820706078207060781070601060101 +810001010181020101018100010101810001830103000301038200030482040003010381 +00038303010001010181000101018100010101810201010181000101018100010001 +010181000101018100010101810201010181000101018100010101820001038203000301 +038100048404030607060a06010181020101018100010101810001010181000101018200 +010601060201810201010181000101018100010101820001038203000301038100048304 +030003010382000301820100010101810001010181020101018100010101810001010181 +000101018100010101810001010181020101018100010101810001010182000103820300 +0301038100048304030003010382000301820100010101810001010101088607080a090a +090a820a0708810801010181000101018100010101810201010181000101018100010101 +820001038203000301038100048304030003010382000301820100010101810001010181 +020101018100010101010607070108810601010181020101018100010101810001010182 +000103820300030103810004830403000301038200030182010001010181000101018102 +01010181000101018100010101810001 +820001000100810100010081010201028101000100810100010081010001008103000100 +81030001008103060c068200010201028101000100810100010081010001008101008100 +060106010081010201028101000100810100010081010001008103000100810300010082 +030608810806840608060806830600010001008101020102810100010081010001008101 +000100810100010081010001008201060881080682060806810608810806810600010081 +030001008103000100810300010081030001008101000100810100010081010685060709 +080708020881070681060082000100010081010001008101020102810100010081010001 +008101000100810300010001068309060806030601008101000100810100010081010201 +02810100010083010806078a070607060706080607060082000102010281010001008101 +008600060807060706840608000300010081030001008103000100810100010081010001 +008101020102810100010081010001008101000000 +010081010001008101000100810102010281010001008101000100810100010081030001 +0081030001000e0682000102010281010001008101000100810100010081010001008101 +000100810102010281010001008101000100810100010081030001000306880706070908 +0908070a810a060106020081010201028101000100810100010081010001008101000100 +8101060306820a0908010885090709080706010682000300010081030001008103000100 +810300010081010605060307020603070b06820001020102810100010081010001008101 +00810006010601088806070a090708090806020681010001008101000100810102010281 +01000100810608020881070882080a078307060100010081010201028101000100820a06 +080108010701088406070003000100810300010081030001008101000100810100010081 +0102010281010001008101000100810100 +820102010101810201010104020201810201010181020183010305030103820503048204 +05060e060302020181020101018102010101810201010181020101010402020181020101 +0181020183010305038103060b0601090506040202018102010101810201010181020181 +01060206010785080a070609060306030802060103820503048204050301038105038303 +010206070681080601068107060106010781080609060402020181020101018202010603 +06830706070681060981090a830a070a0881080601068201020101010402020181020882 +080a0981090a010a01088207060101010402010181060881080a010a8208090882080a08 +830807030482040503010381050383030102010101810201010104020201810201010181 +02010001 +010181020101018102010101040202018102010101820201038203050301038105048204 +03060f060302020181020101018102010101810201010181020101010402020181020101 +018202010381030616060402020181020101018102010101140681080603068203050483 +04030503010382050301810106060681080601068308060806820607060b068101020302 +020181020181010616068201020101010402010183060807080208820907080108820602 +0101010302020602088306080a0682060906820608068106048304030503010382050301 +8201020101018102010101040202018102010101810201 +820201020102810102010281010205028101020102810102830205030501058103050105 +810306100604028101020102810102010281010201028101020102810102050281010201 +028101028202050608060105820305060a060502810102010281010201020c0602028201 +020609060205810305010581030583050201061c06820201020502810102810206080602 +058103060a06020281010205028206080783070607088208060881080681060201028101 +020102110601058103050105810305830502010201028101020102810102050281010201 +028101020002 +010281010201028101020502810102010281010201028201020582050305010581030501 +058103061006820201020102810102010281010201028101020102810102050281010201 +028101020102810106090681030501058103060b06010281010201028101020102820102 +060b06820201020102820102060906020581030501058203050282020102010281010281 +02060b0681010201028101020102810102050281010201020a068205030501050c060602 +810102810206830608060701070406820201020302130601058103050105820305028202 +01020102810102050281010201028101020102810102 +820100010101810001010181000101018102010101810001010181000183010300030103 +820003048304000306120601018100010101810001010181000101018100010101810001 +010181020101018100010101810006090681000301038100038103060a06820102010101 +8100010101820001060b0682010201010181000101010a06820400030103810003830301 +0001010181000101010b0681000101018100010101810001010181000101018102010101 +0a06830300030483040003060a0601018100010101810201010101068208060781070601 +068107068206000101018200010613068204000301038100038303010001010181000101 +018100010101810201010181000101018100010001 +010181000101018100010101810201010181000101018100010101820001038203000301 +038100048404030003061206010181000101018100010101810001010181000101018102 +0101018100010101810001810106090683040300030103820003060a0601018100010101 +81000101010c060201810001010181000181010609068304030003010382000301820100 +010101820001060b06820100010101810001010181000101018102010101820001060906 +020381000483040300060a06020181020101018100018101060a06820100010101040602 +018100060b06830403000301038200030182010001010181000101018102010101810001 +01018100010101810001 +820001000100810100010081010201028101000100810100010081010001008103000100 +810300010081030081000614060200810100010081010001008101000100810102010281 +0100010081010081000609060100810300010081030001000a0682020100010081010001 +000c06020281010001008101000100810106090681030001008103000100810100010081 +01008100060b068101000100810100010081010001008101020102820100060906020081 +030001008103008100060906010081010201028101008100060b06810100010004060200 +820100060b06820003000100810300010081010001008101000100810102010281010001 +0081010001008101000000 +010081010001008101000100810102010281010001008101000100810100010081030001 +00810300010081030081000605068107060d060100810100010081010001008101000100 +810102010281010001008101060a06020081030001008103008100060906010281010001 +00820100060b06820001020102810100010081010001000b068103000100810300010081 +01000100820100060b068200010001008101000100810100010081010201020b06810300 +0100810300010082030006090602008101020102820100060a0601008101008100060206 +820201000100820100060a06010081030001008103000100810100010081010001008101 +02010281010001008101000100810100 +820100010101810001010181000101018102010101810001010181000183010300030103 +820003048204000301038100060306010706060107060681000101018100010101810001 +010181000101018102010101820001060906810304820400030103810003820301060906 +820102010101820001060c068100010101810201010181000101018100060a0602038100 +03830301000101018100018101060a068201000101018100010101810001010181000101 +018102060906810003010382000304820400038103060906010181000101018102018101 +060a068201000181010602068201020101018100018101060a0682040003010381000383 +03010001010181000101018100010101810201010181000101018100010001 +010181000101018100010101810201010181000101018100010101820001038203000301 +038100048304030003010381000601060507810607050701068107060206020181000101 +018100010101810201010181000101010b06810004830403000301038300030106080602 +0181000101018100060b0601018102010101810001010181000101010b06810003010382 +0003018201000101018100060b0601018100010101810001010181000101018102018101 +060a06820300030103810004840403000306080681000101018102010101820001060a06 +01018100060206020181000101018100060b068304030003010382000301820100010101 +8100010101810201010181000101018100010101810001 +820001000100810100010081010201028101000100810100010081010001008103000100 +810300010081030001008103008200060781070681060701078106070107810607040704 +068200010001008101000100810102010281010001000b06810300010081030001008103 +0001008101060606020281010001008101060b0601008101020102810100010081010001 +008101060a06020081030001008101000100820100060b06820001000100810100010081 +010001008101028102060a06820003000100810300010081030001000706810100010081 +01020102820100060b0682000106020602028101000100820100060a0601008103000100 +8103000100810100010081010001008101020102810100010081010001008101000000 +010081010001008101000100810102010281010001008101000100810100010081030001 +008103000100810300010081030081000681060701078106078307060706810607020781 +060701070306820001000100810100010081010201028101008100060106810706020681 +070601068200030001008103000100810300010006068200010201028101008100060c06 +020081010201028101000100810100010008068107060106020081030001008101000100 +81010602068107068206070603060100810100010081010001008101000100820102060a +060100810300010081030001008103008100060506010081010001008101020102810106 +0a060200020682000102010281010001008101060a060200810300010081030001008101 +0001008101000100810102010281010001008101000100810100 +820100010101810001010181000101018102010101810001010181000183010300030103 +820003048204000301038100038403010006070107020601070306810706040684070607 +060101018100010101810001010181020181010601060207810607010701068303000304 +820400030103810003830301000183010600010101810001010181020101010206810706 +080601018100010101810201010181000101018100060206820706070307010601038100 +038303010001010184000106070681060782070607810706010601018100010101810001 +01018100010101820001060a068301030003010382000304820400030103850003060100 +010101810001010181000101018202010606060207810601810106010682010001010181 +02010101820001060a060104810003010381000383030100010101810001010181000101 +01810201010181000101018100010001 +010181000101018100010101810201010181000101018100010101820001038203000301 +038100048304030003010382000301820100060106050781060702070106010782060706 +010681000101018100010101810201010183000106070707010601038100048304030003 +010382000301820100010101810001010181020101018400010607068106078107068106 +078107060206810001010181020101018100010101810001010103068207060783070607 +060106020382000301820100010101020602078106070107020602018100010101810001 +010181000101018102068106078107060606810103820300030103810004830403000301 +038200030182010001010181000101018102010101810007070784060706010683060706 +0182010201010181000101010c0601048203000301038200030182010001010181000101 +01810201010181000101018100010101810001 +820001000100810100010081010201028101000100810100010081010001008103000100 +8103000100810300010081030001008101000100820706070f0781060781070082000100 +010081010201028201000702070106810706810607820706008200030001008103000100 +810300010081010001008101000100810102010281010081000681060784070607060701 +070306020081010201028101000100810100010081010681060701078106070307820607 +008200030001008101000100810106810607040704060100810100010081010001008101 +000100810106810607030782060706010602008103000100810300010081030001008103 +000100810100010081010001008101020102820100068106070707850600060706008200 +0102010281010001008101060a0602008103000100810300010081010001008101000100 +8101020102810100010081010001008101000000 +010081010001008101000100810102010281010001008101000100810100010081030001 +008103000100810300010081030001008101000100810107070781080709070100810100 +010081010201028101070407810607030702008103000100810300010081030001008101 +000100810100010081010201028101068106070107810607050783060001000100810102 +010281010001008101008100068106070207830607080784070807060001008103000100 +810100010081060701078406070607060106820706000100810100010081010001008101 +000100810607060701068207010001008103000100810300010081030001008103000100 +8101000100810100010081010201028107068106070207830607060782070b0683060701 +000100810102010281010001008506070607060783070607060106810300010081030001 +00810300010081010001008101000100810102010281010001008101000100810100 +820100010101810001010181000101018102010101810001010181000183010300030103 +820003048204000301038100038303010001010181000181010704078308070807020781 +0807040782010001010181000101018102070b0701038200030482040003010381000383 +030100010101810001010181000101018402010706070107820607068106070307810001 +010181000101018102010101810001010181060703078306070607820708078107038203 +000383030100010101820006070307810607010701060201810001010181000101018100 +010101010601070108020703060101820300030103820003048204000301038100038303 +010001010181000101018100010101810206810607050781060785070b06070601010181 +000101018102010101010604078106078107060106810304820400030103810003830301 +0001010181000101018100010101810201010181000101018100010001 +010181000101018100010101810201010181000101018100010101820001038203000301 +038100048304030003010382000301820100010101810001010183070807088208070884 +080708070883080708070207820100010101810201010102088407080708070407020381 +000483040300030103820003018201000101018100010101810201010181000705078106 +070407820100010101810201010181000101018100018101070607820806070107810603 +010382000301820100018101080108090781000101018100010101810001010181000181 +010702078108070107040682000103820300030103810004830403000301038200030182 +010001010181000101018102010101010781080781070881080781070682060706840607 +010001010181020101018100018201060701078106078207060781070683060300048304 +030003010382000301820100010101810001010181020101018100010101810001010181 +0001 +820001000100810100010081010201028101000100810100010081010001008103000100 +81030001008103000100810300010081010001008101000100820102080a088107088208 +070882080100010081010201028101080308810708010883070807000100810300010081 +0300010081030001008101000100810100010081010201028101070c0782000100010081 +010201028101000100810100010004070108810607040701008103000100810100010002 +080407810807020702008101000100810100010081010001000107810807020781060784 +070607010001008103000100810300010081030001008103000100810100010081010001 +008101020102850108070806080308020702068101000100810102010281010001008106 +070207810807020701068103000100810300010081030001008101000100810100010081 +01020102810100010081010001008101000000 +010081010001008101000100810102010281010001008101000100810100010081030001 +008103000100810300010081030001008101000100810100010082010208090881070803 +0882000100010081010281020882080a0884080708070882080708820803000100810300 +010081030001008103000100810100010081010001008101020102010702080107810807 +010781080781070082000100010081010201028101000100820100078207080701078108 +078207080781070882080700010081030001008101008100080308860708070807080782 +070100010081010001008101000100820100070207860807080706080701078200010001 +008103000100810300010081030001008103000100810100010081010001008101028302 +070807010785080708060708010882070600820001000100810102010281010081000701 +078106080208860706070600030001008103000100810300010081010001008101000100 +810102010281010001008101000100810100 +820100010101810001010181000101018102010101810001010181000183010300030103 +820003048204000301038100038303010001010181000101018100010101100802018100 +0101010108810a0808080203820003048204000301038100038303010001010181000101 +018100010101830208070806088207080783070100010101810001010181020101018100 +018201070883080708078107080408810703010381000383030100010101080884070807 +000101018100010101810001010181000181010787070807080708070881080701078100 +018301030003010382000304820400030103810003830301000101018100010101810001 +010103088107080308810a08020882010001010181000101018102018101078307080708 +040801078306000304820400030103810003830301000101018100010101810001010181 +0201010181000101018100010001 +01018100010101810001010181020101018100010101810001010182000103830300030a +010a010482030003010382000301820100010101810001010181020101010308010a0908 +81000101018102018101080208050a020881000301038100048304030003010382000301 +820100010101810001010181020101010208010708080101810001010181020101018100 +010101820001080c0881000301038200030183010001080b088201000101018100010101 +810001010182000108050881070801080107830100010382030003010381000483040300 +030103820003018201000101018100010101810201810108010881070882080a0884080a +080708810801010181000101018102010101820001080108810a08060801038100048304 +030003010382000301820100010101810001010181020101018100010101810001010181 +0001 +820001000100810100010081010201028101000100810100010081010001008103008100 +0a010a0100810300010081030001008101000100810100010081010201028401000a080a +010a83080a080a810a08030802008101020102020a0108820a080a020a82080300010081 +03000100810300010081030001008101000100810100010081010201020908810a080108 +01008101000100810102010281010001008201000a020a0408010a82080a088108000100 +810300010081010081000a020a0108830a080a0802088101000100810100010081010001 +008101008100080108810a0882080a080308820001000100810300010081030001008103 +00010081030001008101000100810100010081010201020108020a86080a080a080a0882 +080700820001000100810102010281010081000881080a820a080a010a82080a08830800 +030001008103000100810300010081010001008101000100810102010281010001008101 +0001008101000000 +010081010001008101000100810102010281010001008101000100810100010086030009 +0a070a00820003000100810300010081010001008101000100810102010281010a0b0a01 +0881010001008201020a060a0109020a8200030001008103000100810300010081030001 +00810100010081010001008101028102080308810a080208010a01080200810100010081 +01020102810100010081010a030a81090a070a810300010081030001008201000a020a81 +080a020a0308820001000100810100010081010001008101080208010a0208810a080108 +010081010001008103000100810300010081030001008103000100810100010081010001 +0081010281020881080a010a81080a050a8101000100810100010081010201028201080a +090a81070082000300010081030001008103000100810100010081010001008101020102 +81010001008101000100810100 +82010001010181000101018100010101810201010181000101018100018701030003060a +090a830a0400030103810003830301000101018100010101810001010181020181010a02 +0a81090a070a02018100018201090a030a0209030a810003010382000304820400030103 +8100038303010001010181000101018100010101030a83080a080a050a01018100010101 +81000101018102010101820001090109820a090a010a82090a0981090a820a0003010381 +0003830301000183010a090a050a81080a830a0100010101810001010181000101018200 +010a820a080a050a85080a08010001830103000301038200030482040003010381000383 +030100010101810001010181000181010a030a81090a060a020181000101018100010101 +8202010a030a81090a040a01038200030482040003010381000383030100010101810001 +01018100010101810201010181000101018100010001 +01018102010101810201010104020201810201010182020103850305060a090a840a0403 +05030103820503018201020101018102010101040281010a010a0209820a090a040a8102 +0101010102010a81090a860a090a090a090a010a82030503010381050483040305030103 +8205030182010201010181020101010202040a0108010a81090a020a0201810201010104 +0202018102090109010a81090a010a82090a0984090a0305030103820503018201020a01 +0a81090a010a81090a030a010181020101018102010101810201010181020a020a81090a +050a81080183010201038203050301038105048304030503010382050301820102010101 +81020101010102010a0409010a83090a090a820a0201010181020101010402040a81090a +040a02038105048304030503010382050301820102010101810201010104020201810201 +0101810201 +82020102010281010201028101020502810102010281010284020503050681060a010a82 +05030501058103058305020102010281010201028101020502810a090209810a09040981 +0a0201028101028102090809840a090a0305010581030501058103050105810305830502 +0102010281010201028101020102820a090a070a81090a810a0282020102010281010205 +0281010a810a0982090a0982090a090109810a0983090a0305010581030584050201020a +810a090909820201020102810102010281010201028201020a850a090a090a090109030a +820201028302050305010581030501058103050105810305830502010201028101020102 +8101028102090609810a0902098101020102810102010281010203020809830a090a0582 +050305010581030501058103058305020102010281010201028101020502810102010281 +01020002 +0102810102010281010205028101020102810102010282010205830503070a010a840706 +050305010582030502820201020102810102050281010283020a090a810a090109810a09 +85090a090a01020302810a0982090a0982090a090309830a050305010581030501058103 +0501058203050282020102830206010204020409010a81090a810a090109810102010281 +010205028101020102020a0209810a09050901058103050105820305028302010a090509 +850a090a090a02820201020102810102010281010201028101090709810a0982090a0283 +020102058205030501058103050105810305010585030506020102010281010203020109 +830a090a0906098202010201028101020502810a090a0902058103050105810305010582 +030502820201020102810102050281010201028101020102810102 +82010201010181020101010402020181020101018102018501030503060a030a81050301 +03810503830301020101018102010101040202010c0a02010202810a0981090a080a8105 +030103820503048204050301038105038303010201810106010601010302810a09040901 +0a0109010a02018102010101040202018102080108820a090a810a090309010a82040503 +01038105038403010201090109010a81090a010a02090101810201010181020183010602 +010101820201090b09820102018301030503010382050304820405030103820503060106 +020181020101010102020a0109010a0109830a090a098209020101018102010101040201 +09810a090209010a0109810a030103820503048204060301038105038303010201010181 +020101010402020181020101018102010001 +010181000101018100010101810201010181000101018100010101820001038603000608 +0a070a830a0300030103820003018201000101018100010101810201010181000181010a +020a81080a050a8201000101018402010a090a020a84070a08070a010a82030003010381 +00048304030003010382000301820100060206020181020181010a810a090209810a0981 +090a020a8100010101810001010181020101018100018101080308020a81090a820a090a +810a04830403000301038200030181010a820a090a060a01090201810001010182000106 +82060001010181000a820a090a010a81090a040a01018200010382030003010381000483 +04030003010303068100010101810001010181020a010a81090a060a0109820100010101 +81000101018102010101810a0981090a030a81090a010a81000301038100048104060106 +0103820003018201000101018100010101810201010181000101018100010101810001 +82000100010081010001008101020102810100010081010001008101000100860300070a +080a07820706000100810300010081010001008101000100810102010281010001000708 +010a0108810100010081010281020a020a01088107088208070801088103000100810300 +01008103000100810300010082010006020601008101020102010a81090a030a81090a02 +0a020081010001008101020102810100010001070708030a010081030001008103000100 +81010a810a0983090a070a030a01090100810100010082010006020601008201000a0b0a +820001000100810300010081030001008103000100810306020602008101000100840102 +0a080a090a82000100010081010001008101020102020a81090a070a0200810300810006 +020682000300010081010001008101000100810102010281010001008101000100810100 +0000 +01008101000100810100010081010201028101000100810100010081010001008603070a +070a06078207030001008103000100810100010081010001008101020102810100810008 +0a088200010001008201020782070a068106078307080708020882000300010081030001 +008103000100810300010003068101000100810102810207830708070881080a810a0781 +070801088101000100810100010081010201028301000607020701088107080408810300 +010081030001008103000100050a84070a08070a820a0900010081010001000306810100 +010081010a830a08070a020a0208820a0800820001000100810300010081030001008103 +0081000602068200010001008101000100810108030882070a0782070a0882080a008200 +01000100810100010081010281020a0a0a82000300010082030006010602008103000100 +81010001008101000100810102010281010001008101000100810100 +820100010101810001010181000101018102010101810001010181000186010300060708 +070107020601038100038303010001010181000101018100010101810201010102088107 +080208810708830801000101018100018101070307810607820706070207810003010382 +000304820400030103810003820301060206810001010181000101018202070801080507 +820807010101810001010181000101018102018101070307810607010786060806070803 +04820400030103810003830301000881080a890a08070807080708070101018100010101 +030681000101018200010a810a0801088107080308840708010001830103000301038200 +030482040003810306020682010001010181000101018400010807080508010781080182 +010001010181000101018100010101030a82080a0883080a080a820a0003010382000306 +020601038100038303010001010181000101018100010101810201010181000101018100 +010001 +010181000101018100010101810201010181000101018100010101820001038103060206 +810706020602038200030182010001010181000101018102010101820001068306080607 +010781060701078106018201000101018202010781070682060706020602070106810003 +01038100048304030003010382000306030682010001010181020101010b078100010101 +810001010181020101018200060703078106070407830603000483040300030103830003 +010701078106070307810607010781000101018100018101060206820100010101810008 +010883070807080108810708010884070100010382030003010381000483040300060306 +010181000101018100010101810607020781080781070881080782070801010181000101 +0181000101018102018101080108840a080a070803088203000301030306810003010382 +0003018201000101018100010101810201010181000101018100010101810001 +820001000100810100010081010201028101000100810100010081010001008103060806 +820003000100810100010081010001008101020102810100820006088108068106078207 +060782070600820001000100810102010205068107068206070601060200810300010081 +030001008203000603068200010001008101020102830106070601060107030681070001 +008101000100810102010282010006050603070106820003000100810300010081030001 +000307890607060706070607060001008101008100060206820001000100810100810007 +010782080708820807080108010781010001008103000100810300010081030603060100 +810100010081010001008101068106070307810807020781080082000100010081010001 +008101028102070b07810300010004060200810300010081010001008101000100810102 +0102810100010081010001008101000000 +01008101000100810100010081010201028101000100810100010081010001000a068200 +030001008101000100810100010081010201028401000608060706020081010001008101 +028102060c06020081030001008103000100040602008101000100810102010281010681 +060781070681060701070106810100010081010001008101020102080681070602060100 +810300010081030001008103008100060106010701060107820607068206010001008101 +060206020081010001008501000706070803080407820601000100810300010081030081 +000603068103000100810100010081010001000506010781060783070601000100810100 +010081010001008201020705078106070107840607000300810006020682000300010081 +0300010081010001008101000100810102010281010001008101000100810100 +820100010101810001010181000101018102010101810001010181000183010300060a06 +010382010001010181000101018100010101820201060906020181000101018100010101 +0d0601038200030482040003010304060201810001010181000101018202010604068107 +0602060201810001010181000101010d0601038200030482040003010381000382030106 +0b0602010506010181000101018100018101060106020803070306010182030003010383 +0003040603068100038303010001010181000101018100060a0602018100010101810001 +010181000182010607020781060701078106078407060003060306820400030103810003 +8303010001010181000101018100010101810201010181000101018100010001 +01018100010101810001010181020101018100010101810001010182000103820300060a +06810301820100010101810001010181020101010a068201000101018100010101810201 +01010e068203000483040300060506810001010181000101018102010101820001060906 +02018100010101820201060c068100030103810004830403000301038300030106130681 +000101018100010101810001810106840607060706040681070601060103810003010306 +06830300030182010001010181000101010b068100010101810001010181000101018202 +0106020604070a0683040300030103820003018201000101018100010101810201010181 +000101018100010101810001 +820001000100810100010081010201028101000100810100010081010001008103008100 +060a06820001000100810100010081010201020a06820001000100810100010081010201 +028101061806820001000100810100010081010201028101008100060906010081010001 +00820102060c068103000100810300010081030001008103000100130681010001008101 +0001008101000100190601008103000100810100010081010001000c0602008101000100 +810100010081010281020607068107060706010081030001008103000100810100010081 +010001008101020102810100010081010001008101000000 +0100810300010081030001008103050105810300010081030001008203000303030c0681 +0300010081030001008103060a0602008103000100810300010081030501058103061606 +810300820003000100810300010081030501058103008100060a068200030001000c0681 +000305030100060381000611060100810300010081030001008103000100170605030100 +81030001008103008100060a068200030001008103000100810300010082030506100681 +030081000305030100810300010081030001008103050105810300010081030001008103 +00 +820300030103810003010381000301038105030103810003010381000306031f06020381 +000301038100030103810003010381050381030614060203810003010381000301038100 +03010381050301038200030619060803010407038100060e060203810003010381000301 +0381000301038200030614060703810003010381000301030b0681000301038100030103 +810003010381000301030f06010301040703810003010381000301038100030103810503 +010381000301038100030003 +01038100030103810003010381050301038100030103810003010381000306038104061a +060103810003010381000301038100030103810503010381000381030611060503810003 +010381000301038105030103810003010382000306160601038100030603010408030e06 +820300030103810003010381000301038100030103820503061106010408038100030103 +8100038103060a06820300030103810003010381000301038105038103060c0603030104 +080381000301038100030103810503010381000301038100030103810003 +820003000100810300010081030501058103000100810300010081030081000305030100 +01031606020081030001008103000100810300010081030501058103000100820300060d +060503820003000100810300010081030501058103000100810300010081030611068103 +00010081030081000305030100060383000300060a060100810300010081030001008103 +000100810300010081030501058103060d06010301000603820003000100810300810006 +0b0681030001008103000100810300010081030501058103060a06040301000603820003 +00010081030001008103050105810300010081030001008103000000 +010081030001008103000100810305010581030001008103000100820300030503010005 +030e06810300010081030001008103000100810300010081030001008103050105810300 +010081030081000608060100060301008103000100810300010081030501058103000100 +81030001008103008100060b068103000100810300010082030003050301000603010081 +030081000605060105810300010081030001008103000100810300010081030001008103 +050105820300060806040301000603010081030001008203000605060200810300010081 +030001008103000100810300010081030501058203000605068100030503010006030100 +81030001008103000100810305010581030001008103000100810300 +820300030103810003010381000301038105030103810003010381000307030104070381 +000301038100030103810003010381050301038100030103810003010381000301038100 +030103810003010381050301038100030103810003070301040703810003010381000301 +038100030103810503010381000301038100030103810003010381000301038100030103 +810503010381000301038100030703010407038100030103810003010381000301038105 +030103810003010381000301038100030103810003010381000301038105030103810003 +010381000307030104070381000301038100030103810003010381050301038100030103 +810003010381000301038100030103810003010381050301038100030103810003070301 +040703810003010381000301038100030103810503010381000301038100030003 +010381000301038100030103810503010381000301038100030103810003060301040803 +810003010381000301038105030103810003010381000301038100030103810003010381 +000301038105030103810003010381000301038100030603010408038100030103810003 +010381050301038100030103810003010381000301038100030103810003010381050301 +038100030103810003010381000306030104080381000301038100030103810503010381 +000301038100030103810003010381000301038100030103810503010381000301038100 +030103810003060301040803810003010381000301038105030103810003010381000301 +038100030103810003010381000301038105030103810003010381000301038100030603 +0104080381000301038100030103810503010381000301038100030103810003 +820004000100810400010081040501058104000100810400010081040001008104000100 +820400040104020081040001008104000100810400010081040501058104000100810400 +010081040001008104000100810400010081040501058104000100810400010081040001 +008104000100820400040104020081040001008104000100810400010081040501058104 +000100810400010081040001008104000100810400010081040501058104000100810400 +010081040001008104000100820400040104020081040001008104000100810400010081 +040501058104000100810400010081040001008104000100810400010081040501058104 +000100810400010081040001008104000100820400040104020081040001008104000100 +810400010081040501058104000100810400010081040001008104000100810400010081 +040501058104000100810400010081040001008104000100820400040104020081040001 +00810400010081040001008104050105810400010081040001008104000000 +010081040001008104000100810405010581040001008104000100810400010081040001 +000204820004000100810400010081040001008104000100810405010581040001008104 +000100810400010081040001008104000100810405010581040001008104000100810400 +010081040001000204820004000100810400010081040001008104000100810405010581 +040001008104000100810400010081040001008104000100810405010581040001008104 +000100810400010081040001000204820004000100810400010081040001008104000100 +810405010581040001008104000100810400010081040001008104000100810405010581 +040001008104000100810400010081040001000204820004000100810400010081040001 +008104000100810405010581040001008104000100810400010081040001008104000100 +810405010581040001008104000100810400010081040001000204820004000100810400 +010081040001008104000100810405010581040001008104000100810400 +820300030103810003010381000301038105030103810003010381000307030104070381 +000301038100030103810003010381050301038100030103810003010381000301038100 +030103810003010381050301038100030103810003070301040703810003010381000301 +038100030103810503010381000301038100030103810003010381000301038100030103 +810503010381000301038100030703010407038100030103810003010381000301038105 +030103810003010381000301038100030103810003010381000301038105030103810003 +010381000307030104070381000301038100030103810003010381050301038100030103 +810003010381000301038100030103810003010381050301038100030103810003070301 +040703810003010381000301038100030103810503010381000301038100030003 +010381000301038100030103810503010381000301038100030103810003060301040803 +810003010381000301038105030103810003010381000301038100030103810003010381 +000301038105030103810003010381000301038100030603010408038100030103810003 +010381050301038100030103810003010381000301038100030103810003010381050301 +038100030103810003010381000306030104080381000301038100030103810503010381 +000301038100030103810003010381000301038100030103810503010381000301038100 +030103810003060301040803810003010381000301038105030103810003010381000301 +038100030103810003010381000301038105030103810003010381000301038100030603 +0104080381000301038100030103810503010381000301038100030103810003 +820003000100810300010081030501058103000100810300010081030081000305030100 +060382000300010081030001008103050105810300010081030001008103000100810300 +010081030001008103050105810300010081030001008103008100030503010006038200 +030001008103000100810305010581030001008103000100810300010081030001008103 +000100810305010581030001008103000100810300810003050301000603820003000100 +810300010081030501058103000100810300010081030001008103000100810300010081 +030501058103000100810300010081030081000305030100060382000300010081030001 +008103050105810300010081030001008103000100810300010081030001008103050105 +810300010081030001008103008100030503010006038200030001008103000100810305 +0105810300010081030001008103000000 +010081030001008103000100810305010581030001008103000100820300030503010006 +030100810300010081030001008103050105810300010081030001008103000100810300 +010081030001008103050105810300010081030001008203000305030100060301008103 +000100810300010081030501058103000100810300010081030001008103000100810300 +010081030501058103000100810300010082030003050301000603010081030001008103 +000100810305010581030001008103000100810300010081030001008103000100810305 +010581030001008103000100820300030503010006030100810300010081030001008103 +050105810300010081030001008103000100810300010081030001008103050105810300 +010081030001008203000305030100060301008103000100810300010081030501058103 +0001008103000100810300 +820300030103810003010381000301038105030103810003010381000307030104070381 +000301038100030103810003010381050301038100030103810003010381000301038100 +030103810003010381050301038100030103810003070301040703810003010381000301 +038100030103810503010381000301038100030103810003010381000301038100030103 +810503010381000301038100030703010407038100030103810003010381000301038105 +030103810003010381000301038100030103810003010381000301038105030103810003 +010381000307030104070381000301038100030103810003010381050301038100030103 +810003010381000301038100030103810003010381050301038100030103810003070301 +040703810003010381000301038100030103810503010381000301038100030003 +010381000301038100030103810503010381000301038100030103810003060301040803 +810003010381000301038105030103810003010381000301038100030103810003010381 +000301038105030103810003010381000301038100030603010408038100030103810003 +010381050301038100030103810003010381000301038100030103810003010381050301 +038100030103810003010381000306030104080381000301038100030103810503010381 +000301038100030103810003010381000301038100030103810503010381000301038100 +030103810003060301040803810003010381000301038105030103810003010381000301 +038100030103810003010381000301038105030103810003010381000301038100030603 +0104080381000301038100030103810503010381000301038100030103810003 +820003000100810300010081030501058103000100810300010081030081000305030100 +060382000300010081030001008103050105810300010081030001008103000100810300 +010081030001008103050105810300010081030001008103008100030503010006038200 +030001008103000100810305010581030001008103000100810300010081030001008103 +000100810305010581030001008103000100810300810003050301000603820003000100 +810300010081030501058103000100810300010081030001008103000100810300010081 +030501058103000100810300010081030081000305030100060382000300010081030001 +008103050105810300010081030001008103000100810300010081030001008103050105 +810300010081030001008103008100030503010006038200030001008103000100810305 +0105810300010081030001008103000000 +010081010001008101000100810102010281010001008101000100810100010081030001 +008103000100810300010081030001008101000100810100010081010201028101000100 +810100010081010001008101000100810100010081010201028101000100810100010081 +010001008103000100810300010081030001008103000100810100010081010001008101 +020102810100010081010001008101000100810100010081010001008101020102810100 +010081010001008101000100810300010081030001008103000100810300010081010001 +008101000100810102010281010001008101000100810100010081010001008101000100 +810102010281010001008101000100810100010081030001008103000100810300010081 +030001008101000100810100010081010201028101000100810100010081010001008101 +000100810100010081010201028101000100810100010081010001008103000100810300 +010081030001008103000100810100010081010001008101020102810100010081010001 +00810100 +820100010101810001010181000101018102010101810001010181000183010300030103 +820003048204000301038100038303010001010181000101018100010101810201010181 +000101018100010101810001010181000101018100010101810201010181000101018100 +018301030003010382000304820400030103810003830301000101018100010101810001 +010181020101018100010101810001010181000101018100010101810001010181020101 +018100010101810001830103000301038200030482040003010381000383030100010101 +810001010181000101018102010101810001010181000101018100010101810001010181 +000101018102010101810001010181000183010300030103820003048204000301038100 +038303010001010181000101018100010101810201010181000101018100010101810001 +010181000101018100010101810201010181000101018100018301030003010382000304 +820400030103810003830301000101018100010101810001010181020101018100010101 +8100010001 +010181000101018100010101810201010181000101018100010101820001038203000301 +038100048304030003010382000301820100010101810001010181020101018100010101 +810001010181000101018100010101810001010181020101018100010101810001010182 +000103820300030103810004830403000301038200030182010001010181000101018102 +010101810001010181000101018100010101810001010181000101018102010101810001 +010181000101018200010382030003010381000483040300030103820003018201000101 +018100010101810201010181000101018100010101810001010181000101018100010101 +810201010181000101018100010101820001038203000301038100048304030003010382 +000301820100010101810001010181020101018100010101810001010181000101018100 +010101810001010181020101018100010101810001010182000103820300030103810004 +830403000301038200030182010001010181000101018102010101810001010181000101 +01810001 +820001000100810100010081010201028101000100810100010081010001008103000100 +810300010081030001008103000100810100010081010001008101020102810100010081 +010001008101000100810100010081010001008101020102810100010081010001008101 +000100810300010081030001008103000100810300010081010001008101000100810102 +010281010001008101000100810100010081010001008101000100810102010281010001 +008101000100810100010081030001008103000100810300010081030001008101000100 +810100010081010201028101000100810100010081010001008101000100810100010081 +010201028101000100810100010081010001008103000100810300010081030001008103 +000100810100010081010001008101020102810100010081010001008101000100810100 +010081010001008101020102810100010081010001008101000100810300010081030001 +008103000100810300010081010001008101000100810102010281010001008101000100 +8101000000 +010081010001008101000100810102010281010001008101000100810100010081030001 +008103000100810300010081030001008101000100810100010081010201028101000100 +810100010081010001008101000100810100010081010201028101000100810100010081 +010001008103000100810300010081030001008103000100810100010081010001008101 +020102810100010081010001008101000100810100010081010001008101020102810100 +010081010001008101000100810300010081030001008103000100810300010081010001 +008101000100810102010281010001008101000100810100010081010001008101000100 +810102010281010001008101000100810100010081030001008103000100810300010081 +030001008101000100810100010081010201028101000100810100010081010001008101 +000100810100010081010201028101000100810100010081010001008103000100810300 +010081030001008103000100810100010081010001008101020102810100010081010001 +00810100 +820100010101810001010181000101018102010101810001010181000183010300030103 +820003048204000301038100038303010001010181000101018100010101810201010181 +000101018100010101810001010181000101018100010101810201010181000101018100 +018301030003010382000304820400030103810003830301000101018100010101810001 +010181020101018100010101810001010181000101018100010101810001010181020101 +018100010101810001830103000301038200030482040003010381000383030100010101 +810001010181000101018102010101810001010181000101018100010101810001010181 +000101018102010101810001010181000183010300030103820003048204000301038100 +038303010001010181000101018100010101810201010181000101018100010101810001 +010181000101018100010101810201010181000101018100018301030003010382000304 +820400030103810003830301000101018100010101810001010181020101018100010101 +8100010001 +010181000101018100010101810201010181000101018100010101820001038203000301 +038100048304030003010382000301820100010101810001010181020101018100010101 +810001010181000101018100010101810001010181020101018100010101810001010182 +000103820300030103810004830403000301038200030182010001010181000101018102 +010101810001010181000101018100010101810001010181000101018102010101810001 +010181000101018200010382030003010381000483040300030103820003018201000101 +018100010101810201010181000101018100010101810001010181000101018100010101 +810201010181000101018100010101820001038203000301038100048304030003010382 +000301820100010101810001010181020101018100010101810001010181000101018100 +010101810001010181020101018100010101810001010182000103820300030103810004 +830403000301038200030182010001010181000101018102010101810001010181000101 +01810001 +820001000100810100010081010201028101000100810100010081010001008103000100 +810300010081030001008103000100810100010081010001008101020102810100010081 +010001008101000100810100010081010001008101020102810100010081010001008101 +000100810300010081030001008103000100810300010081010001008101000100810102 +010281010001008101000100810100010081010001008101000100810102010281010001 +008101000100810100010081030001008103000100810300010081030001008101000100 +810100010081010201028101000100810100010081010001008101000100810100010081 +010201028101000100810100010081010001008103000100810300010081030001008103 +000100810100010081010001008101020102810100010081010001008101000100810100 +010081010001008101020102810100010081010001008101000100810300010081030001 +008103000100810300010081010001008101000100810102010281010001008101000100 +8101000000 +010081010001008101000100810102010281010001008101000100810100010081030001 +008103000100810300010081030001008101000100810100010081010201028101000100 +810100010081010001008101000100810100010081010201028101000100810100010081 +010001008103000100810300010081030001008103000100810100010081010001008101 +020102810100010081010001008101000100810100010081010001008101020102810100 +010081010001008101000100810300010081030001008103000100810300010081010001 +008101000100810102010281010001008101000100810100010081010001008101000100 +810102010281010001008101000100810100010081030001008103000100810300010081 +030001008101000100810100010081010201028101000100810100010081010001008101 +000100810100010081010201028101000100810100010081010001008103000100810300 +010081030001008103000100810100010081010001008101020102810100010081010001 +00810100 +820102010101810201010104020201810201010181020183010305030103820503048204 +050301038105038303010201010181020101010402020181020101018102010101810201 +010181020101010402020181020101018102018301030503010382050304820405030103 +810503830301020101018102010101040202018102010101810201010181020101018102 +010101040202018102010101810201830103050301038205030482040503010381050383 +030102010101810201010104020201810201010181020101018102010101810201010104 +020201810201010181020183010305030103820503048204050301038105038303010201 +010181020101010402020181020101018102010101810201010181020101010402020181 +020101018102018301030503010382050304820405030103810503830301020101018102 +0101010402020181020101018102010001 +010181020101018102010101040202018102010101820201038203050301038105048304 +030503010382050301820102010101810201010104020201810201010181020101018102 +010101810201010104020201810201010182020103820305030103810504830403050301 +038205030182010201010181020101010402020181020101018102010101810201010181 +020101010402020181020101018202010382030503010381050483040305030103820503 +018201020101018102010101040202018102010101810201010181020101018102010101 +040202018102010101820201038203050301038105048304030503010382050301820102 +010101810201010104020201810201010181020101018102010101810201010104020201 +810201010182020103820305030103810504830403050301038205030182010201010181 +02010101040202018102010101810201 +820201020102810102010281010205028101020102810102830205030501058103050105 +810305010581030583050201020102810102010281010205028101020102810102010281 +010201028101020102810102050281010201028101028302050305010581030501058103 +050105810305830502010201028101020102810102050281010201028101020102810102 +010281010201028101020502810102010281010283020503050105810305010581030501 +058103058305020102010281010201028101020502810102010281010201028101020102 +810102010281010205028101020102810102830205030501058103050105810305010581 +030583050201020102810102010281010205028101020102810102010281010201028101 +020102810102050281010201028101028302050305010581030501058103050105810305 +830502010201028101020102810102050281010201028101020002 +010281010201028101020502810102010281010201028201020582050305010581030501 +058103050105820305028202010201028101020502810102010281010201028101020102 +810102010281010205028101020102810102010282010205820503050105810305010581 +030501058203050282020102010281010205028101020102810102010281010201028101 +020102810102050281010201028101020102820102058205030501058103050105810305 +010582030502820201020102810102050281010201028101020102810102010281010201 +028101020502810102010281010201028201020582050305010581030501058103050105 +820305028202010201028101020502810102010281010201028101020102810102010281 +010205028101020102810102010282010205820503050105810305010581030501058203 +0502820201020102810102050281010201028101020102810102 +820100010101810001010181000101018102010101810001010181000183010300030103 +820003048204000301038100038303010001010181000101018100010101810201010181 +000101018100010101810001010181000101018100010101810201010181000101018100 +018301030003010382000304820400030103810003830301000101018100010101810001 +010181020101018100010101810001010181000101018100010101810001010181020101 +018100010101810001830103000301038200030482040003010381000383030100010101 +810001010181000101018102010101810001010181000101018100010101810001010181 +000101018102010101810001010181000183010300030103820003048204000301038100 +038303010001010181000101018100010101810201010181000101018100010101810001 +010181000101018100010101810201010181000101018100018301030003010382000304 +820400030103810003830301000101018100010101810001010181020101018100010101 +8100010001 +010181000101018100010101810201010181000101018100010101820001038203000301 +038100048304030003010382000301820100010101810001010181020101018100010101 +810001010181000101018100010101810001010181020101018100010101810001010182 +000103820300030103810004830403000301038200030182010001010181000101018102 +010101810001010181000101018100010101810001010181000101018102010101810001 +010181000101018200010382030003010381000483040300030103820003018201000101 +018100010101810201010181000101018100010101810001010181000101018100010101 +810201010181000101018100010101820001038203000301038100048304030003010382 +000301820100010101810001010181020101018100010101810001010181000101018100 +010101810001010181020101018100010101810001010182000103820300030103810004 +830403000301038200030182010001010181000101018102010101810001010181000101 +01810001 +820001000100810100010081010201028101000100810100010081010001008103000100 +810300010081030001008103000100810100010081010001008101020102810100010081 +010001008101000100810100010081010001008101020102810100010081010001008101 +000100810300010081030001008103000100810300010081010001008101000100810102 +010281010001008101000100810100010081010001008101000100810102010281010001 +008101000100810100010081030001008103000100810300010081030001008101000100 +810100010081010201028101000100810100010081010001008101000100810100010081 +010201028101000100810100010081010001008103000100810300010081030001008103 +000100810100010081010001008101020102810100010081010001008101000100810100 +010081010001008101020102810100010081010001008101000100810300010081030001 +008103000100810300010081010001008101000100810102010281010001008101000100 +8101000000 +010081010001008101000100810102010281010001008101000100810100010081030001 +008103000100810300010081030001008101000100810100010081010201028101000100 +810100010081010001008101000100810100010081010201028101000100810100010081 +010001008103000100810300010081030001008103000100810100010081010001008101 +020102810100010081010001008101000100810100010081010001008101020102810100 +010081010001008101000100810300010081030001008103000100810300010081010001 +008101000100810102010281010001008101000100810100010081010001008101000100 +810102010281010001008101000100810100010081030001008103000100810300010081 +030001008101000100810100010081010201028101000100810100010081010001008101 +000100810100010081010201028101000100810100010081010001008103000100810300 +010081030001008103000100810100010081010001008101020102810100010081010001 +00810100 +820100010101810001010181000101018102010101810001010181000183010300030103 +820003048204000301038100038303010001010181000101018100010101810201010181 +000101018100010101810001010181000101018100010101810201010181000101018100 +018301030003010382000304820400030103810003830301000101018100010101810001 +010181020101018100010101810001010181000101018100010101810001010181020101 +018100010101810001830103000301038200030482040003010381000383030100010101 +810001010181000101018102010101810001010181000101018100010101810001010181 +000101018102010101810001010181000183010300030103820003048204000301038100 +038303010001010181000101018100010101810201010181000101018100010101810001 +010181000101018100010101810201010181000101018100018301030003010382000304 +820400030103810003830301000101018100010101810001010181020101018100010101 +8100010001 +010181000101018100010101810201010181000101018100010101820001038203000301 +038100048304030003010382000301820100010101810001010181020101018100010101 +810001010181000101018100010101810001010181020101018100010101810001010182 +000103820300030103810004830403000301038200030182010001010181000101018102 +010101810001010181000101018100010101810001010181000101018102010101810001 +010181000101018200010382030003010381000483040300030103820003018201000101 +018100010101810201010181000101018100010101810001010181000101018100010101 +810201010181000101018100010101820001038203000301038100048304030003010382 +000301820100010101810001010181020101018100010101810001010181000101018100 +010101810001010181020101018100010101810001010182000103820300030103810004 +830403000301038200030182010001010181000101018102010101810001010181000101 +01810001 +820001000100810100010081010201028101000100810100010081010001008103000100 +810300010081030001008103000100810100010081010001008101020102810100010081 +010001008101000100810100010081010001008101020102810100010081010001008101 +000100810300010081030001008103000100810300010081010001008101000100810102 +010281010001008101000100810100010081010001008101000100810102010281010001 +008101000100810100010081030001008103000100810300010081030001008101000100 +810100010081010201028101000100810100010081010001008101000100810100010081 +010201028101000100810100010081010001008103000100810300010081030001008103 +000100810100010081010001008101020102810100010081010001008101000100810100 +010081010001008101020102810100010081010001008101000100810300010081030001 +008103000100810300010081010001008101000100810102010281010001008101000100 +8101000000 +010081010001008101000100810102010281010001008101000100810100010081030001 +008103000100810300010081030001008101000100810100010081010201028101000100 +810100010081010001008101000100810100010081010201028101000100810100010081 +010001008103000100810300010081030001008103000100810100010081010001008101 +020102810100010081010001008101000100810100010081010001008101020102810100 +010081010001008101000100810300010081030001008103000100810300010081010001 +008101000100810102010281010001008101000100810100010081010001008101000100 +810102010281010001008101000100810100010081030001008103000100810300010081 +030001008101000100810100010081010201028101000100810100010081010001008101 +000100810100010081010201028101000100810100010081010001008103000100810300 +010081030001008103000100810100010081010001008101020102810100010081010001 +00810100 +820100010101810001010181000101018102010101810001010181000183010300030103 +820003048204000301038100038303010001010181000101018100010101810201010181 +000101018100010101810001010181000101018100010101810201010181000101018100 +018301030003010382000304820400030103810003830301000101018100010101810001 +010181020101018100010101810001010181000101018100010101810001010181020101 +018100010101810001830103000301038200030482040003010381000383030100010101 +810001010181000101018102010101810001010181000101018100010101810001010181 +000101018102010101810001010181000183010300030103820003048204000301038100 +038303010001010181000101018100010101810201010181000101018100010101810001 +010181000101018100010101810201010181000101018100018301030003010382000304 +820400030103810003830301000101018100010101810001010181020101018100010101 +8100010001 +010181000101018100010101810201010181000101018100010101820001038203000301 +038100048304030003010382000301820100010101810001010181020101018100010101 +810001010181000101018100010101810001010181020101018100010101810001010182 +000103820300030103810004830403000301038200030182010001010181000101018102 +010101810001010181000101018100010101810001010181000101018102010101810001 +010181000101018200010382030003010381000483040300030103820003018201000101 +018100010101810201010181000101018100010101810001010181000101018100010101 +810201010181000101018100010101820001038203000301038100048304030003010382 +000301820100010101810001010181020101018100010101810001010181000101018100 +010101810001010181020101018100010101810001010182000103820300030103810004 +830403000301038200030182010001010181000101018102010101810001010181000101 +01810001 +820001000100810100010081010201028101000100810100010081010001008103000100 +810300010081030001008103000100810100010081010001008101020102810100010081 +010001008101000100810100010081010001008101020102810100010081010001008101 +000100810300010081030001008103000100810300010081010001008101000100810102 +010281010001008101000100810100010081010001008101000100810102010281010001 +008101000100810100010081030001008103000100810300010081030001008101000100 +810100010081010201028101000100810100010081010001008101000100810100010081 +010201028101000100810100010081010001008103000100810300010081030001008103 +000100810100010081010001008101020102810100010081010001008101000100810100 +010081010001008101020102810100010081010001008101000100810300010081030001 +008103000100810300010081010001008101000100810102010281010001008101000100 +8101000000 + +% +% Compression made this file 35.94% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_me1.eps scotch-6.0.6/doc/src/scotch/s_f_me1.eps --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_me1.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_me1.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,808 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: stdin +%%Creator: fig2dev Version 3.2 Patchlevel 4 +%%CreationDate: Mon Nov 10 15:20:01 2003 +%%For: pelegrin@brol.labri.fr (Francois PELLEGRINI) +%%BoundingBox: 0 0 523 407 +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 407 moveto 0 0 lineto 523 0 lineto 523 407 lineto closepath clip newpath +-36.0 441.7 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +% +% Fig objects follow +% +% +% here starts figure with depth 60 +% Polyline +2 slj +n 8100 1725 m 8086 1761 l 8071 1792 l 8057 1818 l 8044 1838 l 8032 1853 l + 8021 1865 l 8010 1874 l 8000 1881 l 7990 1888 l 7981 1895 l + 7972 1903 l 7963 1912 l 7956 1922 l 7950 1933 l 7948 1943 l + 7950 1950 l 7957 1952 l 7967 1950 l 7978 1944 l 7988 1937 l + 7997 1928 l 8005 1919 l 8012 1910 l 8019 1900 l 8026 1890 l + 8035 1879 l 8047 1868 l 8062 1856 l 8082 1843 l 8108 1829 l + 8139 1814 l 8175 1800 l 8209 1788 l 8241 1778 l 8269 1769 l + 8292 1762 l 8310 1756 l 8324 1752 l 8335 1749 l 8343 1746 l + 8350 1744 l 8357 1742 l 8366 1740 l 8377 1738 l 8393 1735 l + 8413 1733 l 8439 1730 l 8471 1728 l 8509 1726 l 8550 1725 l + 8591 1726 l 8629 1728 l 8661 1730 l 8687 1733 l 8707 1735 l + 8723 1738 l 8734 1740 l 8743 1742 l 8750 1744 l 8757 1746 l + 8765 1749 l 8776 1752 l 8790 1756 l 8808 1762 l 8831 1769 l + 8859 1778 l 8891 1788 l 8925 1800 l 8961 1814 l 8992 1829 l + 9018 1843 l 9038 1856 l 9053 1868 l 9065 1879 l 9074 1890 l + 9081 1900 l 9088 1910 l 9095 1919 l 9103 1928 l 9112 1937 l + 9122 1944 l 9133 1950 l 9143 1952 l 9150 1950 l 9152 1943 l + 9150 1933 l 9144 1922 l 9137 1912 l 9128 1903 l 9119 1895 l + 9110 1888 l 9100 1881 l 9090 1874 l 9079 1865 l 9068 1853 l + 9056 1838 l 9043 1818 l 9029 1792 l 9014 1761 l 9000 1725 l + 8988 1691 l 8978 1659 l 8969 1631 l 8962 1608 l 8956 1590 l + 8952 1576 l 8949 1565 l 8946 1557 l 8944 1550 l 8942 1543 l + 8940 1534 l 8938 1523 l 8935 1507 l 8933 1487 l 8930 1461 l + 8928 1429 l 8926 1391 l 8925 1350 l 8926 1309 l 8928 1271 l + 8930 1239 l 8933 1213 l 8935 1193 l 8938 1177 l 8940 1166 l + 8942 1157 l 8944 1150 l 8946 1143 l 8949 1135 l 8952 1124 l + 8956 1110 l 8962 1092 l 8969 1069 l 8978 1041 l 8988 1009 l + 9000 975 l 9014 939 l 9029 908 l 9043 882 l 9056 862 l + 9068 847 l 9079 835 l 9090 826 l 9100 819 l 9110 812 l + 9119 805 l 9128 797 l 9137 788 l 9144 778 l 9150 767 l + 9152 757 l 9150 750 l 9143 748 l 9133 750 l 9122 756 l + 9112 763 l 9103 772 l 9095 781 l 9088 790 l 9081 800 l + 9074 810 l 9065 821 l 9053 832 l 9038 844 l 9018 857 l + 8992 871 l 8961 886 l 8925 900 l 8891 912 l 8859 922 l + 8831 931 l 8808 938 l 8790 944 l 8776 948 l 8765 951 l + 8757 954 l 8750 956 l 8743 958 l 8734 960 l 8723 962 l + 8707 965 l 8687 967 l 8661 970 l 8629 972 l 8591 974 l + 8550 975 l 8509 974 l 8471 972 l 8439 970 l 8413 967 l + 8393 965 l 8377 962 l 8366 960 l 8357 958 l 8350 956 l + 8343 954 l 8335 951 l 8324 948 l 8310 944 l 8292 938 l + 8269 931 l 8241 922 l 8209 912 l 8175 900 l 8139 886 l + 8108 871 l 8082 857 l 8062 844 l 8047 832 l 8035 821 l + 8026 810 l 8019 800 l 8012 790 l 8005 781 l 7997 772 l + 7988 763 l 7978 756 l 7967 750 l 7957 748 l 7950 750 l + 7948 757 l 7950 767 l 7956 778 l 7963 788 l 7972 797 l + 7981 805 l 7990 812 l 8000 819 l 8010 826 l 8021 835 l + 8032 847 l 8044 862 l 8057 882 l 8071 908 l 8086 939 l + 8100 975 l 8112 1009 l 8122 1041 l 8131 1069 l 8138 1092 l + 8144 1110 l 8148 1124 l 8151 1135 l 8154 1143 l 8156 1150 l + 8158 1157 l 8160 1166 l 8162 1177 l 8165 1193 l 8167 1213 l + 8170 1239 l 8172 1271 l 8174 1309 l 8175 1350 l 8174 1391 l + 8172 1429 l 8170 1461 l 8167 1487 l 8165 1507 l 8162 1523 l + 8160 1534 l 8158 1543 l 8156 1550 l 8154 1557 l 8151 1565 l + 8148 1576 l 8144 1590 l 8138 1608 l 8131 1631 l 8122 1659 l + 8112 1691 l + cp gs 0.80 setgray ef gr +% Polyline +n 8100 2925 m 8086 2961 l 8071 2992 l 8057 3018 l 8044 3038 l 8032 3053 l + 8021 3065 l 8010 3074 l 8000 3081 l 7990 3088 l 7981 3095 l + 7972 3103 l 7963 3112 l 7956 3122 l 7950 3133 l 7948 3143 l + 7950 3150 l 7957 3152 l 7967 3150 l 7978 3144 l 7988 3137 l + 7997 3128 l 8005 3119 l 8012 3110 l 8019 3100 l 8026 3090 l + 8035 3079 l 8047 3068 l 8062 3056 l 8082 3043 l 8108 3029 l + 8139 3014 l 8175 3000 l 8209 2988 l 8241 2978 l 8269 2969 l + 8292 2962 l 8310 2956 l 8324 2952 l 8335 2949 l 8343 2946 l + 8350 2944 l 8357 2942 l 8366 2940 l 8377 2938 l 8393 2935 l + 8413 2933 l 8439 2930 l 8471 2928 l 8509 2926 l 8550 2925 l + 8591 2926 l 8629 2928 l 8661 2930 l 8687 2933 l 8707 2935 l + 8723 2938 l 8734 2940 l 8743 2942 l 8750 2944 l 8757 2946 l + 8765 2949 l 8776 2952 l 8790 2956 l 8808 2962 l 8831 2969 l + 8859 2978 l 8891 2988 l 8925 3000 l 8961 3014 l 8992 3029 l + 9018 3043 l 9038 3056 l 9053 3068 l 9065 3079 l 9074 3090 l + 9081 3100 l 9088 3110 l 9095 3119 l 9103 3128 l 9112 3137 l + 9122 3144 l 9133 3150 l 9143 3152 l 9150 3150 l 9152 3143 l + 9150 3133 l 9144 3122 l 9137 3112 l 9128 3103 l 9119 3095 l + 9110 3088 l 9100 3081 l 9090 3074 l 9079 3065 l 9068 3053 l + 9056 3038 l 9043 3018 l 9029 2992 l 9014 2961 l 9000 2925 l + 8988 2891 l 8978 2859 l 8969 2831 l 8962 2808 l 8956 2790 l + 8952 2776 l 8949 2765 l 8946 2757 l 8944 2750 l 8942 2743 l + 8940 2734 l 8938 2723 l 8935 2707 l 8933 2687 l 8930 2661 l + 8928 2629 l 8926 2591 l 8925 2550 l 8926 2509 l 8928 2471 l + 8930 2439 l 8933 2413 l 8935 2393 l 8938 2377 l 8940 2366 l + 8942 2357 l 8944 2350 l 8946 2343 l 8949 2335 l 8952 2324 l + 8956 2310 l 8962 2292 l 8969 2269 l 8978 2241 l 8988 2209 l + 9000 2175 l 9014 2139 l 9029 2108 l 9043 2082 l 9056 2062 l + 9068 2047 l 9079 2035 l 9090 2026 l 9100 2019 l 9110 2012 l + 9119 2005 l 9128 1997 l 9137 1988 l 9144 1978 l 9150 1967 l + 9152 1957 l 9150 1950 l 9143 1948 l 9133 1950 l 9122 1956 l + 9112 1963 l 9103 1972 l 9095 1981 l 9088 1990 l 9081 2000 l + 9074 2010 l 9065 2021 l 9053 2032 l 9038 2044 l 9018 2057 l + 8992 2071 l 8961 2086 l 8925 2100 l 8891 2112 l 8859 2122 l + 8831 2131 l 8808 2138 l 8790 2144 l 8776 2148 l 8765 2151 l + 8757 2154 l 8750 2156 l 8743 2158 l 8734 2160 l 8723 2162 l + 8707 2165 l 8687 2167 l 8661 2170 l 8629 2172 l 8591 2174 l + 8550 2175 l 8509 2174 l 8471 2172 l 8439 2170 l 8413 2167 l + 8393 2165 l 8377 2162 l 8366 2160 l 8357 2158 l 8350 2156 l + 8343 2154 l 8335 2151 l 8324 2148 l 8310 2144 l 8292 2138 l + 8269 2131 l 8241 2122 l 8209 2112 l 8175 2100 l 8139 2086 l + 8108 2071 l 8082 2057 l 8062 2044 l 8047 2032 l 8035 2021 l + 8026 2010 l 8019 2000 l 8012 1990 l 8005 1981 l 7997 1972 l + 7988 1963 l 7978 1956 l 7967 1950 l 7957 1948 l 7950 1950 l + 7948 1957 l 7950 1967 l 7956 1978 l 7963 1988 l 7972 1997 l + 7981 2005 l 7990 2012 l 8000 2019 l 8010 2026 l 8021 2035 l + 8032 2047 l 8044 2062 l 8057 2082 l 8071 2108 l 8086 2139 l + 8100 2175 l 8112 2209 l 8122 2241 l 8131 2269 l 8138 2292 l + 8144 2310 l 8148 2324 l 8151 2335 l 8154 2343 l 8156 2350 l + 8158 2357 l 8160 2366 l 8162 2377 l 8165 2393 l 8167 2413 l + 8170 2439 l 8172 2471 l 8174 2509 l 8175 2550 l 8174 2591 l + 8172 2629 l 8170 2661 l 8167 2687 l 8165 2707 l 8162 2723 l + 8160 2734 l 8158 2743 l 8156 2750 l 8154 2757 l 8151 2765 l + 8148 2776 l 8144 2790 l 8138 2808 l 8131 2831 l 8122 2859 l + 8112 2891 l + cp gs 0.80 setgray ef gr +% Polyline +n 8100 4125 m 8086 4161 l 8071 4192 l 8057 4218 l 8044 4238 l 8032 4253 l + 8021 4265 l 8010 4274 l 8000 4281 l 7990 4288 l 7981 4295 l + 7972 4303 l 7963 4312 l 7956 4322 l 7950 4333 l 7948 4343 l + 7950 4350 l 7957 4352 l 7967 4350 l 7978 4344 l 7988 4337 l + 7997 4328 l 8005 4319 l 8012 4310 l 8019 4300 l 8026 4290 l + 8035 4279 l 8047 4268 l 8062 4256 l 8082 4243 l 8108 4229 l + 8139 4214 l 8175 4200 l 8209 4188 l 8241 4178 l 8269 4169 l + 8292 4162 l 8310 4156 l 8324 4152 l 8335 4149 l 8343 4146 l + 8350 4144 l 8357 4142 l 8366 4140 l 8377 4138 l 8393 4135 l + 8413 4133 l 8439 4130 l 8471 4128 l 8509 4126 l 8550 4125 l + 8591 4126 l 8629 4128 l 8661 4130 l 8687 4133 l 8707 4135 l + 8723 4138 l 8734 4140 l 8743 4142 l 8750 4144 l 8757 4146 l + 8765 4149 l 8776 4152 l 8790 4156 l 8808 4162 l 8831 4169 l + 8859 4178 l 8891 4188 l 8925 4200 l 8961 4214 l 8992 4229 l + 9018 4243 l 9038 4256 l 9053 4268 l 9065 4279 l 9074 4290 l + 9081 4300 l 9088 4310 l 9095 4319 l 9103 4328 l 9112 4337 l + 9122 4344 l 9133 4350 l 9143 4352 l 9150 4350 l 9152 4343 l + 9150 4333 l 9144 4322 l 9137 4312 l 9128 4303 l 9119 4295 l + 9110 4288 l 9100 4281 l 9090 4274 l 9079 4265 l 9068 4253 l + 9056 4238 l 9043 4218 l 9029 4192 l 9014 4161 l 9000 4125 l + 8988 4091 l 8978 4059 l 8969 4031 l 8962 4008 l 8956 3990 l + 8952 3976 l 8949 3965 l 8946 3957 l 8944 3950 l 8942 3943 l + 8940 3934 l 8938 3923 l 8935 3907 l 8933 3887 l 8930 3861 l + 8928 3829 l 8926 3791 l 8925 3750 l 8926 3709 l 8928 3671 l + 8930 3639 l 8933 3613 l 8935 3593 l 8938 3577 l 8940 3566 l + 8942 3557 l 8944 3550 l 8946 3543 l 8949 3535 l 8952 3524 l + 8956 3510 l 8962 3492 l 8969 3469 l 8978 3441 l 8988 3409 l + 9000 3375 l 9014 3339 l 9029 3308 l 9043 3282 l 9056 3262 l + 9068 3247 l 9079 3235 l 9090 3226 l 9100 3219 l 9110 3212 l + 9119 3205 l 9128 3197 l 9137 3188 l 9144 3178 l 9150 3167 l + 9152 3157 l 9150 3150 l 9143 3148 l 9133 3150 l 9122 3156 l + 9112 3163 l 9103 3172 l 9095 3181 l 9088 3190 l 9081 3200 l + 9074 3210 l 9065 3221 l 9053 3232 l 9038 3244 l 9018 3257 l + 8992 3271 l 8961 3286 l 8925 3300 l 8891 3312 l 8859 3322 l + 8831 3331 l 8808 3338 l 8790 3344 l 8776 3348 l 8765 3351 l + 8757 3354 l 8750 3356 l 8743 3358 l 8734 3360 l 8723 3362 l + 8707 3365 l 8687 3367 l 8661 3370 l 8629 3372 l 8591 3374 l + 8550 3375 l 8509 3374 l 8471 3372 l 8439 3370 l 8413 3367 l + 8393 3365 l 8377 3362 l 8366 3360 l 8357 3358 l 8350 3356 l + 8343 3354 l 8335 3351 l 8324 3348 l 8310 3344 l 8292 3338 l + 8269 3331 l 8241 3322 l 8209 3312 l 8175 3300 l 8139 3286 l + 8108 3271 l 8082 3257 l 8062 3244 l 8047 3232 l 8035 3221 l + 8026 3210 l 8019 3200 l 8012 3190 l 8005 3181 l 7997 3172 l + 7988 3163 l 7978 3156 l 7967 3150 l 7957 3148 l 7950 3150 l + 7948 3157 l 7950 3167 l 7956 3178 l 7963 3188 l 7972 3197 l + 7981 3205 l 7990 3212 l 8000 3219 l 8010 3226 l 8021 3235 l + 8032 3247 l 8044 3262 l 8057 3282 l 8071 3308 l 8086 3339 l + 8100 3375 l 8112 3409 l 8122 3441 l 8131 3469 l 8138 3492 l + 8144 3510 l 8148 3524 l 8151 3535 l 8154 3543 l 8156 3550 l + 8158 3557 l 8160 3566 l 8162 3577 l 8165 3593 l 8167 3613 l + 8170 3639 l 8172 3671 l 8174 3709 l 8175 3750 l 8174 3791 l + 8172 3829 l 8170 3861 l 8167 3887 l 8165 3907 l 8162 3923 l + 8160 3934 l 8158 3943 l 8156 3950 l 8154 3957 l 8151 3965 l + 8148 3976 l 8144 3990 l 8138 4008 l 8131 4031 l 8122 4059 l + 8112 4091 l + cp gs 0.80 setgray ef gr +% here ends figure; +% +% here starts figure with depth 50 +% Polyline +7.500 slw +n 7950 750 m 8550 1350 l 7950 1950 l 8550 2550 l 7950 3150 l 8550 3750 l + + 7950 4350 l gs col0 s gr +% Polyline +n 9150 750 m 8550 1350 l 9150 1950 l 8550 2550 l 9150 3150 l 8550 3750 l + + 9150 4350 l gs col0 s gr +% here ends figure; +% +% here starts figure with depth 20 +% Polyline +7.500 slw + [15 45] 45 sd +n 1800 3600 m 2100 3600 l 2100 3900 l 1800 3900 l + cp gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2100 3600 m + 1800 3900 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1800 3600 m + 2100 3900 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1800 4200 m 2100 4200 l 2100 4500 l 1800 4500 l + cp gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2100 4200 m + 1800 4500 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1800 4200 m + 2100 4500 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 9000 7050 m 9300 7050 l 9300 7350 l 9000 7350 l + cp gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 9300 7050 m + 9000 7350 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 9000 7050 m + 9300 7350 l gs col0 s gr [] 0 sd +% Polyline +gs clippath +7620 7065 m 7680 7065 l 7680 6914 l 7650 7034 l 7620 6914 l cp +eoclip +n 4050 5700 m 4050 6300 l 7650 6300 l + 7650 7050 l gs col0 s gr gr + +% arrowhead +n 7620 6914 m 7650 7034 l 7680 6914 l 7620 6914 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +7020 7065 m 7080 7065 l 7080 6914 l 7050 7034 l 7020 6914 l cp +eoclip +n 3750 5700 m 3750 6375 l 7050 6375 l + 7050 7050 l gs col0 s gr gr + +% arrowhead +n 7020 6914 m 7050 7034 l 7080 6914 l 7020 6914 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6420 7065 m 6480 7065 l 6480 6914 l 6450 7034 l 6420 6914 l cp +eoclip +n 3450 5700 m 3450 6450 l 6450 6450 l + 6450 7050 l gs col0 s gr gr + +% arrowhead +n 6420 6914 m 6450 7034 l 6480 6914 l 6420 6914 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +5820 7065 m 5880 7065 l 5880 6914 l 5850 7034 l 5820 6914 l cp +eoclip +n 3150 5700 m 3150 6525 l 5850 6525 l + 5850 7050 l gs col0 s gr gr + +% arrowhead +n 5820 6914 m 5850 7034 l 5880 6914 l 5820 6914 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +5520 7065 m 5580 7065 l 5580 6914 l 5550 7034 l 5520 6914 l cp +eoclip +n 2850 5700 m 2850 6600 l 5550 6600 l + 5550 7050 l gs col0 s gr gr + +% arrowhead +n 5520 6914 m 5550 7034 l 5580 6914 l 5520 6914 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4320 7065 m 4380 7065 l 4380 6914 l 4350 7034 l 4320 6914 l cp +eoclip +n 2550 5700 m 2550 6675 l 4350 6675 l + 4350 7050 l gs col0 s gr gr + +% arrowhead +n 4320 6914 m 4350 7034 l 4380 6914 l 4320 6914 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +3120 7065 m 3180 7065 l 3180 6914 l 3150 7034 l 3120 6914 l cp +eoclip +n 2250 5700 m 2250 6750 l 3150 6750 l + 3150 7050 l gs col0 s gr gr + +% arrowhead +n 3120 6914 m 3150 7034 l 3180 6914 l 3120 6914 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +7920 7065 m 7980 7065 l 7980 6914 l 7950 7034 l 7920 6914 l cp +eoclip +n 4350 5700 m 4350 6225 l 7950 6225 l + 7950 7050 l gs col0 s gr gr + +% arrowhead +n 7920 6914 m 7950 7034 l 7980 6914 l 7920 6914 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +8220 7065 m 8280 7065 l 8280 6914 l 8250 7034 l 8220 6914 l cp +eoclip +n 4650 5700 m 4650 6150 l 8250 6150 l + 8250 7050 l gs col0 s gr gr + +% arrowhead +n 8220 6914 m 8250 7034 l 8280 6914 l 8220 6914 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +8520 7065 m 8580 7065 l 8580 6914 l 8550 7034 l 8520 6914 l cp +eoclip +n 4950 5700 m 4950 6075 l 8550 6075 l + 8550 7050 l gs col0 s gr gr + +% arrowhead +n 8520 6914 m 8550 7034 l 8580 6914 l 8520 6914 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +9120 7065 m 9180 7065 l 9180 6914 l 9150 7034 l 9120 6914 l cp +eoclip +n 5250 5700 m 5250 6000 l 9150 6000 l + 9150 7050 l gs col0 s gr gr + +% arrowhead +n 9120 6914 m 9150 7034 l 9180 6914 l 9120 6914 l cp gs 0.00 setgray ef gr col0 s +/Courier ff 240.00 scf sf +600 3225 m +gs 1 -1 sc (edgenbr) col0 sh gr +/Courier ff 240.00 scf sf +600 3825 m +gs 1 -1 sc (vlbltab) col0 sh gr +/Courier ff 240.00 scf sf +600 5625 m +gs 1 -1 sc (verttab) col0 sh gr +/Courier ff 240.00 scf sf +600 4425 m +gs 1 -1 sc (velotab) col0 sh gr +/Courier ff 240.00 scf sf +600 5025 m +gs 1 -1 sc (vendtab) col0 sh gr +/Courier ff 240.00 scf sf +600 2625 m +gs 1 -1 sc (vnodnbr) col0 sh gr +/Courier ff 240.00 scf sf +600 825 m +gs 1 -1 sc (velmbas) col0 sh gr +/Courier ff 240.00 scf sf +600 1425 m +gs 1 -1 sc (vnodbas) col0 sh gr +/Courier ff 240.00 scf sf +600 2025 m +gs 1 -1 sc (velmnbr) col0 sh gr +/Courier ff 240.00 scf sf +600 7275 m +gs 1 -1 sc (edgetab) col0 sh gr +% here ends figure; +% +% here starts figure with depth 15 +% Polyline +7.500 slw +n 1800 3000 m 2100 3000 l 2100 3300 l 1800 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +1825 3240 m +gs 1 -1 sc (24) col0 sh gr +% Polyline +n 1800 5400 m 2100 5400 l 2100 5700 l 1800 5700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 600 m 2100 600 l 2100 900 l 1800 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 7050 m 2100 7050 l 2100 7350 l 1800 7350 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2100 7050 m 2400 7050 l 2400 7350 l 2100 7350 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2125 7290 m +gs 1 -1 sc (11) col0 sh gr +% Polyline +n 2400 7050 m 2700 7050 l 2700 7350 l 2400 7350 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 7050 m 3000 7050 l 3000 7350 l 2700 7350 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 7050 m 3300 7050 l 3300 7350 l 3000 7350 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3025 7290 m +gs 1 -1 sc (10) col0 sh gr +% Polyline +n 3300 7050 m 3600 7050 l 3600 7350 l 3300 7350 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3600 7050 m 3900 7050 l 3900 7350 l 3600 7350 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3625 7290 m +gs 1 -1 sc (11) col0 sh gr +% Polyline +n 3900 7050 m 4200 7050 l 4200 7350 l 3900 7350 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4800 7050 m 5100 7050 l 5100 7350 l 4800 7350 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5100 7050 m 5400 7050 l 5400 7350 l 5100 7350 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4200 7050 m 4500 7050 l 4500 7350 l 4200 7350 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4500 7050 m 4800 7050 l 4800 7350 l 4500 7350 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5400 7050 m 5700 7050 l 5700 7350 l 5400 7350 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5700 7050 m 6000 7050 l 6000 7350 l 5700 7350 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6000 7050 m 6300 7050 l 6300 7350 l 6000 7350 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6600 7050 m 6900 7050 l 6900 7350 l 6600 7350 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6300 7050 m 6600 7050 l 6600 7350 l 6300 7350 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6900 7050 m 7200 7050 l 7200 7350 l 6900 7350 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7200 7050 m 7500 7050 l 7500 7350 l 7200 7350 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7500 7050 m 7800 7050 l 7800 7350 l 7500 7350 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7800 7050 m 8100 7050 l 8100 7350 l 7800 7350 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8100 7050 m 8400 7050 l 8400 7350 l 8100 7350 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8400 7050 m 8700 7050 l 8700 7350 l 8400 7350 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8700 7050 m 9000 7050 l 9000 7350 l 8700 7350 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2100 5400 m 2400 5400 l 2400 5700 l 2100 5700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2200 5640 m +gs 1 -1 sc (5) col0 sh gr +% Polyline +n 2400 5400 m 2700 5400 l 2700 5700 l 2400 5700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2500 5640 m +gs 1 -1 sc (9) col0 sh gr +% Polyline +n 5100 5400 m 5400 5400 l 5400 5700 l 5100 5700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +5125 5640 m +gs 1 -1 sc (25) col0 sh gr +% Polyline +n 2700 5400 m 3000 5400 l 3000 5700 l 2700 5700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2725 5640 m +gs 1 -1 sc (13) col0 sh gr +% Polyline +n 3000 5400 m 3300 5400 l 3300 5700 l 3000 5700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3025 5640 m +gs 1 -1 sc (14) col0 sh gr +% Polyline +n 3300 5400 m 3600 5400 l 3600 5700 l 3300 5700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3325 5640 m +gs 1 -1 sc (16) col0 sh gr +% Polyline +n 3600 5400 m 3900 5400 l 3900 5700 l 3600 5700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3625 5640 m +gs 1 -1 sc (18) col0 sh gr +% Polyline +n 3900 5400 m 4200 5400 l 4200 5700 l 3900 5700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3925 5640 m +gs 1 -1 sc (20) col0 sh gr +% Polyline +n 4200 5400 m 4500 5400 l 4500 5700 l 4200 5700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +4225 5640 m +gs 1 -1 sc (21) col0 sh gr +% Polyline +n 4500 5400 m 4800 5400 l 4800 5700 l 4500 5700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +4525 5640 m +gs 1 -1 sc (22) col0 sh gr +% Polyline +n 4800 5400 m 5100 5400 l 5100 5700 l 4800 5700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +4825 5640 m +gs 1 -1 sc (23) col0 sh gr +% Polyline +gs clippath +2070 5415 m 2130 5415 l 2130 5264 l 2100 5384 l 2070 5264 l cp +eoclip +n 1800 4950 m 2100 4950 l + 2100 5400 l gs col0 s gr gr + +% arrowhead +n 2070 5264 m 2100 5384 l 2130 5264 l 2070 5264 l cp gs 0.00 setgray ef gr col0 s +% Polyline +n 1800 1200 m 2100 1200 l 2100 1500 l 1800 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 1800 m 2100 1800 l 2100 2100 l 1800 2100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 2400 m 2100 2400 l 2100 2700 l 1800 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +gs clippath +1920 7065 m 1980 7065 l 1980 6914 l 1950 7034 l 1920 6914 l cp +eoclip +n 1950 5700 m + 1950 7050 l gs col0 s gr gr + +% arrowhead +n 1920 6914 m 1950 7034 l 1980 6914 l 1920 6914 l cp gs 0.00 setgray ef gr col0 s +% here ends figure; +% +% here starts figure with depth 12 +% Ellipse +7.500 slw +n 7950 750 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 9150 750 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 8550 1350 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 7950 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 9150 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 8550 2550 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 7950 3150 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 9150 3150 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 8550 3750 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 7950 4350 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 9150 4350 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% here ends figure; +% +% here starts figure with depth 10 +/Times-Roman ff 240.00 scf sf +1900 5640 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +1900 840 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +7900 840 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +8500 1440 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +7900 2040 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +8500 2640 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +9100 3240 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +8500 3840 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +1900 7290 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 7290 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 7290 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +3400 7290 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +4000 7290 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +4900 7290 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +5200 7290 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +4300 7290 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 240.00 scf sf +4600 7290 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman ff 240.00 scf sf +5500 7290 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +5800 7290 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +6100 7290 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +6700 7290 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +6400 7290 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +7000 7290 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +7300 7290 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +7600 7290 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +7900 7290 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +8200 7290 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +8500 7290 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +8800 7290 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +1900 1440 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +1900 2640 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 240.00 scf sf +1900 2040 m +gs 1 -1 sc (3) col0 sh gr +% here ends figure; +% +% here starts figure with depth 8 +/Times-Roman ff 240.00 scf sf +9020 840 m +gs 1 -1 sc (10) col0 sh gr +/Times-Roman ff 240.00 scf sf +9020 2040 m +gs 1 -1 sc (11) col0 sh gr +/Times-Roman ff 240.00 scf sf +7900 3240 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +7900 4440 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 240.00 scf sf +9100 4440 m +gs 1 -1 sc (9) col0 sh gr +% here ends figure; +$F2psEnd +rs +showpage diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_me1.fig scotch-6.0.6/doc/src/scotch/s_f_me1.fig --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_me1.fig 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_me1.fig 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,351 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +0 +1200 2 +6 1800 3000 2100 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 3000 2100 3000 2100 3300 1800 3300 1800 3000 +4 0 0 15 0 0 16 0.0000 4 165 240 1825 3240 24\001 +-6 +6 1800 3600 2100 3900 +2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 + 1800 3600 2100 3600 2100 3900 1800 3900 1800 3600 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 2100 3600 1800 3900 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 1800 3600 2100 3900 +-6 +6 1800 5400 2100 5700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 5400 2100 5400 2100 5700 1800 5700 1800 5400 +4 0 0 10 0 0 16 0.0000 4 180 120 1900 5640 1\001 +-6 +6 1800 4200 2100 4500 +2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 + 1800 4200 2100 4200 2100 4500 1800 4500 1800 4200 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 2100 4200 1800 4500 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 1800 4200 2100 4500 +-6 +6 1800 600 2100 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 600 2100 600 2100 900 1800 900 1800 600 +4 0 0 10 0 0 16 0.0000 4 180 120 1900 840 1\001 +-6 +6 7800 600 9300 4500 +6 7800 600 8100 900 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7950 750 150 150 7950 750 8100 750 +4 0 0 10 0 0 16 0.0000 4 165 120 7900 840 4\001 +-6 +6 9000 600 9300 900 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 9150 750 150 150 9150 750 9300 750 +4 0 0 8 0 0 16 0.0000 4 180 240 9020 840 10\001 +-6 +6 8400 1200 8700 1500 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8550 1350 150 150 8550 1350 8700 1350 +4 0 0 10 0 0 16 0.0000 4 165 120 8500 1440 2\001 +-6 +6 7800 1800 8100 2100 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7950 1950 150 150 7950 1950 8100 1950 +4 0 0 10 0 0 16 0.0000 4 180 120 7900 2040 5\001 +-6 +6 9000 1800 9300 2100 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 9150 1950 150 150 9150 1950 9300 1950 +4 0 0 8 0 0 16 0.0000 4 180 240 9020 2040 11\001 +-6 +6 8400 2400 8700 2700 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8550 2550 150 150 8550 2550 8700 2550 +4 0 0 10 0 0 16 0.0000 4 180 120 8500 2640 1\001 +-6 +6 7800 3000 8100 3300 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7950 3150 150 150 7950 3150 8100 3150 +4 0 0 8 0 0 16 0.0000 4 165 120 7900 3240 7\001 +-6 +6 9000 3000 9300 3300 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 9150 3150 150 150 9150 3150 9300 3150 +4 0 0 10 0 0 16 0.0000 4 180 120 9100 3240 6\001 +-6 +6 8400 3600 8700 3900 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8550 3750 150 150 8550 3750 8700 3750 +4 0 0 10 0 0 16 0.0000 4 180 120 8500 3840 3\001 +-6 +6 7800 4200 8100 4500 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7950 4350 150 150 7950 4350 8100 4350 +4 0 0 8 0 0 16 0.0000 4 165 120 7900 4440 8\001 +-6 +6 9000 4200 9300 4500 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 9150 4350 150 150 9150 4350 9300 4350 +4 0 0 8 0 0 16 0.0000 4 180 120 9100 4440 9\001 +-6 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 7 + 7950 750 8550 1350 7950 1950 8550 2550 7950 3150 8550 3750 + 7950 4350 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 7 + 9150 750 8550 1350 9150 1950 8550 2550 9150 3150 8550 3750 + 9150 4350 +3 3 0 0 7 -1 60 0 4 0.000 0 0 0 16 + 8175 1350 8100 1725 7950 1950 8175 1800 8550 1725 8925 1800 + 9150 1950 9000 1725 8925 1350 9000 975 9150 750 8925 900 + 8550 975 8175 900 7950 750 8100 975 + -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 + -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 +3 3 0 0 7 -1 60 0 4 0.000 0 0 0 16 + 8175 2550 8100 2925 7950 3150 8175 3000 8550 2925 8925 3000 + 9150 3150 9000 2925 8925 2550 9000 2175 9150 1950 8925 2100 + 8550 2175 8175 2100 7950 1950 8100 2175 + -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 + -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 +3 3 0 0 7 -1 60 0 4 0.000 0 0 0 16 + 8175 3750 8100 4125 7950 4350 8175 4200 8550 4125 8925 4200 + 9150 4350 9000 4125 8925 3750 9000 3375 9150 3150 8925 3300 + 8550 3375 8175 3300 7950 3150 8100 3375 + -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 + -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 +-6 +6 9000 7050 9300 7350 +2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 + 9000 7050 9300 7050 9300 7350 9000 7350 9000 7050 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 9300 7050 9000 7350 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 9000 7050 9300 7350 +-6 +6 1800 7050 2100 7350 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 7050 2100 7050 2100 7350 1800 7350 1800 7050 +4 0 0 10 0 0 16 0.0000 4 180 120 1900 7290 5\001 +-6 +6 2100 7050 2400 7350 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 7050 2400 7050 2400 7350 2100 7350 2100 7050 +4 0 0 15 0 0 16 0.0000 4 180 240 2125 7290 11\001 +-6 +6 2400 7050 2700 7350 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 7050 2700 7050 2700 7350 2400 7350 2400 7050 +4 0 0 10 0 0 16 0.0000 4 165 120 2500 7290 7\001 +-6 +6 2700 7050 3000 7350 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 7050 3000 7050 3000 7350 2700 7350 2700 7050 +4 0 0 10 0 0 16 0.0000 4 180 120 2800 7290 6\001 +-6 +6 3000 7050 3300 7350 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 7050 3300 7050 3300 7350 3000 7350 3000 7050 +4 0 0 15 0 0 16 0.0000 4 180 240 3025 7290 10\001 +-6 +6 3300 7050 3600 7350 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 7050 3600 7050 3600 7350 3300 7350 3300 7050 +4 0 0 10 0 0 16 0.0000 4 180 120 3400 7290 5\001 +-6 +6 3600 7050 3900 7350 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 7050 3900 7050 3900 7350 3600 7350 3600 7050 +4 0 0 15 0 0 16 0.0000 4 180 240 3625 7290 11\001 +-6 +6 3900 7050 4200 7350 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3900 7050 4200 7050 4200 7350 3900 7350 3900 7050 +4 0 0 10 0 0 16 0.0000 4 165 120 4000 7290 4\001 +-6 +6 4800 7050 5100 7350 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4800 7050 5100 7050 5100 7350 4800 7350 4800 7050 +4 0 0 10 0 0 16 0.0000 4 180 120 4900 7290 6\001 +-6 +6 5100 7050 5400 7350 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5100 7050 5400 7050 5400 7350 5100 7350 5100 7050 +4 0 0 10 0 0 16 0.0000 4 165 120 5200 7290 7\001 +-6 +6 4200 7050 4500 7350 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4200 7050 4500 7050 4500 7350 4200 7350 4200 7050 +4 0 0 10 0 0 16 0.0000 4 165 120 4300 7290 8\001 +-6 +6 4500 7050 4800 7350 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4500 7050 4800 7050 4800 7350 4500 7350 4500 7050 +4 0 0 10 0 0 16 0.0000 4 180 120 4600 7290 9\001 +-6 +6 5400 7050 5700 7350 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5400 7050 5700 7050 5700 7350 5400 7350 5400 7050 +4 0 0 10 0 0 16 0.0000 4 165 120 5500 7290 2\001 +-6 +6 5700 7050 6000 7350 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5700 7050 6000 7050 6000 7350 5700 7350 5700 7050 +4 0 0 10 0 0 16 0.0000 4 165 120 5800 7290 2\001 +-6 +6 6000 7050 6300 7350 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6000 7050 6300 7050 6300 7350 6000 7350 6000 7050 +4 0 0 10 0 0 16 0.0000 4 180 120 6100 7290 1\001 +-6 +6 6600 7050 6900 7350 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6600 7050 6900 7050 6900 7350 6600 7350 6600 7050 +4 0 0 10 0 0 16 0.0000 4 180 120 6700 7290 3\001 +-6 +6 6300 7050 6600 7350 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6300 7050 6600 7050 6600 7350 6300 7350 6300 7050 +4 0 0 10 0 0 16 0.0000 4 180 120 6400 7290 1\001 +-6 +6 6900 7050 7200 7350 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6900 7050 7200 7050 7200 7350 6900 7350 6900 7050 +4 0 0 10 0 0 16 0.0000 4 180 120 7000 7290 1\001 +-6 +6 7200 7050 7500 7350 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7200 7050 7500 7050 7500 7350 7200 7350 7200 7050 +4 0 0 10 0 0 16 0.0000 4 180 120 7300 7290 3\001 +-6 +6 7500 7050 7800 7350 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7500 7050 7800 7050 7800 7350 7500 7350 7500 7050 +4 0 0 10 0 0 16 0.0000 4 180 120 7600 7290 3\001 +-6 +6 7800 7050 8100 7350 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7800 7050 8100 7050 8100 7350 7800 7350 7800 7050 +4 0 0 10 0 0 16 0.0000 4 180 120 7900 7290 3\001 +-6 +6 8100 7050 8400 7350 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8100 7050 8400 7050 8400 7350 8100 7350 8100 7050 +4 0 0 10 0 0 16 0.0000 4 165 120 8200 7290 2\001 +-6 +6 8400 7050 8700 7350 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8400 7050 8700 7050 8700 7350 8400 7350 8400 7050 +4 0 0 10 0 0 16 0.0000 4 165 120 8500 7290 2\001 +-6 +6 8700 7050 9000 7350 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8700 7050 9000 7050 9000 7350 8700 7350 8700 7050 +4 0 0 10 0 0 16 0.0000 4 180 120 8800 7290 1\001 +-6 +6 2100 5400 2400 5700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 5400 2400 5400 2400 5700 2100 5700 2100 5400 +4 0 0 15 0 0 16 0.0000 4 180 120 2200 5640 5\001 +-6 +6 2400 5400 2700 5700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 5400 2700 5400 2700 5700 2400 5700 2400 5400 +4 0 0 15 0 0 16 0.0000 4 180 120 2500 5640 9\001 +-6 +6 5100 5400 5400 5700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5100 5400 5400 5400 5400 5700 5100 5700 5100 5400 +4 0 0 15 0 0 16 0.0000 4 180 240 5125 5640 25\001 +-6 +6 2700 5400 3000 5700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 5400 3000 5400 3000 5700 2700 5700 2700 5400 +4 0 0 15 0 0 16 0.0000 4 195 240 2725 5640 13\001 +-6 +6 3000 5400 3300 5700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 5400 3300 5400 3300 5700 3000 5700 3000 5400 +4 0 0 15 0 0 16 0.0000 4 180 240 3025 5640 14\001 +-6 +6 3300 5400 3600 5700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 5400 3600 5400 3600 5700 3300 5700 3300 5400 +4 0 0 15 0 0 16 0.0000 4 180 240 3325 5640 16\001 +-6 +6 3600 5400 3900 5700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 5400 3900 5400 3900 5700 3600 5700 3600 5400 +4 0 0 15 0 0 16 0.0000 4 180 240 3625 5640 18\001 +-6 +6 3900 5400 4200 5700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3900 5400 4200 5400 4200 5700 3900 5700 3900 5400 +4 0 0 15 0 0 16 0.0000 4 165 240 3925 5640 20\001 +-6 +6 4200 5400 4500 5700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4200 5400 4500 5400 4500 5700 4200 5700 4200 5400 +4 0 0 15 0 0 16 0.0000 4 180 240 4225 5640 21\001 +-6 +6 4500 5400 4800 5700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4500 5400 4800 5400 4800 5700 4500 5700 4500 5400 +4 0 0 15 0 0 16 0.0000 4 165 240 4525 5640 22\001 +-6 +6 4800 5400 5100 5700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4800 5400 5100 5400 5100 5700 4800 5700 4800 5400 +4 0 0 15 0 0 16 0.0000 4 180 240 4825 5640 23\001 +-6 +2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 3 + 1 1 1.00 60.00 120.00 + 1800 4950 2100 4950 2100 5400 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 1200 2100 1200 2100 1500 1800 1500 1800 1200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 1800 2100 1800 2100 2100 1800 2100 1800 1800 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 2400 2100 2400 2100 2700 1800 2700 1800 2400 +2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 2 + 1 1 1.00 60.00 120.00 + 1950 5700 1950 7050 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 4050 5700 4050 6300 7650 6300 7650 7050 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3750 5700 3750 6375 7050 6375 7050 7050 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3450 5700 3450 6450 6450 6450 6450 7050 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3150 5700 3150 6525 5850 6525 5850 7050 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2850 5700 2850 6600 5550 6600 5550 7050 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2550 5700 2550 6675 4350 6675 4350 7050 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2250 5700 2250 6750 3150 6750 3150 7050 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 4350 5700 4350 6225 7950 6225 7950 7050 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 4650 5700 4650 6150 8250 6150 8250 7050 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 4950 5700 4950 6075 8550 6075 8550 7050 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 5250 5700 5250 6000 9150 6000 9150 7050 +4 0 0 20 0 12 16 0.0000 4 210 1050 600 3225 edgenbr\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 3825 vlbltab\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 5625 verttab\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 4425 velotab\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 5025 vendtab\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 2625 vnodnbr\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 825 velmbas\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 1425 vnodbas\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 2025 velmnbr\001 +4 0 0 10 0 0 16 0.0000 4 165 120 1900 1440 4\001 +4 0 0 10 0 0 16 0.0000 4 165 120 1900 2640 8\001 +4 0 0 10 0 0 16 0.0000 4 180 120 1900 2040 3\001 +4 0 0 20 0 12 16 0.0000 4 210 1050 600 7275 edgetab\001 diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_me2.eps scotch-6.0.6/doc/src/scotch/s_f_me2.eps --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_me2.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_me2.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,962 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: stdin +%%Creator: fig2dev Version 3.2 Patchlevel 4 +%%CreationDate: Mon May 3 15:33:42 2004 +%%For: pelegrin@brol.labri.fr (Francois PELLEGRINI) +%%BoundingBox: 0 0 523 488 +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 488 moveto 0 0 lineto 523 0 lineto 523 488 lineto closepath clip newpath +-36.0 522.7 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +% +% Fig objects follow +% +% +% here starts figure with depth 60 +% Polyline +2 slj +n 7275 1800 m 7252 1765 l 7229 1730 l 7207 1696 l 7186 1665 l 7168 1638 l + 7151 1613 l 7137 1592 l 7125 1574 l 7114 1558 l 7105 1545 l + 7096 1533 l 7089 1523 l 7081 1512 l 7074 1502 l 7066 1492 l + 7058 1480 l 7049 1466 l 7039 1450 l 7027 1430 l 7013 1408 l + 6998 1381 l 6981 1351 l 6962 1317 l 6942 1280 l 6921 1240 l + 6900 1200 l 6875 1149 l 6854 1101 l 6836 1059 l 6823 1022 l + 6814 990 l 6808 963 l 6805 941 l 6804 921 l 6805 903 l + 6806 887 l 6808 872 l 6809 857 l 6809 842 l 6807 827 l + 6804 810 l 6798 794 l 6789 778 l 6778 764 l 6765 754 l + 6750 750 l 6735 754 l 6722 764 l 6710 778 l 6701 794 l + 6695 810 l 6691 827 l 6688 842 l 6687 857 l 6687 872 l + 6688 888 l 6688 903 l 6687 921 l 6686 941 l 6682 963 l + 6677 990 l 6668 1022 l 6656 1059 l 6640 1101 l 6622 1149 l + 6600 1200 l 6581 1244 l 6562 1286 l 6544 1326 l 6528 1362 l + 6514 1393 l 6502 1419 l 6492 1442 l 6484 1461 l 6478 1476 l + 6472 1490 l 6467 1502 l 6462 1513 l 6458 1523 l 6453 1535 l + 6447 1548 l 6439 1563 l 6430 1581 l 6419 1602 l 6405 1627 l + 6389 1656 l 6370 1688 l 6348 1724 l 6325 1762 l 6300 1800 l + 6270 1843 l 6242 1881 l 6215 1914 l 6190 1940 l 6168 1960 l + 6148 1976 l 6129 1987 l 6112 1995 l 6096 2001 l 6081 2006 l + 6067 2011 l 6053 2015 l 6039 2020 l 6026 2027 l 6014 2036 l + 6004 2047 l 5996 2059 l 5992 2073 l 5993 2087 l 6000 2100 l + 6013 2109 l 6031 2114 l 6051 2117 l 6071 2118 l 6092 2117 l + 6111 2114 l 6129 2110 l 6146 2105 l 6163 2100 l 6178 2094 l + 6194 2087 l 6210 2081 l 6227 2074 l 6246 2068 l 6268 2061 l + 6292 2055 l 6321 2049 l 6354 2043 l 6391 2038 l 6433 2033 l + 6478 2029 l 6525 2025 l 6572 2022 l 6617 2019 l 6656 2017 l + 6690 2016 l 6718 2015 l 6740 2014 l 6757 2013 l 6770 2013 l + 6780 2013 l 6787 2013 l 6794 2013 l 6800 2013 l 6808 2013 l + 6817 2013 l 6830 2013 l 6846 2014 l 6867 2015 l 6894 2016 l + 6926 2017 l 6964 2019 l 7006 2022 l 7050 2025 l 7098 2029 l + 7143 2034 l 7182 2039 l 7217 2045 l 7246 2052 l 7271 2059 l + 7291 2066 l 7309 2073 l 7324 2080 l 7338 2088 l 7351 2094 l + 7364 2101 l 7378 2107 l 7394 2112 l 7410 2116 l 7429 2118 l + 7448 2118 l 7468 2115 l 7486 2109 l 7500 2100 l 7509 2086 l + 7511 2070 l 7508 2055 l 7503 2042 l 7495 2031 l 7486 2022 l + 7477 2016 l 7467 2011 l 7456 2006 l 7445 2001 l 7433 1994 l + 7419 1984 l 7402 1969 l 7384 1949 l 7362 1923 l 7336 1889 l + 7307 1848 l + cp gs 0.80 setgray ef gr +% Polyline +n 7275 2400 m 7252 2435 l 7229 2470 l 7207 2504 l 7186 2535 l 7168 2562 l + 7151 2587 l 7137 2608 l 7125 2626 l 7114 2642 l 7105 2655 l + 7096 2667 l 7089 2677 l 7081 2688 l 7074 2698 l 7066 2708 l + 7058 2720 l 7049 2734 l 7039 2750 l 7027 2770 l 7013 2792 l + 6998 2819 l 6981 2849 l 6962 2883 l 6942 2920 l 6921 2960 l + 6900 3000 l 6875 3051 l 6854 3099 l 6836 3141 l 6823 3178 l + 6814 3210 l 6808 3237 l 6805 3259 l 6804 3279 l 6805 3297 l + 6806 3313 l 6808 3328 l 6809 3343 l 6809 3358 l 6807 3373 l + 6804 3390 l 6798 3406 l 6789 3422 l 6778 3436 l 6765 3446 l + 6750 3450 l 6735 3446 l 6722 3436 l 6710 3422 l 6701 3406 l + 6695 3390 l 6691 3373 l 6688 3358 l 6687 3343 l 6687 3328 l + 6688 3312 l 6688 3297 l 6687 3279 l 6686 3259 l 6682 3237 l + 6677 3210 l 6668 3178 l 6656 3141 l 6640 3099 l 6622 3051 l + 6600 3000 l 6581 2956 l 6562 2914 l 6544 2874 l 6528 2838 l + 6514 2807 l 6502 2781 l 6492 2758 l 6484 2739 l 6478 2724 l + 6472 2710 l 6467 2698 l 6462 2687 l 6458 2677 l 6453 2665 l + 6447 2652 l 6439 2637 l 6430 2619 l 6419 2598 l 6405 2573 l + 6389 2544 l 6370 2512 l 6348 2476 l 6325 2438 l 6300 2400 l + 6270 2357 l 6242 2319 l 6215 2286 l 6190 2260 l 6168 2240 l + 6148 2224 l 6129 2213 l 6112 2205 l 6096 2199 l 6081 2194 l + 6067 2189 l 6053 2185 l 6039 2180 l 6026 2173 l 6014 2164 l + 6004 2153 l 5996 2141 l 5992 2127 l 5993 2113 l 6000 2100 l + 6013 2091 l 6031 2086 l 6051 2083 l 6071 2082 l 6092 2083 l + 6111 2086 l 6129 2090 l 6146 2095 l 6163 2100 l 6178 2106 l + 6194 2113 l 6210 2119 l 6227 2126 l 6246 2132 l 6268 2139 l + 6292 2145 l 6321 2151 l 6354 2157 l 6391 2162 l 6433 2167 l + 6478 2171 l 6525 2175 l 6572 2178 l 6617 2181 l 6656 2183 l + 6690 2184 l 6718 2185 l 6740 2186 l 6757 2187 l 6770 2187 l + 6780 2187 l 6787 2187 l 6794 2187 l 6800 2187 l 6808 2187 l + 6817 2187 l 6830 2187 l 6846 2186 l 6867 2185 l 6894 2184 l + 6926 2183 l 6964 2181 l 7006 2178 l 7050 2175 l 7098 2171 l + 7143 2166 l 7182 2161 l 7217 2155 l 7246 2148 l 7271 2141 l + 7291 2134 l 7309 2127 l 7324 2120 l 7338 2112 l 7351 2106 l + 7364 2099 l 7378 2093 l 7394 2088 l 7410 2084 l 7429 2082 l + 7448 2082 l 7468 2085 l 7486 2091 l 7500 2100 l 7509 2114 l + 7511 2130 l 7508 2145 l 7503 2158 l 7495 2169 l 7486 2178 l + 7477 2184 l 7467 2189 l 7456 2194 l 7445 2199 l 7433 2206 l + 7419 2216 l 7402 2231 l 7384 2251 l 7362 2277 l 7336 2311 l + 7307 2352 l + cp gs 0.80 setgray ef gr +% Polyline +n 6525 3150 m 6502 3115 l 6479 3080 l 6457 3046 l 6436 3015 l 6418 2988 l + 6401 2963 l 6387 2942 l 6375 2924 l 6364 2908 l 6355 2895 l + 6346 2883 l 6339 2873 l 6331 2862 l 6324 2852 l 6316 2842 l + 6308 2830 l 6299 2816 l 6289 2800 l 6277 2780 l 6263 2758 l + 6248 2731 l 6231 2701 l 6212 2667 l 6192 2630 l 6171 2590 l + 6150 2550 l 6125 2499 l 6104 2451 l 6086 2409 l 6073 2372 l + 6064 2340 l 6058 2313 l 6055 2291 l 6054 2271 l 6055 2253 l + 6056 2237 l 6058 2222 l 6059 2207 l 6059 2192 l 6057 2177 l + 6054 2160 l 6048 2144 l 6039 2128 l 6028 2114 l 6015 2104 l + 6000 2100 l 5985 2104 l 5972 2114 l 5960 2128 l 5951 2144 l + 5945 2160 l 5941 2177 l 5938 2192 l 5937 2207 l 5937 2222 l + 5938 2238 l 5938 2253 l 5937 2271 l 5936 2291 l 5932 2313 l + 5927 2340 l 5918 2372 l 5906 2409 l 5890 2451 l 5872 2499 l + 5850 2550 l 5831 2594 l 5812 2636 l 5794 2676 l 5778 2712 l + 5764 2743 l 5752 2769 l 5742 2792 l 5734 2811 l 5728 2826 l + 5722 2840 l 5717 2852 l 5712 2863 l 5708 2873 l 5703 2885 l + 5697 2898 l 5689 2913 l 5680 2931 l 5669 2952 l 5655 2977 l + 5639 3006 l 5620 3038 l 5598 3074 l 5575 3112 l 5550 3150 l + 5520 3193 l 5492 3231 l 5465 3264 l 5440 3290 l 5418 3310 l + 5398 3326 l 5379 3337 l 5362 3345 l 5346 3351 l 5331 3356 l + 5317 3361 l 5303 3365 l 5289 3370 l 5276 3377 l 5264 3386 l + 5254 3397 l 5246 3409 l 5242 3423 l 5243 3437 l 5250 3450 l + 5263 3459 l 5281 3464 l 5301 3467 l 5321 3468 l 5342 3467 l + 5361 3464 l 5379 3460 l 5396 3455 l 5413 3450 l 5428 3444 l + 5444 3437 l 5460 3431 l 5477 3424 l 5496 3418 l 5518 3411 l + 5542 3405 l 5571 3399 l 5604 3393 l 5641 3388 l 5683 3383 l + 5728 3379 l 5775 3375 l 5822 3372 l 5867 3369 l 5906 3367 l + 5940 3366 l 5968 3365 l 5990 3364 l 6007 3363 l 6020 3363 l + 6030 3363 l 6037 3363 l 6044 3363 l 6050 3363 l 6058 3363 l + 6067 3363 l 6080 3363 l 6096 3364 l 6117 3365 l 6144 3366 l + 6176 3367 l 6214 3369 l 6256 3372 l 6300 3375 l 6348 3379 l + 6393 3384 l 6432 3389 l 6467 3395 l 6496 3402 l 6521 3409 l + 6541 3416 l 6559 3423 l 6574 3430 l 6588 3438 l 6601 3444 l + 6614 3451 l 6628 3457 l 6644 3462 l 6660 3466 l 6679 3468 l + 6698 3468 l 6718 3465 l 6736 3459 l 6750 3450 l 6759 3436 l + 6761 3420 l 6758 3405 l 6753 3392 l 6745 3381 l 6736 3372 l + 6727 3366 l 6717 3361 l 6706 3356 l 6695 3351 l 6683 3344 l + 6669 3334 l 6652 3319 l 6634 3299 l 6612 3273 l 6586 3239 l + 6557 3198 l + cp gs 0.80 setgray ef gr +% Polyline +n 8025 3150 m 8002 3115 l 7979 3080 l 7957 3046 l 7936 3015 l 7918 2988 l + 7901 2963 l 7887 2942 l 7875 2924 l 7864 2908 l 7855 2895 l + 7846 2883 l 7839 2873 l 7831 2862 l 7824 2852 l 7816 2842 l + 7808 2830 l 7799 2816 l 7789 2800 l 7777 2780 l 7763 2758 l + 7748 2731 l 7731 2701 l 7712 2667 l 7692 2630 l 7671 2590 l + 7650 2550 l 7625 2499 l 7604 2451 l 7586 2409 l 7573 2372 l + 7564 2340 l 7558 2313 l 7555 2291 l 7554 2271 l 7555 2253 l + 7556 2237 l 7558 2222 l 7559 2207 l 7559 2192 l 7557 2177 l + 7554 2160 l 7548 2144 l 7539 2128 l 7528 2114 l 7515 2104 l + 7500 2100 l 7485 2104 l 7472 2114 l 7460 2128 l 7451 2144 l + 7445 2160 l 7441 2177 l 7438 2192 l 7437 2207 l 7437 2222 l + 7438 2238 l 7438 2253 l 7437 2271 l 7436 2291 l 7432 2313 l + 7427 2340 l 7418 2372 l 7406 2409 l 7390 2451 l 7372 2499 l + 7350 2550 l 7331 2594 l 7312 2636 l 7294 2676 l 7278 2712 l + 7264 2743 l 7252 2769 l 7242 2792 l 7234 2811 l 7228 2826 l + 7222 2840 l 7217 2852 l 7212 2863 l 7208 2873 l 7203 2885 l + 7197 2898 l 7189 2913 l 7180 2931 l 7169 2952 l 7155 2977 l + 7139 3006 l 7120 3038 l 7098 3074 l 7075 3112 l 7050 3150 l + 7020 3193 l 6992 3231 l 6965 3264 l 6940 3290 l 6918 3310 l + 6898 3326 l 6879 3337 l 6862 3345 l 6846 3351 l 6831 3356 l + 6817 3361 l 6803 3365 l 6789 3370 l 6776 3377 l 6764 3386 l + 6754 3397 l 6746 3409 l 6742 3423 l 6743 3437 l 6750 3450 l + 6763 3459 l 6781 3464 l 6801 3467 l 6821 3468 l 6842 3467 l + 6861 3464 l 6879 3460 l 6896 3455 l 6913 3450 l 6928 3444 l + 6944 3437 l 6960 3431 l 6977 3424 l 6996 3418 l 7018 3411 l + 7042 3405 l 7071 3399 l 7104 3393 l 7141 3388 l 7183 3383 l + 7228 3379 l 7275 3375 l 7322 3372 l 7367 3369 l 7406 3367 l + 7440 3366 l 7468 3365 l 7490 3364 l 7507 3363 l 7520 3363 l + 7530 3363 l 7537 3363 l 7544 3363 l 7550 3363 l 7558 3363 l + 7567 3363 l 7580 3363 l 7596 3364 l 7617 3365 l 7644 3366 l + 7676 3367 l 7714 3369 l 7756 3372 l 7800 3375 l 7848 3379 l + 7893 3384 l 7932 3389 l 7967 3395 l 7996 3402 l 8021 3409 l + 8041 3416 l 8059 3423 l 8074 3430 l 8088 3438 l 8101 3444 l + 8114 3451 l 8128 3457 l 8144 3462 l 8160 3466 l 8179 3468 l + 8198 3468 l 8218 3465 l 8236 3459 l 8250 3450 l 8259 3436 l + 8261 3420 l 8258 3405 l 8253 3392 l 8245 3381 l 8236 3372 l + 8227 3366 l 8217 3361 l 8206 3356 l 8195 3351 l 8183 3344 l + 8169 3334 l 8152 3319 l 8134 3299 l 8112 3273 l 8086 3239 l + 8057 3198 l + cp gs 0.80 setgray ef gr +% here ends figure; +% +% here starts figure with depth 50 +% Polyline +7.500 slw +n 6750 750 m 6750 1650 l 6000 2100 l 6750 2625 l 6750 3450 l 6000 3000 l + + 5250 3450 l gs col0 s gr +% Polyline +n 6750 1650 m 7500 2100 l + 6750 2625 l gs col0 s gr +% Polyline +n 6000 2100 m + 6000 3000 l gs col0 s gr +% Polyline +n 7500 2100 m 7500 3000 l + 6750 3450 l gs col0 s gr +% Polyline +n 7500 3000 m + 8325 3450 l gs col0 s gr +% here ends figure; +% +% here starts figure with depth 20 +% Polyline +7.500 slw + [15 45] 45 sd +n 1800 3600 m 2100 3600 l 2100 3900 l 1800 3900 l + cp gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2100 3600 m + 1800 3900 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1800 3600 m + 2100 3900 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1800 4200 m 2100 4200 l 2100 4500 l 1800 4500 l + cp gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2100 4200 m + 1800 4500 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1800 4200 m + 2100 4500 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 9000 6600 m 9300 6600 l 9300 6900 l 9000 6900 l + cp gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 9300 6600 m + 9000 6900 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 9000 6600 m + 9300 6900 l gs col0 s gr [] 0 sd +% Polyline +gs clippath +3180 6885 m 3120 6885 l 3120 7036 l 3150 6916 l 3180 7036 l cp +eoclip +n 2250 8400 m 2250 7275 l 3150 7275 l + 3150 6900 l gs col0 s gr gr + +% arrowhead +n 3180 7036 m 3150 6916 l 3120 7036 l 3180 7036 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +5220 6615 m 5280 6615 l 5280 6464 l 5250 6584 l 5220 6464 l cp +eoclip +n 3450 5100 m 3450 6075 l 5250 6075 l + 5250 6600 l gs col0 s gr gr + +% arrowhead +n 5220 6464 m 5250 6584 l 5280 6464 l 5220 6464 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4020 6615 m 4080 6615 l 4080 6464 l 4050 6584 l 4020 6464 l cp +eoclip +n 2850 5100 m 2850 6225 l 4050 6225 l + 4050 6600 l gs col0 s gr gr + +% arrowhead +n 4020 6464 m 4050 6584 l 4080 6464 l 4020 6464 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +3120 6615 m 3180 6615 l 3180 6464 l 3150 6584 l 3120 6464 l cp +eoclip +n 2550 5100 m 2550 6300 l 3150 6300 l + 3150 6600 l gs col0 s gr gr + +% arrowhead +n 3120 6464 m 3150 6584 l 3180 6464 l 3120 6464 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6420 6615 m 6480 6615 l 6480 6464 l 6450 6584 l 6420 6464 l cp +eoclip +n 5250 5100 m 5250 5925 l 6450 5925 l + 6450 6600 l gs col0 s gr gr + +% arrowhead +n 6420 6464 m 6450 6584 l 6480 6464 l 6420 6464 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +2280 6885 m 2220 6885 l 2220 7036 l 2250 6916 l 2280 7036 l cp +eoclip +n 1950 8400 m 1950 7200 l 2250 7200 l + 2250 6900 l gs col0 s gr gr + +% arrowhead +n 2280 7036 m 2250 6916 l 2220 7036 l 2280 7036 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4320 6615 m 4380 6615 l 4380 6464 l 4350 6584 l 4320 6464 l cp +eoclip +n 3150 5100 m 3150 6150 l 4350 6150 l + 4350 6600 l gs col0 s gr gr + +% arrowhead +n 4320 6464 m 4350 6584 l 4380 6464 l 4320 6464 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +7320 6615 m 7380 6615 l 7380 6464 l 7350 6584 l 7320 6464 l cp +eoclip +n 5550 5100 m 5550 5850 l 7350 5850 l + 7350 6600 l gs col0 s gr gr + +% arrowhead +n 7320 6464 m 7350 6584 l 7380 6464 l 7320 6464 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +8220 6615 m 8280 6615 l 8280 6464 l 8250 6584 l 8220 6464 l cp +eoclip +n 5850 5100 m 5850 5775 l 8250 5775 l + 8250 6600 l gs col0 s gr gr + +% arrowhead +n 8220 6464 m 8250 6584 l 8280 6464 l 8220 6464 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +5580 6885 m 5520 6885 l 5520 7036 l 5550 6916 l 5580 7036 l cp +eoclip +n 3450 8400 m 3450 7575 l 5550 7575 l + 5550 6900 l gs col0 s gr gr + +% arrowhead +n 5580 7036 m 5550 6916 l 5520 7036 l 5580 7036 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +5280 6885 m 5220 6885 l 5220 7036 l 5250 6916 l 5280 7036 l cp +eoclip +n 3150 8400 m 3150 7500 l 5250 7500 l + 5250 6900 l gs col0 s gr gr + +% arrowhead +n 5280 7036 m 5250 6916 l 5220 7036 l 5280 7036 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4380 6885 m 4320 6885 l 4320 7036 l 4350 6916 l 4380 7036 l cp +eoclip +n 2850 8400 m 2850 7425 l 4350 7425 l + 4350 6900 l gs col0 s gr gr + +% arrowhead +n 4380 7036 m 4350 6916 l 4320 7036 l 4380 7036 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4080 6885 m 4020 6885 l 4020 7036 l 4050 6916 l 4080 7036 l cp +eoclip +n 2550 8400 m 2550 7350 l 4050 7350 l + 4050 6900 l gs col0 s gr gr + +% arrowhead +n 4080 7036 m 4050 6916 l 4020 7036 l 4080 7036 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +7380 6885 m 7320 6885 l 7320 7036 l 7350 6916 l 7380 7036 l cp +eoclip +n 5250 8400 m 5250 7725 l 7350 7725 l + 7350 6900 l gs col0 s gr gr + +% arrowhead +n 7380 7036 m 7350 6916 l 7320 7036 l 7380 7036 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +8280 6885 m 8220 6885 l 8220 7036 l 8250 6916 l 8280 7036 l cp +eoclip +n 5550 8400 m 5550 7800 l 8250 7800 l + 8250 6900 l gs col0 s gr gr + +% arrowhead +n 8280 7036 m 8250 6916 l 8220 7036 l 8280 7036 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +9180 6885 m 9120 6885 l 9120 7036 l 9150 6916 l 9180 7036 l cp +eoclip +n 5850 8400 m 5850 7875 l 9150 7875 l + 9150 6900 l gs col0 s gr gr + +% arrowhead +n 9180 7036 m 9150 6916 l 9120 7036 l 9180 7036 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6480 6885 m 6420 6885 l 6420 7036 l 6450 6916 l 6480 7036 l cp +eoclip +n 4950 8400 m 4950 7650 l 6450 7650 l + 6450 6900 l gs col0 s gr gr + +% arrowhead +n 6480 7036 m 6450 6916 l 6420 7036 l 6480 7036 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +5520 6615 m 5580 6615 l 5580 6464 l 5550 6584 l 5520 6464 l cp +eoclip +n 4950 5100 m 4950 6000 l 5550 6000 l + 5550 6600 l gs col0 s gr gr + +% arrowhead +n 5520 6464 m 5550 6584 l 5580 6464 l 5520 6464 l cp gs 0.00 setgray ef gr col0 s +/Courier ff 240.00 scf sf +600 3225 m +gs 1 -1 sc (edgenbr) col0 sh gr +/Courier ff 240.00 scf sf +600 3825 m +gs 1 -1 sc (vlbltab) col0 sh gr +/Courier ff 240.00 scf sf +600 4425 m +gs 1 -1 sc (velotab) col0 sh gr +/Courier ff 240.00 scf sf +600 2625 m +gs 1 -1 sc (vnodnbr) col0 sh gr +/Courier ff 240.00 scf sf +600 825 m +gs 1 -1 sc (velmbas) col0 sh gr +/Courier ff 240.00 scf sf +600 1425 m +gs 1 -1 sc (vnodbas) col0 sh gr +/Courier ff 240.00 scf sf +600 2025 m +gs 1 -1 sc (velmnbr) col0 sh gr +/Courier ff 240.00 scf sf +600 5025 m +gs 1 -1 sc (verttab) col0 sh gr +/Courier ff 240.00 scf sf +600 6825 m +gs 1 -1 sc (edgetab) col0 sh gr +/Courier ff 240.00 scf sf +600 8625 m +gs 1 -1 sc (vendtab) col0 sh gr +% here ends figure; +% +% here starts figure with depth 15 +% Polyline +7.500 slw +n 1800 3000 m 2100 3000 l 2100 3300 l 1800 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +1825 3240 m +gs 1 -1 sc (24) col0 sh gr +% Polyline +n 1800 600 m 2100 600 l 2100 900 l 1800 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +1825 840 m +gs 1 -1 sc (11) col0 sh gr +% Polyline +n 1800 4800 m 2100 4800 l 2100 5100 l 1800 5100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2100 4800 m 2400 4800 l 2400 5100 l 2100 5100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 4800 m 2700 4800 l 2700 5100 l 2400 5100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 4800 m 3000 4800 l 3000 5100 l 2700 5100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3300 4800 m 3600 4800 l 3600 5100 l 3300 5100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3325 5040 m +gs 1 -1 sc (12) col0 sh gr +% Polyline +n 3000 4800 m 3300 4800 l 3300 5100 l 3000 5100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4800 4800 m 5100 4800 l 5100 5100 l 4800 5100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +4825 5040 m +gs 1 -1 sc (13) col0 sh gr +% Polyline +n 5100 4800 m 5400 4800 l 5400 5100 l 5100 5100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +5125 5040 m +gs 1 -1 sc (16) col0 sh gr +% Polyline +n 5400 4800 m 5700 4800 l 5700 5100 l 5400 5100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +5425 5040 m +gs 1 -1 sc (19) col0 sh gr +% Polyline +n 1800 8400 m 2100 8400 l 2100 8700 l 1800 8700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2100 8400 m 2400 8400 l 2400 8700 l 2100 8700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 8400 m 2700 8400 l 2700 8700 l 2400 8700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 8400 m 3000 8400 l 3000 8700 l 2700 8700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 8400 m 3300 8400 l 3300 8700 l 3000 8700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3025 8640 m +gs 1 -1 sc (12) col0 sh gr +% Polyline +n 3300 8400 m 3600 8400 l 3600 8700 l 3300 8700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3325 8640 m +gs 1 -1 sc (13) col0 sh gr +% Polyline +n 4800 8400 m 5100 8400 l 5100 8700 l 4800 8700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +4825 8640 m +gs 1 -1 sc (16) col0 sh gr +% Polyline +n 5100 8400 m 5400 8400 l 5400 8700 l 5100 8700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +5125 8640 m +gs 1 -1 sc (19) col0 sh gr +% Polyline +n 5400 8400 m 5700 8400 l 5700 8700 l 5400 8700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +5425 8640 m +gs 1 -1 sc (22) col0 sh gr +% Polyline +n 5700 8400 m 6000 8400 l 6000 8700 l 5700 8700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +5725 8640 m +gs 1 -1 sc (25) col0 sh gr +% Polyline +n 5700 4800 m 6000 4800 l 6000 5100 l 5700 5100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +5725 5040 m +gs 1 -1 sc (22) col0 sh gr +% Polyline +n 1800 6600 m 2100 6600 l 2100 6900 l 1800 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +1825 6840 m +gs 1 -1 sc (11) col0 sh gr +% Polyline +n 2100 6600 m 2400 6600 l 2400 6900 l 2100 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2125 6840 m +gs 1 -1 sc (11) col0 sh gr +% Polyline +n 2400 6600 m 2700 6600 l 2700 6900 l 2400 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2425 6840 m +gs 1 -1 sc (12) col0 sh gr +% Polyline +n 2700 6600 m 3000 6600 l 3000 6900 l 2700 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2725 6840 m +gs 1 -1 sc (13) col0 sh gr +% Polyline +n 3000 6600 m 3300 6600 l 3300 6900 l 3000 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3025 6840 m +gs 1 -1 sc (11) col0 sh gr +% Polyline +n 3300 6600 m 3600 6600 l 3600 6900 l 3300 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3325 6840 m +gs 1 -1 sc (12) col0 sh gr +% Polyline +n 3600 6600 m 3900 6600 l 3900 6900 l 3600 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3625 6840 m +gs 1 -1 sc (14) col0 sh gr +% Polyline +n 3900 6600 m 4200 6600 l 4200 6900 l 3900 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3925 6840 m +gs 1 -1 sc (13) col0 sh gr +% Polyline +n 4200 6600 m 4500 6600 l 4500 6900 l 4200 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +4225 6840 m +gs 1 -1 sc (13) col0 sh gr +% Polyline +n 4500 6600 m 4800 6600 l 4800 6900 l 4500 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +4525 6840 m +gs 1 -1 sc (14) col0 sh gr +% Polyline +n 4800 6600 m 5100 6600 l 5100 6900 l 4800 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +4825 6840 m +gs 1 -1 sc (12) col0 sh gr +% Polyline +n 5100 6600 m 5400 6600 l 5400 6900 l 5100 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +5125 6840 m +gs 1 -1 sc (14) col0 sh gr +% Polyline +n 5400 6600 m 5700 6600 l 5700 6900 l 5400 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5700 6600 m 6000 6600 l 6000 6900 l 5700 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6000 6600 m 6300 6600 l 6300 6900 l 6000 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6300 6600 m 6600 6600 l 6600 6900 l 6300 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6600 6600 m 6900 6600 l 6900 6900 l 6600 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6900 6600 m 7200 6600 l 7200 6900 l 6900 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7200 6600 m 7500 6600 l 7500 6900 l 7200 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7500 6600 m 7800 6600 l 7800 6900 l 7500 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7800 6600 m 8100 6600 l 8100 6900 l 7800 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8100 6600 m 8400 6600 l 8400 6900 l 8100 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8400 6600 m 8700 6600 l 8700 6900 l 8400 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8700 6600 m 9000 6600 l 9000 6900 l 8700 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3600 4800 m 3900 4800 l 3900 5100 l 3600 5100 l + cp gs 0.85 setgray ef gr gs col0 s gr +% Polyline +n 3900 4800 m 4200 4800 l 4200 5100 l 3900 5100 l + cp gs 0.85 setgray ef gr gs col0 s gr +% Polyline +n 4200 4800 m 4500 4800 l 4500 5100 l 4200 5100 l + cp gs 0.85 setgray ef gr gs col0 s gr +% Polyline +n 4500 4800 m 4800 4800 l 4800 5100 l 4500 5100 l + cp gs 0.85 setgray ef gr gs col0 s gr +% Polyline +n 3600 8400 m 3900 8400 l 3900 8700 l 3600 8700 l + cp gs 0.85 setgray ef gr gs col0 s gr +% Polyline +n 3900 8400 m 4200 8400 l 4200 8700 l 3900 8700 l + cp gs 0.85 setgray ef gr gs col0 s gr +% Polyline +n 4200 8400 m 4500 8400 l 4500 8700 l 4200 8700 l + cp gs 0.85 setgray ef gr gs col0 s gr +% Polyline +n 4500 8400 m 4800 8400 l 4800 8700 l 4500 8700 l + cp gs 0.85 setgray ef gr gs col0 s gr +% Polyline +n 1800 1200 m 2100 1200 l 2100 1500 l 1800 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 1800 m 2100 1800 l 2100 2100 l 1800 2100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 2400 m 2100 2400 l 2100 2700 l 1800 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +gs clippath +1920 6615 m 1980 6615 l 1980 6464 l 1950 6584 l 1920 6464 l cp +eoclip +n 1950 5100 m + 1950 6600 l gs col0 s gr gr + +% arrowhead +n 1920 6464 m 1950 6584 l 1980 6464 l 1920 6464 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +2220 6615 m 2280 6615 l 2280 6464 l 2250 6584 l 2220 6464 l cp +eoclip +n 2250 5100 m + 2250 6600 l gs col0 s gr gr + +% arrowhead +n 2220 6464 m 2250 6584 l 2280 6464 l 2220 6464 l cp gs 0.00 setgray ef gr col0 s +% here ends figure; +% +% here starts figure with depth 12 +% Ellipse +7.500 slw +n 6757 2618 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6750 1650 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6007 2993 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 7507 2993 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6750 750 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6000 2100 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 7500 2100 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 5250 3450 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6750 3450 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 8325 3450 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% here ends figure; +% +% here starts figure with depth 10 +/Times-Roman ff 240.00 scf sf +1900 5040 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +2200 5040 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 5040 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 5040 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 240.00 scf sf +3100 5040 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman ff 240.00 scf sf +1900 8640 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +2200 8640 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 8640 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 8640 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman ff 240.00 scf sf +5500 6840 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +5800 6840 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +6100 6840 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +6400 6840 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +6700 6840 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +7000 6840 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +7300 6840 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +7600 6840 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +7900 6840 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +8200 6840 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +8500 6840 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +8800 6840 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +6700 840 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +5950 2190 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +7450 2190 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +5200 3540 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +6700 3540 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +8275 3540 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +3700 5040 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 240.00 scf sf +4000 5040 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 240.00 scf sf +4300 5040 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 240.00 scf sf +4600 5040 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 240.00 scf sf +3700 8640 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 240.00 scf sf +4000 8640 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 240.00 scf sf +4300 8640 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 240.00 scf sf +4600 8640 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 240.00 scf sf +1900 1440 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +1900 2640 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +1900 2040 m +gs 1 -1 sc (4) col0 sh gr +% here ends figure; +% +% here starts figure with depth 8 +/Times-Roman ff 240.00 scf sf +6627 2708 m +gs 1 -1 sc (12) col0 sh gr +/Times-Roman ff 240.00 scf sf +6620 1740 m +gs 1 -1 sc (11) col0 sh gr +/Times-Roman ff 240.00 scf sf +5877 3083 m +gs 1 -1 sc (13) col0 sh gr +/Times-Roman ff 240.00 scf sf +7377 3083 m +gs 1 -1 sc (14) col0 sh gr +% here ends figure; +$F2psEnd +rs +showpage diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_me2.fig scotch-6.0.6/doc/src/scotch/s_f_me2.fig --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_me2.fig 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_me2.fig 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,455 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +0 +1200 2 +6 1800 3000 2100 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 3000 2100 3000 2100 3300 1800 3300 1800 3000 +4 0 0 15 0 0 16 0.0000 4 165 240 1825 3240 24\001 +-6 +6 1800 3600 2100 3900 +2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 + 1800 3600 2100 3600 2100 3900 1800 3900 1800 3600 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 2100 3600 1800 3900 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 1800 3600 2100 3900 +-6 +6 1800 4200 2100 4500 +2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 + 1800 4200 2100 4200 2100 4500 1800 4500 1800 4200 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 2100 4200 1800 4500 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 1800 4200 2100 4500 +-6 +6 6600 2461 6914 2775 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6757 2618 150 150 6757 2618 6907 2618 +4 0 0 8 0 0 16 0.0000 4 180 240 6627 2708 12\001 +-6 +6 6600 1500 6900 1800 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6750 1650 150 150 6750 1650 6900 1650 +4 0 0 8 0 0 16 0.0000 4 180 240 6620 1740 11\001 +-6 +6 5850 2836 6164 3150 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6007 2993 150 150 6007 2993 6157 2993 +4 0 0 8 0 0 16 0.0000 4 195 240 5877 3083 13\001 +-6 +6 7350 2836 7664 3150 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7507 2993 150 150 7507 2993 7657 2993 +4 0 0 8 0 0 16 0.0000 4 180 240 7377 3083 14\001 +-6 +6 1800 600 2100 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 600 2100 600 2100 900 1800 900 1800 600 +4 0 0 15 0 0 16 0.0000 4 180 240 1825 840 11\001 +-6 +6 1800 4800 2100 5100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 4800 2100 4800 2100 5100 1800 5100 1800 4800 +4 0 0 10 0 0 16 0.0000 4 180 120 1900 5040 1\001 +-6 +6 2100 4800 2400 5100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 4800 2400 4800 2400 5100 2100 5100 2100 4800 +4 0 0 10 0 0 16 0.0000 4 165 120 2200 5040 2\001 +-6 +6 2400 4800 2700 5100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 4800 2700 4800 2700 5100 2400 5100 2400 4800 +4 0 0 10 0 0 16 0.0000 4 180 120 2500 5040 5\001 +-6 +6 2700 4800 3000 5100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 4800 3000 4800 3000 5100 2700 5100 2700 4800 +4 0 0 10 0 0 16 0.0000 4 165 120 2800 5040 8\001 +-6 +6 3300 4800 3600 5100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 4800 3600 4800 3600 5100 3300 5100 3300 4800 +4 0 0 15 0 0 16 0.0000 4 180 240 3325 5040 12\001 +-6 +6 3000 4800 3300 5100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 4800 3300 4800 3300 5100 3000 5100 3000 4800 +4 0 0 10 0 0 16 0.0000 4 180 120 3100 5040 9\001 +-6 +6 4800 4800 5100 5100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4800 4800 5100 4800 5100 5100 4800 5100 4800 4800 +4 0 0 15 0 0 16 0.0000 4 195 240 4825 5040 13\001 +-6 +6 5100 4800 5400 5100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5100 4800 5400 4800 5400 5100 5100 5100 5100 4800 +4 0 0 15 0 0 16 0.0000 4 180 240 5125 5040 16\001 +-6 +6 5400 4800 5700 5100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5400 4800 5700 4800 5700 5100 5400 5100 5400 4800 +4 0 0 15 0 0 16 0.0000 4 195 240 5425 5040 19\001 +-6 +6 1800 8400 2100 8700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 8400 2100 8400 2100 8700 1800 8700 1800 8400 +4 0 0 10 0 0 16 0.0000 4 165 120 1900 8640 2\001 +-6 +6 2100 8400 2400 8700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 8400 2400 8400 2400 8700 2100 8700 2100 8400 +4 0 0 10 0 0 16 0.0000 4 180 120 2200 8640 5\001 +-6 +6 2400 8400 2700 8700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 8400 2700 8400 2700 8700 2400 8700 2400 8400 +4 0 0 10 0 0 16 0.0000 4 165 120 2500 8640 8\001 +-6 +6 2700 8400 3000 8700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 8400 3000 8400 3000 8700 2700 8700 2700 8400 +4 0 0 10 0 0 16 0.0000 4 180 120 2800 8640 9\001 +-6 +6 3000 8400 3300 8700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 8400 3300 8400 3300 8700 3000 8700 3000 8400 +4 0 0 15 0 0 16 0.0000 4 180 240 3025 8640 12\001 +-6 +6 3300 8400 3600 8700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 8400 3600 8400 3600 8700 3300 8700 3300 8400 +4 0 0 15 0 0 16 0.0000 4 195 240 3325 8640 13\001 +-6 +6 4800 8400 5100 8700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4800 8400 5100 8400 5100 8700 4800 8700 4800 8400 +4 0 0 15 0 0 16 0.0000 4 180 240 4825 8640 16\001 +-6 +6 5100 8400 5400 8700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5100 8400 5400 8400 5400 8700 5100 8700 5100 8400 +4 0 0 15 0 0 16 0.0000 4 195 240 5125 8640 19\001 +-6 +6 5400 8400 5700 8700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5400 8400 5700 8400 5700 8700 5400 8700 5400 8400 +4 0 0 15 0 0 16 0.0000 4 165 240 5425 8640 22\001 +-6 +6 5700 8400 6000 8700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5700 8400 6000 8400 6000 8700 5700 8700 5700 8400 +4 0 0 15 0 0 16 0.0000 4 180 240 5725 8640 25\001 +-6 +6 5700 4800 6000 5100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5700 4800 6000 4800 6000 5100 5700 5100 5700 4800 +4 0 0 15 0 0 16 0.0000 4 165 240 5725 5040 22\001 +-6 +6 1800 6600 9300 6900 +6 1800 6600 2100 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 6600 2100 6600 2100 6900 1800 6900 1800 6600 +4 0 0 15 0 0 16 0.0000 4 180 240 1825 6840 11\001 +-6 +6 2100 6600 2400 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 6600 2400 6600 2400 6900 2100 6900 2100 6600 +4 0 0 15 0 0 16 0.0000 4 180 240 2125 6840 11\001 +-6 +6 2400 6600 2700 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 6600 2700 6600 2700 6900 2400 6900 2400 6600 +4 0 0 15 0 0 16 0.0000 4 180 240 2425 6840 12\001 +-6 +6 2700 6600 3000 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 6600 3000 6600 3000 6900 2700 6900 2700 6600 +4 0 0 15 0 0 16 0.0000 4 195 240 2725 6840 13\001 +-6 +6 3000 6600 3300 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 6600 3300 6600 3300 6900 3000 6900 3000 6600 +4 0 0 15 0 0 16 0.0000 4 180 240 3025 6840 11\001 +-6 +6 3300 6600 3600 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 6600 3600 6600 3600 6900 3300 6900 3300 6600 +4 0 0 15 0 0 16 0.0000 4 180 240 3325 6840 12\001 +-6 +6 3600 6600 3900 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 6600 3900 6600 3900 6900 3600 6900 3600 6600 +4 0 0 15 0 0 16 0.0000 4 180 240 3625 6840 14\001 +-6 +6 3900 6600 4200 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3900 6600 4200 6600 4200 6900 3900 6900 3900 6600 +4 0 0 15 0 0 16 0.0000 4 195 240 3925 6840 13\001 +-6 +6 4200 6600 4500 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4200 6600 4500 6600 4500 6900 4200 6900 4200 6600 +4 0 0 15 0 0 16 0.0000 4 195 240 4225 6840 13\001 +-6 +6 4500 6600 4800 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4500 6600 4800 6600 4800 6900 4500 6900 4500 6600 +4 0 0 15 0 0 16 0.0000 4 180 240 4525 6840 14\001 +-6 +6 4800 6600 5100 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4800 6600 5100 6600 5100 6900 4800 6900 4800 6600 +4 0 0 15 0 0 16 0.0000 4 180 240 4825 6840 12\001 +-6 +6 5100 6600 5400 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5100 6600 5400 6600 5400 6900 5100 6900 5100 6600 +4 0 0 15 0 0 16 0.0000 4 180 240 5125 6840 14\001 +-6 +6 5400 6600 5700 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5400 6600 5700 6600 5700 6900 5400 6900 5400 6600 +4 0 0 10 0 0 16 0.0000 4 180 120 5500 6840 1\001 +-6 +6 5700 6600 6000 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5700 6600 6000 6600 6000 6900 5700 6900 5700 6600 +4 0 0 10 0 0 16 0.0000 4 165 120 5800 6840 2\001 +-6 +6 6000 6600 6300 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6000 6600 6300 6600 6300 6900 6000 6900 6000 6600 +4 0 0 10 0 0 16 0.0000 4 180 120 6100 6840 3\001 +-6 +6 6300 6600 6600 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6300 6600 6600 6600 6600 6900 6300 6900 6300 6600 +4 0 0 10 0 0 16 0.0000 4 180 120 6400 6840 5\001 +-6 +6 6600 6600 6900 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6600 6600 6900 6600 6900 6900 6600 6900 6600 6600 +4 0 0 10 0 0 16 0.0000 4 165 120 6700 6840 2\001 +-6 +6 6900 6600 7200 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6900 6600 7200 6600 7200 6900 6900 6900 6900 6600 +4 0 0 10 0 0 16 0.0000 4 180 120 7000 6840 3\001 +-6 +6 7200 6600 7500 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7200 6600 7500 6600 7500 6900 7200 6900 7200 6600 +4 0 0 10 0 0 16 0.0000 4 165 120 7300 6840 4\001 +-6 +6 7500 6600 7800 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7500 6600 7800 6600 7800 6900 7500 6900 7500 6600 +4 0 0 10 0 0 16 0.0000 4 180 120 7600 6840 5\001 +-6 +6 7800 6600 8100 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7800 6600 8100 6600 8100 6900 7800 6900 7800 6600 +4 0 0 10 0 0 16 0.0000 4 165 120 7900 6840 2\001 +-6 +6 8100 6600 8400 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8100 6600 8400 6600 8400 6900 8100 6900 8100 6600 +4 0 0 10 0 0 16 0.0000 4 180 120 8200 6840 3\001 +-6 +6 8400 6600 8700 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8400 6600 8700 6600 8700 6900 8400 6900 8400 6600 +4 0 0 10 0 0 16 0.0000 4 180 120 8500 6840 6\001 +-6 +6 8700 6600 9000 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8700 6600 9000 6600 9000 6900 8700 6900 8700 6600 +4 0 0 10 0 0 16 0.0000 4 180 120 8800 6840 5\001 +-6 +6 9000 6600 9300 6900 +2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 + 9000 6600 9300 6600 9300 6900 9000 6900 9000 6600 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 9300 6600 9000 6900 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 9000 6600 9300 6900 +-6 +-6 +6 6600 600 6900 900 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6750 750 150 150 6750 750 6900 750 +4 0 0 10 0 0 16 0.0000 4 180 120 6700 840 1\001 +-6 +6 5850 1950 6150 2250 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6000 2100 150 150 6000 2100 6150 2100 +4 0 0 10 0 0 16 0.0000 4 165 120 5950 2190 2\001 +-6 +6 7350 1950 7650 2250 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7500 2100 150 150 7500 2100 7650 2100 +4 0 0 10 0 0 16 0.0000 4 180 120 7450 2190 3\001 +-6 +6 5100 3300 5400 3600 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 5250 3450 150 150 5250 3450 5400 3450 +4 0 0 10 0 0 16 0.0000 4 165 120 5200 3540 4\001 +-6 +6 6600 3300 6900 3600 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6750 3450 150 150 6750 3450 6900 3450 +4 0 0 10 0 0 16 0.0000 4 180 120 6700 3540 5\001 +-6 +6 8175 3300 8475 3600 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8325 3450 150 150 8325 3450 8475 3450 +4 0 0 10 0 0 16 0.0000 4 180 120 8275 3540 6\001 +-6 +6 3600 4800 3900 5100 +2 2 0 1 0 -1 15 0 3 0.000 0 0 7 0 0 5 + 3600 4800 3900 4800 3900 5100 3600 5100 3600 4800 +4 0 0 10 0 0 16 0.0000 4 165 120 3700 5040 0\001 +-6 +6 3900 4800 4200 5100 +2 2 0 1 0 -1 15 0 3 0.000 0 0 7 0 0 5 + 3900 4800 4200 4800 4200 5100 3900 5100 3900 4800 +4 0 0 10 0 0 16 0.0000 4 165 120 4000 5040 0\001 +-6 +6 4200 4800 4500 5100 +2 2 0 1 0 -1 15 0 3 0.000 0 0 7 0 0 5 + 4200 4800 4500 4800 4500 5100 4200 5100 4200 4800 +4 0 0 10 0 0 16 0.0000 4 165 120 4300 5040 0\001 +-6 +6 4500 4800 4800 5100 +2 2 0 1 0 -1 15 0 3 0.000 0 0 7 0 0 5 + 4500 4800 4800 4800 4800 5100 4500 5100 4500 4800 +4 0 0 10 0 0 16 0.0000 4 165 120 4600 5040 0\001 +-6 +6 3600 8400 3900 8700 +2 2 0 1 0 -1 15 0 3 0.000 0 0 7 0 0 5 + 3600 8400 3900 8400 3900 8700 3600 8700 3600 8400 +4 0 0 10 0 0 16 0.0000 4 165 120 3700 8640 0\001 +-6 +6 3900 8400 4200 8700 +2 2 0 1 0 -1 15 0 3 0.000 0 0 7 0 0 5 + 3900 8400 4200 8400 4200 8700 3900 8700 3900 8400 +4 0 0 10 0 0 16 0.0000 4 165 120 4000 8640 0\001 +-6 +6 4200 8400 4500 8700 +2 2 0 1 0 -1 15 0 3 0.000 0 0 7 0 0 5 + 4200 8400 4500 8400 4500 8700 4200 8700 4200 8400 +4 0 0 10 0 0 16 0.0000 4 165 120 4300 8640 0\001 +-6 +6 4500 8400 4800 8700 +2 2 0 1 0 -1 15 0 3 0.000 0 0 7 0 0 5 + 4500 8400 4800 8400 4800 8700 4500 8700 4500 8400 +4 0 0 10 0 0 16 0.0000 4 165 120 4600 8640 0\001 +-6 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 1200 2100 1200 2100 1500 1800 1500 1800 1200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 1800 2100 1800 2100 2100 1800 2100 1800 1800 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 2400 2100 2400 2100 2700 1800 2700 1800 2400 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 7 + 6750 750 6750 1650 6000 2100 6750 2625 6750 3450 6000 3000 + 5250 3450 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 3 + 6750 1650 7500 2100 6750 2625 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2250 8400 2250 7275 3150 7275 3150 6900 +2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 2 + 1 1 1.00 60.00 120.00 + 1950 5100 1950 6600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3450 5100 3450 6075 5250 6075 5250 6600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2850 5100 2850 6225 4050 6225 4050 6600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2550 5100 2550 6300 3150 6300 3150 6600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 5250 5100 5250 5925 6450 5925 6450 6600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 1950 8400 1950 7200 2250 7200 2250 6900 +2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 2 + 1 1 1.00 60.00 120.00 + 2250 5100 2250 6600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3150 5100 3150 6150 4350 6150 4350 6600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 5550 5100 5550 5850 7350 5850 7350 6600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 5850 5100 5850 5775 8250 5775 8250 6600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3450 8400 3450 7575 5550 7575 5550 6900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3150 8400 3150 7500 5250 7500 5250 6900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2850 8400 2850 7425 4350 7425 4350 6900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2550 8400 2550 7350 4050 7350 4050 6900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 5250 8400 5250 7725 7350 7725 7350 6900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 5550 8400 5550 7800 8250 7800 8250 6900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 5850 8400 5850 7875 9150 7875 9150 6900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 4950 8400 4950 7650 6450 7650 6450 6900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 4950 5100 4950 6000 5550 6000 5550 6600 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 6000 2100 6000 3000 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 3 + 7500 2100 7500 3000 6750 3450 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 7500 3000 8325 3450 +3 3 0 0 7 -1 60 0 4 0.000 0 0 0 9 + 7500 2100 7275 1800 6900 1200 6750 750 6600 1200 6300 1800 + 6000 2100 6525 2025 7050 2025 + -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 + -1.000 +3 3 0 0 7 -1 60 0 4 0.000 0 0 0 9 + 7500 2100 7275 2400 6900 3000 6750 3450 6600 3000 6300 2400 + 6000 2100 6525 2175 7050 2175 + -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 + -1.000 +3 3 0 0 7 -1 60 0 4 0.000 0 0 0 9 + 6750 3450 6525 3150 6150 2550 6000 2100 5850 2550 5550 3150 + 5250 3450 5775 3375 6300 3375 + -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 + -1.000 +3 3 0 0 7 -1 60 0 4 0.000 0 0 0 9 + 8250 3450 8025 3150 7650 2550 7500 2100 7350 2550 7050 3150 + 6750 3450 7275 3375 7800 3375 + -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 + -1.000 +4 0 0 20 0 12 16 0.0000 4 210 1050 600 3225 edgenbr\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 3825 vlbltab\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 4425 velotab\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 2625 vnodnbr\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 825 velmbas\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 1425 vnodbas\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 2025 velmnbr\001 +4 0 0 10 0 0 16 0.0000 4 180 120 1900 1440 1\001 +4 0 0 10 0 0 16 0.0000 4 180 120 1900 2640 6\001 +4 0 0 10 0 0 16 0.0000 4 165 120 1900 2040 4\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 5025 verttab\001 +4 0 0 20 0 12 16 0.0000 4 210 1050 600 6825 edgetab\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 8625 vendtab\001 diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_me3.eps scotch-6.0.6/doc/src/scotch/s_f_me3.eps --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_me3.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_me3.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,1174 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: stdin +%%Creator: fig2dev Version 3.2 Patchlevel 4 +%%CreationDate: Mon May 3 15:33:42 2004 +%%For: pelegrin@brol.labri.fr (Francois PELLEGRINI) +%%BoundingBox: 0 0 757 488 +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 488 moveto 0 0 lineto 757 0 lineto 757 488 lineto closepath clip newpath +-36.0 522.7 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +% +% Fig objects follow +% +% +% here starts figure with depth 60 +% Polyline +2 slj +n 6525 3150 m 6502 3115 l 6479 3080 l 6457 3046 l 6436 3015 l 6418 2988 l + 6401 2963 l 6387 2942 l 6375 2924 l 6364 2908 l 6355 2895 l + 6346 2883 l 6339 2873 l 6331 2862 l 6324 2852 l 6316 2842 l + 6308 2830 l 6299 2816 l 6289 2800 l 6277 2780 l 6263 2758 l + 6248 2731 l 6231 2701 l 6212 2667 l 6192 2630 l 6171 2590 l + 6150 2550 l 6125 2499 l 6104 2451 l 6086 2409 l 6073 2372 l + 6064 2340 l 6058 2313 l 6055 2291 l 6054 2271 l 6055 2253 l + 6056 2237 l 6058 2222 l 6059 2207 l 6059 2192 l 6057 2177 l + 6054 2160 l 6048 2144 l 6039 2128 l 6028 2114 l 6015 2104 l + 6000 2100 l 5985 2104 l 5972 2114 l 5960 2128 l 5951 2144 l + 5945 2160 l 5941 2177 l 5938 2192 l 5937 2207 l 5937 2222 l + 5938 2238 l 5938 2253 l 5937 2271 l 5936 2291 l 5932 2313 l + 5927 2340 l 5918 2372 l 5906 2409 l 5890 2451 l 5872 2499 l + 5850 2550 l 5831 2594 l 5812 2636 l 5794 2676 l 5778 2712 l + 5764 2743 l 5752 2769 l 5742 2792 l 5734 2811 l 5728 2826 l + 5722 2840 l 5717 2852 l 5712 2863 l 5708 2873 l 5703 2885 l + 5697 2898 l 5689 2913 l 5680 2931 l 5669 2952 l 5655 2977 l + 5639 3006 l 5620 3038 l 5598 3074 l 5575 3112 l 5550 3150 l + 5520 3193 l 5492 3231 l 5465 3264 l 5440 3290 l 5418 3310 l + 5398 3326 l 5379 3337 l 5362 3345 l 5346 3351 l 5331 3356 l + 5317 3361 l 5303 3365 l 5289 3370 l 5276 3377 l 5264 3386 l + 5254 3397 l 5246 3409 l 5242 3423 l 5243 3437 l 5250 3450 l + 5263 3459 l 5281 3464 l 5301 3467 l 5321 3468 l 5342 3467 l + 5361 3464 l 5379 3460 l 5396 3455 l 5413 3450 l 5428 3444 l + 5444 3437 l 5460 3431 l 5477 3424 l 5496 3418 l 5518 3411 l + 5542 3405 l 5571 3399 l 5604 3393 l 5641 3388 l 5683 3383 l + 5728 3379 l 5775 3375 l 5822 3372 l 5867 3369 l 5906 3367 l + 5940 3366 l 5968 3365 l 5990 3364 l 6007 3363 l 6020 3363 l + 6030 3363 l 6037 3363 l 6044 3363 l 6050 3363 l 6058 3363 l + 6067 3363 l 6080 3363 l 6096 3364 l 6117 3365 l 6144 3366 l + 6176 3367 l 6214 3369 l 6256 3372 l 6300 3375 l 6348 3379 l + 6393 3384 l 6432 3389 l 6467 3395 l 6496 3402 l 6521 3409 l + 6541 3416 l 6559 3423 l 6574 3430 l 6588 3438 l 6601 3444 l + 6614 3451 l 6628 3457 l 6644 3462 l 6660 3466 l 6679 3468 l + 6698 3468 l 6718 3465 l 6736 3459 l 6750 3450 l 6759 3436 l + 6761 3420 l 6758 3405 l 6753 3392 l 6745 3381 l 6736 3372 l + 6727 3366 l 6717 3361 l 6706 3356 l 6695 3351 l 6683 3344 l + 6669 3334 l 6652 3319 l 6634 3299 l 6612 3273 l 6586 3239 l + 6557 3198 l + cp gs 0.80 setgray ef gr +% Polyline +n 8025 3150 m 8002 3115 l 7979 3080 l 7957 3046 l 7936 3015 l 7918 2988 l + 7901 2963 l 7887 2942 l 7875 2924 l 7864 2908 l 7855 2895 l + 7846 2883 l 7839 2873 l 7831 2862 l 7824 2852 l 7816 2842 l + 7808 2830 l 7799 2816 l 7789 2800 l 7777 2780 l 7763 2758 l + 7748 2731 l 7731 2701 l 7712 2667 l 7692 2630 l 7671 2590 l + 7650 2550 l 7625 2499 l 7604 2451 l 7586 2409 l 7573 2372 l + 7564 2340 l 7558 2313 l 7555 2291 l 7554 2271 l 7555 2253 l + 7556 2237 l 7558 2222 l 7559 2207 l 7559 2192 l 7557 2177 l + 7554 2160 l 7548 2144 l 7539 2128 l 7528 2114 l 7515 2104 l + 7500 2100 l 7485 2104 l 7472 2114 l 7460 2128 l 7451 2144 l + 7445 2160 l 7441 2177 l 7438 2192 l 7437 2207 l 7437 2222 l + 7438 2238 l 7438 2253 l 7437 2271 l 7436 2291 l 7432 2313 l + 7427 2340 l 7418 2372 l 7406 2409 l 7390 2451 l 7372 2499 l + 7350 2550 l 7331 2594 l 7312 2636 l 7294 2676 l 7278 2712 l + 7264 2743 l 7252 2769 l 7242 2792 l 7234 2811 l 7228 2826 l + 7222 2840 l 7217 2852 l 7212 2863 l 7208 2873 l 7203 2885 l + 7197 2898 l 7189 2913 l 7180 2931 l 7169 2952 l 7155 2977 l + 7139 3006 l 7120 3038 l 7098 3074 l 7075 3112 l 7050 3150 l + 7020 3193 l 6992 3231 l 6965 3264 l 6940 3290 l 6918 3310 l + 6898 3326 l 6879 3337 l 6862 3345 l 6846 3351 l 6831 3356 l + 6817 3361 l 6803 3365 l 6789 3370 l 6776 3377 l 6764 3386 l + 6754 3397 l 6746 3409 l 6742 3423 l 6743 3437 l 6750 3450 l + 6763 3459 l 6781 3464 l 6801 3467 l 6821 3468 l 6842 3467 l + 6861 3464 l 6879 3460 l 6896 3455 l 6913 3450 l 6928 3444 l + 6944 3437 l 6960 3431 l 6977 3424 l 6996 3418 l 7018 3411 l + 7042 3405 l 7071 3399 l 7104 3393 l 7141 3388 l 7183 3383 l + 7228 3379 l 7275 3375 l 7322 3372 l 7367 3369 l 7406 3367 l + 7440 3366 l 7468 3365 l 7490 3364 l 7507 3363 l 7520 3363 l + 7530 3363 l 7537 3363 l 7544 3363 l 7550 3363 l 7558 3363 l + 7567 3363 l 7580 3363 l 7596 3364 l 7617 3365 l 7644 3366 l + 7676 3367 l 7714 3369 l 7756 3372 l 7800 3375 l 7848 3379 l + 7893 3384 l 7932 3389 l 7967 3395 l 7996 3402 l 8021 3409 l + 8041 3416 l 8059 3423 l 8074 3430 l 8088 3438 l 8101 3444 l + 8114 3451 l 8128 3457 l 8144 3462 l 8160 3466 l 8179 3468 l + 8198 3468 l 8218 3465 l 8236 3459 l 8250 3450 l 8259 3436 l + 8261 3420 l 8258 3405 l 8253 3392 l 8245 3381 l 8236 3372 l + 8227 3366 l 8217 3361 l 8206 3356 l 8195 3351 l 8183 3344 l + 8169 3334 l 8152 3319 l 8134 3299 l 8112 3273 l 8086 3239 l + 8057 3198 l + cp gs 0.80 setgray ef gr +% Polyline +n 6675 2550 m 6670 2595 l 6667 2629 l 6665 2650 l 6664 2660 l 6663 2660 l + 6663 2653 l 6663 2644 l 6663 2635 l 6663 2629 l 6664 2632 l + 6665 2645 l 6667 2673 l 6670 2717 l 6675 2775 l 6678 2811 l + 6682 2847 l 6685 2884 l 6689 2920 l 6693 2954 l 6697 2987 l + 6701 3017 l 6705 3046 l 6709 3073 l 6713 3098 l 6717 3123 l + 6721 3146 l 6725 3169 l 6729 3191 l 6733 3214 l 6736 3236 l + 6740 3259 l 6743 3283 l 6746 3307 l 6749 3331 l 6751 3355 l + 6752 3379 l 6753 3401 l 6753 3422 l 6752 3438 l 6750 3450 l + 6745 3456 l 6740 3454 l 6733 3445 l 6728 3432 l 6723 3417 l + 6718 3401 l 6715 3384 l 6712 3367 l 6709 3349 l 6706 3331 l + 6703 3312 l 6700 3292 l 6695 3269 l 6689 3243 l 6681 3214 l + 6670 3181 l 6657 3142 l 6641 3099 l 6622 3051 l 6600 3000 l + 6581 2956 l 6562 2914 l 6544 2874 l 6528 2838 l 6514 2807 l + 6502 2781 l 6492 2758 l 6484 2739 l 6478 2724 l 6472 2710 l + 6467 2698 l 6462 2687 l 6458 2677 l 6453 2665 l 6447 2652 l + 6439 2637 l 6430 2619 l 6419 2598 l 6405 2573 l 6389 2544 l + 6370 2512 l 6348 2476 l 6325 2438 l 6300 2400 l 6270 2357 l + 6242 2319 l 6216 2286 l 6193 2260 l 6172 2240 l 6155 2224 l + 6139 2213 l 6125 2205 l 6112 2199 l 6100 2194 l 6088 2189 l + 6077 2185 l 6066 2180 l 6054 2173 l 6042 2164 l 6030 2153 l + 6019 2141 l 6010 2127 l 6003 2113 l 6000 2100 l 6004 2089 l + 6015 2083 l 6029 2082 l 6045 2084 l 6062 2089 l 6079 2096 l + 6096 2104 l 6113 2113 l 6130 2121 l 6149 2131 l 6169 2139 l + 6191 2148 l 6216 2156 l 6243 2163 l 6271 2170 l 6300 2175 l + 6334 2180 l 6359 2184 l 6374 2186 l 6379 2187 l 6375 2187 l + 6371 2187 l 6376 2186 l 6391 2184 l 6416 2180 l 6450 2175 l + 6479 2170 l 6507 2163 l 6532 2155 l 6555 2145 l 6574 2135 l + 6591 2123 l 6605 2112 l 6619 2100 l 6632 2089 l 6646 2079 l + 6661 2071 l 6677 2066 l 6695 2065 l 6715 2069 l 6734 2081 l + 6750 2100 l 6759 2121 l 6765 2144 l 6768 2169 l 6768 2192 l + 6766 2214 l 6762 2234 l 6757 2252 l 6751 2269 l 6744 2285 l + 6737 2300 l 6730 2316 l 6723 2332 l 6716 2350 l 6709 2371 l + 6702 2394 l 6695 2420 l 6689 2449 l 6684 2481 l 6679 2516 l + + cp gs 0.80 setgray ef gr +% Polyline +n 6825 2550 m 6830 2595 l 6833 2629 l 6835 2650 l 6836 2660 l 6837 2660 l + 6837 2653 l 6837 2644 l 6837 2635 l 6837 2629 l 6836 2632 l + 6835 2645 l 6833 2673 l 6830 2717 l 6825 2775 l 6822 2811 l + 6818 2847 l 6815 2884 l 6811 2920 l 6807 2954 l 6803 2987 l + 6799 3017 l 6795 3046 l 6791 3073 l 6787 3098 l 6783 3123 l + 6779 3146 l 6775 3169 l 6771 3191 l 6767 3214 l 6764 3236 l + 6760 3259 l 6757 3283 l 6754 3307 l 6751 3331 l 6749 3355 l + 6748 3379 l 6747 3401 l 6747 3422 l 6748 3438 l 6750 3450 l + 6755 3456 l 6760 3454 l 6767 3445 l 6772 3432 l 6777 3417 l + 6782 3401 l 6785 3384 l 6788 3367 l 6791 3349 l 6794 3331 l + 6797 3312 l 6800 3292 l 6805 3269 l 6811 3243 l 6819 3214 l + 6830 3181 l 6843 3142 l 6859 3099 l 6878 3051 l 6900 3000 l + 6919 2956 l 6938 2914 l 6956 2874 l 6972 2838 l 6986 2807 l + 6998 2781 l 7008 2758 l 7016 2739 l 7022 2724 l 7028 2710 l + 7033 2698 l 7038 2687 l 7042 2677 l 7047 2665 l 7053 2652 l + 7061 2637 l 7070 2619 l 7081 2598 l 7095 2573 l 7111 2544 l + 7130 2512 l 7152 2476 l 7175 2438 l 7200 2400 l 7230 2357 l + 7258 2319 l 7284 2286 l 7307 2260 l 7328 2240 l 7345 2224 l + 7361 2213 l 7375 2205 l 7388 2199 l 7400 2194 l 7412 2189 l + 7423 2185 l 7434 2180 l 7446 2173 l 7458 2164 l 7470 2153 l + 7481 2141 l 7490 2127 l 7497 2113 l 7500 2100 l 7496 2089 l + 7485 2083 l 7471 2082 l 7455 2084 l 7438 2089 l 7421 2096 l + 7404 2104 l 7388 2113 l 7370 2121 l 7351 2131 l 7331 2139 l + 7309 2148 l 7284 2156 l 7257 2163 l 7229 2170 l 7200 2175 l + 7166 2180 l 7141 2184 l 7126 2186 l 7121 2187 l 7125 2187 l + 7129 2187 l 7124 2186 l 7109 2184 l 7084 2180 l 7050 2175 l + 7021 2170 l 6993 2163 l 6968 2155 l 6945 2145 l 6926 2135 l + 6909 2123 l 6895 2112 l 6881 2100 l 6868 2089 l 6854 2079 l + 6839 2071 l 6823 2066 l 6805 2065 l 6785 2069 l 6766 2081 l + 6750 2100 l 6741 2121 l 6735 2144 l 6732 2169 l 6732 2192 l + 6734 2214 l 6738 2234 l 6743 2252 l 6749 2269 l 6756 2285 l + 6763 2300 l 6770 2316 l 6777 2332 l 6784 2350 l 6791 2371 l + 6798 2394 l 6805 2420 l 6811 2449 l 6816 2481 l 6821 2516 l + + cp gs 0.80 setgray ef gr +% Polyline +n 6825 1650 m 6830 1605 l 6833 1571 l 6835 1550 l 6836 1540 l 6837 1540 l + 6837 1547 l 6837 1556 l 6837 1565 l 6837 1571 l 6836 1568 l + 6835 1555 l 6833 1527 l 6830 1483 l 6825 1425 l 6822 1389 l + 6818 1353 l 6815 1316 l 6811 1280 l 6807 1246 l 6803 1213 l + 6799 1183 l 6795 1154 l 6791 1127 l 6787 1102 l 6783 1077 l + 6779 1054 l 6775 1031 l 6771 1009 l 6767 986 l 6764 964 l + 6760 941 l 6757 917 l 6754 893 l 6751 869 l 6749 845 l + 6748 821 l 6747 799 l 6747 778 l 6748 762 l 6750 750 l + 6755 744 l 6760 746 l 6767 755 l 6772 768 l 6777 783 l + 6782 799 l 6785 816 l 6788 833 l 6791 851 l 6794 869 l + 6797 888 l 6800 908 l 6805 931 l 6811 957 l 6819 986 l + 6830 1019 l 6843 1058 l 6859 1101 l 6878 1149 l 6900 1200 l + 6919 1244 l 6938 1286 l 6956 1326 l 6972 1362 l 6986 1393 l + 6998 1419 l 7008 1442 l 7016 1461 l 7022 1476 l 7028 1490 l + 7033 1502 l 7038 1513 l 7042 1523 l 7047 1535 l 7053 1548 l + 7061 1563 l 7070 1581 l 7081 1602 l 7095 1627 l 7111 1656 l + 7130 1688 l 7152 1724 l 7175 1762 l 7200 1800 l 7230 1843 l + 7258 1881 l 7284 1914 l 7307 1940 l 7328 1960 l 7345 1976 l + 7361 1987 l 7375 1995 l 7388 2001 l 7400 2006 l 7412 2011 l + 7423 2015 l 7434 2020 l 7446 2027 l 7458 2036 l 7470 2047 l + 7481 2059 l 7490 2073 l 7497 2087 l 7500 2100 l 7496 2111 l + 7485 2117 l 7471 2118 l 7455 2116 l 7438 2111 l 7421 2104 l + 7404 2096 l 7388 2088 l 7370 2079 l 7351 2069 l 7331 2061 l + 7309 2052 l 7284 2044 l 7257 2037 l 7229 2030 l 7200 2025 l + 7166 2020 l 7141 2016 l 7126 2014 l 7121 2013 l 7125 2013 l + 7129 2013 l 7124 2014 l 7109 2016 l 7084 2020 l 7050 2025 l + 7021 2030 l 6993 2037 l 6968 2045 l 6945 2055 l 6926 2065 l + 6909 2077 l 6895 2088 l 6881 2100 l 6868 2111 l 6854 2121 l + 6839 2129 l 6823 2134 l 6805 2135 l 6785 2131 l 6766 2119 l + 6750 2100 l 6741 2079 l 6735 2056 l 6732 2031 l 6732 2008 l + 6734 1986 l 6738 1966 l 6743 1948 l 6749 1931 l 6756 1915 l + 6763 1900 l 6770 1884 l 6777 1868 l 6784 1850 l 6791 1829 l + 6798 1806 l 6805 1780 l 6811 1751 l 6816 1719 l 6821 1684 l + + cp gs 0.80 setgray ef gr +% Polyline +n 6675 1650 m 6670 1605 l 6667 1571 l 6665 1550 l 6664 1540 l 6663 1540 l + 6663 1547 l 6663 1556 l 6663 1565 l 6663 1571 l 6664 1568 l + 6665 1555 l 6667 1527 l 6670 1483 l 6675 1425 l 6678 1389 l + 6682 1353 l 6685 1316 l 6689 1280 l 6693 1246 l 6697 1213 l + 6701 1183 l 6705 1154 l 6709 1127 l 6713 1102 l 6717 1077 l + 6721 1054 l 6725 1031 l 6729 1009 l 6733 986 l 6736 964 l + 6740 941 l 6743 917 l 6746 893 l 6749 869 l 6751 845 l + 6752 821 l 6753 799 l 6753 778 l 6752 762 l 6750 750 l + 6745 744 l 6740 746 l 6733 755 l 6728 768 l 6723 783 l + 6718 799 l 6715 816 l 6712 833 l 6709 851 l 6706 869 l + 6703 888 l 6700 908 l 6695 931 l 6689 957 l 6681 986 l + 6670 1019 l 6657 1058 l 6641 1101 l 6622 1149 l 6600 1200 l + 6581 1244 l 6562 1286 l 6544 1326 l 6528 1362 l 6514 1393 l + 6502 1419 l 6492 1442 l 6484 1461 l 6478 1476 l 6472 1490 l + 6467 1502 l 6462 1513 l 6458 1523 l 6453 1535 l 6447 1548 l + 6439 1563 l 6430 1581 l 6419 1602 l 6405 1627 l 6389 1656 l + 6370 1688 l 6348 1724 l 6325 1762 l 6300 1800 l 6270 1843 l + 6242 1881 l 6216 1914 l 6193 1940 l 6172 1960 l 6155 1976 l + 6139 1987 l 6125 1995 l 6112 2001 l 6100 2006 l 6088 2011 l + 6077 2015 l 6066 2020 l 6054 2027 l 6042 2036 l 6030 2047 l + 6019 2059 l 6010 2073 l 6003 2087 l 6000 2100 l 6004 2111 l + 6015 2117 l 6029 2118 l 6045 2116 l 6062 2111 l 6079 2104 l + 6096 2096 l 6113 2088 l 6130 2079 l 6149 2069 l 6169 2061 l + 6191 2052 l 6216 2044 l 6243 2037 l 6271 2030 l 6300 2025 l + 6334 2020 l 6359 2016 l 6374 2014 l 6379 2013 l 6375 2013 l + 6371 2013 l 6376 2014 l 6391 2016 l 6416 2020 l 6450 2025 l + 6479 2030 l 6507 2037 l 6532 2045 l 6555 2055 l 6574 2065 l + 6591 2077 l 6605 2088 l 6619 2100 l 6632 2111 l 6646 2121 l + 6661 2129 l 6677 2134 l 6695 2135 l 6715 2131 l 6734 2119 l + 6750 2100 l 6759 2079 l 6765 2056 l 6768 2031 l 6768 2008 l + 6766 1986 l 6762 1966 l 6757 1948 l 6751 1931 l 6744 1915 l + 6737 1900 l 6730 1884 l 6723 1868 l 6716 1850 l 6709 1829 l + 6702 1806 l 6695 1780 l 6689 1751 l 6684 1719 l 6679 1684 l + + cp gs 0.80 setgray ef gr +% here ends figure; +% +% here starts figure with depth 50 +% Polyline +7.500 slw +n 6000 2100 m + 6000 3000 l gs col0 s gr +% Polyline +n 7500 2100 m 7500 3000 l + 6750 3450 l gs col0 s gr +% Polyline +n 7500 3000 m + 8325 3450 l gs col0 s gr +% Polyline +n 5250 3450 m 6000 3000 l 6750 3450 l 6525 2550 l 6000 2100 l 6525 1650 l + 6750 2100 l + 6525 2550 l gs col0 s gr +% Polyline +n 6525 1650 m 6750 750 l 6975 1650 l 6750 2100 l 6975 2550 l + 6750 3450 l gs col0 s gr +% Polyline +n 6975 2550 m 7500 2100 l + 6975 1650 l gs col0 s gr +% Polyline +n 1800 6600 m 2100 6600 l 2100 6900 l 1800 6900 l + cp gs col0 s gr +% here ends figure; +% +% here starts figure with depth 20 +% Polyline +7.500 slw + [15 45] 45 sd +n 1800 3600 m 2100 3600 l 2100 3900 l 1800 3900 l + cp gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2100 3600 m + 1800 3900 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1800 3600 m + 2100 3900 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1800 4200 m 2100 4200 l 2100 4500 l 1800 4500 l + cp gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2100 4200 m + 1800 4500 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1800 4200 m + 2100 4500 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 12900 6600 m 13200 6600 l 13200 6900 l 12900 6900 l + cp gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 13200 6600 m + 12900 6900 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 12900 6600 m + 13200 6900 l gs col0 s gr [] 0 sd +% Polyline +gs clippath +3180 6885 m 3120 6885 l 3120 7036 l 3150 6916 l 3180 7036 l cp +eoclip +n 2250 8400 m 2250 7200 l 3150 7200 l + 3150 6900 l gs col0 s gr gr + +% arrowhead +n 3180 7036 m 3150 6916 l 3120 7036 l 3180 7036 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +5220 6615 m 5280 6615 l 5280 6464 l 5250 6584 l 5220 6464 l cp +eoclip +n 3450 5100 m 3450 6150 l 5250 6150 l + 5250 6600 l gs col0 s gr gr + +% arrowhead +n 5220 6464 m 5250 6584 l 5280 6464 l 5220 6464 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +3120 6615 m 3180 6615 l 3180 6464 l 3150 6584 l 3120 6464 l cp +eoclip +n 2550 5100 m 2550 6300 l 3150 6300 l + 3150 6600 l gs col0 s gr gr + +% arrowhead +n 3120 6464 m 3150 6584 l 3180 6464 l 3120 6464 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +9780 6885 m 9720 6885 l 9720 7036 l 9750 6916 l 9780 7036 l cp +eoclip +n 1950 8400 m 1950 8100 l 9750 8100 l + 9750 6900 l gs col0 s gr gr + +% arrowhead +n 9780 7036 m 9750 6916 l 9720 7036 l 9780 7036 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +9720 6615 m 9780 6615 l 9780 6464 l 9750 6584 l 9720 6464 l cp +eoclip +n 3150 5100 m 3150 5625 l 9750 5625 l + 9750 6600 l gs col0 s gr gr + +% arrowhead +n 9720 6464 m 9750 6584 l 9780 6464 l 9720 6464 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +7320 6615 m 7380 6615 l 7380 6464 l 7350 6584 l 7320 6464 l cp +eoclip +n 5550 5100 m 5550 5925 l 7350 5925 l + 7350 6600 l gs col0 s gr gr + +% arrowhead +n 7320 6464 m 7350 6584 l 7380 6464 l 7320 6464 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +8220 6615 m 8280 6615 l 8280 6464 l 8250 6584 l 8220 6464 l cp +eoclip +n 5850 5100 m 5850 5850 l 8250 5850 l + 8250 6600 l gs col0 s gr gr + +% arrowhead +n 8220 6464 m 8250 6584 l 8280 6464 l 8220 6464 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +5580 6885 m 5520 6885 l 5520 7036 l 5550 6916 l 5580 7036 l cp +eoclip +n 3450 8400 m 3450 7425 l 5550 7425 l + 5550 6900 l gs col0 s gr gr + +% arrowhead +n 5580 7036 m 5550 6916 l 5520 7036 l 5580 7036 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +10980 6885 m 10920 6885 l 10920 7036 l 10950 6916 l 10980 7036 l cp +eoclip +n 3150 8400 m 3150 8025 l 10950 8025 l + 10950 6900 l gs col0 s gr gr + +% arrowhead +n 10980 7036 m 10950 6916 l 10920 7036 l 10980 7036 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4380 6885 m 4320 6885 l 4320 7036 l 4350 6916 l 4380 7036 l cp +eoclip +n 2850 8400 m 2850 7350 l 4350 7350 l + 4350 6900 l gs col0 s gr gr + +% arrowhead +n 4380 7036 m 4350 6916 l 4320 7036 l 4380 7036 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4080 6885 m 4020 6885 l 4020 7036 l 4050 6916 l 4080 7036 l cp +eoclip +n 2550 8400 m 2550 7275 l 4050 7275 l + 4050 6900 l gs col0 s gr gr + +% arrowhead +n 4080 7036 m 4050 6916 l 4020 7036 l 4080 7036 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +7380 6885 m 7320 6885 l 7320 7036 l 7350 6916 l 7380 7036 l cp +eoclip +n 5250 8400 m 5250 7725 l 7350 7725 l + 7350 6900 l gs col0 s gr gr + +% arrowhead +n 7380 7036 m 7350 6916 l 7320 7036 l 7380 7036 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +8280 6885 m 8220 6885 l 8220 7036 l 8250 6916 l 8280 7036 l cp +eoclip +n 5550 8400 m 5550 7800 l 8250 7800 l + 8250 6900 l gs col0 s gr gr + +% arrowhead +n 8280 7036 m 8250 6916 l 8220 7036 l 8280 7036 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +9180 6885 m 9120 6885 l 9120 7036 l 9150 6916 l 9180 7036 l cp +eoclip +n 5850 8400 m 5850 7875 l 9150 7875 l + 9150 6900 l gs col0 s gr gr + +% arrowhead +n 9180 7036 m 9150 6916 l 9120 7036 l 9180 7036 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6480 6885 m 6420 6885 l 6420 7036 l 6450 6916 l 6480 7036 l cp +eoclip +n 4950 8400 m 4950 7500 l 6450 7500 l + 6450 6900 l gs col0 s gr gr + +% arrowhead +n 6480 7036 m 6450 6916 l 6420 7036 l 6480 7036 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6420 6615 m 6480 6615 l 6480 6464 l 6450 6584 l 6420 6464 l cp +eoclip +n 5250 5100 m 5250 6000 l 6450 6000 l + 6450 6600 l gs col0 s gr gr + +% arrowhead +n 6420 6464 m 6450 6584 l 6480 6464 l 6420 6464 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +5520 6615 m 5580 6615 l 5580 6464 l 5550 6584 l 5520 6464 l cp +eoclip +n 4950 5100 m 4950 6075 l 5550 6075 l + 5550 6600 l gs col0 s gr gr + +% arrowhead +n 5520 6464 m 5550 6584 l 5580 6464 l 5520 6464 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +9120 6615 m 9180 6615 l 9180 6464 l 9150 6584 l 9120 6464 l cp +eoclip +n 1950 5100 m 1950 5550 l 9150 5550 l + 9150 6600 l gs col0 s gr gr + +% arrowhead +n 9120 6464 m 9150 6584 l 9180 6464 l 9120 6464 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4020 6615 m 4080 6615 l 4080 6464 l 4050 6584 l 4020 6464 l cp +eoclip +n 2850 5100 m 2850 6225 l 4050 6225 l + 4050 6600 l gs col0 s gr gr + +% arrowhead +n 4020 6464 m 4050 6584 l 4080 6464 l 4020 6464 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +12180 6885 m 12120 6885 l 12120 7036 l 12150 6916 l 12180 7036 l cp +eoclip +n 3750 8400 m 3750 7950 l 12150 7950 l + 12150 6900 l gs col0 s gr gr + +% arrowhead +n 12180 7036 m 12150 6916 l 12120 7036 l 12180 7036 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +10920 6615 m 10980 6615 l 10980 6464 l 10950 6584 l 10920 6464 l cp +eoclip +n 3750 5100 m 3750 5700 l 10950 5700 l + 10950 6600 l gs col0 s gr gr + +% arrowhead +n 10920 6464 m 10950 6584 l 10980 6464 l 10920 6464 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +5280 6885 m 5220 6885 l 5220 7036 l 5250 6916 l 5280 7036 l cp +eoclip +n 4350 8400 m 4350 7575 l 5250 7575 l + 5250 6900 l gs col0 s gr gr + +% arrowhead +n 5280 7036 m 5250 6916 l 5220 7036 l 5280 7036 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +12120 6615 m 12180 6615 l 12180 6464 l 12150 6584 l 12120 6464 l cp +eoclip +n 4650 5100 m 4650 5775 l 12150 5775 l + 12150 6600 l gs col0 s gr gr + +% arrowhead +n 12120 6464 m 12150 6584 l 12180 6464 l 12120 6464 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +13080 6885 m 13020 6885 l 13020 7036 l 13050 6916 l 13080 7036 l cp +eoclip +n 4650 8400 m 4650 7650 l 13050 7650 l + 13050 6900 l gs col0 s gr gr + +% arrowhead +n 13080 7036 m 13050 6916 l 13020 7036 l 13080 7036 l cp gs 0.00 setgray ef gr col0 s +/Courier ff 240.00 scf sf +600 3225 m +gs 1 -1 sc (edgenbr) col0 sh gr +/Courier ff 240.00 scf sf +600 3825 m +gs 1 -1 sc (vlbltab) col0 sh gr +/Courier ff 240.00 scf sf +600 4425 m +gs 1 -1 sc (velotab) col0 sh gr +/Courier ff 240.00 scf sf +600 2625 m +gs 1 -1 sc (vnodnbr) col0 sh gr +/Courier ff 240.00 scf sf +600 825 m +gs 1 -1 sc (velmbas) col0 sh gr +/Courier ff 240.00 scf sf +600 1425 m +gs 1 -1 sc (vnodbas) col0 sh gr +/Courier ff 240.00 scf sf +600 2025 m +gs 1 -1 sc (velmnbr) col0 sh gr +/Courier ff 240.00 scf sf +600 5025 m +gs 1 -1 sc (verttab) col0 sh gr +/Courier ff 240.00 scf sf +600 6825 m +gs 1 -1 sc (edgetab) col0 sh gr +/Courier ff 240.00 scf sf +600 8625 m +gs 1 -1 sc (vendtab) col0 sh gr +% here ends figure; +% +% here starts figure with depth 15 +% Polyline +7.500 slw +n 2100 4800 m 2400 4800 l 2400 5100 l 2100 5100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 4800 m 2700 4800 l 2700 5100 l 2400 5100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 4800 m 3000 4800 l 3000 5100 l 2700 5100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3300 4800 m 3600 4800 l 3600 5100 l 3300 5100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3325 5040 m +gs 1 -1 sc (12) col0 sh gr +% Polyline +n 4800 4800 m 5100 4800 l 5100 5100 l 4800 5100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +4825 5040 m +gs 1 -1 sc (13) col0 sh gr +% Polyline +n 5100 4800 m 5400 4800 l 5400 5100 l 5100 5100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +5125 5040 m +gs 1 -1 sc (16) col0 sh gr +% Polyline +n 5400 4800 m 5700 4800 l 5700 5100 l 5400 5100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +5425 5040 m +gs 1 -1 sc (19) col0 sh gr +% Polyline +n 2100 8400 m 2400 8400 l 2400 8700 l 2100 8700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 8400 m 2700 8400 l 2700 8700 l 2400 8700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 8400 m 3000 8400 l 3000 8700 l 2700 8700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3300 8400 m 3600 8400 l 3600 8700 l 3300 8700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3325 8640 m +gs 1 -1 sc (13) col0 sh gr +% Polyline +n 4800 8400 m 5100 8400 l 5100 8700 l 4800 8700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +4825 8640 m +gs 1 -1 sc (16) col0 sh gr +% Polyline +n 5100 8400 m 5400 8400 l 5400 8700 l 5100 8700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +5125 8640 m +gs 1 -1 sc (19) col0 sh gr +% Polyline +n 5400 8400 m 5700 8400 l 5700 8700 l 5400 8700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +5425 8640 m +gs 1 -1 sc (22) col0 sh gr +% Polyline +n 5700 8400 m 6000 8400 l 6000 8700 l 5700 8700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +5725 8640 m +gs 1 -1 sc (25) col0 sh gr +% Polyline +n 5700 4800 m 6000 4800 l 6000 5100 l 5700 5100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +5725 5040 m +gs 1 -1 sc (22) col0 sh gr +% Polyline +n 1800 2400 m 2100 2400 l 2100 2700 l 1800 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 1800 m 2100 1800 l 2100 2100 l 1800 2100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 1200 m 2100 1200 l 2100 1500 l 1800 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 600 m 2100 600 l 2100 900 l 1800 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 6600 m 3000 6600 l 3000 6900 l 2700 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2725 6840 m +gs 1 -1 sc (13) col0 sh gr +% Polyline +n 3600 6600 m 3900 6600 l 3900 6900 l 3600 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3625 6840 m +gs 1 -1 sc (14) col0 sh gr +% Polyline +n 5100 6600 m 5400 6600 l 5400 6900 l 5100 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +5125 6840 m +gs 1 -1 sc (14) col0 sh gr +% Polyline +n 5400 6600 m 5700 6600 l 5700 6900 l 5400 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5700 6600 m 6000 6600 l 6000 6900 l 5700 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6000 6600 m 6300 6600 l 6300 6900 l 6000 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6300 6600 m 6600 6600 l 6600 6900 l 6300 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6600 6600 m 6900 6600 l 6900 6900 l 6600 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7200 6600 m 7500 6600 l 7500 6900 l 7200 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7500 6600 m 7800 6600 l 7800 6900 l 7500 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 7800 6600 m 8100 6600 l 8100 6900 l 7800 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8100 6600 m 8400 6600 l 8400 6900 l 8100 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8400 6600 m 8700 6600 l 8700 6900 l 8400 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 8700 6600 m 9000 6600 l 9000 6900 l 8700 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 9000 6600 m 9300 6600 l 9300 6900 l 9000 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +9025 6840 m +gs 1 -1 sc (11) col0 sh gr +% Polyline +n 9300 6600 m 9600 6600 l 9600 6900 l 9300 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 4800 m 2100 4800 l 2100 5100 l 1800 5100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +1825 5040 m +gs 1 -1 sc (25) col0 sh gr +% Polyline +n 1800 8400 m 2100 8400 l 2100 8700 l 1800 8700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +1825 8640 m +gs 1 -1 sc (27) col0 sh gr +% Polyline +n 3900 6600 m 4200 6600 l 4200 6900 l 3900 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3925 6840 m +gs 1 -1 sc (13) col0 sh gr +% Polyline +n 9900 6600 m 10200 6600 l 10200 6900 l 9900 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +9925 6840 m +gs 1 -1 sc (14) col0 sh gr +% Polyline +n 9600 6600 m 9900 6600 l 9900 6900 l 9600 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +9625 6840 m +gs 1 -1 sc (13) col0 sh gr +% Polyline +n 3900 4800 m 4200 4800 l 4200 5100 l 3900 5100 l + cp gs 0.85 setgray ef gr gs col0 s gr +% Polyline +n 3900 8400 m 4200 8400 l 4200 8700 l 3900 8700 l + cp gs 0.85 setgray ef gr gs col0 s gr +% Polyline +n 1800 3000 m 2100 3000 l 2100 3300 l 1800 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +1825 3240 m +gs 1 -1 sc (36) col0 sh gr +% Polyline +n 3000 4800 m 3300 4800 l 3300 5100 l 3000 5100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3025 5040 m +gs 1 -1 sc (27) col0 sh gr +% Polyline +n 3000 8400 m 3300 8400 l 3300 8700 l 3000 8700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3025 8640 m +gs 1 -1 sc (31) col0 sh gr +% Polyline +n 3600 4800 m 3900 4800 l 3900 5100 l 3600 5100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3625 5040 m +gs 1 -1 sc (31) col0 sh gr +% Polyline +n 3600 8400 m 3900 8400 l 3900 8700 l 3600 8700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3625 8640 m +gs 1 -1 sc (35) col0 sh gr +% Polyline +n 10200 6600 m 10500 6600 l 10500 6900 l 10200 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +10225 6840 m +gs 1 -1 sc (12) col0 sh gr +% Polyline +n 10800 6600 m 11100 6600 l 11100 6900 l 10800 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +10825 6840 m +gs 1 -1 sc (11) col0 sh gr +% Polyline +n 11100 6600 m 11400 6600 l 11400 6900 l 11100 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 11400 6600 m 11700 6600 l 11700 6900 l 11400 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +11425 6840 m +gs 1 -1 sc (12) col0 sh gr +% Polyline +n 11700 6600 m 12000 6600 l 12000 6900 l 11700 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +11725 6840 m +gs 1 -1 sc (10) col0 sh gr +% Polyline +n 4200 4800 m 4500 4800 l 4500 5100 l 4200 5100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4200 6600 m 4500 6600 l 4500 6900 l 4200 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4800 6600 m 5100 6600 l 5100 6900 l 4800 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4500 6600 m 4800 6600 l 4800 6900 l 4500 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4200 8400 m 4500 8400 l 4500 8700 l 4200 8700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +4225 8640 m +gs 1 -1 sc (12) col0 sh gr +% Polyline +n 4500 4800 m 4800 4800 l 4800 5100 l 4500 5100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +4525 5040 m +gs 1 -1 sc (35) col0 sh gr +% Polyline +n 4500 8400 m 4800 8400 l 4800 8700 l 4500 8700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +4525 8640 m +gs 1 -1 sc (38) col0 sh gr +% Polyline +n 12000 6600 m 12300 6600 l 12300 6900 l 12000 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 12300 6600 m 12600 6600 l 12600 6900 l 12300 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 12600 6600 m 12900 6600 l 12900 6900 l 12600 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 6900 6600 m 7200 6600 l 7200 6900 l 6900 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2100 6600 m 2400 6600 l 2400 6900 l 2100 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2125 6840 m +gs 1 -1 sc (11) col0 sh gr +% Polyline +n 2400 6600 m 2700 6600 l 2700 6900 l 2400 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2425 6840 m +gs 1 -1 sc (12) col0 sh gr +% Polyline +n 3000 6600 m 3300 6600 l 3300 6900 l 3000 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3300 6600 m 3600 6600 l 3600 6900 l 3300 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3325 6840 m +gs 1 -1 sc (10) col0 sh gr +% Polyline +n 10500 6600 m 10800 6600 l 10800 6900 l 10500 6900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +10525 6840 m +gs 1 -1 sc (10) col0 sh gr +% Polyline +gs clippath +2220 6615 m 2280 6615 l 2280 6464 l 2250 6584 l 2220 6464 l cp +eoclip +n 2250 5100 m + 2250 6600 l gs col0 s gr gr + +% arrowhead +n 2220 6464 m 2250 6584 l 2280 6464 l 2220 6464 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4320 6615 m 4380 6615 l 4380 6464 l 4350 6584 l 4320 6464 l cp +eoclip +n 4350 5100 m + 4350 6600 l gs col0 s gr gr + +% arrowhead +n 4320 6464 m 4350 6584 l 4380 6464 l 4320 6464 l cp gs 0.00 setgray ef gr col0 s +% here ends figure; +% +% here starts figure with depth 12 +% Ellipse +7.500 slw +n 6757 2093 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6007 2993 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 7507 2993 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6750 750 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6000 2100 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 7500 2100 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 5250 3450 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6750 3450 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 8325 3450 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6525 1650 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6532 2543 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6975 2550 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6975 1650 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% here ends figure; +% +% here starts figure with depth 10 +/Times-Roman ff 240.00 scf sf +2200 5040 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 5040 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 5040 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 240.00 scf sf +2200 8640 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 8640 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 8640 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman ff 240.00 scf sf +6707 2183 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +6700 840 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +5950 2190 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +7450 2190 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +5200 3540 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +6700 3540 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +8275 3540 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +1900 2640 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +1900 2040 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +1900 1440 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +1900 840 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman ff 240.00 scf sf +5500 6840 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +5800 6840 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +6100 6840 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +6400 6840 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +6700 6840 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +7300 6840 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +7600 6840 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +7900 6840 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +8200 6840 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +8500 6840 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +8800 6840 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +9400 6840 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman ff 240.00 scf sf +4000 5040 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 240.00 scf sf +4000 8640 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 240.00 scf sf +11200 6840 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman ff 240.00 scf sf +4300 5040 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman ff 240.00 scf sf +4300 6840 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +4900 6840 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +4600 6840 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +12100 6840 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +12400 6840 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +12700 6840 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +7000 6840 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +3100 6840 m +gs 1 -1 sc (9) col0 sh gr +% here ends figure; +% +% here starts figure with depth 8 +/Times-Roman ff 240.00 scf sf +5877 3083 m +gs 1 -1 sc (13) col0 sh gr +/Times-Roman ff 240.00 scf sf +7377 3083 m +gs 1 -1 sc (14) col0 sh gr +/Times-Roman ff 240.00 scf sf +6395 1740 m +gs 1 -1 sc (11) col0 sh gr +/Times-Roman ff 240.00 scf sf +6402 2633 m +gs 1 -1 sc (12) col0 sh gr +/Times-Roman ff 240.00 scf sf +6845 2640 m +gs 1 -1 sc (10) col0 sh gr +/Times-Roman ff 240.00 scf sf +6925 1740 m +gs 1 -1 sc (9) col0 sh gr +% here ends figure; +$F2psEnd +rs +showpage diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_me3.fig scotch-6.0.6/doc/src/scotch/s_f_me3.fig --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_me3.fig 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_me3.fig 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,563 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +0 +1200 2 +6 1800 3600 2100 3900 +2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 + 1800 3600 2100 3600 2100 3900 1800 3900 1800 3600 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 2100 3600 1800 3900 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 1800 3600 2100 3900 +-6 +6 1800 4200 2100 4500 +2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 + 1800 4200 2100 4200 2100 4500 1800 4500 1800 4200 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 2100 4200 1800 4500 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 1800 4200 2100 4500 +-6 +6 2100 4800 2400 5100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 4800 2400 4800 2400 5100 2100 5100 2100 4800 +4 0 0 10 0 0 16 0.0000 4 165 120 2200 5040 2\001 +-6 +6 2400 4800 2700 5100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 4800 2700 4800 2700 5100 2400 5100 2400 4800 +4 0 0 10 0 0 16 0.0000 4 180 120 2500 5040 5\001 +-6 +6 2700 4800 3000 5100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 4800 3000 4800 3000 5100 2700 5100 2700 4800 +4 0 0 10 0 0 16 0.0000 4 165 120 2800 5040 8\001 +-6 +6 3300 4800 3600 5100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 4800 3600 4800 3600 5100 3300 5100 3300 4800 +4 0 0 15 0 0 16 0.0000 4 180 240 3325 5040 12\001 +-6 +6 4800 4800 5100 5100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4800 4800 5100 4800 5100 5100 4800 5100 4800 4800 +4 0 0 15 0 0 16 0.0000 4 195 240 4825 5040 13\001 +-6 +6 5100 4800 5400 5100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5100 4800 5400 4800 5400 5100 5100 5100 5100 4800 +4 0 0 15 0 0 16 0.0000 4 180 240 5125 5040 16\001 +-6 +6 5400 4800 5700 5100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5400 4800 5700 4800 5700 5100 5400 5100 5400 4800 +4 0 0 15 0 0 16 0.0000 4 195 240 5425 5040 19\001 +-6 +6 2100 8400 2400 8700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 8400 2400 8400 2400 8700 2100 8700 2100 8400 +4 0 0 10 0 0 16 0.0000 4 180 120 2200 8640 5\001 +-6 +6 2400 8400 2700 8700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 8400 2700 8400 2700 8700 2400 8700 2400 8400 +4 0 0 10 0 0 16 0.0000 4 165 120 2500 8640 8\001 +-6 +6 2700 8400 3000 8700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 8400 3000 8400 3000 8700 2700 8700 2700 8400 +4 0 0 10 0 0 16 0.0000 4 180 120 2800 8640 9\001 +-6 +6 3300 8400 3600 8700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 8400 3600 8400 3600 8700 3300 8700 3300 8400 +4 0 0 15 0 0 16 0.0000 4 195 240 3325 8640 13\001 +-6 +6 4800 8400 5100 8700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4800 8400 5100 8400 5100 8700 4800 8700 4800 8400 +4 0 0 15 0 0 16 0.0000 4 180 240 4825 8640 16\001 +-6 +6 5100 8400 5400 8700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5100 8400 5400 8400 5400 8700 5100 8700 5100 8400 +4 0 0 15 0 0 16 0.0000 4 195 240 5125 8640 19\001 +-6 +6 5400 8400 5700 8700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5400 8400 5700 8400 5700 8700 5400 8700 5400 8400 +4 0 0 15 0 0 16 0.0000 4 165 240 5425 8640 22\001 +-6 +6 5700 8400 6000 8700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5700 8400 6000 8400 6000 8700 5700 8700 5700 8400 +4 0 0 15 0 0 16 0.0000 4 180 240 5725 8640 25\001 +-6 +6 5700 4800 6000 5100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5700 4800 6000 4800 6000 5100 5700 5100 5700 4800 +4 0 0 15 0 0 16 0.0000 4 165 240 5725 5040 22\001 +-6 +6 6600 1936 6914 2250 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6757 2093 150 150 6757 2093 6907 2093 +4 0 0 10 0 0 16 0.0000 4 165 120 6707 2183 7\001 +-6 +6 5850 2836 6164 3150 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6007 2993 150 150 6007 2993 6157 2993 +4 0 0 8 0 0 16 0.0000 4 195 240 5877 3083 13\001 +-6 +6 7350 2836 7664 3150 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7507 2993 150 150 7507 2993 7657 2993 +4 0 0 8 0 0 16 0.0000 4 180 240 7377 3083 14\001 +-6 +6 6600 600 6900 900 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6750 750 150 150 6750 750 6900 750 +4 0 0 10 0 0 16 0.0000 4 180 120 6700 840 1\001 +-6 +6 5850 1950 6150 2250 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6000 2100 150 150 6000 2100 6150 2100 +4 0 0 10 0 0 16 0.0000 4 165 120 5950 2190 2\001 +-6 +6 7350 1950 7650 2250 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7500 2100 150 150 7500 2100 7650 2100 +4 0 0 10 0 0 16 0.0000 4 180 120 7450 2190 3\001 +-6 +6 5100 3300 5400 3600 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 5250 3450 150 150 5250 3450 5400 3450 +4 0 0 10 0 0 16 0.0000 4 165 120 5200 3540 4\001 +-6 +6 6600 3300 6900 3600 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6750 3450 150 150 6750 3450 6900 3450 +4 0 0 10 0 0 16 0.0000 4 180 120 6700 3540 5\001 +-6 +6 8175 3300 8475 3600 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8325 3450 150 150 8325 3450 8475 3450 +4 0 0 10 0 0 16 0.0000 4 180 120 8275 3540 6\001 +-6 +6 6375 1500 6675 1800 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6525 1650 150 150 6525 1650 6675 1650 +4 0 0 8 0 0 16 0.0000 4 180 240 6395 1740 11\001 +-6 +6 6375 2386 6689 2700 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6532 2543 150 150 6532 2543 6682 2543 +4 0 0 8 0 0 16 0.0000 4 180 240 6402 2633 12\001 +-6 +6 6825 2400 7125 2700 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6975 2550 150 150 6975 2550 7125 2550 +4 0 0 8 0 0 16 0.0000 4 180 240 6845 2640 10\001 +-6 +6 6825 1500 7125 1800 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6975 1650 150 150 6975 1650 7125 1650 +4 0 0 8 0 0 16 0.0000 4 180 120 6925 1740 9\001 +-6 +6 1800 2400 2100 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 2400 2100 2400 2100 2700 1800 2700 1800 2400 +4 0 0 10 0 0 16 0.0000 4 165 120 1900 2640 7\001 +-6 +6 1800 1800 2100 2100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 1800 2100 1800 2100 2100 1800 2100 1800 1800 +4 0 0 10 0 0 16 0.0000 4 180 120 1900 2040 6\001 +-6 +6 1800 1200 2100 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 1200 2100 1200 2100 1500 1800 1500 1800 1200 +4 0 0 10 0 0 16 0.0000 4 180 120 1900 1440 1\001 +-6 +6 1800 600 2100 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 600 2100 600 2100 900 1800 900 1800 600 +4 0 0 10 0 0 16 0.0000 4 180 120 1900 840 9\001 +-6 +6 2700 6600 3000 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 6600 3000 6600 3000 6900 2700 6900 2700 6600 +4 0 0 15 0 0 16 0.0000 4 195 240 2725 6840 13\001 +-6 +6 3600 6600 3900 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 6600 3900 6600 3900 6900 3600 6900 3600 6600 +4 0 0 15 0 0 16 0.0000 4 180 240 3625 6840 14\001 +-6 +6 5100 6600 5400 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5100 6600 5400 6600 5400 6900 5100 6900 5100 6600 +4 0 0 15 0 0 16 0.0000 4 180 240 5125 6840 14\001 +-6 +6 5400 6600 5700 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5400 6600 5700 6600 5700 6900 5400 6900 5400 6600 +4 0 0 10 0 0 16 0.0000 4 180 120 5500 6840 1\001 +-6 +6 5700 6600 6000 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5700 6600 6000 6600 6000 6900 5700 6900 5700 6600 +4 0 0 10 0 0 16 0.0000 4 165 120 5800 6840 2\001 +-6 +6 6000 6600 6300 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6000 6600 6300 6600 6300 6900 6000 6900 6000 6600 +4 0 0 10 0 0 16 0.0000 4 165 120 6100 6840 7\001 +-6 +6 6300 6600 6600 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6300 6600 6600 6600 6600 6900 6300 6900 6300 6600 +4 0 0 10 0 0 16 0.0000 4 180 120 6400 6840 5\001 +-6 +6 6600 6600 6900 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6600 6600 6900 6600 6900 6900 6600 6900 6600 6600 +4 0 0 10 0 0 16 0.0000 4 165 120 6700 6840 2\001 +-6 +6 7200 6600 7500 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7200 6600 7500 6600 7500 6900 7200 6900 7200 6600 +4 0 0 10 0 0 16 0.0000 4 165 120 7300 6840 4\001 +-6 +6 7500 6600 7800 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7500 6600 7800 6600 7800 6900 7500 6900 7500 6600 +4 0 0 10 0 0 16 0.0000 4 180 120 7600 6840 5\001 +-6 +6 7800 6600 8100 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 7800 6600 8100 6600 8100 6900 7800 6900 7800 6600 +4 0 0 10 0 0 16 0.0000 4 165 120 7900 6840 2\001 +-6 +6 8100 6600 8400 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8100 6600 8400 6600 8400 6900 8100 6900 8100 6600 +4 0 0 10 0 0 16 0.0000 4 180 120 8200 6840 3\001 +-6 +6 8400 6600 8700 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8400 6600 8700 6600 8700 6900 8400 6900 8400 6600 +4 0 0 10 0 0 16 0.0000 4 180 120 8500 6840 6\001 +-6 +6 8700 6600 9000 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 8700 6600 9000 6600 9000 6900 8700 6900 8700 6600 +4 0 0 10 0 0 16 0.0000 4 180 120 8800 6840 5\001 +-6 +6 9000 6600 9300 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9000 6600 9300 6600 9300 6900 9000 6900 9000 6600 +4 0 0 15 0 0 16 0.0000 4 180 240 9025 6840 11\001 +-6 +6 9300 6600 9600 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9300 6600 9600 6600 9600 6900 9300 6900 9300 6600 +4 0 0 10 0 0 16 0.0000 4 180 120 9400 6840 9\001 +-6 +6 1800 4800 2100 5100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 4800 2100 4800 2100 5100 1800 5100 1800 4800 +4 0 0 15 0 0 16 0.0000 4 180 240 1825 5040 25\001 +-6 +6 1800 8400 2100 8700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 8400 2100 8400 2100 8700 1800 8700 1800 8400 +4 0 0 15 0 0 16 0.0000 4 165 240 1825 8640 27\001 +-6 +6 3900 6600 4200 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3900 6600 4200 6600 4200 6900 3900 6900 3900 6600 +4 0 0 15 0 0 16 0.0000 4 195 240 3925 6840 13\001 +-6 +6 9900 6600 10200 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9900 6600 10200 6600 10200 6900 9900 6900 9900 6600 +4 0 0 15 0 0 16 0.0000 4 180 240 9925 6840 14\001 +-6 +6 9600 6600 9900 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 9600 6600 9900 6600 9900 6900 9600 6900 9600 6600 +4 0 0 15 0 0 16 0.0000 4 195 240 9625 6840 13\001 +-6 +6 3900 4800 4200 5100 +2 2 0 1 0 -1 15 0 3 0.000 0 0 7 0 0 5 + 3900 4800 4200 4800 4200 5100 3900 5100 3900 4800 +4 0 0 10 0 0 16 0.0000 4 165 120 4000 5040 0\001 +-6 +6 3900 8400 4200 8700 +2 2 0 1 0 -1 15 0 3 0.000 0 0 7 0 0 5 + 3900 8400 4200 8400 4200 8700 3900 8700 3900 8400 +4 0 0 10 0 0 16 0.0000 4 165 120 4000 8640 0\001 +-6 +6 1800 3000 2100 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 3000 2100 3000 2100 3300 1800 3300 1800 3000 +4 0 0 15 0 0 16 0.0000 4 195 240 1825 3240 36\001 +-6 +6 3000 4800 3300 5100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 4800 3300 4800 3300 5100 3000 5100 3000 4800 +4 0 0 15 0 0 16 0.0000 4 165 240 3025 5040 27\001 +-6 +6 3000 8400 3300 8700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 8400 3300 8400 3300 8700 3000 8700 3000 8400 +4 0 0 15 0 0 16 0.0000 4 195 240 3025 8640 31\001 +-6 +6 3600 4800 3900 5100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 4800 3900 4800 3900 5100 3600 5100 3600 4800 +4 0 0 15 0 0 16 0.0000 4 195 240 3625 5040 31\001 +-6 +6 3600 8400 3900 8700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 8400 3900 8400 3900 8700 3600 8700 3600 8400 +4 0 0 15 0 0 16 0.0000 4 195 240 3625 8640 35\001 +-6 +6 10200 6600 10500 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 10200 6600 10500 6600 10500 6900 10200 6900 10200 6600 +4 0 0 15 0 0 16 0.0000 4 180 240 10225 6840 12\001 +-6 +6 10800 6600 11100 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 10800 6600 11100 6600 11100 6900 10800 6900 10800 6600 +4 0 0 15 0 0 16 0.0000 4 180 240 10825 6840 11\001 +-6 +6 11100 6600 11400 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 11100 6600 11400 6600 11400 6900 11100 6900 11100 6600 +4 0 0 10 0 0 16 0.0000 4 180 120 11200 6840 9\001 +-6 +6 11400 6600 11700 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 11400 6600 11700 6600 11700 6900 11400 6900 11400 6600 +4 0 0 15 0 0 16 0.0000 4 180 240 11425 6840 12\001 +-6 +6 11700 6600 12000 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 11700 6600 12000 6600 12000 6900 11700 6900 11700 6600 +4 0 0 15 0 0 16 0.0000 4 180 240 11725 6840 10\001 +-6 +6 4200 4800 4500 5100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4200 4800 4500 4800 4500 5100 4200 5100 4200 4800 +4 0 0 10 0 0 16 0.0000 4 180 120 4300 5040 9\001 +-6 +6 4200 6600 4500 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4200 6600 4500 6600 4500 6900 4200 6900 4200 6600 +4 0 0 10 0 0 16 0.0000 4 180 120 4300 6840 1\001 +-6 +6 4800 6600 5100 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4800 6600 5100 6600 5100 6900 4800 6900 4800 6600 +4 0 0 10 0 0 16 0.0000 4 180 120 4900 6840 3\001 +-6 +6 4500 6600 4800 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4500 6600 4800 6600 4800 6900 4500 6900 4500 6600 +4 0 0 10 0 0 16 0.0000 4 165 120 4600 6840 7\001 +-6 +6 4200 8400 4500 8700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4200 8400 4500 8400 4500 8700 4200 8700 4200 8400 +4 0 0 15 0 0 16 0.0000 4 180 240 4225 8640 12\001 +-6 +6 4500 4800 4800 5100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4500 4800 4800 4800 4800 5100 4500 5100 4500 4800 +4 0 0 15 0 0 16 0.0000 4 195 240 4525 5040 35\001 +-6 +6 4500 8400 4800 8700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4500 8400 4800 8400 4800 8700 4500 8700 4500 8400 +4 0 0 15 0 0 16 0.0000 4 180 240 4525 8640 38\001 +-6 +6 12000 6600 12300 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 12000 6600 12300 6600 12300 6900 12000 6900 12000 6600 +4 0 0 10 0 0 16 0.0000 4 165 120 12100 6840 7\001 +-6 +6 12300 6600 12600 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 12300 6600 12600 6600 12600 6900 12300 6900 12300 6600 +4 0 0 10 0 0 16 0.0000 4 180 120 12400 6840 3\001 +-6 +6 12600 6600 12900 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 12600 6600 12900 6600 12900 6900 12600 6900 12600 6600 +4 0 0 10 0 0 16 0.0000 4 180 120 12700 6840 5\001 +-6 +6 6900 6600 7200 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 6900 6600 7200 6600 7200 6900 6900 6900 6900 6600 +4 0 0 10 0 0 16 0.0000 4 165 120 7000 6840 7\001 +-6 +6 12900 6600 13200 6900 +2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 + 12900 6600 13200 6600 13200 6900 12900 6900 12900 6600 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 13200 6600 12900 6900 +2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 + 12900 6600 13200 6900 +-6 +6 2100 6600 2400 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 6600 2400 6600 2400 6900 2100 6900 2100 6600 +4 0 0 15 0 0 16 0.0000 4 180 240 2125 6840 11\001 +-6 +6 2400 6600 2700 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 6600 2700 6600 2700 6900 2400 6900 2400 6600 +4 0 0 15 0 0 16 0.0000 4 180 240 2425 6840 12\001 +-6 +6 3000 6600 3300 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 6600 3300 6600 3300 6900 3000 6900 3000 6600 +4 0 0 10 0 0 16 0.0000 4 180 120 3100 6840 9\001 +-6 +6 3300 6600 3600 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 6600 3600 6600 3600 6900 3300 6900 3300 6600 +4 0 0 15 0 0 16 0.0000 4 180 240 3325 6840 10\001 +-6 +6 10500 6600 10800 6900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 10500 6600 10800 6600 10800 6900 10500 6900 10500 6600 +4 0 0 15 0 0 16 0.0000 4 180 240 10525 6840 10\001 +-6 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2250 8400 2250 7200 3150 7200 3150 6900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3450 5100 3450 6150 5250 6150 5250 6600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2550 5100 2550 6300 3150 6300 3150 6600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 1950 8400 1950 8100 9750 8100 9750 6900 +2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 2 + 1 1 1.00 60.00 120.00 + 2250 5100 2250 6600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3150 5100 3150 5625 9750 5625 9750 6600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 5550 5100 5550 5925 7350 5925 7350 6600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 5850 5100 5850 5850 8250 5850 8250 6600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3450 8400 3450 7425 5550 7425 5550 6900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3150 8400 3150 8025 10950 8025 10950 6900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2850 8400 2850 7350 4350 7350 4350 6900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2550 8400 2550 7275 4050 7275 4050 6900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 5250 8400 5250 7725 7350 7725 7350 6900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 5550 8400 5550 7800 8250 7800 8250 6900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 5850 8400 5850 7875 9150 7875 9150 6900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 4950 8400 4950 7500 6450 7500 6450 6900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 5250 5100 5250 6000 6450 6000 6450 6600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 4950 5100 4950 6075 5550 6075 5550 6600 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 6000 2100 6000 3000 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 3 + 7500 2100 7500 3000 6750 3450 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 7500 3000 8325 3450 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 8 + 5250 3450 6000 3000 6750 3450 6525 2550 6000 2100 6525 1650 + 6750 2100 6525 2550 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 6 + 6525 1650 6750 750 6975 1650 6750 2100 6975 2550 6750 3450 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6975 2550 7500 2100 6975 1650 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 1950 5100 1950 5550 9150 5550 9150 6600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2850 5100 2850 6225 4050 6225 4050 6600 +2 2 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5 + 1800 6600 2100 6600 2100 6900 1800 6900 1800 6600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3750 8400 3750 7950 12150 7950 12150 6900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 3750 5100 3750 5700 10950 5700 10950 6600 +2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 2 + 1 1 1.00 60.00 120.00 + 4350 5100 4350 6600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 4350 8400 4350 7575 5250 7575 5250 6900 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 4650 5100 4650 5775 12150 5775 12150 6600 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 4650 8400 4650 7650 13050 7650 13050 6900 +3 3 0 0 7 -1 60 0 4 0.000 0 0 0 9 + 6750 3450 6525 3150 6150 2550 6000 2100 5850 2550 5550 3150 + 5250 3450 5775 3375 6300 3375 + -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 + -1.000 +3 3 0 0 7 -1 60 0 4 0.000 0 0 0 9 + 8250 3450 8025 3150 7650 2550 7500 2100 7350 2550 7050 3150 + 6750 3450 7275 3375 7800 3375 + -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 + -1.000 +3 3 0 0 7 -1 60 0 4 0.000 0 0 0 9 + 6750 2100 6675 2550 6675 2775 6750 3450 6600 3000 6300 2400 + 6000 2100 6300 2175 6450 2175 + -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 + -1.000 +3 3 0 0 7 -1 60 0 4 0.000 0 0 0 9 + 6750 2100 6825 2550 6825 2775 6750 3450 6900 3000 7200 2400 + 7500 2100 7200 2175 7050 2175 + -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 + -1.000 +3 3 0 0 7 -1 60 0 4 0.000 0 0 0 9 + 6750 2100 6825 1650 6825 1425 6750 750 6900 1200 7200 1800 + 7500 2100 7200 2025 7050 2025 + -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 + -1.000 +3 3 0 0 7 -1 60 0 4 0.000 0 0 0 9 + 6750 2100 6675 1650 6675 1425 6750 750 6600 1200 6300 1800 + 6000 2100 6300 2025 6450 2025 + -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 + -1.000 +4 0 0 20 0 12 16 0.0000 4 210 1050 600 3225 edgenbr\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 3825 vlbltab\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 4425 velotab\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 2625 vnodnbr\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 825 velmbas\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 1425 vnodbas\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 2025 velmnbr\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 5025 verttab\001 +4 0 0 20 0 12 16 0.0000 4 210 1050 600 6825 edgetab\001 +4 0 0 20 0 12 16 0.0000 4 165 1050 600 8625 vendtab\001 diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_msf.eps scotch-6.0.6/doc/src/scotch/s_f_msf.eps --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_msf.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_msf.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,354 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: stdin +%%Creator: fig2dev Version 3.2 Patchlevel 3d +%%CreationDate: Sat Nov 9 18:59:42 2002 +%%For: pelegrin@brol (Francois PELLEGRINI) +%%BoundingBox: 0 0 91 235 +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 235 moveto 0 0 lineto 91 0 lineto 91 235 lineto closepath clip newpath +-125.5 288.4 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit + 0.06000 0.06000 sc +% +% Fig objects follow +% +% Polyline +2 slj +n 2400 2025 m 2386 2061 l 2371 2092 l 2357 2118 l 2344 2138 l 2332 2153 l + 2321 2165 l 2310 2174 l 2300 2181 l 2290 2188 l 2281 2195 l + 2272 2203 l 2263 2212 l 2256 2222 l 2250 2233 l 2248 2243 l + 2250 2250 l 2257 2252 l 2267 2250 l 2278 2244 l 2288 2237 l + 2297 2228 l 2305 2219 l 2312 2210 l 2319 2200 l 2326 2190 l + 2335 2179 l 2347 2168 l 2362 2156 l 2382 2143 l 2408 2129 l + 2439 2114 l 2475 2100 l 2509 2088 l 2541 2078 l 2569 2069 l + 2592 2062 l 2610 2056 l 2624 2052 l 2635 2049 l 2643 2046 l + 2650 2044 l 2657 2042 l 2666 2040 l 2677 2038 l 2693 2035 l + 2713 2033 l 2739 2030 l 2771 2028 l 2809 2026 l 2850 2025 l + 2891 2026 l 2929 2028 l 2961 2030 l 2987 2033 l 3007 2035 l + 3023 2038 l 3034 2040 l 3043 2042 l 3050 2044 l 3057 2046 l + 3065 2049 l 3076 2052 l 3090 2056 l 3108 2062 l 3131 2069 l + 3159 2078 l 3191 2088 l 3225 2100 l 3261 2114 l 3292 2129 l + 3318 2143 l 3338 2156 l 3353 2168 l 3365 2179 l 3374 2190 l + 3381 2200 l 3388 2210 l 3395 2219 l 3403 2228 l 3412 2237 l + 3422 2244 l 3433 2250 l 3443 2252 l 3450 2250 l 3452 2243 l + 3450 2233 l 3444 2222 l 3437 2212 l 3428 2203 l 3419 2195 l + 3410 2188 l 3400 2181 l 3390 2174 l 3379 2165 l 3368 2153 l + 3356 2138 l 3343 2118 l 3329 2092 l 3314 2061 l 3300 2025 l + 3288 1991 l 3278 1959 l 3269 1931 l 3262 1908 l 3256 1890 l + 3252 1876 l 3249 1865 l 3246 1857 l 3244 1850 l 3242 1843 l + 3240 1834 l 3238 1823 l 3235 1807 l 3233 1787 l 3230 1761 l + 3228 1729 l 3226 1691 l 3225 1650 l 3226 1609 l 3228 1571 l + 3230 1539 l 3233 1513 l 3235 1493 l 3238 1477 l 3240 1466 l + 3242 1457 l 3244 1450 l 3246 1443 l 3249 1435 l 3252 1424 l + 3256 1410 l 3262 1392 l 3269 1369 l 3278 1341 l 3288 1309 l + 3300 1275 l 3314 1239 l 3329 1208 l 3343 1182 l 3356 1162 l + 3368 1147 l 3379 1135 l 3390 1126 l 3400 1119 l 3410 1112 l + 3419 1105 l 3428 1097 l 3437 1088 l 3444 1078 l 3450 1067 l + 3452 1057 l 3450 1050 l 3443 1048 l 3433 1050 l 3422 1056 l + 3412 1063 l 3403 1072 l 3395 1081 l 3388 1090 l 3381 1100 l + 3374 1110 l 3365 1121 l 3353 1132 l 3338 1144 l 3318 1157 l + 3292 1171 l 3261 1186 l 3225 1200 l 3191 1212 l 3159 1222 l + 3131 1231 l 3108 1238 l 3090 1244 l 3076 1248 l 3065 1251 l + 3057 1254 l 3050 1256 l 3043 1258 l 3034 1260 l 3023 1262 l + 3007 1265 l 2987 1267 l 2961 1270 l 2929 1272 l 2891 1274 l + 2850 1275 l 2809 1274 l 2771 1272 l 2739 1270 l 2713 1267 l + 2693 1265 l 2677 1262 l 2666 1260 l 2657 1258 l 2650 1256 l + 2643 1254 l 2635 1251 l 2624 1248 l 2610 1244 l 2592 1238 l + 2569 1231 l 2541 1222 l 2509 1212 l 2475 1200 l 2439 1186 l + 2408 1171 l 2382 1157 l 2362 1144 l 2347 1132 l 2335 1121 l + 2326 1110 l 2319 1100 l 2312 1090 l 2305 1081 l 2297 1072 l + 2288 1063 l 2278 1056 l 2267 1050 l 2257 1048 l 2250 1050 l + 2248 1057 l 2250 1067 l 2256 1078 l 2263 1088 l 2272 1097 l + 2281 1105 l 2290 1112 l 2300 1119 l 2310 1126 l 2321 1135 l + 2332 1147 l 2344 1162 l 2357 1182 l 2371 1208 l 2386 1239 l + 2400 1275 l 2412 1309 l 2422 1341 l 2431 1369 l 2438 1392 l + 2444 1410 l 2448 1424 l 2451 1435 l 2454 1443 l 2456 1450 l + 2458 1457 l 2460 1466 l 2462 1477 l 2465 1493 l 2467 1513 l + 2470 1539 l 2472 1571 l 2474 1609 l 2475 1650 l 2474 1691 l + 2472 1729 l 2470 1761 l 2467 1787 l 2465 1807 l 2462 1823 l + 2460 1834 l 2458 1843 l 2456 1850 l 2454 1857 l 2451 1865 l + 2448 1876 l 2444 1890 l 2438 1908 l 2431 1931 l 2422 1959 l + 2412 1991 l + cp gs 0.80 setgray ef gr +% Polyline +n 2400 3225 m 2386 3261 l 2371 3292 l 2357 3318 l 2344 3338 l 2332 3353 l + 2321 3365 l 2310 3374 l 2300 3381 l 2290 3388 l 2281 3395 l + 2272 3403 l 2263 3412 l 2256 3422 l 2250 3433 l 2248 3443 l + 2250 3450 l 2257 3452 l 2267 3450 l 2278 3444 l 2288 3437 l + 2297 3428 l 2305 3419 l 2312 3410 l 2319 3400 l 2326 3390 l + 2335 3379 l 2347 3368 l 2362 3356 l 2382 3343 l 2408 3329 l + 2439 3314 l 2475 3300 l 2509 3288 l 2541 3278 l 2569 3269 l + 2592 3262 l 2610 3256 l 2624 3252 l 2635 3249 l 2643 3246 l + 2650 3244 l 2657 3242 l 2666 3240 l 2677 3238 l 2693 3235 l + 2713 3233 l 2739 3230 l 2771 3228 l 2809 3226 l 2850 3225 l + 2891 3226 l 2929 3228 l 2961 3230 l 2987 3233 l 3007 3235 l + 3023 3238 l 3034 3240 l 3043 3242 l 3050 3244 l 3057 3246 l + 3065 3249 l 3076 3252 l 3090 3256 l 3108 3262 l 3131 3269 l + 3159 3278 l 3191 3288 l 3225 3300 l 3261 3314 l 3292 3329 l + 3318 3343 l 3338 3356 l 3353 3368 l 3365 3379 l 3374 3390 l + 3381 3400 l 3388 3410 l 3395 3419 l 3403 3428 l 3412 3437 l + 3422 3444 l 3433 3450 l 3443 3452 l 3450 3450 l 3452 3443 l + 3450 3433 l 3444 3422 l 3437 3412 l 3428 3403 l 3419 3395 l + 3410 3388 l 3400 3381 l 3390 3374 l 3379 3365 l 3368 3353 l + 3356 3338 l 3343 3318 l 3329 3292 l 3314 3261 l 3300 3225 l + 3288 3191 l 3278 3159 l 3269 3131 l 3262 3108 l 3256 3090 l + 3252 3076 l 3249 3065 l 3246 3057 l 3244 3050 l 3242 3043 l + 3240 3034 l 3238 3023 l 3235 3007 l 3233 2987 l 3230 2961 l + 3228 2929 l 3226 2891 l 3225 2850 l 3226 2809 l 3228 2771 l + 3230 2739 l 3233 2713 l 3235 2693 l 3238 2677 l 3240 2666 l + 3242 2657 l 3244 2650 l 3246 2643 l 3249 2635 l 3252 2624 l + 3256 2610 l 3262 2592 l 3269 2569 l 3278 2541 l 3288 2509 l + 3300 2475 l 3314 2439 l 3329 2408 l 3343 2382 l 3356 2362 l + 3368 2347 l 3379 2335 l 3390 2326 l 3400 2319 l 3410 2312 l + 3419 2305 l 3428 2297 l 3437 2288 l 3444 2278 l 3450 2267 l + 3452 2257 l 3450 2250 l 3443 2248 l 3433 2250 l 3422 2256 l + 3412 2263 l 3403 2272 l 3395 2281 l 3388 2290 l 3381 2300 l + 3374 2310 l 3365 2321 l 3353 2332 l 3338 2344 l 3318 2357 l + 3292 2371 l 3261 2386 l 3225 2400 l 3191 2412 l 3159 2422 l + 3131 2431 l 3108 2438 l 3090 2444 l 3076 2448 l 3065 2451 l + 3057 2454 l 3050 2456 l 3043 2458 l 3034 2460 l 3023 2462 l + 3007 2465 l 2987 2467 l 2961 2470 l 2929 2472 l 2891 2474 l + 2850 2475 l 2809 2474 l 2771 2472 l 2739 2470 l 2713 2467 l + 2693 2465 l 2677 2462 l 2666 2460 l 2657 2458 l 2650 2456 l + 2643 2454 l 2635 2451 l 2624 2448 l 2610 2444 l 2592 2438 l + 2569 2431 l 2541 2422 l 2509 2412 l 2475 2400 l 2439 2386 l + 2408 2371 l 2382 2357 l 2362 2344 l 2347 2332 l 2335 2321 l + 2326 2310 l 2319 2300 l 2312 2290 l 2305 2281 l 2297 2272 l + 2288 2263 l 2278 2256 l 2267 2250 l 2257 2248 l 2250 2250 l + 2248 2257 l 2250 2267 l 2256 2278 l 2263 2288 l 2272 2297 l + 2281 2305 l 2290 2312 l 2300 2319 l 2310 2326 l 2321 2335 l + 2332 2347 l 2344 2362 l 2357 2382 l 2371 2408 l 2386 2439 l + 2400 2475 l 2412 2509 l 2422 2541 l 2431 2569 l 2438 2592 l + 2444 2610 l 2448 2624 l 2451 2635 l 2454 2643 l 2456 2650 l + 2458 2657 l 2460 2666 l 2462 2677 l 2465 2693 l 2467 2713 l + 2470 2739 l 2472 2771 l 2474 2809 l 2475 2850 l 2474 2891 l + 2472 2929 l 2470 2961 l 2467 2987 l 2465 3007 l 2462 3023 l + 2460 3034 l 2458 3043 l 2456 3050 l 2454 3057 l 2451 3065 l + 2448 3076 l 2444 3090 l 2438 3108 l 2431 3131 l 2422 3159 l + 2412 3191 l + cp gs 0.80 setgray ef gr +% Polyline +n 2400 4425 m 2386 4461 l 2371 4492 l 2357 4518 l 2344 4538 l 2332 4553 l + 2321 4565 l 2310 4574 l 2300 4581 l 2290 4588 l 2281 4595 l + 2272 4603 l 2263 4612 l 2256 4622 l 2250 4633 l 2248 4643 l + 2250 4650 l 2257 4652 l 2267 4650 l 2278 4644 l 2288 4637 l + 2297 4628 l 2305 4619 l 2312 4610 l 2319 4600 l 2326 4590 l + 2335 4579 l 2347 4568 l 2362 4556 l 2382 4543 l 2408 4529 l + 2439 4514 l 2475 4500 l 2509 4488 l 2541 4478 l 2569 4469 l + 2592 4462 l 2610 4456 l 2624 4452 l 2635 4449 l 2643 4446 l + 2650 4444 l 2657 4442 l 2666 4440 l 2677 4438 l 2693 4435 l + 2713 4433 l 2739 4430 l 2771 4428 l 2809 4426 l 2850 4425 l + 2891 4426 l 2929 4428 l 2961 4430 l 2987 4433 l 3007 4435 l + 3023 4438 l 3034 4440 l 3043 4442 l 3050 4444 l 3057 4446 l + 3065 4449 l 3076 4452 l 3090 4456 l 3108 4462 l 3131 4469 l + 3159 4478 l 3191 4488 l 3225 4500 l 3261 4514 l 3292 4529 l + 3318 4543 l 3338 4556 l 3353 4568 l 3365 4579 l 3374 4590 l + 3381 4600 l 3388 4610 l 3395 4619 l 3403 4628 l 3412 4637 l + 3422 4644 l 3433 4650 l 3443 4652 l 3450 4650 l 3452 4643 l + 3450 4633 l 3444 4622 l 3437 4612 l 3428 4603 l 3419 4595 l + 3410 4588 l 3400 4581 l 3390 4574 l 3379 4565 l 3368 4553 l + 3356 4538 l 3343 4518 l 3329 4492 l 3314 4461 l 3300 4425 l + 3288 4391 l 3278 4359 l 3269 4331 l 3262 4308 l 3256 4290 l + 3252 4276 l 3249 4265 l 3246 4257 l 3244 4250 l 3242 4243 l + 3240 4234 l 3238 4223 l 3235 4207 l 3233 4187 l 3230 4161 l + 3228 4129 l 3226 4091 l 3225 4050 l 3226 4009 l 3228 3971 l + 3230 3939 l 3233 3913 l 3235 3893 l 3238 3877 l 3240 3866 l + 3242 3857 l 3244 3850 l 3246 3843 l 3249 3835 l 3252 3824 l + 3256 3810 l 3262 3792 l 3269 3769 l 3278 3741 l 3288 3709 l + 3300 3675 l 3314 3639 l 3329 3608 l 3343 3582 l 3356 3562 l + 3368 3547 l 3379 3535 l 3390 3526 l 3400 3519 l 3410 3512 l + 3419 3505 l 3428 3497 l 3437 3488 l 3444 3478 l 3450 3467 l + 3452 3457 l 3450 3450 l 3443 3448 l 3433 3450 l 3422 3456 l + 3412 3463 l 3403 3472 l 3395 3481 l 3388 3490 l 3381 3500 l + 3374 3510 l 3365 3521 l 3353 3532 l 3338 3544 l 3318 3557 l + 3292 3571 l 3261 3586 l 3225 3600 l 3191 3612 l 3159 3622 l + 3131 3631 l 3108 3638 l 3090 3644 l 3076 3648 l 3065 3651 l + 3057 3654 l 3050 3656 l 3043 3658 l 3034 3660 l 3023 3662 l + 3007 3665 l 2987 3667 l 2961 3670 l 2929 3672 l 2891 3674 l + 2850 3675 l 2809 3674 l 2771 3672 l 2739 3670 l 2713 3667 l + 2693 3665 l 2677 3662 l 2666 3660 l 2657 3658 l 2650 3656 l + 2643 3654 l 2635 3651 l 2624 3648 l 2610 3644 l 2592 3638 l + 2569 3631 l 2541 3622 l 2509 3612 l 2475 3600 l 2439 3586 l + 2408 3571 l 2382 3557 l 2362 3544 l 2347 3532 l 2335 3521 l + 2326 3510 l 2319 3500 l 2312 3490 l 2305 3481 l 2297 3472 l + 2288 3463 l 2278 3456 l 2267 3450 l 2257 3448 l 2250 3450 l + 2248 3457 l 2250 3467 l 2256 3478 l 2263 3488 l 2272 3497 l + 2281 3505 l 2290 3512 l 2300 3519 l 2310 3526 l 2321 3535 l + 2332 3547 l 2344 3562 l 2357 3582 l 2371 3608 l 2386 3639 l + 2400 3675 l 2412 3709 l 2422 3741 l 2431 3769 l 2438 3792 l + 2444 3810 l 2448 3824 l 2451 3835 l 2454 3843 l 2456 3850 l + 2458 3857 l 2460 3866 l 2462 3877 l 2465 3893 l 2467 3913 l + 2470 3939 l 2472 3971 l 2474 4009 l 2475 4050 l 2474 4091 l + 2472 4129 l 2470 4161 l 2467 4187 l 2465 4207 l 2462 4223 l + 2460 4234 l 2458 4243 l 2456 4250 l 2454 4257 l 2451 4265 l + 2448 4276 l 2444 4290 l 2438 4308 l 2431 4331 l 2422 4359 l + 2412 4391 l + cp gs 0.80 setgray ef gr +% Polyline +0 slj +7.500 slw +n 2250 1050 m 2850 1650 l 2250 2250 l 2850 2850 l 2250 3450 l 2850 4050 l + + 2250 4650 l gs col0 s gr +% Polyline +n 3450 1050 m 2850 1650 l 3450 2250 l 2850 2850 l 3450 3450 l 2850 4050 l + + 3450 4650 l gs col0 s gr +% Ellipse +n 2250 1050 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 3450 1050 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 2850 1650 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 2250 2250 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 3450 2250 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 2850 2850 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 2250 3450 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 3450 3450 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 2850 4050 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 2250 4650 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 3450 4650 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +/Times-Roman ff 240.00 scf sf +2200 1140 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 1740 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +2200 2340 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 2940 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +3400 3540 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 4140 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +3320 1140 m +gs 1 -1 sc (10) col0 sh gr +/Times-Roman ff 240.00 scf sf +3320 2340 m +gs 1 -1 sc (11) col0 sh gr +/Times-Roman ff 240.00 scf sf +2200 3540 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +2200 4740 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 240.00 scf sf +3400 4740 m +gs 1 -1 sc (9) col0 sh gr +$F2psEnd +rs diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_msf.fig scotch-6.0.6/doc/src/scotch/s_f_msf.fig --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_msf.fig 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_msf.fig 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,77 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +0 +1200 2 +6 2100 900 2400 1200 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 2250 1050 150 150 2250 1050 2400 1050 +4 0 0 10 0 0 16 0.0000 4 195 135 2200 1140 4\001 +-6 +6 3300 900 3600 1200 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 3450 1050 150 150 3450 1050 3600 1050 +4 0 0 8 0 0 16 0.0000 4 195 270 3320 1140 10\001 +-6 +6 2700 1500 3000 1800 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 2850 1650 150 150 2850 1650 3000 1650 +4 0 0 10 0 0 16 0.0000 4 195 135 2800 1740 2\001 +-6 +6 2100 2100 2400 2400 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 2250 2250 150 150 2250 2250 2400 2250 +4 0 0 10 0 0 16 0.0000 4 195 135 2200 2340 5\001 +-6 +6 3300 2100 3600 2400 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 3450 2250 150 150 3450 2250 3600 2250 +4 0 0 8 0 0 16 0.0000 4 195 270 3320 2340 11\001 +-6 +6 2700 2700 3000 3000 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 2850 2850 150 150 2850 2850 3000 2850 +4 0 0 10 0 0 16 0.0000 4 195 135 2800 2940 1\001 +-6 +6 2100 3300 2400 3600 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 2250 3450 150 150 2250 3450 2400 3450 +4 0 0 8 0 0 16 0.0000 4 195 135 2200 3540 7\001 +-6 +6 3300 3300 3600 3600 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 3450 3450 150 150 3450 3450 3600 3450 +4 0 0 10 0 0 16 0.0000 4 195 135 3400 3540 6\001 +-6 +6 2700 3900 3000 4200 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 2850 4050 150 150 2850 4050 3000 4050 +4 0 0 10 0 0 16 0.0000 4 195 135 2800 4140 3\001 +-6 +6 2100 4500 2400 4800 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 2250 4650 150 150 2250 4650 2400 4650 +4 0 0 8 0 0 16 0.0000 4 195 135 2200 4740 8\001 +-6 +6 3300 4500 3600 4800 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 3450 4650 150 150 3450 4650 3600 4650 +4 0 0 8 0 0 16 0.0000 4 195 135 3400 4740 9\001 +-6 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 7 + 2250 1050 2850 1650 2250 2250 2850 2850 2250 3450 2850 4050 + 2250 4650 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 7 + 3450 1050 2850 1650 3450 2250 2850 2850 3450 3450 2850 4050 + 3450 4650 +3 3 0 0 7 -1 60 0 4 0.000 0 0 0 16 + 2475 1650 2400 2025 2250 2250 2475 2100 2850 2025 3225 2100 + 3450 2250 3300 2025 3225 1650 3300 1275 3450 1050 3225 1200 + 2850 1275 2475 1200 2250 1050 2400 1275 + -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 + -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 +3 3 0 0 7 -1 60 0 4 0.000 0 0 0 16 + 2475 2850 2400 3225 2250 3450 2475 3300 2850 3225 3225 3300 + 3450 3450 3300 3225 3225 2850 3300 2475 3450 2250 3225 2400 + 2850 2475 2475 2400 2250 2250 2400 2475 + -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 + -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 +3 3 0 0 7 -1 60 0 4 0.000 0 0 0 16 + 2475 4050 2400 4425 2250 4650 2475 4500 2850 4425 3225 4500 + 3450 4650 3300 4425 3225 4050 3300 3675 3450 3450 3225 3600 + 2850 3675 2475 3600 2250 3450 2400 3675 + -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 + -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_mult.eps scotch-6.0.6/doc/src/scotch/s_f_mult.eps --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_mult.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_mult.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,231 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: s_f_mult.fig +%%Creator: fig2dev Version 3.2 Patchlevel 5c +%%CreationDate: Mon Oct 18 00:32:04 2010 +%%For: pelegrin@brol () +%%BoundingBox: 0 0 574 278 +%Magnification: 1.0000 +%%EndComments +%%BeginProlog +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +/pageheader { +save +newpath 0 278 moveto 0 0 lineto 574 0 lineto 574 278 lineto closepath clip newpath +-35.0 347.5 translate +1 -1 scale +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +} bind def +/pagefooter { +$F2psEnd +restore +} bind def +%%EndProlog +pageheader +% +% Fig objects follow +% +% +% here starts figure with depth 0 +/Times-Roman ff 266.67 scf sf +600 4725 m +gs 1 -1 sc (Coarsening) col-1 sh gr +/Times-Roman ff 266.67 scf sf +825 4950 m +gs 1 -1 sc (phase) col-1 sh gr +/Times-Roman ff 266.67 scf sf +8550 4725 m +gs 1 -1 sc (Uncoarsening) col-1 sh gr +/Times-Roman ff 266.67 scf sf +8925 4950 m +gs 1 -1 sc (phase) col-1 sh gr +% Arc +7.500 slw +0 slc +gs clippath +4067 5291 m 4217 5278 l 4212 5218 l 4061 5231 l 4061 5231 l 4184 5251 l 4067 5291 l cp +eoclip +n 3839.2 2023.3 3246.9 -176.0571 83.6195 arcn +gs col-1 s gr + gr + +% arrowhead +0 slj +n 4067 5291 m 4184 5251 l 4061 5231 l col-1 s +% Arc +gs clippath +9636 1935 m 9629 1783 l 9569 1786 l 9576 1938 l 9576 1938 l 9601 1817 l 9636 1935 l cp +eoclip +n 6360.8 2023.3 3246.9 -3.9429 96.3805 arc +gs col-1 s gr + gr + +% arrowhead +n 9636 1935 m 9601 1817 l 9576 1938 l col-1 s +% Ellipse +n 2100 1800 1200 600 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 2550 3300 1020 510 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 8100 1800 1200 600 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 7650 3300 1020 510 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 5100 5100 555 270 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 6750 4500 765 390 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 3450 4500 765 390 0 360 DrawEllipse gs col-1 s gr + +% Polyline +30.000 slw +n 4935 5355 m 5085 5250 l 5040 5040 l 5220 4965 l + 5190 4830 l gs col-1 s gr +% Polyline +7.500 slw +n 6600 4875 m 6750 4725 l 6675 4350 l 6900 4200 l + 6840 4110 l gs col-1 s gr +% Polyline +30.000 slw +n 6690 4890 m 6675 4725 l 6675 4650 l 6750 4350 l 6825 4200 l + 6735 4110 l gs col-1 s gr +% Polyline +7.500 slw +n 7575 3810 m 7575 3600 l 7650 3150 l 7800 2925 l + 7710 2790 l gs col-1 s gr +% Polyline +n 8100 2400 m 8025 2100 l 8325 1575 l 8175 1350 l + 8250 1200 l gs col-1 s gr +% Polyline +30.000 slw +n 8025 2400 m 8250 1875 l 8175 1500 l 8250 1350 l + 8175 1200 l gs col-1 s gr +% Polyline +n 7695 3810 m 7500 3450 l 7800 3075 l 7725 2925 l + 7830 2790 l gs col-1 s gr +% Polyline +7.500 slw +gs clippath +7885 2032 m 8035 2056 l 8044 1997 l 7895 1973 l 7895 1973 l 8009 2022 l 7885 2032 l cp +eoclip +n 6600 1800 m + 8025 2025 l gs col-1 s gr gr + +% arrowhead +n 7885 2032 m 8009 2022 l 7895 1973 l col-1 s +% Polyline +gs clippath +7960 1584 m 8110 1606 l 8119 1547 l 7969 1525 l 7969 1525 l 8084 1573 l 7960 1584 l cp +eoclip +n 6600 1350 m + 8100 1575 l gs col-1 s gr gr + +% arrowhead +n 7960 1584 m 8084 1573 l 7969 1525 l col-1 s +/Times-Roman ff 266.67 scf sf +4350 5700 m +gs 1 -1 sc (Initial partitioning) col-1 sh gr +/Times-Roman ff 266.67 scf sf +4350 1875 m +gs 1 -1 sc (Prolonged partition) col-1 sh gr +/Times-Roman ff 266.67 scf sf +4500 1425 m +gs 1 -1 sc ( Refined partition) col-1 sh gr +% here ends figure; +pagefooter +showpage +%%Trailer +%EOF diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_mult.fig scotch-6.0.6/doc/src/scotch/s_f_mult.fig --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_mult.fig 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_mult.fig 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,51 @@ +#FIG 3.2 Produced by xfig version 3.2.5b +Landscape +Center +Inches +Letter +100.00 +Single +-2 +1200 2 +5 1 0 1 -1 -1 0 0 -1 0.000 0 1 1 0 3839.175 2023.260 600 1800 1500 4275 4200 5250 + 0 0 1.00 60.00 120.00 +5 1 0 1 -1 -1 0 0 -1 0.000 0 0 0 1 6360.825 2023.260 9600 1800 8700 4275 6000 5250 + 0 0 1.00 60.00 120.00 +6 600 4425 1650 4950 +4 0 -1 0 0 0 16 0.0000 4 255 1260 600 4725 Coarsening\001 +4 0 -1 0 0 0 16 0.0000 4 255 630 825 4950 phase\001 +-6 +6 8550 4425 9825 4950 +4 0 -1 0 0 0 16 0.0000 4 255 1545 8550 4725 Uncoarsening\001 +4 0 -1 0 0 0 16 0.0000 4 255 630 8925 4950 phase\001 +-6 +1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 2100 1800 1200 600 2100 1800 3300 1200 +1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 2550 3300 1020 510 2550 3300 3570 2790 +1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 8100 1800 1200 600 8100 1800 9300 1200 +1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 7650 3300 1020 510 7650 3300 8670 2790 +1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 5100 5100 555 270 5100 5100 5640 4830 +1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 6750 4500 765 390 6750 4500 7545 4110 +1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 3450 4500 765 390 3450 4500 4245 4110 +2 1 0 3 -1 -1 0 0 -1 0.000 0 0 -1 0 0 5 + 4935 5355 5085 5250 5040 5040 5220 4965 5190 4830 +2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 0 0 5 + 6600 4875 6750 4725 6675 4350 6900 4200 6840 4110 +2 1 0 3 -1 -1 0 0 -1 0.000 0 0 -1 0 0 6 + 6690 4890 6675 4725 6675 4650 6750 4350 6825 4200 6735 4110 +2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 0 0 5 + 7575 3810 7575 3600 7650 3150 7800 2925 7710 2790 +2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 0 0 5 + 8100 2400 8025 2100 8325 1575 8175 1350 8250 1200 +2 1 0 3 -1 -1 0 0 -1 0.000 0 0 -1 0 0 5 + 8025 2400 8250 1875 8175 1500 8250 1350 8175 1200 +2 1 0 3 -1 -1 0 0 -1 0.000 0 0 -1 0 0 5 + 7695 3810 7500 3450 7800 3075 7725 2925 7830 2790 +2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 6600 1800 8025 2025 +2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 6600 1350 8100 1575 +4 0 -1 0 0 0 16 0.0000 4 255 2055 4350 5700 Initial partitioning\001 +4 0 -1 0 0 0 16 0.0000 4 255 2160 4350 1875 Prolonged partition\001 +4 0 -1 0 0 0 16 0.0000 4 255 2025 4500 1425 Refined partition\001 Binary files /tmp/tmpp961_B/2VrPdjj9Sm/scotch-6.0.4.dfsg1/doc/src/scotch/s_f_mult.pdf and /tmp/tmpp961_B/UYzcEkJWzG/scotch-6.0.6/doc/src/scotch/s_f_mult.pdf differ diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_orb.eps scotch-6.0.6/doc/src/scotch/s_f_orb.eps --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_orb.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_orb.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,762 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: s_f_orb.fig +%%Creator: fig2dev Version 3.2 Patchlevel 4 +%%CreationDate: Thu Dec 30 03:01:42 2004 +%%For: pelegrin@localhost (Francois PELLEGRINI) +%%BoundingBox: 0 0 775 164 +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 164 moveto 0 0 lineto 775 0 lineto 775 164 lineto closepath clip newpath +-36.0 198.7 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/reencdict 12 dict def /ReEncode { reencdict begin +/newcodesandnames exch def /newfontname exch def /basefontname exch def +/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def +basefontdict { exch dup /FID ne { dup /Encoding eq +{ exch dup length array copy newfont 3 1 roll put } +{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall +newfont /FontName newfontname put newcodesandnames aload pop +128 1 255 { newfont /Encoding get exch /.notdef put } for +newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat +newfontname newfont definefont pop end } def +/isovec [ +8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde +8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis +8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron +8#220 /dotlessi 8#230 /oe 8#231 /OE +8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling +8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis +8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot +8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus +8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph +8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine +8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf +8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute +8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring +8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute +8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute +8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve +8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply +8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex +8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave +8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring +8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute +8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute +8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve +8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide +8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex +8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def +/Courier /Courier-iso isovec ReEncode +/Times-Bold /Times-Bold-iso isovec ReEncode +/Times-Roman /Times-Roman-iso isovec ReEncode + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +% +% Fig objects follow +% +% +% here starts figure with depth 50 +% Polyline +7.500 slw +n 10080 1725 m 9975 1725 9975 2070 105 arcto 4 {pop} repeat + 9975 2175 10320 2175 105 arcto 4 {pop} repeat + 10425 2175 10425 1830 105 arcto 4 {pop} repeat + 10425 1725 10080 1725 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +2 slj +n 11138 3213 m 11150 3215 l 11164 3217 l 11180 3218 l 11196 3220 l 11213 3221 l + 11231 3221 l 11250 3222 l 11269 3221 l 11287 3221 l 11304 3220 l + 11320 3218 l 11336 3217 l 11350 3215 l 11363 3213 l 11371 3211 l + 11379 3208 l 11386 3206 l 11394 3202 l 11401 3198 l 11407 3193 l + 11414 3186 l 11420 3178 l 11425 3168 l 11431 3156 l 11435 3143 l + 11440 3128 l 11444 3111 l 11448 3092 l 11451 3071 l 11454 3049 l + 11456 3024 l 11459 2998 l 11461 2969 l 11463 2938 l 11464 2915 l + 11465 2891 l 11466 2866 l 11467 2840 l 11467 2812 l 11468 2783 l + 11469 2753 l 11470 2721 l 11471 2688 l 11471 2654 l 11472 2620 l + 11473 2584 l 11474 2548 l 11474 2512 l 11475 2475 l 11476 2438 l + 11476 2402 l 11477 2366 l 11478 2330 l 11479 2296 l 11479 2262 l + 11480 2229 l 11481 2197 l 11482 2167 l 11483 2138 l 11483 2110 l + 11484 2084 l 11485 2059 l 11486 2035 l 11488 2013 l 11489 1984 l + 11491 1957 l 11493 1933 l 11496 1909 l 11499 1887 l 11503 1867 l + 11507 1847 l 11512 1829 l 11518 1812 l 11525 1795 l 11533 1780 l + 11542 1765 l 11552 1751 l 11563 1738 l 11575 1725 l 11588 1713 l + 11602 1701 l 11617 1689 l 11633 1676 l 11650 1664 l 11668 1651 l + 11688 1638 l 11705 1625 l 11724 1612 l 11744 1599 l 11765 1584 l + 11788 1569 l 11811 1553 l 11836 1536 l 11862 1519 l 11888 1501 l + 11916 1482 l 11943 1463 l 11972 1444 l 12000 1425 l 12028 1406 l + 12057 1387 l 12084 1368 l 12112 1349 l 12138 1331 l 12164 1314 l + 12189 1297 l 12212 1281 l 12235 1266 l 12256 1251 l 12276 1238 l + 12295 1225 l 12313 1213 l 12339 1194 l 12363 1177 l 12385 1161 l + 12405 1146 l 12424 1132 l 12440 1119 l 12454 1106 l 12467 1094 l + 12477 1083 l 12486 1072 l 12493 1062 l 12499 1052 l 12504 1043 l + 12507 1033 l 12510 1023 l 12513 1013 l 12515 1000 l 12517 986 l + 12518 970 l 12520 954 l 12521 937 l 12521 919 l 12522 900 l + 12521 881 l 12521 863 l 12520 846 l 12518 830 l 12517 814 l + 12515 800 l 12513 788 l 12510 776 l 12507 765 l 12503 754 l + 12499 745 l 12493 735 l 12487 727 l 12481 719 l 12473 713 l + 12465 707 l 12455 701 l 12446 697 l 12435 693 l 12424 690 l + 12413 688 l 12400 685 l 12386 683 l 12370 682 l 12354 680 l + 12337 679 l 12319 679 l 12300 678 l 12281 679 l 12263 679 l + 12246 680 l 12230 682 l 12214 683 l 12200 685 l 12188 688 l + 12176 690 l 12165 693 l 12154 697 l 12145 701 l 12135 707 l + 12127 713 l 12119 719 l 12113 727 l 12107 735 l 12101 745 l + 12097 754 l 12093 765 l 12090 776 l 12088 788 l 12085 800 l + 12083 814 l 12081 830 l 12080 846 l 12078 863 l 12076 881 l + 12075 900 l 12074 919 l 12072 937 l 12070 954 l 12069 970 l + 12067 986 l 12065 1000 l 12063 1013 l 12060 1023 l 12057 1033 l + 12054 1043 l 12049 1052 l 12043 1062 l 12036 1072 l 12027 1083 l + 12017 1094 l 12004 1106 l 11990 1119 l 11974 1132 l 11955 1146 l + 11935 1161 l 11913 1177 l 11889 1194 l 11863 1213 l 11845 1225 l + 11826 1238 l 11806 1251 l 11785 1266 l 11762 1281 l 11739 1297 l + 11714 1314 l 11688 1331 l 11662 1349 l 11634 1368 l 11607 1387 l + 11578 1406 l 11550 1425 l 11522 1444 l 11493 1463 l 11466 1482 l + 11438 1501 l 11412 1519 l 11386 1536 l 11361 1553 l 11338 1569 l + 11315 1584 l 11294 1599 l 11274 1612 l 11255 1625 l 11238 1638 l + 11218 1651 l 11200 1664 l 11183 1676 l 11167 1689 l 11152 1701 l + 11138 1713 l 11125 1725 l 11113 1738 l 11102 1751 l 11092 1765 l + 11083 1780 l 11075 1795 l 11068 1812 l 11062 1829 l 11057 1847 l + 11053 1867 l 11049 1887 l 11046 1909 l 11043 1933 l 11041 1957 l + 11039 1984 l 11038 2013 l 11036 2035 l 11035 2059 l 11034 2084 l + 11033 2110 l 11033 2138 l 11032 2167 l 11031 2197 l 11031 2229 l + 11030 2262 l 11030 2296 l 11029 2330 l 11029 2366 l 11029 2402 l + 11029 2438 l 11028 2475 l 11029 2512 l 11029 2548 l 11029 2584 l + 11029 2620 l 11030 2654 l 11030 2688 l 11031 2721 l 11031 2753 l + 11032 2783 l 11033 2812 l 11033 2840 l 11034 2866 l 11035 2891 l + 11036 2915 l 11038 2938 l 11039 2969 l 11041 2998 l 11044 3024 l + 11046 3049 l 11049 3072 l 11052 3092 l 11056 3111 l 11060 3128 l + 11065 3143 l 11069 3156 l 11075 3168 l 11080 3178 l 11086 3186 l + 11093 3193 l 11099 3198 l 11106 3202 l 11114 3206 l 11121 3208 l + 11129 3211 l + cp gs col0 s gr +% Polyline +n 12413 1738 m 12422 1740 l 12431 1742 l 12440 1745 l 12449 1749 l 12458 1753 l + 12468 1759 l 12478 1766 l 12489 1775 l 12501 1785 l 12514 1797 l + 12529 1810 l 12544 1825 l 12560 1841 l 12578 1860 l 12597 1879 l + 12617 1901 l 12639 1924 l 12663 1950 l 12678 1966 l 12694 1984 l + 12711 2002 l 12729 2022 l 12748 2042 l 12767 2063 l 12788 2085 l + 12809 2109 l 12832 2132 l 12854 2157 l 12878 2182 l 12902 2208 l + 12926 2234 l 12950 2261 l 12975 2288 l 13000 2314 l 13024 2341 l + 13048 2367 l 13072 2393 l 13096 2418 l 13118 2443 l 13141 2466 l + 13162 2490 l 13183 2512 l 13202 2533 l 13221 2553 l 13239 2573 l + 13256 2591 l 13272 2609 l 13288 2625 l 13311 2651 l 13333 2674 l + 13353 2696 l 13372 2716 l 13389 2735 l 13404 2752 l 13418 2768 l + 13431 2783 l 13442 2797 l 13451 2810 l 13459 2821 l 13466 2832 l + 13472 2842 l 13476 2851 l 13480 2860 l 13483 2869 l 13485 2878 l + 13488 2888 l 13490 2900 l 13492 2914 l 13493 2930 l 13495 2946 l + 13496 2963 l 13496 2981 l 13497 3000 l 13496 3019 l 13496 3037 l + 13495 3054 l 13493 3070 l 13492 3086 l 13490 3100 l 13488 3113 l + 13485 3124 l 13482 3135 l 13478 3146 l 13474 3155 l 13468 3165 l + 13462 3173 l 13456 3181 l 13448 3187 l 13440 3193 l 13430 3199 l + 13421 3203 l 13410 3207 l 13399 3210 l 13388 3213 l 13375 3215 l + 13361 3217 l 13345 3218 l 13329 3220 l 13312 3221 l 13294 3221 l + 13275 3222 l 13256 3221 l 13238 3221 l 13221 3220 l 13205 3218 l + 13189 3217 l 13175 3215 l 13163 3213 l 13153 3210 l 13144 3208 l + 13135 3205 l 13126 3201 l 13117 3197 l 13107 3191 l 13097 3184 l + 13086 3175 l 13074 3165 l 13061 3153 l 13046 3140 l 13031 3125 l + 13015 3109 l 12997 3090 l 12978 3071 l 12958 3049 l 12936 3026 l + 12913 3000 l 12897 2984 l 12881 2966 l 12864 2948 l 12846 2928 l + 12827 2908 l 12808 2887 l 12787 2865 l 12766 2841 l 12743 2818 l + 12721 2793 l 12697 2768 l 12673 2742 l 12649 2716 l 12625 2689 l + 12600 2662 l 12575 2636 l 12551 2609 l 12527 2583 l 12503 2557 l + 12479 2532 l 12457 2507 l 12434 2484 l 12413 2460 l 12392 2438 l + 12373 2417 l 12354 2397 l 12336 2377 l 12319 2359 l 12303 2341 l + 12288 2325 l 12264 2299 l 12242 2276 l 12222 2254 l 12203 2234 l + 12186 2215 l 12171 2198 l 12157 2182 l 12144 2167 l 12133 2153 l + 12124 2140 l 12116 2129 l 12109 2118 l 12103 2108 l 12099 2099 l + 12095 2090 l 12092 2081 l 12090 2072 l 12088 2063 l 12085 2050 l + 12083 2036 l 12082 2020 l 12080 2004 l 12079 1987 l 12079 1969 l + 12078 1950 l 12079 1931 l 12079 1913 l 12080 1896 l 12082 1880 l + 12083 1864 l 12085 1850 l 12088 1838 l 12090 1826 l 12093 1815 l + 12097 1804 l 12101 1795 l 12107 1785 l 12113 1777 l 12119 1769 l + 12127 1763 l 12135 1757 l 12145 1751 l 12154 1747 l 12165 1743 l + 12176 1740 l 12188 1738 l 12200 1735 l 12214 1733 l 12230 1732 l + 12246 1730 l 12263 1729 l 12281 1729 l 12300 1728 l 12319 1729 l + 12337 1729 l 12354 1730 l 12370 1732 l 12386 1733 l 12400 1735 l + + cp gs col0 s gr +% here ends figure; +% +% here starts figure with depth 20 +% Polyline +7.500 slw +n 10200 900 m + 10200 1950 l gs col0 s gr +% Polyline +n 10200 900 m 13275 900 l 13275 3000 l 10200 3000 l 10200 1950 l + 13275 1950 l gs col0 s gr +% Polyline +n 11250 900 m + 11250 3000 l gs col0 s gr +% Polyline +n 12300 900 m + 12300 3000 l gs col0 s gr +% Polyline +n 6375 900 m + 6375 1950 l gs col0 s gr +% Polyline +n 6300 900 m 9450 900 l 9450 3000 l 6375 3000 l 6375 1950 l + 9450 1950 l gs col0 s gr +% Polyline +n 7425 900 m + 7425 3000 l gs col0 s gr +% Polyline +n 8475 900 m + 8475 3000 l gs col0 s gr +/Courier-iso ff 210.00 scf sf +600 1425 m +gs 1 -1 sc (peritab) col0 sh gr +/Courier-iso ff 210.00 scf sf +600 2025 m +gs 1 -1 sc (cblknbr) col0 sh gr +/Courier-iso ff 210.00 scf sf +600 2625 m +gs 1 -1 sc (rangtab) col0 sh gr +/Courier-iso ff 210.00 scf sf +600 3225 m +gs 1 -1 sc (treetab) col0 sh gr +/Courier-iso ff 210.00 scf sf +600 825 m +gs 1 -1 sc (permtab) col0 sh gr +% here ends figure; +% +% here starts figure with depth 15 +% Polyline +7.500 slw +n 1800 2400 m 2100 2400 l 2100 2700 l 1800 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2100 2400 m 2400 2400 l 2400 2700 l 2100 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 2400 m 2700 2400 l 2700 2700 l 2400 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3300 2400 m 3600 2400 l 3600 2700 l 3300 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4200 2400 m 4500 2400 l 4500 2700 l 4200 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 2400 m 3000 2400 l 3000 2700 l 2700 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 2400 m 3300 2400 l 3300 2700 l 3000 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 1800 m 2100 1800 l 2100 2100 l 1800 2100 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 600 m 2100 600 l 2100 900 l 1800 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2100 600 m 2400 600 l 2400 900 l 2100 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 600 m 3300 600 l 3300 900 l 3000 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3600 600 m 3900 600 l 3900 900 l 3600 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3900 600 m 4200 600 l 4200 900 l 3900 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4200 600 m 4500 600 l 4500 900 l 4200 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 600 m 3000 600 l 3000 900 l 2700 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2100 1200 m 2400 1200 l 2400 1500 l 2100 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 1200 m 2700 1200 l 2700 1500 l 2400 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3300 1200 m 3600 1200 l 3600 1500 l 3300 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 1200 m 3000 1200 l 3000 1500 l 2700 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3900 2400 m 4200 2400 l 4200 2700 l 3900 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman-iso ff 240.00 scf sf +3925 2640 m +gs 1 -1 sc (13) col0 sh gr +% Polyline +n 4500 2400 m 4800 2400 l 4800 2700 l 4500 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 3000 m 2100 3000 l 2100 3300 l 1800 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2100 3000 m 2400 3000 l 2400 3300 l 2100 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 3000 m 2700 3000 l 2700 3300 l 2400 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 3000 m 3300 3000 l 3300 3300 l 3000 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3300 3000 m 3600 3000 l 3600 3300 l 3300 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 3000 m 3000 3000 l 3000 3300 l 2700 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4800 600 m 5100 600 l 5100 900 l 4800 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5100 600 m 5400 600 l 5400 900 l 5100 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4800 2400 m 5100 2400 l 5100 2700 l 4800 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5100 2400 m 5400 2400 l 5400 2700 l 5100 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5400 2400 m 5700 2400 l 5700 2700 l 5400 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 600 m 2700 600 l 2700 900 l 2400 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman-iso ff 240.00 scf sf +2425 840 m +gs 1 -1 sc (10) col0 sh gr +% Polyline +n 3300 600 m 3600 600 l 3600 900 l 3300 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman-iso ff 240.00 scf sf +3325 840 m +gs 1 -1 sc (11) col0 sh gr +% Polyline +n 4500 600 m 4800 600 l 4800 900 l 4500 900 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman-iso ff 240.00 scf sf +4525 840 m +gs 1 -1 sc (12) col0 sh gr +% Polyline +n 4500 1200 m 4800 1200 l 4800 1500 l 4500 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4800 1200 m 5100 1200 l 5100 1500 l 4800 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3900 1200 m 4200 1200 l 4200 1500 l 3900 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3600 1200 m 3900 1200 l 3900 1500 l 3600 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 1200 m 2100 1200 l 2100 1500 l 1800 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5100 1200 m 5400 1200 l 5400 1500 l 5100 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman-iso ff 240.00 scf sf +5125 1440 m +gs 1 -1 sc (10) col0 sh gr +% Polyline +n 3000 1200 m 3300 1200 l 3300 1500 l 3000 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman-iso ff 240.00 scf sf +3025 1440 m +gs 1 -1 sc (11) col0 sh gr +% Polyline +n 4200 1200 m 4500 1200 l 4500 1500 l 4200 1500 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman-iso ff 240.00 scf sf +4225 1440 m +gs 1 -1 sc (12) col0 sh gr +% Polyline +n 3600 2400 m 3900 2400 l 3900 2700 l 3600 2700 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman-iso ff 240.00 scf sf +3625 2640 m +gs 1 -1 sc (10) col0 sh gr +% Polyline +n 3600 3000 m 3900 3000 l 3900 3300 l 3600 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman-iso ff 240.00 scf sf +3625 3240 m +gs 1 -1 sc (-1) col0 sh gr +% Polyline +n 3900 3000 m 4200 3000 l 4200 3300 l 3900 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4200 3000 m 4500 3000 l 4500 3300 l 4200 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4500 3000 m 4800 3000 l 4800 3300 l 4500 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4800 3000 m 5100 3000 l 5100 3300 l 4800 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 5100 3000 m 5400 3000 l 5400 3300 l 5100 3300 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% here ends figure; +% +% here starts figure with depth 12 +% Ellipse +7.500 slw +n 12300 900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 11257 1943 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 11257 2993 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 10200 3000 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 10200 900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 11250 900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 13282 2993 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 12307 1943 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 13282 1943 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 13282 893 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 12307 2993 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 10207 1943 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6375 900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6375 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 7425 900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 7425 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6375 3000 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 9450 900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 9450 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 8475 900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 8475 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 7425 3000 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 8475 3000 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 9450 3000 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% here ends figure; +% +% here starts figure with depth 10 +/Times-Roman-iso ff 240.00 scf sf +1900 2640 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +2200 2640 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +2500 2640 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +3400 2640 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +2800 2640 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +3100 2640 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +1900 2040 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +1900 840 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +2200 840 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +3100 840 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +3700 840 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +4000 840 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +4300 840 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +2800 840 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +2200 1440 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +2500 1440 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +3400 1440 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +2800 1440 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +1900 3240 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +2200 3240 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +2500 3240 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +3100 3240 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +3400 3240 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +2800 3240 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +4900 840 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +5200 840 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +10150 3090 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +10150 990 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +11200 990 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +13232 3083 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +12257 2033 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +13232 2033 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +13232 983 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +12257 3083 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +10157 2033 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +6325 990 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +6325 2040 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +7375 990 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +7375 2040 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +6325 3090 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +9400 990 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +9400 2040 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +8425 990 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +8425 2040 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +4600 1440 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +4900 1440 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +4000 1440 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +3700 1440 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +1900 1440 m +gs 1 -1 sc (9) col0 sh gr +/Times-Bold-iso ff 240.00 scf sf +9900 3150 m +gs 1 -1 sc (1) col0 sh gr +/Times-Bold-iso ff 240.00 scf sf +9900 1050 m +gs 1 -1 sc (2) col0 sh gr +/Times-Bold-iso ff 240.00 scf sf +9900 2325 m +gs 1 -1 sc (3) col0 sh gr +/Times-Bold-iso ff 240.00 scf sf +12000 3300 m +gs 1 -1 sc (4) col0 sh gr +/Times-Bold-iso ff 240.00 scf sf +12975 1200 m +gs 1 -1 sc (5) col0 sh gr +/Times-Bold-iso ff 240.00 scf sf +11925 2250 m +gs 1 -1 sc (6) col0 sh gr +/Times-Bold-iso ff 240.00 scf sf +10950 1725 m +gs 1 -1 sc (7) col0 sh gr +% here ends figure; +% +% here starts figure with depth 8 +/Times-Roman-iso ff 240.00 scf sf +12170 990 m +gs 1 -1 sc (10) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +11127 2033 m +gs 1 -1 sc (11) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +11127 3083 m +gs 1 -1 sc (12) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +7295 3090 m +gs 1 -1 sc (10) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +8345 3090 m +gs 1 -1 sc (11) col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +9320 3090 m +gs 1 -1 sc (12) col0 sh gr +% here ends figure; +$F2psEnd +rs +showpage diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_orb.fig scotch-6.0.6/doc/src/scotch/s_f_orb.fig --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_orb.fig 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_orb.fig 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,386 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +0 +1200 2 +6 1800 2400 2100 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 2400 2100 2400 2100 2700 1800 2700 1800 2400 +4 0 0 10 0 0 16 0.0000 4 165 120 1900 2640 1\001 +-6 +6 2100 2400 2400 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 2400 2400 2400 2400 2700 2100 2700 2100 2400 +4 0 0 10 0 0 16 0.0000 4 150 120 2200 2640 2\001 +-6 +6 2400 2400 2700 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 2400 2700 2400 2700 2700 2400 2700 2400 2400 +4 0 0 10 0 0 16 0.0000 4 150 120 2500 2640 4\001 +-6 +6 3300 2400 3600 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 2400 3600 2400 3600 2700 3300 2700 3300 2400 +4 0 0 10 0 0 16 0.0000 4 150 120 3400 2640 8\001 +-6 +6 4200 2400 4500 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4200 2400 4500 2400 4500 2700 4200 2700 4200 2400 +-6 +6 2700 2400 3000 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 2400 3000 2400 3000 2700 2700 2700 2700 2400 +4 0 0 10 0 0 16 0.0000 4 150 120 2800 2640 5\001 +-6 +6 3000 2400 3300 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 2400 3300 2400 3300 2700 3000 2700 3000 2400 +4 0 0 10 0 0 16 0.0000 4 165 120 3100 2640 6\001 +-6 +6 1800 1800 2100 2100 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 1800 2100 1800 2100 2100 1800 2100 1800 1800 +4 0 0 10 0 0 16 0.0000 4 150 120 1900 2040 7\001 +-6 +6 1800 600 2100 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 600 2100 600 2100 900 1800 900 1800 600 +4 0 0 10 0 0 16 0.0000 4 150 120 1900 840 2\001 +-6 +6 2100 600 2400 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 600 2400 600 2400 900 2100 900 2100 600 +4 0 0 10 0 0 16 0.0000 4 150 120 2200 840 3\001 +-6 +6 3000 600 3300 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 600 3300 600 3300 900 3000 900 3000 600 +4 0 0 10 0 0 16 0.0000 4 150 120 3100 840 4\001 +-6 +6 3600 600 3900 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 600 3900 600 3900 900 3600 900 3600 600 +4 0 0 10 0 0 16 0.0000 4 150 120 3700 840 8\001 +-6 +6 3900 600 4200 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3900 600 4200 600 4200 900 3900 900 3900 600 +4 0 0 10 0 0 16 0.0000 4 150 120 4000 840 7\001 +-6 +6 4200 600 4500 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4200 600 4500 600 4500 900 4200 900 4200 600 +4 0 0 10 0 0 16 0.0000 4 165 120 4300 840 1\001 +-6 +6 2700 600 3000 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 600 3000 600 3000 900 2700 900 2700 600 +4 0 0 10 0 0 16 0.0000 4 165 120 2800 840 6\001 +-6 +6 2100 1200 2400 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 1200 2400 1200 2400 1500 2100 1500 2100 1200 +4 0 0 10 0 0 16 0.0000 4 165 120 2200 1440 1\001 +-6 +6 2400 1200 2700 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 1200 2700 1200 2700 1500 2400 1500 2400 1200 +4 0 0 10 0 0 16 0.0000 4 150 120 2500 1440 2\001 +-6 +6 3300 1200 3600 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 1200 3600 1200 3600 1500 3300 1500 3300 1200 +4 0 0 10 0 0 16 0.0000 4 150 120 3400 1440 4\001 +-6 +6 2700 1200 3000 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 1200 3000 1200 3000 1500 2700 1500 2700 1200 +4 0 0 10 0 0 16 0.0000 4 150 120 2800 1440 5\001 +-6 +6 3900 2400 4200 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3900 2400 4200 2400 4200 2700 3900 2700 3900 2400 +4 0 0 15 0 0 16 0.0000 4 165 240 3925 2640 13\001 +-6 +6 4500 2400 4800 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4500 2400 4800 2400 4800 2700 4500 2700 4500 2400 +-6 +6 1800 3000 2100 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 3000 2100 3000 2100 3300 1800 3300 1800 3000 +4 0 0 10 0 0 16 0.0000 4 150 120 1900 3240 3\001 +-6 +6 2100 3000 2400 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 3000 2400 3000 2400 3300 2100 3300 2100 3000 +4 0 0 10 0 0 16 0.0000 4 150 120 2200 3240 3\001 +-6 +6 2400 3000 2700 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 3000 2700 3000 2700 3300 2400 3300 2400 3000 +4 0 0 10 0 0 16 0.0000 4 150 120 2500 3240 7\001 +-6 +6 3000 3000 3300 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 3000 3300 3000 3300 3300 3000 3300 3000 3000 +4 0 0 10 0 0 16 0.0000 4 165 120 3100 3240 6\001 +-6 +6 3300 3000 3600 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 3000 3600 3000 3600 3300 3300 3300 3300 3000 +4 0 0 10 0 0 16 0.0000 4 150 120 3400 3240 7\001 +-6 +6 2700 3000 3000 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 3000 3000 3000 3000 3300 2700 3300 2700 3000 +4 0 0 10 0 0 16 0.0000 4 165 120 2800 3240 6\001 +-6 +6 4800 600 5100 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4800 600 5100 600 5100 900 4800 900 4800 600 +4 0 0 10 0 0 16 0.0000 4 150 120 4900 840 5\001 +-6 +6 5100 600 5400 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5100 600 5400 600 5400 900 5100 900 5100 600 +4 0 0 10 0 0 16 0.0000 4 150 120 5200 840 9\001 +-6 +6 4800 2400 5100 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4800 2400 5100 2400 5100 2700 4800 2700 4800 2400 +-6 +6 5100 2400 5400 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5100 2400 5400 2400 5400 2700 5100 2700 5100 2400 +-6 +6 5400 2400 5700 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5400 2400 5700 2400 5700 2700 5400 2700 5400 2400 +-6 +6 12150 750 12450 1050 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 12300 900 150 150 12300 900 12450 900 +4 0 0 8 0 0 16 0.0000 4 165 240 12170 990 10\001 +-6 +6 11100 1786 11414 2100 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 11257 1943 150 150 11257 1943 11407 1943 +4 0 0 8 0 0 16 0.0000 4 165 240 11127 2033 11\001 +-6 +6 11100 2836 11414 3150 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 11257 2993 150 150 11257 2993 11407 2993 +4 0 0 8 0 0 16 0.0000 4 165 240 11127 3083 12\001 +-6 +6 10050 2850 10350 3150 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 10200 3000 150 150 10200 3000 10350 3000 +4 0 0 10 0 0 16 0.0000 4 165 120 10150 3090 1\001 +-6 +6 10050 750 10350 1050 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 10200 900 150 150 10200 900 10350 900 +4 0 0 10 0 0 16 0.0000 4 150 120 10150 990 2\001 +-6 +6 11100 750 11400 1050 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 11250 900 150 150 11250 900 11400 900 +4 0 0 10 0 0 16 0.0000 4 150 120 11200 990 3\001 +-6 +6 13125 2836 13439 3150 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 13282 2993 150 150 13282 2993 13432 2993 +4 0 0 10 0 0 16 0.0000 4 150 120 13232 3083 9\001 +-6 +6 12150 1786 12464 2100 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 12307 1943 150 150 12307 1943 12457 1943 +4 0 0 10 0 0 16 0.0000 4 150 120 12257 2033 8\001 +-6 +6 13125 1786 13439 2100 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 13282 1943 150 150 13282 1943 13432 1943 +4 0 0 10 0 0 16 0.0000 4 150 120 13232 2033 7\001 +-6 +6 13125 736 13439 1050 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 13282 893 150 150 13282 893 13432 893 +4 0 0 10 0 0 16 0.0000 4 165 120 13232 983 6\001 +-6 +6 12150 2836 12464 3150 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 12307 2993 150 150 12307 2993 12457 2993 +4 0 0 10 0 0 16 0.0000 4 150 120 12257 3083 5\001 +-6 +6 10050 1786 10364 2100 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 10207 1943 150 150 10207 1943 10357 1943 +4 0 0 10 0 0 16 0.0000 4 150 120 10157 2033 4\001 +-6 +6 6225 750 6525 1050 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6375 900 150 150 6375 900 6525 900 +4 0 0 10 0 0 16 0.0000 4 165 120 6325 990 1\001 +-6 +6 6218 1793 6532 2107 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6375 1950 150 150 6375 1950 6525 1950 +4 0 0 10 0 0 16 0.0000 4 150 120 6325 2040 5\001 +-6 +6 7275 750 7575 1050 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7425 900 150 150 7425 900 7575 900 +4 0 0 10 0 0 16 0.0000 4 150 120 7375 990 2\001 +-6 +6 7268 1793 7582 2107 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7425 1950 150 150 7425 1950 7575 1950 +4 0 0 10 0 0 16 0.0000 4 165 120 7375 2040 6\001 +-6 +6 6218 2843 6532 3157 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6375 3000 150 150 6375 3000 6525 3000 +4 0 0 10 0 0 16 0.0000 4 150 120 6325 3090 9\001 +-6 +6 9293 743 9607 1057 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 9450 900 150 150 9450 900 9600 900 +4 0 0 10 0 0 16 0.0000 4 150 120 9400 990 4\001 +-6 +6 9293 1793 9607 2107 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 9450 1950 150 150 9450 1950 9600 1950 +4 0 0 10 0 0 16 0.0000 4 150 120 9400 2040 8\001 +-6 +6 8325 750 8625 1050 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8475 900 150 150 8475 900 8625 900 +4 0 0 10 0 0 16 0.0000 4 150 120 8425 990 3\001 +-6 +6 8318 1793 8632 2107 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8475 1950 150 150 8475 1950 8625 1950 +4 0 0 10 0 0 16 0.0000 4 150 120 8425 2040 7\001 +-6 +6 7275 2850 7575 3150 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7425 3000 150 150 7425 3000 7575 3000 +4 0 0 8 0 0 16 0.0000 4 165 240 7295 3090 10\001 +-6 +6 8318 2843 8632 3157 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8475 3000 150 150 8475 3000 8625 3000 +4 0 0 8 0 0 16 0.0000 4 165 240 8345 3090 11\001 +-6 +6 9293 2843 9607 3157 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 9450 3000 150 150 9450 3000 9600 3000 +4 0 0 8 0 0 16 0.0000 4 165 240 9320 3090 12\001 +-6 +6 2400 600 2700 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 600 2700 600 2700 900 2400 900 2400 600 +4 0 0 15 0 0 16 0.0000 4 165 240 2425 840 10\001 +-6 +6 3300 600 3600 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 600 3600 600 3600 900 3300 900 3300 600 +4 0 0 15 0 0 16 0.0000 4 165 240 3325 840 11\001 +-6 +6 4500 600 4800 900 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4500 600 4800 600 4800 900 4500 900 4500 600 +4 0 0 15 0 0 16 0.0000 4 165 240 4525 840 12\001 +-6 +6 4500 1200 4800 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4500 1200 4800 1200 4800 1500 4500 1500 4500 1200 +4 0 0 10 0 0 16 0.0000 4 150 120 4600 1440 3\001 +-6 +6 4800 1200 5100 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4800 1200 5100 1200 5100 1500 4800 1500 4800 1200 +4 0 0 10 0 0 16 0.0000 4 165 120 4900 1440 6\001 +-6 +6 3900 1200 4200 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3900 1200 4200 1200 4200 1500 3900 1500 3900 1200 +4 0 0 10 0 0 16 0.0000 4 150 120 4000 1440 7\001 +-6 +6 3600 1200 3900 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 1200 3900 1200 3900 1500 3600 1500 3600 1200 +4 0 0 10 0 0 16 0.0000 4 150 120 3700 1440 8\001 +-6 +6 1800 1200 2100 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 1200 2100 1200 2100 1500 1800 1500 1800 1200 +4 0 0 10 0 0 16 0.0000 4 150 120 1900 1440 9\001 +-6 +6 5100 1200 5400 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5100 1200 5400 1200 5400 1500 5100 1500 5100 1200 +4 0 0 15 0 0 16 0.0000 4 165 240 5125 1440 10\001 +-6 +6 3000 1200 3300 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 1200 3300 1200 3300 1500 3000 1500 3000 1200 +4 0 0 15 0 0 16 0.0000 4 165 240 3025 1440 11\001 +-6 +6 4200 1200 4500 1500 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4200 1200 4500 1200 4500 1500 4200 1500 4200 1200 +4 0 0 15 0 0 16 0.0000 4 165 240 4225 1440 12\001 +-6 +6 3600 2400 3900 2700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 2400 3900 2400 3900 2700 3600 2700 3600 2400 +4 0 0 15 0 0 16 0.0000 4 165 240 3625 2640 10\001 +-6 +6 3600 3000 3900 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 3000 3900 3000 3900 3300 3600 3300 3600 3000 +4 0 0 15 0 0 16 0.0000 4 165 195 3625 3240 -1\001 +-6 +6 3900 3000 4200 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3900 3000 4200 3000 4200 3300 3900 3300 3900 3000 +-6 +6 4200 3000 4500 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4200 3000 4500 3000 4500 3300 4200 3300 4200 3000 +-6 +6 4500 3000 4800 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4500 3000 4800 3000 4800 3300 4500 3300 4500 3000 +-6 +6 4800 3000 5100 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4800 3000 5100 3000 5100 3300 4800 3300 4800 3000 +-6 +6 5100 3000 5400 3300 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 5100 3000 5400 3000 5400 3300 5100 3300 5100 3000 +-6 +2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 + 10425 2175 10425 1725 9975 1725 9975 2175 10425 2175 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 + 10200 900 10200 1950 +2 1 0 1 0 7 20 0 -1 0.000 0 0 7 0 0 6 + 10200 900 13275 900 13275 3000 10200 3000 10200 1950 13275 1950 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 + 11250 900 11250 3000 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 + 12300 900 12300 3000 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 + 6375 900 6375 1950 +2 1 0 1 0 7 20 0 -1 0.000 0 0 7 0 0 6 + 6300 900 9450 900 9450 3000 6375 3000 6375 1950 9450 1950 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 + 7425 900 7425 3000 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 + 8475 900 8475 3000 +3 1 0 1 0 7 50 -1 -1 0.000 0 0 0 16 + 11025 3150 11100 3225 11400 3225 11475 3150 11475 1800 11550 1725 + 12450 1125 12525 1050 12525 750 12450 675 12150 675 12075 750 + 12075 1050 12000 1125 11100 1725 11025 1800 + 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 + 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 +3 1 0 1 0 7 50 -1 -1 0.000 0 0 0 12 + 12150 1725 12450 1725 12525 1800 13425 2775 13500 2850 13500 3150 + 13425 3225 13125 3225 13050 3150 12150 2175 12075 2100 12075 1800 + 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 + 1.000 1.000 1.000 1.000 +4 0 0 20 0 12 14 0.0000 4 195 945 600 1425 peritab\001 +4 0 0 20 0 12 14 0.0000 4 150 945 600 2025 cblknbr\001 +4 0 0 20 0 12 14 0.0000 4 195 945 600 2625 rangtab\001 +4 0 0 20 0 12 14 0.0000 4 150 945 600 3225 treetab\001 +4 0 0 20 0 12 14 0.0000 4 195 945 600 825 permtab\001 +4 0 0 10 0 2 16 0.0000 4 150 120 9900 3150 1\001 +4 0 0 10 0 2 16 0.0000 4 150 120 9900 1050 2\001 +4 0 0 10 0 2 16 0.0000 4 150 120 9900 2325 3\001 +4 0 0 10 0 2 16 0.0000 4 150 120 12000 3300 4\001 +4 0 0 10 0 2 16 0.0000 4 150 120 12975 1200 5\001 +4 0 0 10 0 2 16 0.0000 4 165 120 11925 2250 6\001 +4 0 0 10 0 2 16 0.0000 4 150 120 10950 1725 7\001 diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_orf.eps scotch-6.0.6/doc/src/scotch/s_f_orf.eps --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_orf.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_orf.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,516 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: s_f_orf.fig +%%Creator: fig2dev Version 3.2 Patchlevel 4 +%%CreationDate: Thu Dec 30 05:26:16 2004 +%%For: pelegrin@localhost (Francois PELLEGRINI) +%%BoundingBox: 0 0 479 337 +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 337 moveto 0 0 lineto 479 0 lineto 479 337 lineto closepath clip newpath +-35.5 360.7 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +% +% Fig objects follow +% +% +% here starts figure with depth 20 +% Polyline +7.500 slw +n 3750 1950 m + 3150 3150 l gs col0 s gr +% Polyline +n 1350 1950 m 1950 750 l 2550 1950 l 1350 1950 l 1950 3150 l 2550 1950 l + 3150 750 l + 1950 750 l gs col0 s gr +% Polyline +n 1950 3150 m 3150 3150 l 2550 1950 l + 3750 1950 l gs col0 s gr +% Polyline +n 1950 3150 m 750 3150 l + 1350 1950 l gs col0 s gr +% Polyline +n 8250 1950 m + 7650 3150 l gs col0 s gr +% Polyline +n 6450 3150 m 7650 3150 l 7050 1950 l + 8250 1950 l gs col0 s gr +% Polyline +n 6450 3150 m 5250 3150 l + 5850 1950 l gs col0 s gr +% Polyline +n 5850 1950 m 6450 750 l 7050 1950 l 5850 1950 l 6450 3150 l 7050 1950 l + 7650 750 l + 6450 750 l gs col0 s gr +% Ellipse +n 5850 1950 382 382 0 360 DrawEllipse gs col0 s gr + +% Ellipse +n 5250 3150 375 375 0 360 DrawEllipse gs col0 s gr + +% Polyline +2 slj +n 7350 1850 m 7349 1876 l 7348 1903 l 7345 1932 l 7341 1962 l 7336 1993 l + 7330 2026 l 7323 2060 l 7315 2096 l 7306 2132 l 7295 2170 l + 7284 2209 l 7271 2249 l 7258 2290 l 7244 2332 l 7228 2375 l + 7212 2418 l 7195 2462 l 7177 2506 l 7158 2550 l 7139 2594 l + 7119 2638 l 7099 2682 l 7078 2725 l 7057 2768 l 7036 2810 l + 7014 2851 l 6992 2891 l 6970 2930 l 6948 2968 l 6925 3004 l + 6903 3040 l 6881 3074 l 6859 3107 l 6837 3138 l 6815 3168 l + 6793 3197 l 6772 3224 l 6750 3250 l 6730 3272 l 6711 3294 l + 6691 3314 l 6671 3334 l 6651 3352 l 6631 3369 l 6611 3386 l + 6591 3402 l 6571 3416 l 6551 3430 l 6531 3442 l 6511 3453 l + 6491 3464 l 6472 3473 l 6452 3481 l 6433 3487 l 6414 3493 l + 6395 3497 l 6377 3500 l 6359 3502 l 6342 3503 l 6325 3502 l + 6308 3500 l 6293 3497 l 6278 3493 l 6264 3487 l 6250 3481 l + 6237 3473 l 6226 3464 l 6214 3453 l 6204 3442 l 6195 3430 l + 6186 3416 l 6179 3402 l 6172 3386 l 6166 3369 l 6161 3352 l + 6157 3334 l 6154 3314 l 6152 3294 l 6150 3272 l 6150 3250 l + 6151 3224 l 6152 3197 l 6155 3168 l 6159 3138 l 6164 3107 l + 6170 3074 l 6177 3040 l 6185 3004 l 6194 2968 l 6205 2930 l + 6216 2891 l 6229 2851 l 6242 2810 l 6256 2768 l 6272 2725 l + 6288 2682 l 6305 2638 l 6323 2594 l 6342 2550 l 6361 2506 l + 6381 2462 l 6401 2418 l 6422 2375 l 6443 2332 l 6464 2290 l + 6486 2249 l 6508 2209 l 6530 2170 l 6552 2132 l 6575 2096 l + 6597 2060 l 6619 2026 l 6641 1993 l 6663 1962 l 6685 1932 l + 6707 1903 l 6728 1876 l 6750 1850 l 6770 1828 l 6789 1806 l + 6809 1786 l 6829 1766 l 6849 1748 l 6869 1731 l 6889 1714 l + 6909 1698 l 6929 1684 l 6949 1670 l 6969 1658 l 6989 1647 l + 7009 1636 l 7028 1627 l 7048 1619 l 7067 1613 l 7086 1607 l + 7105 1603 l 7123 1600 l 7141 1598 l 7158 1597 l 7175 1598 l + 7192 1600 l 7207 1603 l 7222 1607 l 7236 1613 l 7250 1619 l + 7263 1627 l 7274 1636 l 7286 1647 l 7296 1658 l 7305 1670 l + 7314 1684 l 7321 1698 l 7328 1714 l 7334 1731 l 7339 1748 l + 7343 1766 l 7346 1786 l 7348 1806 l 7350 1828 l + cp gs col0 s gr +% Polyline +n 6350 1000 m 6377 1009 l 6406 1018 l 6437 1026 l 6469 1034 l 6502 1042 l + 6537 1049 l 6574 1055 l 6612 1061 l 6651 1066 l 6692 1071 l + 6734 1076 l 6777 1080 l 6821 1083 l 6865 1086 l 6911 1088 l + 6957 1089 l 7003 1090 l 7050 1090 l 7097 1090 l 7143 1089 l + 7189 1088 l 7235 1086 l 7279 1083 l 7323 1080 l 7366 1076 l + 7408 1071 l 7449 1066 l 7488 1061 l 7526 1055 l 7563 1049 l + 7598 1042 l 7631 1034 l 7663 1026 l 7694 1018 l 7723 1009 l + 7750 1000 l 7772 992 l 7794 983 l 7814 974 l 7834 964 l + 7852 954 l 7869 944 l 7886 933 l 7902 922 l 7916 910 l + 7930 899 l 7942 886 l 7953 874 l 7964 861 l 7973 848 l + 7981 834 l 7987 820 l 7993 807 l 7997 793 l 8000 778 l + 8002 764 l 8003 750 l 8002 736 l 8000 722 l 7997 707 l + 7993 693 l 7987 680 l 7981 666 l 7973 652 l 7964 639 l + 7953 626 l 7942 614 l 7930 601 l 7916 590 l 7902 578 l + 7886 567 l 7869 556 l 7852 546 l 7834 536 l 7814 526 l + 7794 517 l 7772 508 l 7750 500 l 7723 491 l 7694 482 l + 7663 474 l 7631 466 l 7598 458 l 7563 451 l 7526 445 l + 7488 439 l 7449 434 l 7408 429 l 7366 424 l 7323 420 l + 7279 417 l 7235 414 l 7189 412 l 7143 411 l 7097 410 l + 7050 410 l 7003 410 l 6957 411 l 6911 412 l 6865 414 l + 6821 417 l 6777 420 l 6734 424 l 6692 429 l 6651 434 l + 6612 439 l 6574 445 l 6537 451 l 6502 458 l 6469 466 l + 6437 474 l 6406 482 l 6377 491 l 6350 500 l 6328 508 l + 6306 517 l 6286 526 l 6266 536 l 6248 546 l 6231 556 l + 6214 567 l 6198 578 l 6184 590 l 6170 601 l 6158 614 l + 6147 626 l 6136 639 l 6127 652 l 6119 666 l 6113 680 l + 6107 693 l 6103 707 l 6100 722 l 6098 736 l 6097 750 l + 6098 764 l 6100 778 l 6103 793 l 6107 807 l 6113 820 l + 6119 834 l 6127 848 l 6136 861 l 6147 874 l 6158 886 l + 6170 899 l 6184 910 l 6198 922 l 6214 933 l 6231 944 l + 6248 954 l 6266 964 l 6286 974 l 6306 983 l 6328 992 l + + cp gs col0 s gr +% Polyline +n 8550 1850 m 8549 1876 l 8548 1903 l 8545 1932 l 8541 1962 l 8536 1993 l + 8530 2026 l 8523 2060 l 8515 2096 l 8506 2132 l 8495 2170 l + 8484 2209 l 8471 2249 l 8458 2290 l 8444 2332 l 8428 2375 l + 8412 2418 l 8395 2462 l 8377 2506 l 8358 2550 l 8339 2594 l + 8319 2638 l 8299 2682 l 8278 2725 l 8257 2768 l 8236 2810 l + 8214 2851 l 8192 2891 l 8170 2930 l 8148 2968 l 8125 3004 l + 8103 3040 l 8081 3074 l 8059 3107 l 8037 3138 l 8015 3168 l + 7993 3197 l 7972 3224 l 7950 3250 l 7930 3272 l 7911 3294 l + 7891 3314 l 7871 3334 l 7851 3352 l 7831 3369 l 7811 3386 l + 7791 3402 l 7771 3416 l 7751 3430 l 7731 3442 l 7711 3453 l + 7691 3464 l 7672 3473 l 7652 3481 l 7633 3487 l 7614 3493 l + 7595 3497 l 7577 3500 l 7559 3502 l 7542 3503 l 7525 3502 l + 7508 3500 l 7493 3497 l 7478 3493 l 7464 3487 l 7450 3481 l + 7437 3473 l 7426 3464 l 7414 3453 l 7404 3442 l 7395 3430 l + 7386 3416 l 7379 3402 l 7372 3386 l 7366 3369 l 7361 3352 l + 7357 3334 l 7354 3314 l 7352 3294 l 7350 3272 l 7350 3250 l + 7351 3224 l 7352 3197 l 7355 3168 l 7359 3138 l 7364 3107 l + 7370 3074 l 7377 3040 l 7385 3004 l 7394 2968 l 7405 2930 l + 7416 2891 l 7429 2851 l 7442 2810 l 7456 2768 l 7472 2725 l + 7488 2682 l 7505 2638 l 7523 2594 l 7542 2550 l 7561 2506 l + 7581 2462 l 7601 2418 l 7622 2375 l 7643 2332 l 7664 2290 l + 7686 2249 l 7708 2209 l 7730 2170 l 7752 2132 l 7775 2096 l + 7797 2060 l 7819 2026 l 7841 1993 l 7863 1962 l 7885 1932 l + 7907 1903 l 7928 1876 l 7950 1850 l 7970 1828 l 7989 1806 l + 8009 1786 l 8029 1766 l 8049 1748 l 8069 1731 l 8089 1714 l + 8109 1698 l 8129 1684 l 8149 1670 l 8169 1658 l 8189 1647 l + 8209 1636 l 8228 1627 l 8248 1619 l 8267 1613 l 8286 1607 l + 8305 1603 l 8323 1600 l 8341 1598 l 8358 1597 l 8375 1598 l + 8392 1600 l 8407 1603 l 8422 1607 l 8436 1613 l 8450 1619 l + 8463 1627 l 8474 1636 l 8486 1647 l 8496 1658 l 8505 1670 l + 8514 1684 l 8521 1698 l 8528 1714 l 8534 1731 l 8539 1748 l + 8543 1766 l 8546 1786 l 8548 1806 l 8550 1828 l + cp gs col0 s gr +/Courier ff 210.00 scf sf +600 5925 m +gs 1 -1 sc (rangtab) col0 sh gr +/Courier ff 210.00 scf sf +600 4125 m +gs 1 -1 sc (permtab) col0 sh gr +/Courier ff 210.00 scf sf +600 4725 m +gs 1 -1 sc (peritab) col0 sh gr +/Courier ff 210.00 scf sf +600 5325 m +gs 1 -1 sc (cblknbr) col0 sh gr +% here ends figure; +% +% here starts figure with depth 15 +% Polyline +7.500 slw +n 1800 5700 m 2100 5700 l 2100 6000 l 1800 6000 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2100 5700 m 2400 5700 l 2400 6000 l 2100 6000 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 5700 m 2700 5700 l 2700 6000 l 2400 6000 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +2500 5940 m +gs 1 -1 sc (4) col0 sh gr +% Polyline +n 2700 5700 m 3000 5700 l 3000 6000 l 2700 6000 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 5700 m 3300 5700 l 3300 6000 l 3000 6000 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3300 5700 m 3600 5700 l 3600 6000 l 3300 6000 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 3900 m 2100 3900 l 2100 4200 l 1800 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2100 3900 m 2400 3900 l 2400 4200 l 2100 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 3900 m 2700 3900 l 2700 4200 l 2400 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 3900 m 3000 3900 l 3000 4200 l 2700 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 3900 m 3300 3900 l 3300 4200 l 3000 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3300 3900 m 3600 3900 l 3600 4200 l 3300 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3400 4140 m +gs 1 -1 sc (4) col0 sh gr +% Polyline +n 3600 3900 m 3900 3900 l 3900 4200 l 3600 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3900 3900 m 4200 3900 l 4200 4200 l 3900 4200 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 4500 m 2100 4500 l 2100 4800 l 1800 4800 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2100 4500 m 2400 4500 l 2400 4800 l 2100 4800 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2400 4500 m 2700 4500 l 2700 4800 l 2400 4800 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 2700 4500 m 3000 4500 l 3000 4800 l 2700 4800 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3000 4500 m 3300 4500 l 3300 4800 l 3000 4800 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3300 4500 m 3600 4500 l 3600 4800 l 3300 4800 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3600 4500 m 3900 4500 l 3900 4800 l 3600 4800 l + cp gs col7 1.00 shd ef gr gs col0 s gr +/Times-Roman ff 240.00 scf sf +3700 4740 m +gs 1 -1 sc (4) col0 sh gr +% Polyline +n 3900 4500 m 4200 4500 l 4200 4800 l 3900 4800 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 1800 5100 m 2100 5100 l 2100 5400 l 1800 5400 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3600 5700 m 3900 5700 l 3900 6000 l 3600 6000 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 3900 5700 m 4200 5700 l 4200 6000 l 3900 6000 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +n 4200 5700 m 4500 5700 l 4500 6000 l 4200 6000 l + cp gs col7 1.00 shd ef gr gs col0 s gr +% here ends figure; +% +% here starts figure with depth 12 +% Ellipse +7.500 slw +n 2550 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 3150 750 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 1950 750 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 1350 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 3750 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 750 3150 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 3150 3150 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 1950 3150 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6450 750 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 7650 750 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 8250 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 5850 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 7650 3150 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 5250 3150 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 7050 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% Ellipse +n 6450 3150 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr + +% here ends figure; +% +% here starts figure with depth 10 +/Times-Roman ff 240.00 scf sf +2500 2040 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +3100 840 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 240.00 scf sf +1300 2040 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +3700 2040 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +700 3240 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +3100 3240 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +1900 3240 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +6400 840 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +7600 840 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +8200 2040 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +5800 2040 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 240.00 scf sf +7600 3240 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +5200 3240 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +7000 2040 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 240.00 scf sf +1900 5940 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +2200 5940 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 5940 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +3100 5940 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +3400 5940 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman ff 240.00 scf sf +1900 4140 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 240.00 scf sf +2200 4140 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 4140 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 4140 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +3100 4140 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +3700 4140 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +4000 4140 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +1900 4740 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +2200 4740 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 240.00 scf sf +2500 4740 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 240.00 scf sf +2800 4740 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 240.00 scf sf +3100 4740 m +gs 1 -1 sc (3) col0 sh gr +/Times-Roman ff 240.00 scf sf +3400 4740 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 240.00 scf sf +4000 4740 m +gs 1 -1 sc (1) col0 sh gr +/Times-Roman ff 240.00 scf sf +1900 5340 m +gs 1 -1 sc (5) col0 sh gr +% here ends figure; +% +% here starts figure with depth 8 +/Times-Roman ff 240.00 scf sf +1900 840 m +gs 1 -1 sc (7) col0 sh gr +/Times-Roman ff 240.00 scf sf +6400 3240 m +gs 1 -1 sc (7) col0 sh gr +% here ends figure; +$F2psEnd +rs +showpage diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_orf.fig scotch-6.0.6/doc/src/scotch/s_f_orf.fig --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_orf.fig 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_orf.fig 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,233 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +0 +1200 2 +6 600 600 3900 3300 +6 2400 1800 2700 2100 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 2550 1950 150 150 2550 1950 2700 1950 +4 0 0 10 0 0 16 0.0000 4 165 120 2500 2040 1\001 +-6 +6 3000 600 3300 900 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 3150 750 150 150 3150 750 3300 750 +4 0 0 10 0 0 16 0.0000 4 150 120 3100 840 8\001 +-6 +6 1800 600 2100 900 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 1950 750 150 150 1950 750 2100 750 +4 0 0 8 0 0 16 0.0000 4 150 120 1900 840 7\001 +-6 +6 1200 1800 1500 2100 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 1350 1950 150 150 1350 1950 1500 1950 +4 0 0 10 0 0 16 0.0000 4 165 120 1300 2040 6\001 +-6 +6 3600 1800 3900 2100 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 3750 1950 150 150 3750 1950 3900 1950 +4 0 0 10 0 0 16 0.0000 4 150 120 3700 2040 2\001 +-6 +6 600 3000 900 3300 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 750 3150 150 150 750 3150 900 3150 +4 0 0 10 0 0 16 0.0000 4 150 120 700 3240 5\001 +-6 +6 3000 3000 3300 3300 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 3150 3150 150 150 3150 3150 3300 3150 +4 0 0 10 0 0 16 0.0000 4 150 120 3100 3240 3\001 +-6 +6 1800 3000 2100 3300 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 1950 3150 150 150 1950 3150 2100 3150 +4 0 0 10 0 0 16 0.0000 4 150 120 1900 3240 4\001 +-6 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 + 3750 1950 3150 3150 +2 1 0 1 0 7 20 0 -1 0.000 0 0 7 0 0 8 + 1350 1950 1950 750 2550 1950 1350 1950 1950 3150 2550 1950 + 3150 750 1950 750 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 4 + 1950 3150 3150 3150 2550 1950 3750 1950 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 3 + 1950 3150 750 3150 1350 1950 +-6 +6 4875 375 8850 3600 +6 5100 600 8400 3300 +6 6300 600 6600 900 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6450 750 150 150 6450 750 6600 750 +4 0 0 10 0 0 16 0.0000 4 165 120 6400 840 1\001 +-6 +6 7500 600 7800 900 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7650 750 150 150 7650 750 7800 750 +4 0 0 10 0 0 16 0.0000 4 150 120 7600 840 2\001 +-6 +6 8100 1800 8400 2100 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8250 1950 150 150 8250 1950 8400 1950 +4 0 0 10 0 0 16 0.0000 4 165 120 8200 2040 6\001 +-6 +6 5700 1800 6000 2100 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 5850 1950 150 150 5850 1950 6000 1950 +4 0 0 10 0 0 16 0.0000 4 150 120 5800 2040 4\001 +-6 +6 7500 3000 7800 3300 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7650 3150 150 150 7650 3150 7800 3150 +4 0 0 10 0 0 16 0.0000 4 150 120 7600 3240 5\001 +-6 +6 5100 3000 5400 3300 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 5250 3150 150 150 5250 3150 5400 3150 +4 0 0 10 0 0 16 0.0000 4 150 120 5200 3240 3\001 +-6 +6 6900 1800 7200 2100 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7050 1950 150 150 7050 1950 7200 1950 +4 0 0 10 0 0 16 0.0000 4 150 120 7000 2040 8\001 +-6 +6 6300 3000 6600 3300 +1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6450 3150 150 150 6450 3150 6600 3150 +4 0 0 8 0 0 16 0.0000 4 150 120 6400 3240 7\001 +-6 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 + 8250 1950 7650 3150 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 4 + 6450 3150 7650 3150 7050 1950 8250 1950 +2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 3 + 6450 3150 5250 3150 5850 1950 +2 1 0 1 0 7 20 0 -1 0.000 0 0 7 0 0 8 + 5850 1950 6450 750 7050 1950 5850 1950 6450 3150 7050 1950 + 7650 750 6450 750 +-6 +1 3 0 1 0 7 20 0 -1 0.000 1 0.0000 5850 1950 382 382 5850 1950 6225 2025 +1 3 0 1 0 7 20 0 -1 0.000 1 0.0000 5250 3150 375 375 5250 3150 5625 3150 +3 1 0 1 0 7 20 0 -1 0.000 0 0 0 4 + 6750 1500 7650 1500 6750 3600 5850 3600 + 1.000 1.000 1.000 1.000 +3 1 0 1 0 7 20 0 -1 0.000 0 0 0 4 + 6000 375 6000 1125 8100 1125 8100 375 + 1.000 1.000 1.000 1.000 +3 1 0 1 0 7 20 0 -1 0.000 0 0 0 4 + 7950 1500 8850 1500 7950 3600 7050 3600 + 1.000 1.000 1.000 1.000 +-6 +6 1800 5700 2100 6000 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 5700 2100 5700 2100 6000 1800 6000 1800 5700 +4 0 0 10 0 0 16 0.0000 4 165 120 1900 5940 1\001 +-6 +6 2100 5700 2400 6000 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 5700 2400 5700 2400 6000 2100 6000 2100 5700 +4 0 0 10 0 0 16 0.0000 4 150 120 2200 5940 3\001 +-6 +6 2400 5700 2700 6000 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 5700 2700 5700 2700 6000 2400 6000 2400 5700 +4 0 0 15 0 0 16 0.0000 4 150 120 2500 5940 4\001 +-6 +6 2700 5700 3000 6000 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 5700 3000 5700 3000 6000 2700 6000 2700 5700 +4 0 0 10 0 0 16 0.0000 4 150 120 2800 5940 5\001 +-6 +6 3000 5700 3300 6000 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 5700 3300 5700 3300 6000 3000 6000 3000 5700 +4 0 0 10 0 0 16 0.0000 4 150 120 3100 5940 7\001 +-6 +6 3300 5700 3600 6000 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 5700 3600 5700 3600 6000 3300 6000 3300 5700 +4 0 0 10 0 0 16 0.0000 4 150 120 3400 5940 9\001 +-6 +6 1800 3900 2100 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 3900 2100 3900 2100 4200 1800 4200 1800 3900 +4 0 0 10 0 0 16 0.0000 4 150 120 1900 4140 8\001 +-6 +6 2100 3900 2400 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 3900 2400 3900 2400 4200 2100 4200 2100 3900 +4 0 0 10 0 0 16 0.0000 4 165 120 2200 4140 6\001 +-6 +6 2400 3900 2700 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 3900 2700 3900 2700 4200 2400 4200 2400 3900 +4 0 0 10 0 0 16 0.0000 4 150 120 2500 4140 5\001 +-6 +6 2700 3900 3000 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 3900 3000 3900 3000 4200 2700 4200 2700 3900 +4 0 0 10 0 0 16 0.0000 4 150 120 2800 4140 7\001 +-6 +6 3000 3900 3300 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 3900 3300 3900 3300 4200 3000 4200 3000 3900 +4 0 0 10 0 0 16 0.0000 4 150 120 3100 4140 3\001 +-6 +6 3300 3900 3600 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 3900 3600 3900 3600 4200 3300 4200 3300 3900 +4 0 0 15 0 0 16 0.0000 4 150 120 3400 4140 4\001 +-6 +6 3600 3900 3900 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 3900 3900 3900 3900 4200 3600 4200 3600 3900 +4 0 0 10 0 0 16 0.0000 4 165 120 3700 4140 1\001 +-6 +6 3900 3900 4200 4200 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3900 3900 4200 3900 4200 4200 3900 4200 3900 3900 +4 0 0 10 0 0 16 0.0000 4 150 120 4000 4140 2\001 +-6 +6 1800 4500 2100 4800 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 4500 2100 4500 2100 4800 1800 4800 1800 4500 +4 0 0 10 0 0 16 0.0000 4 150 120 1900 4740 7\001 +-6 +6 2100 4500 2400 4800 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2100 4500 2400 4500 2400 4800 2100 4800 2100 4500 +4 0 0 10 0 0 16 0.0000 4 150 120 2200 4740 8\001 +-6 +6 2400 4500 2700 4800 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2400 4500 2700 4500 2700 4800 2400 4800 2400 4500 +4 0 0 10 0 0 16 0.0000 4 150 120 2500 4740 5\001 +-6 +6 2700 4500 3000 4800 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 2700 4500 3000 4500 3000 4800 2700 4800 2700 4500 +4 0 0 10 0 0 16 0.0000 4 165 120 2800 4740 6\001 +-6 +6 3000 4500 3300 4800 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3000 4500 3300 4500 3300 4800 3000 4800 3000 4500 +4 0 0 10 0 0 16 0.0000 4 150 120 3100 4740 3\001 +-6 +6 3300 4500 3600 4800 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3300 4500 3600 4500 3600 4800 3300 4800 3300 4500 +4 0 0 10 0 0 16 0.0000 4 150 120 3400 4740 2\001 +-6 +6 3600 4500 3900 4800 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 4500 3900 4500 3900 4800 3600 4800 3600 4500 +4 0 0 15 0 0 16 0.0000 4 150 120 3700 4740 4\001 +-6 +6 3900 4500 4200 4800 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3900 4500 4200 4500 4200 4800 3900 4800 3900 4500 +4 0 0 10 0 0 16 0.0000 4 165 120 4000 4740 1\001 +-6 +6 1800 5100 2100 5400 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 1800 5100 2100 5100 2100 5400 1800 5400 1800 5100 +4 0 0 10 0 0 16 0.0000 4 150 120 1900 5340 5\001 +-6 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3600 5700 3900 5700 3900 6000 3600 6000 3600 5700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 3900 5700 4200 5700 4200 6000 3900 6000 3900 5700 +2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 + 4200 5700 4500 5700 4500 6000 4200 6000 4200 5700 +4 0 0 20 0 12 14 0.0000 4 195 945 600 5925 rangtab\001 +4 0 0 20 0 12 14 0.0000 4 195 945 600 4125 permtab\001 +4 0 0 20 0 12 14 0.0000 4 195 945 600 4725 peritab\001 +4 0 0 20 0 12 14 0.0000 4 150 945 600 5325 cblknbr\001 diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_out1.ps scotch-6.0.6/doc/src/scotch/s_f_out1.ps --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_out1.ps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_out1.ps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,38 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: s_f_out2.src s_f_out.xyz - +%%Creator: out (F. Pellegrini, LaBRI, Bordeaux) +%%CreationDate: Tue Oct 3 15:47:42 1995 +%%BoundingBox: 0 0 475 475 +%%Pages: 0 +%%EndComments +/A { 0 360 arc fill } bind def +/c { setrgbcolor } bind def +/g { setgray } bind def +/L { lineto stroke } bind def +/l { lineto } bind def +/m { moveto } bind def +/n { newpath } bind def +gsave +1 setlinecap +0.007200 0.007200 scale +n 0 0 m 66000 0 l 66000 66000 l 0 66000 l closepath clip +0 g +n 8250 57750 m 24750 57750 L +n 8250 57750 m 8250 41250 L +n 24750 57750 m 24750 41250 L +n 57750 57750 m 57750 41250 L +n 8250 41250 m 24750 41250 L +n 8250 41250 m 8250 24750 L +n 24750 41250 m 24750 24750 L +n 57750 41250 m 57750 24750 L +n 8250 24750 m 24750 24750 L +n 8250 24750 m 8250 8250 L +n 24750 24750 m 41250 24750 L +n 24750 24750 m 24750 8250 L +n 41250 24750 m 57750 24750 L +n 41250 24750 m 41250 8250 L +n 57750 24750 m 57750 8250 L +n 8250 8250 m 24750 8250 L +n 24750 8250 m 41250 8250 L +n 41250 8250 m 57750 8250 L +grestore diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_out1.src scotch-6.0.6/doc/src/scotch/s_f_out1.src --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_out1.src 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_out1.src 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,17 @@ +16 48 +0 1 2 1 1 1 4 +1 1 3 1 0 1 2 1 5 +2 1 3 1 1 1 3 1 6 +3 1 2 1 2 1 7 +4 1 3 1 0 1 5 1 8 +5 1 4 1 1 1 4 1 6 1 9 +6 1 4 1 2 1 5 1 7 1 10 +7 1 3 1 3 1 6 1 11 +8 1 3 1 4 1 9 1 12 +9 1 4 1 5 1 8 1 10 1 13 +10 1 4 1 6 1 9 1 11 1 14 +11 1 3 1 7 1 10 1 15 +12 1 2 1 8 1 13 +13 1 3 1 9 1 12 1 14 +14 1 3 1 10 1 13 1 15 +15 1 2 1 11 1 14 diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_out2.map scotch-6.0.6/doc/src/scotch/s_f_out2.map --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_out2.map 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_out2.map 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,15 @@ +14 + 0 1 + 1 1 + 3 0 + 4 1 + 5 1 + 7 0 + 8 1 + 9 1 + 10 0 + 11 0 + 12 1 + 13 0 + 14 0 + 15 0 diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_out2.ps scotch-6.0.6/doc/src/scotch/s_f_out2.ps --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_out2.ps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_out2.ps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,67 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: s_f_out1.src s_f_out.xyz s_f_out2.map +%%Creator: out (F. Pellegrini, LaBRI, Bordeaux) +%%CreationDate: Tue Oct 3 15:43:56 1995 +%%BoundingBox: 0 0 475 475 +%%Pages: 0 +%%EndComments +/A { 0 360 arc fill } bind def +/c { setrgbcolor } bind def +/g { setgray } bind def +/L { lineto stroke } bind def +/l { lineto } bind def +/m { moveto } bind def +/n { newpath } bind def +gsave +1 setlinecap +0.007200 0.007200 scale +n 0 0 m 66000 0 l 66000 66000 l 0 66000 l closepath clip +0 g +n 8250 57750 m 24750 57750 L +n 8250 57750 m 8250 41250 L +n 24750 57750 m 41250 57750 L +n 24750 57750 m 24750 41250 L +n 41250 57750 m 57750 57750 L +n 41250 57750 m 41250 41250 L +n 57750 57750 m 57750 41250 L +n 8250 41250 m 24750 41250 L +n 8250 41250 m 8250 24750 L +n 24750 41250 m 41250 41250 L +n 24750 41250 m 24750 24750 L +n 41250 41250 m 57750 41250 L +n 41250 41250 m 41250 24750 L +n 57750 41250 m 57750 24750 L +n 8250 24750 m 24750 24750 L +n 8250 24750 m 8250 8250 L +n 24750 24750 m 41250 24750 L +n 24750 24750 m 24750 8250 L +n 41250 24750 m 57750 24750 L +n 41250 24750 m 41250 8250 L +n 57750 24750 m 57750 8250 L +n 8250 8250 m 24750 8250 L +n 24750 8250 m 41250 8250 L +n 41250 8250 m 57750 8250 L +0 0 0 c +n 8250 57750 8249 A +0 0 0 c +n 24750 57750 8249 A +1 0.5 0.5 c +n 57750 57750 8249 A +0 0 0 c +n 8250 41250 8249 A +n 24750 41250 8249 A +1 0.5 0.5 c +n 57750 41250 8249 A +0 0 0 c +n 8250 24750 8249 A +n 24750 24750 8249 A +1 0.5 0.5 c +n 41250 24750 8249 A +n 57750 24750 8249 A +0 0 0 c +n 8250 8250 8249 A +1 0.5 0.5 c +n 24750 8250 8249 A +n 41250 8250 8249 A +n 57750 8250 8249 A +grestore diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_out2.src scotch-6.0.6/doc/src/scotch/s_f_out2.src --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_out2.src 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_out2.src 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,15 @@ +14 36 +0 1 2 1 1 1 4 +1 1 2 1 0 1 5 +3 1 1 1 7 +4 1 3 1 0 1 5 1 8 +5 1 3 1 1 1 4 1 9 +7 1 2 1 3 1 11 +8 1 3 1 4 1 9 1 12 +9 1 4 1 5 1 8 1 10 1 13 +10 1 3 1 9 1 11 1 14 +11 1 3 1 7 1 10 1 15 +12 1 2 1 8 1 13 +13 1 3 1 9 1 12 1 14 +14 1 3 1 10 1 13 1 15 +15 1 2 1 11 1 14 diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_out3.ps scotch-6.0.6/doc/src/scotch/s_f_out3.ps --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_out3.ps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_out3.ps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,50 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: s_f_out3.src s_f_out.xyz s_f_out2.map +%%Creator: out (F. Pellegrini, LaBRI, Bordeaux) +%%CreationDate: Tue Oct 3 15:48:38 1995 +%%BoundingBox: 0 0 475 475 +%%Pages: 0 +%%EndComments +/A { 0 360 arc fill } bind def +/c { setrgbcolor } bind def +/g { setgray } bind def +/L { lineto stroke } bind def +/l { lineto } bind def +/m { moveto } bind def +/n { newpath } bind def +gsave +1 setlinecap +0.007200 0.007200 scale +n 0 0 m 66000 0 l 66000 66000 l 0 66000 l closepath clip +0 g +n 8250 57750 m 24750 57750 L +n 8250 57750 m 8250 41250 L +n 24750 57750 m 24750 41250 L +n 57750 57750 m 57750 41250 L +n 8250 41250 m 24750 41250 L +n 24750 41250 m 24750 24750 L +n 57750 41250 m 57750 24750 L +n 24750 24750 m 41250 24750 L +n 41250 24750 m 57750 24750 L +n 41250 24750 m 41250 8250 L +n 57750 24750 m 57750 8250 L +n 41250 8250 m 57750 8250 L +0 0 0 c +n 8250 57750 8249 A +0 0 0 c +n 24750 57750 8249 A +1 0.5 0.5 c +n 57750 57750 8249 A +0 0 0 c +n 8250 41250 8249 A +n 24750 41250 8249 A +1 0.5 0.5 c +n 57750 41250 8249 A +0 0 0 c +n 24750 24750 8250 A +1 0.5 0.5 c +n 41250 24750 8249 A +n 57750 24750 8249 A +n 41250 8250 8249 A +n 57750 8250 8249 A +grestore diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_out3.src scotch-6.0.6/doc/src/scotch/s_f_out3.src --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_out3.src 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_out3.src 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,12 @@ +11 24 +0 1 2 1 1 1 4 +1 1 2 1 0 1 5 +3 1 1 1 7 +4 1 2 1 0 1 5 +5 1 3 1 1 1 4 1 9 +7 1 2 1 3 1 11 +9 1 2 1 5 1 10 +10 1 3 1 9 1 11 1 14 +11 1 3 1 7 1 10 1 15 +14 1 2 1 10 1 15 +15 1 2 1 11 1 14 diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_out.xyz scotch-6.0.6/doc/src/scotch/s_f_out.xyz --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_out.xyz 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_out.xyz 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,18 @@ +2 +16 +0 0 3 +1 1 3 +2 2 3 +3 3 3 +4 0 2 +5 1 2 +6 2 2 +7 3 2 +8 0 1 +9 1 1 +10 2 1 +11 3 1 +12 0 0 +13 1 0 +14 2 0 +15 3 0 diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_rua.eps scotch-6.0.6/doc/src/scotch/s_f_rua.eps --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_rua.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_rua.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,508 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: stdin +%%Creator: fig2dev Version 3.2 Patchlevel 3c +%%CreationDate: Wed May 16 15:53:26 2001 +%%For: pelegrin@trol.labri.fr (Francois PELLEGRINI) +%%BoundingBox: 0 0 304 303 +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 303 moveto 0 0 lineto 304 0 lineto 304 303 lineto closepath clip newpath +-58.0 360.0 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +%%Page: 1 1 +10 setmiterlimit + 0.06000 0.06000 sc +% +% Fig objects follow +% +% Polyline +7.500 slw + [15 45] 45 sd +n 1575 1125 m + 5775 1125 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1575 1725 m + 5775 1725 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1575 2925 m + 5775 2925 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1575 3525 m + 5775 3525 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1575 4125 m + 5775 4125 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1575 2325 m + 5775 2325 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1575 4725 m + 5775 4725 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1575 5325 m + 5775 5325 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1575 1125 m + 1575 5325 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2175 1125 m + 2175 5325 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2775 1125 m + 2775 5325 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3375 1125 m + 3375 5325 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3975 1125 m + 3975 5325 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4575 1125 m + 4575 5325 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5175 1125 m + 5175 5325 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5775 1125 m + 5775 5325 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1725 5475 m 1725 5175 l 1425 5175 l 1425 5475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1725 4875 m 1725 4575 l 1425 4575 l 1425 4875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1725 4275 m 1725 3975 l 1425 3975 l 1425 4275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1725 3675 m 1725 3375 l 1425 3375 l 1425 3675 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1725 3075 m 1725 2775 l 1425 2775 l 1425 3075 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1725 2475 m 1725 2175 l 1425 2175 l 1425 2475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1725 1875 m 1725 1575 l 1425 1575 l 1425 1875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1725 1275 m 1725 975 l 1425 975 l 1425 1275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2325 5475 m 2325 5175 l 2025 5175 l 2025 5475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2325 4875 m 2325 4575 l 2025 4575 l 2025 4875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2325 4275 m 2325 3975 l 2025 3975 l 2025 4275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2325 3675 m 2325 3375 l 2025 3375 l 2025 3675 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2325 3075 m 2325 2775 l 2025 2775 l 2025 3075 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2325 2475 m 2325 2175 l 2025 2175 l 2025 2475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2325 1875 m 2325 1575 l 2025 1575 l 2025 1875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2325 1275 m 2325 975 l 2025 975 l 2025 1275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3525 5475 m 3525 5175 l 3225 5175 l 3225 5475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3525 4875 m 3525 4575 l 3225 4575 l 3225 4875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3525 4275 m 3525 3975 l 3225 3975 l 3225 4275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3525 3675 m 3525 3375 l 3225 3375 l 3225 3675 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3525 3075 m 3525 2775 l 3225 2775 l 3225 3075 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3525 2475 m 3525 2175 l 3225 2175 l 3225 2475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3525 1875 m 3525 1575 l 3225 1575 l 3225 1875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3525 1275 m 3525 975 l 3225 975 l 3225 1275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4125 5475 m 4125 5175 l 3825 5175 l 3825 5475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4125 4875 m 4125 4575 l 3825 4575 l 3825 4875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4125 4275 m 4125 3975 l 3825 3975 l 3825 4275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4125 3675 m 4125 3375 l 3825 3375 l 3825 3675 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4125 3075 m 4125 2775 l 3825 2775 l 3825 3075 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4125 2475 m 4125 2175 l 3825 2175 l 3825 2475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4125 1875 m 4125 1575 l 3825 1575 l 3825 1875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4125 1275 m 4125 975 l 3825 975 l 3825 1275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4725 5475 m 4725 5175 l 4425 5175 l 4425 5475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4725 4875 m 4725 4575 l 4425 4575 l 4425 4875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4725 4275 m 4725 3975 l 4425 3975 l 4425 4275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4725 3675 m 4725 3375 l 4425 3375 l 4425 3675 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4725 3075 m 4725 2775 l 4425 2775 l 4425 3075 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4725 2475 m 4725 2175 l 4425 2175 l 4425 2475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4725 1875 m 4725 1575 l 4425 1575 l 4425 1875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4725 1275 m 4725 975 l 4425 975 l 4425 1275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5325 5475 m 5325 5175 l 5025 5175 l 5025 5475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5325 4875 m 5325 4575 l 5025 4575 l 5025 4875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5325 4275 m 5325 3975 l 5025 3975 l 5025 4275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5325 3675 m 5325 3375 l 5025 3375 l 5025 3675 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5325 3075 m 5325 2775 l 5025 2775 l 5025 3075 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5325 2475 m 5325 2175 l 5025 2175 l 5025 2475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5325 1875 m 5325 1575 l 5025 1575 l 5025 1875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5325 1275 m 5325 975 l 5025 975 l 5025 1275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5925 5475 m 5925 5175 l 5625 5175 l 5625 5475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5925 4875 m 5925 4575 l 5625 4575 l 5625 4875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5925 4275 m 5925 3975 l 5625 3975 l 5625 4275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5925 3675 m 5925 3375 l 5625 3375 l 5625 3675 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5925 3075 m 5925 2775 l 5625 2775 l 5625 3075 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5925 2475 m 5925 2175 l 5625 2175 l 5625 2475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5925 1875 m 5925 1575 l 5625 1575 l 5625 1875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5925 1275 m 5925 975 l 5625 975 l 5625 1275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2925 5475 m 2925 5175 l 2625 5175 l 2625 5475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2925 4875 m 2925 4575 l 2625 4575 l 2625 4875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2925 4275 m 2925 3975 l 2625 3975 l 2625 4275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2925 3675 m 2925 3375 l 2625 3375 l 2625 3675 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2925 3075 m 2925 2775 l 2625 2775 l 2625 3075 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2925 2475 m 2925 2175 l 2625 2175 l 2625 2475 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2925 1875 m 2925 1575 l 2625 1575 l 2625 1875 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2925 1275 m 2925 975 l 2625 975 l 2625 1275 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +/Times-Roman ff 300.00 scf sf +2325 5925 m +gs 1 -1 sc (D) col-1 sh gr +/Times-Roman ff 240.00 scf sf +2550 6000 m +gs 1 -1 sc (0) col-1 sh gr +/Times-Roman ff 300.00 scf sf +4725 5925 m +gs 1 -1 sc (D) col-1 sh gr +/Times-Roman ff 240.00 scf sf +4950 6000 m +gs 1 -1 sc (1) col-1 sh gr +% Ellipse +n 1875 3825 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 2775 1725 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 2475 5025 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 4875 2025 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 5475 3825 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 2475 4425 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Polyline +15.000 slw + [90] 0 sd +n 3675 3375 m + 3675 5475 l gs col-1 s gr [] 0 sd +% Polyline +n 3600 3375 m + 3750 3375 l gs col-1 s gr +% Polyline +n 3600 5475 m + 3750 5475 l gs col-1 s gr +% Polyline +n 1455 3300 m 1350 3300 1350 5445 105 arcto 4 {pop} repeat + 1350 5550 5895 5550 105 arcto 4 {pop} repeat + 6000 5550 6000 3405 105 arcto 4 {pop} repeat + 6000 3300 1455 3300 105 arcto 4 {pop} repeat + cp gs col-1 s gr +% Polyline +n 2655 1500 m 2550 1500 2550 1845 105 arcto 4 {pop} repeat + 2550 1950 2895 1950 105 arcto 4 {pop} repeat + 3000 1950 3000 1605 105 arcto 4 {pop} repeat + 3000 1500 2655 1500 105 arcto 4 {pop} repeat + cp gs col-1 s gr +% Polyline +n 4455 1500 m 4350 1500 4350 2445 105 arcto 4 {pop} repeat + 4350 2550 5295 2550 105 arcto 4 {pop} repeat + 5400 2550 5400 1605 105 arcto 4 {pop} repeat + 5400 1500 4455 1500 105 arcto 4 {pop} repeat + cp gs col-1 s gr +% Polyline +n 2475 4425 m + 2775 1725 l gs col-1 s gr +% Polyline +n 2475 4425 m + 4875 2025 l gs col-1 s gr +% Polyline +45.000 slw +n 2475 4425 m + 5475 3825 l gs col-1 s gr +% Polyline + [15 90] 90 sd +n 2475 4425 m + 2475 5025 l gs col-1 s gr [] 0 sd +% Polyline + [15 90] 90 sd +n 2475 4425 m + 1875 3825 l gs col-1 s gr [] 0 sd +/Times-Roman ff 300.00 scf sf +975 4500 m +gs 1 -1 sc (D) col-1 sh gr +$F2psEnd +rs diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_rua.fig scotch-6.0.6/doc/src/scotch/s_f_rua.fig --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_rua.fig 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_rua.fig 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,226 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +0 +1200 2 +6 1425 975 5925 5475 +6 1575 1125 5775 5325 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1575 1125 5775 1125 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1575 1725 5775 1725 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1575 2925 5775 2925 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1575 3525 5775 3525 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1575 4125 5775 4125 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1575 2325 5775 2325 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1575 4725 5775 4725 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1575 5325 5775 5325 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1575 1125 1575 5325 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 2175 1125 2175 5325 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 2775 1125 2775 5325 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 3375 1125 3375 5325 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 3975 1125 3975 5325 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 4575 1125 4575 5325 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 5175 1125 5175 5325 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 5775 1125 5775 5325 +-6 +6 1425 975 1725 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1725 5475 1725 5175 1425 5175 1425 5475 1725 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1725 4875 1725 4575 1425 4575 1425 4875 1725 4875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1725 4275 1725 3975 1425 3975 1425 4275 1725 4275 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1725 3675 1725 3375 1425 3375 1425 3675 1725 3675 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1725 3075 1725 2775 1425 2775 1425 3075 1725 3075 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1725 2475 1725 2175 1425 2175 1425 2475 1725 2475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1725 1875 1725 1575 1425 1575 1425 1875 1725 1875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1725 1275 1725 975 1425 975 1425 1275 1725 1275 +-6 +6 2025 975 2325 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2325 5475 2325 5175 2025 5175 2025 5475 2325 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2325 4875 2325 4575 2025 4575 2025 4875 2325 4875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2325 4275 2325 3975 2025 3975 2025 4275 2325 4275 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2325 3675 2325 3375 2025 3375 2025 3675 2325 3675 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2325 3075 2325 2775 2025 2775 2025 3075 2325 3075 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2325 2475 2325 2175 2025 2175 2025 2475 2325 2475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2325 1875 2325 1575 2025 1575 2025 1875 2325 1875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2325 1275 2325 975 2025 975 2025 1275 2325 1275 +-6 +6 3225 975 3525 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3525 5475 3525 5175 3225 5175 3225 5475 3525 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3525 4875 3525 4575 3225 4575 3225 4875 3525 4875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3525 4275 3525 3975 3225 3975 3225 4275 3525 4275 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3525 3675 3525 3375 3225 3375 3225 3675 3525 3675 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3525 3075 3525 2775 3225 2775 3225 3075 3525 3075 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3525 2475 3525 2175 3225 2175 3225 2475 3525 2475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3525 1875 3525 1575 3225 1575 3225 1875 3525 1875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3525 1275 3525 975 3225 975 3225 1275 3525 1275 +-6 +6 3825 975 4125 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4125 5475 4125 5175 3825 5175 3825 5475 4125 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4125 4875 4125 4575 3825 4575 3825 4875 4125 4875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4125 4275 4125 3975 3825 3975 3825 4275 4125 4275 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4125 3675 4125 3375 3825 3375 3825 3675 4125 3675 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4125 3075 4125 2775 3825 2775 3825 3075 4125 3075 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4125 2475 4125 2175 3825 2175 3825 2475 4125 2475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4125 1875 4125 1575 3825 1575 3825 1875 4125 1875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4125 1275 4125 975 3825 975 3825 1275 4125 1275 +-6 +6 4425 975 4725 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4725 5475 4725 5175 4425 5175 4425 5475 4725 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4725 4875 4725 4575 4425 4575 4425 4875 4725 4875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4725 4275 4725 3975 4425 3975 4425 4275 4725 4275 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4725 3675 4725 3375 4425 3375 4425 3675 4725 3675 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4725 3075 4725 2775 4425 2775 4425 3075 4725 3075 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4725 2475 4725 2175 4425 2175 4425 2475 4725 2475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4725 1875 4725 1575 4425 1575 4425 1875 4725 1875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4725 1275 4725 975 4425 975 4425 1275 4725 1275 +-6 +6 5025 975 5325 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5325 5475 5325 5175 5025 5175 5025 5475 5325 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5325 4875 5325 4575 5025 4575 5025 4875 5325 4875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5325 4275 5325 3975 5025 3975 5025 4275 5325 4275 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5325 3675 5325 3375 5025 3375 5025 3675 5325 3675 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5325 3075 5325 2775 5025 2775 5025 3075 5325 3075 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5325 2475 5325 2175 5025 2175 5025 2475 5325 2475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5325 1875 5325 1575 5025 1575 5025 1875 5325 1875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5325 1275 5325 975 5025 975 5025 1275 5325 1275 +-6 +6 5625 975 5925 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5925 5475 5925 5175 5625 5175 5625 5475 5925 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5925 4875 5925 4575 5625 4575 5625 4875 5925 4875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5925 4275 5925 3975 5625 3975 5625 4275 5925 4275 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5925 3675 5925 3375 5625 3375 5625 3675 5925 3675 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5925 3075 5925 2775 5625 2775 5625 3075 5925 3075 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5925 2475 5925 2175 5625 2175 5625 2475 5925 2475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5925 1875 5925 1575 5625 1575 5625 1875 5925 1875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5925 1275 5925 975 5625 975 5625 1275 5925 1275 +-6 +6 2625 975 2925 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2925 5475 2925 5175 2625 5175 2625 5475 2925 5475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2925 4875 2925 4575 2625 4575 2625 4875 2925 4875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2925 4275 2925 3975 2625 3975 2625 4275 2925 4275 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2925 3675 2925 3375 2625 3375 2625 3675 2925 3675 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2925 3075 2925 2775 2625 2775 2625 3075 2925 3075 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2925 2475 2925 2175 2625 2175 2625 2475 2925 2475 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2925 1875 2925 1575 2625 1575 2625 1875 2925 1875 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2925 1275 2925 975 2625 975 2625 1275 2925 1275 +-6 +-6 +6 2325 5700 2700 6000 +4 0 -1 0 0 0 20 0.0000 4 210 210 2325 5925 D\001 +4 0 -1 0 0 0 16 0.0000 4 165 120 2550 6000 0\001 +-6 +6 4725 5700 5100 6000 +4 0 -1 0 0 0 20 0.0000 4 210 210 4725 5925 D\001 +4 0 -1 0 0 0 16 0.0000 4 165 120 4950 6000 1\001 +-6 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 1875 3825 75 75 1875 3825 1950 3900 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 2775 1725 75 75 2775 1725 2850 1800 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 2475 5025 75 75 2475 5025 2550 5100 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 4875 2025 75 75 4875 2025 4950 2100 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 5475 3825 75 75 5475 3825 5550 3900 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 2475 4425 75 75 2475 4425 2550 4500 +2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 + 3675 3375 3675 5475 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3600 3375 3750 3375 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3600 5475 3750 5475 +2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 + 6000 3300 1350 3300 1350 5550 6000 5550 6000 3300 +2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 + 3000 1500 2550 1500 2550 1950 3000 1950 3000 1500 +2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 + 5400 1500 4350 1500 4350 2550 5400 2550 5400 1500 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2475 4425 2775 1725 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2475 4425 4875 2025 +2 1 0 4 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2475 4425 5475 3825 +2 1 2 4 -1 -1 0 0 -1 6.000 0 0 7 0 0 2 + 2475 4425 2475 5025 +2 1 2 4 -1 -1 0 0 -1 6.000 0 0 7 0 0 2 + 2475 4425 1875 3825 +4 0 -1 0 0 0 20 0.0000 4 210 210 975 4500 D\001 diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_rub.eps scotch-6.0.6/doc/src/scotch/s_f_rub.eps --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_rub.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_rub.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,507 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: stdin +%%Creator: fig2dev Version 3.2 Patchlevel 3c +%%CreationDate: Wed May 16 15:53:26 2001 +%%For: pelegrin@trol.labri.fr (Francois PELLEGRINI) +%%BoundingBox: 0 0 304 303 +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 303 moveto 0 0 lineto 304 0 lineto 304 303 lineto closepath clip newpath +-53.0 329.0 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +%%Page: 1 1 +10 setmiterlimit + 0.06000 0.06000 sc +% +% Fig objects follow +% +% Polyline +7.500 slw + [15 45] 45 sd +n 1500 600 m + 5700 600 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1500 1200 m + 5700 1200 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1500 2400 m + 5700 2400 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1500 3000 m + 5700 3000 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1500 3600 m + 5700 3600 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1500 1800 m + 5700 1800 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1500 4200 m + 5700 4200 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1500 4800 m + 5700 4800 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1500 600 m + 1500 4800 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2100 600 m + 2100 4800 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2700 600 m + 2700 4800 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3300 600 m + 3300 4800 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3900 600 m + 3900 4800 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4500 600 m + 4500 4800 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5100 600 m + 5100 4800 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5700 600 m + 5700 4800 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1650 4950 m 1650 4650 l 1350 4650 l 1350 4950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1650 4350 m 1650 4050 l 1350 4050 l 1350 4350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1650 3750 m 1650 3450 l 1350 3450 l 1350 3750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1650 3150 m 1650 2850 l 1350 2850 l 1350 3150 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1650 2550 m 1650 2250 l 1350 2250 l 1350 2550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1650 1950 m 1650 1650 l 1350 1650 l 1350 1950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1650 1350 m 1650 1050 l 1350 1050 l 1350 1350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1650 750 m 1650 450 l 1350 450 l 1350 750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2250 4950 m 2250 4650 l 1950 4650 l 1950 4950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2250 4350 m 2250 4050 l 1950 4050 l 1950 4350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2250 3750 m 2250 3450 l 1950 3450 l 1950 3750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2250 3150 m 2250 2850 l 1950 2850 l 1950 3150 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2250 2550 m 2250 2250 l 1950 2250 l 1950 2550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2250 1950 m 2250 1650 l 1950 1650 l 1950 1950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2250 1350 m 2250 1050 l 1950 1050 l 1950 1350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2250 750 m 2250 450 l 1950 450 l 1950 750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3450 4950 m 3450 4650 l 3150 4650 l 3150 4950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3450 4350 m 3450 4050 l 3150 4050 l 3150 4350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3450 3750 m 3450 3450 l 3150 3450 l 3150 3750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3450 3150 m 3450 2850 l 3150 2850 l 3150 3150 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3450 2550 m 3450 2250 l 3150 2250 l 3150 2550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3450 1950 m 3450 1650 l 3150 1650 l 3150 1950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3450 1350 m 3450 1050 l 3150 1050 l 3150 1350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3450 750 m 3450 450 l 3150 450 l 3150 750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4050 4950 m 4050 4650 l 3750 4650 l 3750 4950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4050 4350 m 4050 4050 l 3750 4050 l 3750 4350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4050 3750 m 4050 3450 l 3750 3450 l 3750 3750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4050 3150 m 4050 2850 l 3750 2850 l 3750 3150 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4050 2550 m 4050 2250 l 3750 2250 l 3750 2550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4050 1950 m 4050 1650 l 3750 1650 l 3750 1950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4050 1350 m 4050 1050 l 3750 1050 l 3750 1350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4050 750 m 4050 450 l 3750 450 l 3750 750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4650 4950 m 4650 4650 l 4350 4650 l 4350 4950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4650 4350 m 4650 4050 l 4350 4050 l 4350 4350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4650 3750 m 4650 3450 l 4350 3450 l 4350 3750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4650 3150 m 4650 2850 l 4350 2850 l 4350 3150 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4650 2550 m 4650 2250 l 4350 2250 l 4350 2550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4650 1950 m 4650 1650 l 4350 1650 l 4350 1950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4650 1350 m 4650 1050 l 4350 1050 l 4350 1350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4650 750 m 4650 450 l 4350 450 l 4350 750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5250 4950 m 5250 4650 l 4950 4650 l 4950 4950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5250 4350 m 5250 4050 l 4950 4050 l 4950 4350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5250 3750 m 5250 3450 l 4950 3450 l 4950 3750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5250 3150 m 5250 2850 l 4950 2850 l 4950 3150 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5250 2550 m 5250 2250 l 4950 2250 l 4950 2550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5250 1950 m 5250 1650 l 4950 1650 l 4950 1950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5250 1350 m 5250 1050 l 4950 1050 l 4950 1350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5250 750 m 5250 450 l 4950 450 l 4950 750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5850 4950 m 5850 4650 l 5550 4650 l 5550 4950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5850 4350 m 5850 4050 l 5550 4050 l 5550 4350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5850 3750 m 5850 3450 l 5550 3450 l 5550 3750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5850 3150 m 5850 2850 l 5550 2850 l 5550 3150 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5850 2550 m 5850 2250 l 5550 2250 l 5550 2550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5850 1950 m 5850 1650 l 5550 1650 l 5550 1950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5850 1350 m 5850 1050 l 5550 1050 l 5550 1350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5850 750 m 5850 450 l 5550 450 l 5550 750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2850 4950 m 2850 4650 l 2550 4650 l 2550 4950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2850 4350 m 2850 4050 l 2550 4050 l 2550 4350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2850 3750 m 2850 3450 l 2550 3450 l 2550 3750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2850 3150 m 2850 2850 l 2550 2850 l 2550 3150 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2850 2550 m 2850 2250 l 2550 2250 l 2550 2550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2850 1950 m 2850 1650 l 2550 1650 l 2550 1950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2850 1350 m 2850 1050 l 2550 1050 l 2550 1350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2850 750 m 2850 450 l 2550 450 l 2550 750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +/Times-Roman ff 300.00 scf sf +2250 5400 m +gs 1 -1 sc (D) col-1 sh gr +/Times-Roman ff 240.00 scf sf +2475 5475 m +gs 1 -1 sc (0) col-1 sh gr +/Times-Roman ff 300.00 scf sf +4650 5400 m +gs 1 -1 sc (D) col-1 sh gr +/Times-Roman ff 240.00 scf sf +4875 5475 m +gs 1 -1 sc (1) col-1 sh gr +% Ellipse +n 1800 3300 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 2700 1200 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 2400 4500 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 4800 1500 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 5400 3300 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 4800 3900 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Polyline +15.000 slw + [90] 0 sd +n 3600 2850 m + 3600 4950 l gs col-1 s gr [] 0 sd +% Polyline +n 3525 2850 m + 3675 2850 l gs col-1 s gr +% Polyline +n 3525 4950 m + 3675 4950 l gs col-1 s gr +% Polyline +n 1380 2775 m 1275 2775 1275 4920 105 arcto 4 {pop} repeat + 1275 5025 5820 5025 105 arcto 4 {pop} repeat + 5925 5025 5925 2880 105 arcto 4 {pop} repeat + 5925 2775 1380 2775 105 arcto 4 {pop} repeat + cp gs col-1 s gr +% Polyline +n 2580 975 m 2475 975 2475 1320 105 arcto 4 {pop} repeat + 2475 1425 2820 1425 105 arcto 4 {pop} repeat + 2925 1425 2925 1080 105 arcto 4 {pop} repeat + 2925 975 2580 975 105 arcto 4 {pop} repeat + cp gs col-1 s gr +% Polyline +n 4380 975 m 4275 975 4275 1920 105 arcto 4 {pop} repeat + 4275 2025 5220 2025 105 arcto 4 {pop} repeat + 5325 2025 5325 1080 105 arcto 4 {pop} repeat + 5325 975 4380 975 105 arcto 4 {pop} repeat + cp gs col-1 s gr +% Polyline +n 4800 3900 m + 2700 1200 l gs col-1 s gr +% Polyline +n 4800 3900 m + 4800 1500 l gs col-1 s gr +% Polyline +45.000 slw +n 4800 3900 m + 1800 3300 l gs col-1 s gr +% Polyline +n 4800 3900 m + 2400 4500 l gs col-1 s gr +% Polyline + [15 90] 90 sd +n 4800 3900 m + 5400 3300 l gs col-1 s gr [] 0 sd +/Times-Roman ff 300.00 scf sf +900 3975 m +gs 1 -1 sc (D) col-1 sh gr +$F2psEnd +rs diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_rub.fig scotch-6.0.6/doc/src/scotch/s_f_rub.fig --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_rub.fig 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_rub.fig 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,228 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +0 +1200 2 +6 900 450 6000 5475 +6 1350 450 5850 4950 +6 1500 600 5700 4800 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 600 5700 600 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 1200 5700 1200 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 2400 5700 2400 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 3000 5700 3000 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 3600 5700 3600 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 1800 5700 1800 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 4200 5700 4200 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 4800 5700 4800 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 600 1500 4800 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 2100 600 2100 4800 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 2700 600 2700 4800 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 3300 600 3300 4800 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 3900 600 3900 4800 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 4500 600 4500 4800 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 5100 600 5100 4800 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 5700 600 5700 4800 +-6 +6 1350 450 1650 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1650 4950 1650 4650 1350 4650 1350 4950 1650 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1650 4350 1650 4050 1350 4050 1350 4350 1650 4350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1650 3750 1650 3450 1350 3450 1350 3750 1650 3750 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1650 3150 1650 2850 1350 2850 1350 3150 1650 3150 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1650 2550 1650 2250 1350 2250 1350 2550 1650 2550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1650 1950 1650 1650 1350 1650 1350 1950 1650 1950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1650 1350 1650 1050 1350 1050 1350 1350 1650 1350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1650 750 1650 450 1350 450 1350 750 1650 750 +-6 +6 1950 450 2250 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2250 4950 2250 4650 1950 4650 1950 4950 2250 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2250 4350 2250 4050 1950 4050 1950 4350 2250 4350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2250 3750 2250 3450 1950 3450 1950 3750 2250 3750 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2250 3150 2250 2850 1950 2850 1950 3150 2250 3150 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2250 2550 2250 2250 1950 2250 1950 2550 2250 2550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2250 1950 2250 1650 1950 1650 1950 1950 2250 1950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2250 1350 2250 1050 1950 1050 1950 1350 2250 1350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2250 750 2250 450 1950 450 1950 750 2250 750 +-6 +6 3150 450 3450 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3450 4950 3450 4650 3150 4650 3150 4950 3450 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3450 4350 3450 4050 3150 4050 3150 4350 3450 4350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3450 3750 3450 3450 3150 3450 3150 3750 3450 3750 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3450 3150 3450 2850 3150 2850 3150 3150 3450 3150 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3450 2550 3450 2250 3150 2250 3150 2550 3450 2550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3450 1950 3450 1650 3150 1650 3150 1950 3450 1950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3450 1350 3450 1050 3150 1050 3150 1350 3450 1350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3450 750 3450 450 3150 450 3150 750 3450 750 +-6 +6 3750 450 4050 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4050 4950 4050 4650 3750 4650 3750 4950 4050 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4050 4350 4050 4050 3750 4050 3750 4350 4050 4350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4050 3750 4050 3450 3750 3450 3750 3750 4050 3750 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4050 3150 4050 2850 3750 2850 3750 3150 4050 3150 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4050 2550 4050 2250 3750 2250 3750 2550 4050 2550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4050 1950 4050 1650 3750 1650 3750 1950 4050 1950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4050 1350 4050 1050 3750 1050 3750 1350 4050 1350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4050 750 4050 450 3750 450 3750 750 4050 750 +-6 +6 4350 450 4650 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4650 4950 4650 4650 4350 4650 4350 4950 4650 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4650 4350 4650 4050 4350 4050 4350 4350 4650 4350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4650 3750 4650 3450 4350 3450 4350 3750 4650 3750 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4650 3150 4650 2850 4350 2850 4350 3150 4650 3150 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4650 2550 4650 2250 4350 2250 4350 2550 4650 2550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4650 1950 4650 1650 4350 1650 4350 1950 4650 1950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4650 1350 4650 1050 4350 1050 4350 1350 4650 1350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4650 750 4650 450 4350 450 4350 750 4650 750 +-6 +6 4950 450 5250 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5250 4950 5250 4650 4950 4650 4950 4950 5250 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5250 4350 5250 4050 4950 4050 4950 4350 5250 4350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5250 3750 5250 3450 4950 3450 4950 3750 5250 3750 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5250 3150 5250 2850 4950 2850 4950 3150 5250 3150 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5250 2550 5250 2250 4950 2250 4950 2550 5250 2550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5250 1950 5250 1650 4950 1650 4950 1950 5250 1950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5250 1350 5250 1050 4950 1050 4950 1350 5250 1350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5250 750 5250 450 4950 450 4950 750 5250 750 +-6 +6 5550 450 5850 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5850 4950 5850 4650 5550 4650 5550 4950 5850 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5850 4350 5850 4050 5550 4050 5550 4350 5850 4350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5850 3750 5850 3450 5550 3450 5550 3750 5850 3750 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5850 3150 5850 2850 5550 2850 5550 3150 5850 3150 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5850 2550 5850 2250 5550 2250 5550 2550 5850 2550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5850 1950 5850 1650 5550 1650 5550 1950 5850 1950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5850 1350 5850 1050 5550 1050 5550 1350 5850 1350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5850 750 5850 450 5550 450 5550 750 5850 750 +-6 +6 2550 450 2850 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2850 4950 2850 4650 2550 4650 2550 4950 2850 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2850 4350 2850 4050 2550 4050 2550 4350 2850 4350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2850 3750 2850 3450 2550 3450 2550 3750 2850 3750 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2850 3150 2850 2850 2550 2850 2550 3150 2850 3150 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2850 2550 2850 2250 2550 2250 2550 2550 2850 2550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2850 1950 2850 1650 2550 1650 2550 1950 2850 1950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2850 1350 2850 1050 2550 1050 2550 1350 2850 1350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2850 750 2850 450 2550 450 2550 750 2850 750 +-6 +-6 +6 2250 5175 2625 5475 +4 0 -1 0 0 0 20 0.0000 4 210 210 2250 5400 D\001 +4 0 -1 0 0 0 16 0.0000 4 165 120 2475 5475 0\001 +-6 +6 4650 5175 5025 5475 +4 0 -1 0 0 0 20 0.0000 4 210 210 4650 5400 D\001 +4 0 -1 0 0 0 16 0.0000 4 165 120 4875 5475 1\001 +-6 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 1800 3300 75 75 1800 3300 1875 3375 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 2700 1200 75 75 2700 1200 2775 1275 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 2400 4500 75 75 2400 4500 2475 4575 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 4800 1500 75 75 4800 1500 4875 1575 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 5400 3300 75 75 5400 3300 5475 3375 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 4800 3900 75 75 4800 3900 4875 3975 +2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 + 3600 2850 3600 4950 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3525 2850 3675 2850 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3525 4950 3675 4950 +2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 + 5925 2775 1275 2775 1275 5025 5925 5025 5925 2775 +2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 + 2925 975 2475 975 2475 1425 2925 1425 2925 975 +2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 + 5325 975 4275 975 4275 2025 5325 2025 5325 975 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4800 3900 2700 1200 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4800 3900 4800 1500 +2 1 0 4 -1 -1 0 0 -1 0.000 0 0 7 0 0 2 + 4800 3900 1800 3300 +2 1 0 4 -1 -1 0 0 -1 0.000 0 0 7 0 0 2 + 4800 3900 2400 4500 +2 1 2 4 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 + 4800 3900 5400 3300 +4 0 -1 0 0 0 20 0.0000 4 210 210 900 3975 D\001 +-6 diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_run.eps scotch-6.0.6/doc/src/scotch/s_f_run.eps --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_run.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_run.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,546 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: stdin +%%Creator: fig2dev Version 3.2 Patchlevel 3c +%%CreationDate: Wed May 16 15:53:27 2001 +%%For: pelegrin@trol.labri.fr (Francois PELLEGRINI) +%%BoundingBox: 0 0 317 319 +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 319 moveto 0 0 lineto 317 0 lineto 317 319 lineto closepath clip newpath +-40.0 378.0 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +%%Page: 1 1 +10 setmiterlimit + 0.06000 0.06000 sc +% +% Fig objects follow +% +% Polyline +7.500 slw + [15 45] 45 sd +n 1500 1500 m + 5700 1500 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1500 2100 m + 5700 2100 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1500 3300 m + 5700 3300 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1500 3900 m + 5700 3900 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1500 4500 m + 5700 4500 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1500 2700 m + 5700 2700 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1500 5100 m + 5700 5100 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1500 5700 m + 5700 5700 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1500 1500 m + 1500 5700 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2100 1500 m + 2100 5700 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2700 1500 m + 2700 5700 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3300 1500 m + 3300 5700 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3900 1500 m + 3900 5700 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4500 1500 m + 4500 5700 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5100 1500 m + 5100 5700 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5700 1500 m + 5700 5700 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1650 5850 m 1650 5550 l 1350 5550 l 1350 5850 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1650 5250 m 1650 4950 l 1350 4950 l 1350 5250 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1650 4650 m 1650 4350 l 1350 4350 l 1350 4650 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1650 4050 m 1650 3750 l 1350 3750 l 1350 4050 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1650 3450 m 1650 3150 l 1350 3150 l 1350 3450 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1650 2850 m 1650 2550 l 1350 2550 l 1350 2850 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1650 2250 m 1650 1950 l 1350 1950 l 1350 2250 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1650 1650 m 1650 1350 l 1350 1350 l 1350 1650 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2250 5850 m 2250 5550 l 1950 5550 l 1950 5850 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2250 5250 m 2250 4950 l 1950 4950 l 1950 5250 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2250 4650 m 2250 4350 l 1950 4350 l 1950 4650 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2250 4050 m 2250 3750 l 1950 3750 l 1950 4050 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2250 3450 m 2250 3150 l 1950 3150 l 1950 3450 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2250 2850 m 2250 2550 l 1950 2550 l 1950 2850 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2250 2250 m 2250 1950 l 1950 1950 l 1950 2250 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2250 1650 m 2250 1350 l 1950 1350 l 1950 1650 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3450 5850 m 3450 5550 l 3150 5550 l 3150 5850 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3450 5250 m 3450 4950 l 3150 4950 l 3150 5250 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3450 4650 m 3450 4350 l 3150 4350 l 3150 4650 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3450 4050 m 3450 3750 l 3150 3750 l 3150 4050 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3450 3450 m 3450 3150 l 3150 3150 l 3150 3450 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3450 2850 m 3450 2550 l 3150 2550 l 3150 2850 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3450 2250 m 3450 1950 l 3150 1950 l 3150 2250 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3450 1650 m 3450 1350 l 3150 1350 l 3150 1650 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4050 5850 m 4050 5550 l 3750 5550 l 3750 5850 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4050 5250 m 4050 4950 l 3750 4950 l 3750 5250 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4050 4650 m 4050 4350 l 3750 4350 l 3750 4650 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4050 4050 m 4050 3750 l 3750 3750 l 3750 4050 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4050 3450 m 4050 3150 l 3750 3150 l 3750 3450 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4050 2850 m 4050 2550 l 3750 2550 l 3750 2850 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4050 2250 m 4050 1950 l 3750 1950 l 3750 2250 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4050 1650 m 4050 1350 l 3750 1350 l 3750 1650 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4650 5850 m 4650 5550 l 4350 5550 l 4350 5850 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4650 5250 m 4650 4950 l 4350 4950 l 4350 5250 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4650 4650 m 4650 4350 l 4350 4350 l 4350 4650 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4650 4050 m 4650 3750 l 4350 3750 l 4350 4050 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4650 3450 m 4650 3150 l 4350 3150 l 4350 3450 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4650 2850 m 4650 2550 l 4350 2550 l 4350 2850 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4650 2250 m 4650 1950 l 4350 1950 l 4350 2250 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4650 1650 m 4650 1350 l 4350 1350 l 4350 1650 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5250 5850 m 5250 5550 l 4950 5550 l 4950 5850 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5250 5250 m 5250 4950 l 4950 4950 l 4950 5250 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5250 4650 m 5250 4350 l 4950 4350 l 4950 4650 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5250 4050 m 5250 3750 l 4950 3750 l 4950 4050 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5250 3450 m 5250 3150 l 4950 3150 l 4950 3450 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5250 2850 m 5250 2550 l 4950 2550 l 4950 2850 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5250 2250 m 5250 1950 l 4950 1950 l 4950 2250 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5250 1650 m 5250 1350 l 4950 1350 l 4950 1650 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5850 5850 m 5850 5550 l 5550 5550 l 5550 5850 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5850 5250 m 5850 4950 l 5550 4950 l 5550 5250 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5850 4650 m 5850 4350 l 5550 4350 l 5550 4650 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5850 4050 m 5850 3750 l 5550 3750 l 5550 4050 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5850 3450 m 5850 3150 l 5550 3150 l 5550 3450 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5850 2850 m 5850 2550 l 5550 2550 l 5550 2850 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5850 2250 m 5850 1950 l 5550 1950 l 5550 2250 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5850 1650 m 5850 1350 l 5550 1350 l 5550 1650 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2850 5850 m 2850 5550 l 2550 5550 l 2550 5850 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2850 5250 m 2850 4950 l 2550 4950 l 2550 5250 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2850 4650 m 2850 4350 l 2550 4350 l 2550 4650 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2850 4050 m 2850 3750 l 2550 3750 l 2550 4050 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2850 3450 m 2850 3150 l 2550 3150 l 2550 3450 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2850 2850 m 2850 2550 l 2550 2550 l 2550 2850 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2850 2250 m 2850 1950 l 2550 1950 l 2550 2250 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2850 1650 m 2850 1350 l 2550 1350 l 2550 1650 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline +15.000 slw + [90] 0 sd +n 3600 1350 m + 3600 5850 l gs col-1 s gr [] 0 sd +% Polyline +n 3525 1350 m + 3675 1350 l gs col-1 s gr +% Polyline +n 3525 5850 m + 3675 5850 l gs col-1 s gr +% Polyline + [90] 0 sd +n 3450 3600 m + 1350 3600 l gs col-1 s gr [] 0 sd +% Polyline +n 3450 3525 m + 3450 3675 l gs col-1 s gr +% Polyline +n 1350 3525 m + 1350 3675 l gs col-1 s gr +% Polyline +n 2325 5850 m + 2475 5850 l gs col-1 s gr +7.500 slw +% Ellipse +n 1800 4200 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 4800 3600 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 1800 5400 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Polyline +15.000 slw + [90] 0 sd +n 2250 4800 m + 1350 4800 l gs col-1 s gr [] 0 sd +% Polyline +n 1350 4725 m + 1350 4875 l gs col-1 s gr +% Polyline +n 1380 3675 m 1275 3675 1275 5820 105 arcto 4 {pop} repeat + 1275 5925 2220 5925 105 arcto 4 {pop} repeat + 2325 5925 2325 3780 105 arcto 4 {pop} repeat + 2325 3675 1380 3675 105 arcto 4 {pop} repeat + cp gs col-1 s gr +% Polyline +n 2250 4725 m + 2250 4875 l gs col-1 s gr +% Polyline +n 2325 3750 m + 2475 3750 l gs col-1 s gr +% Polyline +n 2325 3750 m + 2475 3750 l gs col-1 s gr +% Polyline + [90] 0 sd +n 2400 3750 m + 2400 5850 l gs col-1 s gr [] 0 sd +% Polyline +7.500 slw +n 3780 1275 m 3675 1275 3675 5820 105 arcto 4 {pop} repeat + 3675 5925 5820 5925 105 arcto 4 {pop} repeat + 5925 5925 5925 1380 105 arcto 4 {pop} repeat + 5925 1275 3780 1275 105 arcto 4 {pop} repeat + cp gs col-1 s gr +% Polyline +2 slj +15.000 slw +n 1800 4200 m 1801 4200 l 1803 4200 l 1806 4201 l 1812 4202 l 1820 4203 l + 1831 4205 l 1846 4207 l 1863 4210 l 1883 4213 l 1907 4216 l + 1934 4220 l 1964 4224 l 1996 4228 l 2032 4233 l 2070 4238 l + 2110 4242 l 2152 4247 l 2195 4252 l 2241 4256 l 2287 4260 l + 2335 4264 l 2384 4268 l 2435 4271 l 2486 4274 l 2539 4276 l + 2593 4277 l 2648 4278 l 2705 4277 l 2763 4276 l 2823 4274 l + 2885 4272 l 2949 4267 l 3015 4262 l 3083 4256 l 3154 4247 l + 3226 4238 l 3300 4227 l 3375 4214 l 3450 4200 l 3528 4183 l + 3605 4166 l 3679 4147 l 3750 4127 l 3817 4107 l 3881 4086 l + 3942 4066 l 4000 4045 l 4055 4023 l 4108 4002 l 4157 3980 l + 4205 3959 l 4251 3937 l 4295 3915 l 4337 3893 l 4378 3871 l + 4417 3849 l 4454 3828 l 4491 3806 l 4525 3785 l 4558 3764 l + 4590 3744 l 4619 3725 l 4647 3707 l 4673 3690 l 4696 3674 l + 4717 3659 l 4735 3647 l 4751 3635 l 4765 3626 l 4776 3618 l + 4784 3612 l 4791 3607 l 4795 3604 l 4798 3602 l 4799 3600 l + + 4800 3600 l gs col-1 s gr +% Polyline +n 1800 5400 m 1801 5400 l 1802 5399 l 1806 5399 l 1811 5397 l 1818 5395 l + 1827 5393 l 1840 5390 l 1855 5386 l 1873 5381 l 1894 5375 l + 1918 5369 l 1945 5361 l 1974 5353 l 2006 5344 l 2041 5334 l + 2077 5324 l 2116 5312 l 2156 5300 l 2197 5287 l 2241 5273 l + 2285 5259 l 2331 5244 l 2377 5228 l 2425 5212 l 2474 5194 l + 2524 5176 l 2575 5156 l 2627 5136 l 2680 5114 l 2735 5091 l + 2791 5067 l 2849 5041 l 2909 5013 l 2971 4984 l 3034 4953 l + 3100 4920 l 3167 4884 l 3236 4847 l 3307 4808 l 3378 4767 l + 3450 4725 l 3524 4680 l 3597 4634 l 3668 4588 l 3736 4542 l + 3800 4498 l 3862 4454 l 3921 4411 l 3977 4369 l 4031 4328 l + 4082 4288 l 4130 4248 l 4177 4210 l 4221 4172 l 4264 4135 l + 4305 4098 l 4345 4062 l 4384 4026 l 4421 3991 l 4456 3957 l + 4491 3923 l 4524 3891 l 4555 3859 l 4585 3829 l 4614 3799 l + 4640 3772 l 4665 3746 l 4688 3721 l 4709 3699 l 4727 3680 l + 4744 3662 l 4758 3647 l 4769 3634 l 4779 3623 l 4786 3615 l + 4792 3609 l 4796 3605 l 4798 3602 l 4799 3601 l + 4800 3600 l gs col-1 s gr +/Times-Roman ff 300.00 scf sf +900 4875 m +gs 1 -1 sc (D) col-1 sh gr +/Times-Roman ff 300.00 scf sf +2100 6300 m +gs 1 -1 sc (CL2) col-1 sh gr +/Times-Roman ff 300.00 scf sf +3300 1200 m +gs 1 -1 sc (CL0) col-1 sh gr +/Times-Roman ff 300.00 scf sf +675 3675 m +gs 1 -1 sc (CL1) col-1 sh gr +$F2psEnd +rs diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_run.fig scotch-6.0.6/doc/src/scotch/s_f_run.fig --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_run.fig 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_run.fig 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,240 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +0 +1200 2 +6 675 825 5925 6300 +6 3450 1275 3750 5925 +2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 + 3600 1350 3600 5850 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3525 1350 3675 1350 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3525 5850 3675 5850 +-6 +6 1275 3450 3525 3750 +2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 + 3450 3600 1350 3600 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3450 3525 3450 3675 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 1350 3525 1350 3675 +-6 +6 2250 5775 2550 5925 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2325 5850 2475 5850 +-6 +6 1350 1350 5850 5850 +6 1500 1500 5700 5700 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 1500 5700 1500 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 2100 5700 2100 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 3300 5700 3300 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 3900 5700 3900 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 4500 5700 4500 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 2700 5700 2700 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 5100 5700 5100 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 5700 5700 5700 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1500 1500 1500 5700 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 2100 1500 2100 5700 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 2700 1500 2700 5700 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 3300 1500 3300 5700 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 3900 1500 3900 5700 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 4500 1500 4500 5700 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 5100 1500 5100 5700 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 5700 1500 5700 5700 +-6 +6 1350 1350 1650 5850 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1650 5850 1650 5550 1350 5550 1350 5850 1650 5850 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1650 5250 1650 4950 1350 4950 1350 5250 1650 5250 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1650 4650 1650 4350 1350 4350 1350 4650 1650 4650 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1650 4050 1650 3750 1350 3750 1350 4050 1650 4050 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1650 3450 1650 3150 1350 3150 1350 3450 1650 3450 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1650 2850 1650 2550 1350 2550 1350 2850 1650 2850 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1650 2250 1650 1950 1350 1950 1350 2250 1650 2250 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1650 1650 1650 1350 1350 1350 1350 1650 1650 1650 +-6 +6 1950 1350 2250 5850 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2250 5850 2250 5550 1950 5550 1950 5850 2250 5850 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2250 5250 2250 4950 1950 4950 1950 5250 2250 5250 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2250 4650 2250 4350 1950 4350 1950 4650 2250 4650 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2250 4050 2250 3750 1950 3750 1950 4050 2250 4050 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2250 3450 2250 3150 1950 3150 1950 3450 2250 3450 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2250 2850 2250 2550 1950 2550 1950 2850 2250 2850 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2250 2250 2250 1950 1950 1950 1950 2250 2250 2250 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2250 1650 2250 1350 1950 1350 1950 1650 2250 1650 +-6 +6 3150 1350 3450 5850 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3450 5850 3450 5550 3150 5550 3150 5850 3450 5850 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3450 5250 3450 4950 3150 4950 3150 5250 3450 5250 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3450 4650 3450 4350 3150 4350 3150 4650 3450 4650 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3450 4050 3450 3750 3150 3750 3150 4050 3450 4050 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3450 3450 3450 3150 3150 3150 3150 3450 3450 3450 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3450 2850 3450 2550 3150 2550 3150 2850 3450 2850 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3450 2250 3450 1950 3150 1950 3150 2250 3450 2250 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3450 1650 3450 1350 3150 1350 3150 1650 3450 1650 +-6 +6 3750 1350 4050 5850 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4050 5850 4050 5550 3750 5550 3750 5850 4050 5850 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4050 5250 4050 4950 3750 4950 3750 5250 4050 5250 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4050 4650 4050 4350 3750 4350 3750 4650 4050 4650 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4050 4050 4050 3750 3750 3750 3750 4050 4050 4050 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4050 3450 4050 3150 3750 3150 3750 3450 4050 3450 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4050 2850 4050 2550 3750 2550 3750 2850 4050 2850 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4050 2250 4050 1950 3750 1950 3750 2250 4050 2250 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4050 1650 4050 1350 3750 1350 3750 1650 4050 1650 +-6 +6 4350 1350 4650 5850 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4650 5850 4650 5550 4350 5550 4350 5850 4650 5850 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4650 5250 4650 4950 4350 4950 4350 5250 4650 5250 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4650 4650 4650 4350 4350 4350 4350 4650 4650 4650 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4650 4050 4650 3750 4350 3750 4350 4050 4650 4050 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4650 3450 4650 3150 4350 3150 4350 3450 4650 3450 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4650 2850 4650 2550 4350 2550 4350 2850 4650 2850 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4650 2250 4650 1950 4350 1950 4350 2250 4650 2250 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4650 1650 4650 1350 4350 1350 4350 1650 4650 1650 +-6 +6 4950 1350 5250 5850 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5250 5850 5250 5550 4950 5550 4950 5850 5250 5850 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5250 5250 5250 4950 4950 4950 4950 5250 5250 5250 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5250 4650 5250 4350 4950 4350 4950 4650 5250 4650 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5250 4050 5250 3750 4950 3750 4950 4050 5250 4050 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5250 3450 5250 3150 4950 3150 4950 3450 5250 3450 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5250 2850 5250 2550 4950 2550 4950 2850 5250 2850 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5250 2250 5250 1950 4950 1950 4950 2250 5250 2250 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5250 1650 5250 1350 4950 1350 4950 1650 5250 1650 +-6 +6 5550 1350 5850 5850 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5850 5850 5850 5550 5550 5550 5550 5850 5850 5850 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5850 5250 5850 4950 5550 4950 5550 5250 5850 5250 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5850 4650 5850 4350 5550 4350 5550 4650 5850 4650 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5850 4050 5850 3750 5550 3750 5550 4050 5850 4050 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5850 3450 5850 3150 5550 3150 5550 3450 5850 3450 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5850 2850 5850 2550 5550 2550 5550 2850 5850 2850 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5850 2250 5850 1950 5550 1950 5550 2250 5850 2250 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5850 1650 5850 1350 5550 1350 5550 1650 5850 1650 +-6 +6 2550 1350 2850 5850 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2850 5850 2850 5550 2550 5550 2550 5850 2850 5850 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2850 5250 2850 4950 2550 4950 2550 5250 2850 5250 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2850 4650 2850 4350 2550 4350 2550 4650 2850 4650 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2850 4050 2850 3750 2550 3750 2550 4050 2850 4050 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2850 3450 2850 3150 2550 3150 2550 3450 2850 3450 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2850 2850 2850 2550 2550 2550 2550 2850 2850 2850 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2850 2250 2850 1950 2550 1950 2550 2250 2850 2250 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2850 1650 2850 1350 2550 1350 2550 1650 2850 1650 +-6 +-6 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 1800 4200 75 75 1800 4200 1875 4275 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 4800 3600 75 75 4800 3600 4875 3675 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 1800 5400 75 75 1800 5400 1875 5475 +2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 + 2250 4800 1350 4800 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 1350 4725 1350 4875 +2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 + 2325 3675 1275 3675 1275 5925 2325 5925 2325 3675 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2250 4725 2250 4875 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2325 3750 2475 3750 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2325 3750 2475 3750 +2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 + 2400 3750 2400 5850 +2 4 0 1 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 + 5925 1275 3675 1275 3675 5925 5925 5925 5925 1275 +3 2 0 2 -1 -1 0 0 -1 0.000 0 0 0 3 + 1800 4200 3450 4200 4800 3600 + 0.000 -1.000 0.000 +3 2 0 2 -1 -1 0 0 -1 0.000 0 0 0 3 + 1800 5400 3450 4725 4800 3600 + 0.000 -1.000 0.000 +4 0 -1 0 0 0 20 0.0000 4 210 210 900 4875 D\001 +4 0 -1 0 0 0 20 0.0000 4 210 525 2100 6300 CL2\001 +4 0 -1 0 0 0 20 0.0000 4 210 525 3300 1200 CL0\001 +4 0 -1 0 0 0 20 0.0000 4 210 525 675 3675 CL1\001 +-6 diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_ruy.eps scotch-6.0.6/doc/src/scotch/s_f_ruy.eps --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_ruy.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_ruy.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,608 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: stdin +%%Creator: fig2dev Version 3.2 Patchlevel 3c +%%CreationDate: Wed May 16 15:53:27 2001 +%%For: pelegrin@trol.labri.fr (Francois PELLEGRINI) +%%BoundingBox: 0 0 357 319 +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 319 moveto 0 0 lineto 357 0 lineto 357 319 lineto closepath clip newpath +-58.0 360.0 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +%%Page: 1 1 +10 setmiterlimit + 0.06000 0.06000 sc +% +% Fig objects follow +% +% Polyline +7.500 slw + [15 45] 45 sd +n 1800 1200 m + 6000 1200 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1800 1800 m + 6000 1800 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1800 3000 m + 6000 3000 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1800 3600 m + 6000 3600 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1800 4200 m + 6000 4200 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1800 2400 m + 6000 2400 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1800 4800 m + 6000 4800 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1800 5400 m + 6000 5400 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1800 1200 m + 1800 5400 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2400 1200 m + 2400 5400 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3000 1200 m + 3000 5400 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3600 1200 m + 3600 5400 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4200 1200 m + 4200 5400 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4800 1200 m + 4800 5400 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5400 1200 m + 5400 5400 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 6000 1200 m + 6000 5400 l gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1950 5550 m 1950 5250 l 1650 5250 l 1650 5550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1950 4950 m 1950 4650 l 1650 4650 l 1650 4950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1950 4350 m 1950 4050 l 1650 4050 l 1650 4350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1950 3750 m 1950 3450 l 1650 3450 l 1650 3750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1950 3150 m 1950 2850 l 1650 2850 l 1650 3150 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1950 2550 m 1950 2250 l 1650 2250 l 1650 2550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1950 1950 m 1950 1650 l 1650 1650 l 1650 1950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 1950 1350 m 1950 1050 l 1650 1050 l 1650 1350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2550 5550 m 2550 5250 l 2250 5250 l 2250 5550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2550 4950 m 2550 4650 l 2250 4650 l 2250 4950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2550 4350 m 2550 4050 l 2250 4050 l 2250 4350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2550 3750 m 2550 3450 l 2250 3450 l 2250 3750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2550 3150 m 2550 2850 l 2250 2850 l 2250 3150 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2550 2550 m 2550 2250 l 2250 2250 l 2250 2550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2550 1950 m 2550 1650 l 2250 1650 l 2250 1950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2550 1350 m 2550 1050 l 2250 1050 l 2250 1350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3750 5550 m 3750 5250 l 3450 5250 l 3450 5550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3750 4950 m 3750 4650 l 3450 4650 l 3450 4950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3750 4350 m 3750 4050 l 3450 4050 l 3450 4350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3750 3750 m 3750 3450 l 3450 3450 l 3450 3750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3750 3150 m 3750 2850 l 3450 2850 l 3450 3150 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3750 2550 m 3750 2250 l 3450 2250 l 3450 2550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3750 1950 m 3750 1650 l 3450 1650 l 3450 1950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3750 1350 m 3750 1050 l 3450 1050 l 3450 1350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4350 5550 m 4350 5250 l 4050 5250 l 4050 5550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4350 4950 m 4350 4650 l 4050 4650 l 4050 4950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4350 4350 m 4350 4050 l 4050 4050 l 4050 4350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4350 3750 m 4350 3450 l 4050 3450 l 4050 3750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4350 3150 m 4350 2850 l 4050 2850 l 4050 3150 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4350 2550 m 4350 2250 l 4050 2250 l 4050 2550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4350 1950 m 4350 1650 l 4050 1650 l 4050 1950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4350 1350 m 4350 1050 l 4050 1050 l 4050 1350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4950 5550 m 4950 5250 l 4650 5250 l 4650 5550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4950 4950 m 4950 4650 l 4650 4650 l 4650 4950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4950 4350 m 4950 4050 l 4650 4050 l 4650 4350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4950 3750 m 4950 3450 l 4650 3450 l 4650 3750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4950 3150 m 4950 2850 l 4650 2850 l 4650 3150 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4950 2550 m 4950 2250 l 4650 2250 l 4650 2550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4950 1950 m 4950 1650 l 4650 1650 l 4650 1950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 4950 1350 m 4950 1050 l 4650 1050 l 4650 1350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5550 5550 m 5550 5250 l 5250 5250 l 5250 5550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5550 4950 m 5550 4650 l 5250 4650 l 5250 4950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5550 4350 m 5550 4050 l 5250 4050 l 5250 4350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5550 3750 m 5550 3450 l 5250 3450 l 5250 3750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5550 3150 m 5550 2850 l 5250 2850 l 5250 3150 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5550 2550 m 5550 2250 l 5250 2250 l 5250 2550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5550 1950 m 5550 1650 l 5250 1650 l 5250 1950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 5550 1350 m 5550 1050 l 5250 1050 l 5250 1350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 6150 5550 m 6150 5250 l 5850 5250 l 5850 5550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 6150 4950 m 6150 4650 l 5850 4650 l 5850 4950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 6150 4350 m 6150 4050 l 5850 4050 l 5850 4350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 6150 3750 m 6150 3450 l 5850 3450 l 5850 3750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 6150 3150 m 6150 2850 l 5850 2850 l 5850 3150 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 6150 2550 m 6150 2250 l 5850 2250 l 5850 2550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 6150 1950 m 6150 1650 l 5850 1650 l 5850 1950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 6150 1350 m 6150 1050 l 5850 1050 l 5850 1350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3150 5550 m 3150 5250 l 2850 5250 l 2850 5550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3150 4950 m 3150 4650 l 2850 4650 l 2850 4950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3150 4350 m 3150 4050 l 2850 4050 l 2850 4350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3150 3750 m 3150 3450 l 2850 3450 l 2850 3750 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3150 3150 m 3150 2850 l 2850 2850 l 2850 3150 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3150 2550 m 3150 2250 l 2850 2250 l 2850 2550 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3150 1950 m 3150 1650 l 2850 1650 l 2850 1950 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 3150 1350 m 3150 1050 l 2850 1050 l 2850 1350 l + cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd +% Polyline +15.000 slw + [90] 0 sd +n 2700 1050 m + 2700 3150 l gs col-1 s gr [] 0 sd +% Polyline +n 2625 3150 m + 2775 3150 l gs col-1 s gr +% Polyline +n 2625 1050 m + 2775 1050 l gs col-1 s gr +% Polyline + [90] 0 sd +n 5100 3450 m + 5100 5550 l gs col-1 s gr [] 0 sd +% Polyline +n 5025 5550 m + 5175 5550 l gs col-1 s gr +% Polyline +n 5025 3450 m + 5175 3450 l gs col-1 s gr +7.500 slw +% Ellipse +n 2100 3900 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 5700 2100 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 2100 5100 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Ellipse +n 4500 4500 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr + +% Polyline +n 5280 975 m 5175 975 5175 3120 105 arcto 4 {pop} repeat + 5175 3225 6120 3225 105 arcto 4 {pop} repeat + 6225 3225 6225 1080 105 arcto 4 {pop} repeat + 6225 975 5280 975 105 arcto 4 {pop} repeat + cp gs col-1 s gr +% Polyline +15.000 slw + [90] 0 sd +n 2700 3450 m + 2700 5550 l gs col-1 s gr [] 0 sd +% Polyline + [90] 0 sd +n 5100 3150 m + 5100 1050 l gs col-1 s gr [] 0 sd +% Polyline + [90] 0 sd +n 3750 3300 m + 1650 3300 l gs col-1 s gr [] 0 sd +% Polyline + [90] 0 sd +n 3900 1050 m + 3900 5550 l gs col-1 s gr [] 0 sd +% Polyline + [90] 0 sd +n 4050 3300 m + 6150 3300 l gs col-1 s gr [] 0 sd +% Polyline + [90] 0 sd +n 2550 4500 m + 1650 4500 l gs col-1 s gr [] 0 sd +% Polyline +n 3825 1050 m + 3975 1050 l gs col-1 s gr +% Polyline +n 3750 3225 m + 3750 3375 l gs col-1 s gr +% Polyline +n 1650 3225 m + 1650 3375 l gs col-1 s gr +% Polyline +n 4050 3225 m + 4050 3375 l gs col-1 s gr +% Polyline +n 6150 3225 m + 6150 3375 l gs col-1 s gr +% Polyline +n 5025 3150 m + 5175 3150 l gs col-1 s gr +% Polyline +n 5025 1050 m + 5175 1050 l gs col-1 s gr +% Polyline +n 2550 4425 m + 2550 4575 l gs col-1 s gr +% Polyline +n 2625 3450 m + 2775 3450 l gs col-1 s gr +% Polyline +n 2625 5550 m + 2775 5550 l gs col-1 s gr +% Polyline +n 1680 3375 m 1575 3375 1575 5520 105 arcto 4 {pop} repeat + 1575 5625 2520 5625 105 arcto 4 {pop} repeat + 2625 5625 2625 3480 105 arcto 4 {pop} repeat + 2625 3375 1680 3375 105 arcto 4 {pop} repeat + cp gs col-1 s gr +% Polyline +n 2625 3450 m + 2775 3450 l gs col-1 s gr +% Polyline +n 3825 5550 m + 3975 5550 l gs col-1 s gr +% Polyline +n 1650 4425 m + 1650 4575 l gs col-1 s gr +% Polyline +7.500 slw +n 4080 3375 m 3975 3375 3975 5520 105 arcto 4 {pop} repeat + 3975 5625 4920 5625 105 arcto 4 {pop} repeat + 5025 5625 5025 3480 105 arcto 4 {pop} repeat + 5025 3375 4080 3375 105 arcto 4 {pop} repeat + cp gs col-1 s gr +% Polyline +2 slj +15.000 slw +n 2100 3900 m 2101 3900 l 2102 3902 l 2104 3904 l 2108 3907 l 2114 3911 l + 2121 3917 l 2131 3925 l 2143 3933 l 2157 3944 l 2173 3955 l + 2191 3968 l 2212 3981 l 2234 3995 l 2258 4010 l 2284 4025 l + 2312 4040 l 2341 4055 l 2372 4069 l 2404 4082 l 2437 4094 l + 2472 4105 l 2508 4115 l 2545 4122 l 2584 4128 l 2624 4132 l + 2667 4133 l 2711 4131 l 2758 4127 l 2807 4119 l 2859 4107 l + 2913 4092 l 2971 4072 l 3031 4048 l 3095 4019 l 3161 3984 l + 3230 3945 l 3300 3900 l 3356 3861 l 3412 3820 l 3468 3777 l + 3521 3733 l 3572 3688 l 3621 3643 l 3668 3599 l 3711 3555 l + 3751 3513 l 3789 3471 l 3823 3430 l 3855 3391 l 3884 3353 l + 3910 3316 l 3934 3280 l 3955 3246 l 3975 3213 l 3992 3180 l + 4008 3149 l 4023 3118 l 4037 3088 l 4050 3059 l 4063 3029 l + 4075 3000 l 4087 2971 l 4100 2941 l 4112 2912 l 4126 2882 l + 4140 2851 l 4156 2820 l 4173 2787 l 4192 2754 l 4213 2720 l + 4236 2684 l 4260 2647 l 4288 2609 l 4318 2570 l 4350 2529 l + 4386 2487 l 4424 2445 l 4464 2401 l 4507 2357 l 4553 2312 l + 4600 2267 l 4649 2223 l 4699 2180 l 4750 2139 l 4800 2100 l + 4862 2055 l 4922 2016 l 4979 1981 l 5033 1952 l 5083 1928 l + 5130 1908 l 5174 1893 l 5215 1881 l 5254 1873 l 5290 1869 l + 5323 1867 l 5355 1868 l 5385 1872 l 5413 1878 l 5439 1885 l + 5464 1895 l 5488 1906 l 5510 1918 l 5531 1931 l 5551 1945 l + 5570 1960 l 5588 1975 l 5604 1990 l 5619 2005 l 5633 2019 l + 5646 2032 l 5657 2045 l 5667 2056 l 5675 2067 l 5682 2075 l + 5687 2083 l 5692 2089 l 5695 2093 l 5697 2096 l 5699 2098 l + + 5700 2100 l gs col-1 s gr +% Polyline +n 2100 5100 m 2101 5100 l 2103 5100 l 2107 5101 l 2114 5101 l 2123 5102 l + 2135 5103 l 2150 5105 l 2169 5106 l 2191 5108 l 2217 5110 l + 2245 5112 l 2276 5114 l 2310 5116 l 2346 5118 l 2384 5120 l + 2424 5122 l 2466 5123 l 2509 5125 l 2553 5126 l 2598 5126 l + 2644 5126 l 2692 5125 l 2741 5124 l 2791 5122 l 2842 5119 l + 2895 5115 l 2949 5111 l 3006 5105 l 3064 5098 l 3124 5089 l + 3186 5080 l 3251 5068 l 3316 5055 l 3383 5041 l 3450 5025 l + 3520 5007 l 3588 4987 l 3652 4967 l 3714 4946 l 3772 4925 l + 3827 4904 l 3878 4883 l 3927 4862 l 3972 4841 l 4016 4820 l + 4057 4799 l 4095 4778 l 4133 4756 l 4168 4735 l 4202 4715 l + 4235 4694 l 4266 4673 l 4295 4653 l 4323 4634 l 4349 4615 l + 4374 4598 l 4396 4581 l 4417 4566 l 4435 4552 l 4450 4539 l + 4464 4529 l 4475 4520 l 4484 4513 l 4490 4508 l 4495 4504 l + 4498 4502 l 4499 4501 l + 4500 4500 l gs col-1 s gr +/Times-Roman ff 300.00 scf sf +1200 4575 m +gs 1 -1 sc (D) col-1 sh gr +/Times-Roman ff 300.00 scf sf +6375 3375 m +gs 1 -1 sc (CL1) col-1 sh gr +/Times-Roman ff 300.00 scf sf +4875 900 m +gs 1 -1 sc (CL2) col-1 sh gr +/Times-Roman ff 300.00 scf sf +3600 900 m +gs 1 -1 sc (CL0) col-1 sh gr +/Times-Roman ff 300.00 scf sf +975 3375 m +gs 1 -1 sc (CL1) col-1 sh gr +/Times-Roman ff 300.00 scf sf +2400 6000 m +gs 1 -1 sc (CL2) col-1 sh gr +$F2psEnd +rs diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_ruy.fig scotch-6.0.6/doc/src/scotch/s_f_ruy.fig --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_ruy.fig 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_ruy.fig 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,267 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +0 +1200 2 +6 975 525 6900 6000 +6 2550 975 2850 3225 +2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 + 2700 1050 2700 3150 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2625 3150 2775 3150 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2625 1050 2775 1050 +-6 +6 4950 3375 5250 5625 +2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 + 5100 3450 5100 5550 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5025 5550 5175 5550 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5025 3450 5175 3450 +-6 +6 1650 1050 6150 5550 +6 1800 1200 6000 5400 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1800 1200 6000 1200 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1800 1800 6000 1800 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1800 3000 6000 3000 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1800 3600 6000 3600 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1800 4200 6000 4200 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1800 2400 6000 2400 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1800 4800 6000 4800 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1800 5400 6000 5400 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 1800 1200 1800 5400 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 2400 1200 2400 5400 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 3000 1200 3000 5400 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 3600 1200 3600 5400 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 4200 1200 4200 5400 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 4800 1200 4800 5400 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 5400 1200 5400 5400 +2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 + 6000 1200 6000 5400 +-6 +6 1650 1050 1950 5550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1950 5550 1950 5250 1650 5250 1650 5550 1950 5550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1950 4950 1950 4650 1650 4650 1650 4950 1950 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1950 4350 1950 4050 1650 4050 1650 4350 1950 4350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1950 3750 1950 3450 1650 3450 1650 3750 1950 3750 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1950 3150 1950 2850 1650 2850 1650 3150 1950 3150 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1950 2550 1950 2250 1650 2250 1650 2550 1950 2550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1950 1950 1950 1650 1650 1650 1650 1950 1950 1950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 1950 1350 1950 1050 1650 1050 1650 1350 1950 1350 +-6 +6 2250 1050 2550 5550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2550 5550 2550 5250 2250 5250 2250 5550 2550 5550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2550 4950 2550 4650 2250 4650 2250 4950 2550 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2550 4350 2550 4050 2250 4050 2250 4350 2550 4350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2550 3750 2550 3450 2250 3450 2250 3750 2550 3750 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2550 3150 2550 2850 2250 2850 2250 3150 2550 3150 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2550 2550 2550 2250 2250 2250 2250 2550 2550 2550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2550 1950 2550 1650 2250 1650 2250 1950 2550 1950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 2550 1350 2550 1050 2250 1050 2250 1350 2550 1350 +-6 +6 3450 1050 3750 5550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3750 5550 3750 5250 3450 5250 3450 5550 3750 5550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3750 4950 3750 4650 3450 4650 3450 4950 3750 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3750 4350 3750 4050 3450 4050 3450 4350 3750 4350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3750 3750 3750 3450 3450 3450 3450 3750 3750 3750 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3750 3150 3750 2850 3450 2850 3450 3150 3750 3150 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3750 2550 3750 2250 3450 2250 3450 2550 3750 2550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3750 1950 3750 1650 3450 1650 3450 1950 3750 1950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3750 1350 3750 1050 3450 1050 3450 1350 3750 1350 +-6 +6 4050 1050 4350 5550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4350 5550 4350 5250 4050 5250 4050 5550 4350 5550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4350 4950 4350 4650 4050 4650 4050 4950 4350 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4350 4350 4350 4050 4050 4050 4050 4350 4350 4350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4350 3750 4350 3450 4050 3450 4050 3750 4350 3750 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4350 3150 4350 2850 4050 2850 4050 3150 4350 3150 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4350 2550 4350 2250 4050 2250 4050 2550 4350 2550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4350 1950 4350 1650 4050 1650 4050 1950 4350 1950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4350 1350 4350 1050 4050 1050 4050 1350 4350 1350 +-6 +6 4650 1050 4950 5550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4950 5550 4950 5250 4650 5250 4650 5550 4950 5550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4950 4950 4950 4650 4650 4650 4650 4950 4950 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4950 4350 4950 4050 4650 4050 4650 4350 4950 4350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4950 3750 4950 3450 4650 3450 4650 3750 4950 3750 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4950 3150 4950 2850 4650 2850 4650 3150 4950 3150 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4950 2550 4950 2250 4650 2250 4650 2550 4950 2550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4950 1950 4950 1650 4650 1650 4650 1950 4950 1950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 4950 1350 4950 1050 4650 1050 4650 1350 4950 1350 +-6 +6 5250 1050 5550 5550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5550 5550 5550 5250 5250 5250 5250 5550 5550 5550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5550 4950 5550 4650 5250 4650 5250 4950 5550 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5550 4350 5550 4050 5250 4050 5250 4350 5550 4350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5550 3750 5550 3450 5250 3450 5250 3750 5550 3750 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5550 3150 5550 2850 5250 2850 5250 3150 5550 3150 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5550 2550 5550 2250 5250 2250 5250 2550 5550 2550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5550 1950 5550 1650 5250 1650 5250 1950 5550 1950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 5550 1350 5550 1050 5250 1050 5250 1350 5550 1350 +-6 +6 5850 1050 6150 5550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 6150 5550 6150 5250 5850 5250 5850 5550 6150 5550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 6150 4950 6150 4650 5850 4650 5850 4950 6150 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 6150 4350 6150 4050 5850 4050 5850 4350 6150 4350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 6150 3750 6150 3450 5850 3450 5850 3750 6150 3750 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 6150 3150 6150 2850 5850 2850 5850 3150 6150 3150 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 6150 2550 6150 2250 5850 2250 5850 2550 6150 2550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 6150 1950 6150 1650 5850 1650 5850 1950 6150 1950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 6150 1350 6150 1050 5850 1050 5850 1350 6150 1350 +-6 +6 2850 1050 3150 5550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3150 5550 3150 5250 2850 5250 2850 5550 3150 5550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3150 4950 3150 4650 2850 4650 2850 4950 3150 4950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3150 4350 3150 4050 2850 4050 2850 4350 3150 4350 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3150 3750 3150 3450 2850 3450 2850 3750 3150 3750 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3150 3150 3150 2850 2850 2850 2850 3150 3150 3150 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3150 2550 3150 2250 2850 2250 2850 2550 3150 2550 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3150 1950 3150 1650 2850 1650 2850 1950 3150 1950 +2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 + 3150 1350 3150 1050 2850 1050 2850 1350 3150 1350 +-6 +-6 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 2100 3900 75 75 2100 3900 2175 3975 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 5700 2100 75 75 5700 2100 5775 2175 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 2100 5100 75 75 2100 5100 2175 5175 +1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 4500 4500 75 75 4500 4500 4575 4575 +2 4 0 1 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 + 6225 3225 6225 975 5175 975 5175 3225 6225 3225 +2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 + 2700 3450 2700 5550 +2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 + 5100 3150 5100 1050 +2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 + 3750 3300 1650 3300 +2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 + 3900 1050 3900 5550 +2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 + 4050 3300 6150 3300 +2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 + 2550 4500 1650 4500 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3825 1050 3975 1050 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3750 3225 3750 3375 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 1650 3225 1650 3375 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4050 3225 4050 3375 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6150 3225 6150 3375 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5025 3150 5175 3150 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5025 1050 5175 1050 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2550 4425 2550 4575 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2625 3450 2775 3450 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2625 5550 2775 5550 +2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 + 2625 3375 1575 3375 1575 5625 2625 5625 2625 3375 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2625 3450 2775 3450 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3825 5550 3975 5550 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 1650 4425 1650 4575 +2 4 0 1 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 + 5025 5625 5025 3375 3975 3375 3975 5625 5025 5625 +3 2 0 2 -1 -1 0 0 -1 0.000 0 0 0 4 + 2100 3900 3300 3900 4800 2100 5700 2100 + 0.000 -1.000 -1.000 0.000 +3 2 0 2 -1 -1 0 0 -1 0.000 0 0 0 3 + 2100 5100 3450 5025 4500 4500 + 0.000 -1.000 0.000 +4 0 -1 0 0 0 20 0.0000 4 210 210 1200 4575 D\001 +4 0 -1 0 0 0 20 0.0000 4 210 525 6375 3375 CL1\001 +4 0 -1 0 0 0 20 0.0000 4 210 525 4875 900 CL2\001 +4 0 -1 0 0 0 20 0.0000 4 210 525 3600 900 CL0\001 +4 0 -1 0 0 0 20 0.0000 4 210 525 975 3375 CL1\001 +4 0 -1 0 0 0 20 0.0000 4 210 525 2400 6000 CL2\001 +-6 diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_synp.eps scotch-6.0.6/doc/src/scotch/s_f_synp.eps --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_synp.eps 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_synp.eps 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,817 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: stdin +%%Creator: fig2dev Version 3.2 Patchlevel 5-alpha5 +%%CreationDate: Tue Dec 27 08:34:23 2005 +%%For: pelegrin@brol (Francois PELLEGRINI) +%%BoundingBox: 0 0 840 920 +%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 920 moveto 0 0 lineto 840 0 lineto 840 920 lineto closepath clip newpath +-25.7 828.8 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +% +% Fig objects follow +% +% +% here starts figure with depth 10 +% Ellipse +15.000 slw +n 7200 4950 600 150 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 7200 6150 600 150 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 11700 4950 600 150 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 11700 6150 600 150 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 2700 4950 600 150 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 2700 6150 600 150 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 6150 -1350 600 150 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 6150 -150 600 150 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 3750 -1350 600 150 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 3750 -150 600 150 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 4950 3150 600 150 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 4950 4350 600 150 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 4575 8700 600 150 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 4575 9900 600 150 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 10575 8700 600 150 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 10575 9900 600 150 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 8100 12450 600 150 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 8100 13650 600 150 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 825 12675 225 75 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 825 12315 225 75 0 360 DrawEllipse gs col-1 s gr + +/Times-Roman ff 240.00 scf sf +1275 13125 m +gs 1 -1 sc (Program) col-1 sh gr +% Polyline +0 slj +0 slc +7.500 slw +gs clippath +8445 10947 m 8445 11115 l 8505 11115 l 8505 10947 l 8505 10947 l 8475 11067 l 8445 10947 l cp +eoclip +n 10350 10050 m 10350 10275 l 8475 10725 l + 8475 11100 l gs col-1 s gr gr + +% arrowhead +n 8445 10947 m 8475 11067 l 8505 10947 l col-1 s +% Polyline +0.000 slw +n 7800 6150 m 7800 5850 l 6600 5850 l 6600 6150 l + cp gs 1.00 setgray ef gr +% Polyline +n 12300 6150 m 12300 5850 l 11100 5850 l 11100 6150 l + cp gs 1.00 setgray ef gr +% Polyline +n 3300 6150 m 3300 5850 l 2100 5850 l 2100 6150 l + cp gs 1.00 setgray ef gr +% Polyline +n 6750 -150 m 6750 -450 l 5550 -450 l 5550 -150 l + cp gs 1.00 setgray ef gr +% Polyline +n 4350 -150 m 4350 -450 l 3150 -450 l 3150 -150 l + cp gs 1.00 setgray ef gr +% Polyline +n 5550 4350 m 5550 4050 l 4350 4050 l 4350 4350 l + cp gs 1.00 setgray ef gr +% Polyline +n 5175 9900 m 5175 9600 l 3975 9600 l 3975 9900 l + cp gs 1.00 setgray ef gr +% Polyline +n 11175 9900 m 11175 9600 l 9975 9600 l 9975 9900 l + cp gs 1.00 setgray ef gr +% Polyline +n 8700 13650 m 8700 13350 l 7500 13350 l 7500 13650 l + cp gs 1.00 setgray ef gr +% Polyline +n 1050 12525 m 1050 12675 l 600 12675 l 600 12525 l + cp gs 1.00 setgray ef gr +% Polyline +7.500 slw +gs clippath +7770 10947 m 7770 11115 l 7830 11115 l 7830 10947 l 7830 10947 l 7800 11067 l 7770 10947 l cp +eoclip +n 4950 4500 m 4950 4725 l 6150 5175 l 6150 6450 l 6675 6825 l 6675 10350 l + 7800 10725 l + 7800 11100 l gs col-1 s gr gr + +% arrowhead +n 7770 10947 m 7800 11067 l 7830 10947 l col-1 s +% Polyline +15.000 slw +n 7800 4950 m + 7800 6150 l gs col-1 s gr +% Polyline +n 6600 4950 m + 6600 6150 l gs col-1 s gr +% Polyline +n 11100 4950 m + 11100 6150 l gs col-1 s gr +% Polyline +n 12300 4950 m + 12300 6150 l gs col-1 s gr +% Polyline +n 3300 4950 m + 3300 6150 l gs col-1 s gr +% Polyline +n 2100 4950 m + 2100 6150 l gs col-1 s gr +% Polyline +n 6750 -1350 m + 6750 -150 l gs col-1 s gr +% Polyline +n 5550 -1350 m + 5550 -150 l gs col-1 s gr +% Polyline +n 4350 -1350 m + 4350 -150 l gs col-1 s gr +% Polyline +n 3150 -1350 m + 3150 -150 l gs col-1 s gr +% Polyline +n 5550 3150 m + 5550 4350 l gs col-1 s gr +% Polyline +n 4350 3150 m + 4350 4350 l gs col-1 s gr +% Polyline +n 5175 8700 m + 5175 9900 l gs col-1 s gr +% Polyline +n 3975 8700 m + 3975 9900 l gs col-1 s gr +% Polyline +n 9975 8700 m + 9975 9900 l gs col-1 s gr +% Polyline +n 11175 8700 m + 11175 9900 l gs col-1 s gr +% Polyline +n 8700 12450 m + 8700 13650 l gs col-1 s gr +% Polyline +n 7500 12450 m + 7500 13650 l gs col-1 s gr +% Polyline +n 600 12300 m + 600 12675 l gs col-1 s gr +% Polyline +n 1050 12300 m + 1050 12675 l gs col-1 s gr +/Times-Roman ff 240.00 scf sf +1275 12600 m +gs 1 -1 sc (File) col-1 sh gr +% Polyline +45.000 slw +n 6300 5400 m + 6000 5700 l gs col7 1.00 shd ef gr gs col7 s gr +% Polyline +n 6600 6600 m + 6000 6675 l gs col7 1.00 shd ef gr gs col7 s gr +% Polyline +n 9600 10275 m + 9600 10575 l gs col7 1.00 shd ef gr gs col7 s gr +% Polyline +n 6825 10275 m + 6450 9975 l gs col7 1.00 shd ef gr gs col7 s gr +/Times-Roman ff 240.00 scf sf +6855 5400 m +gs 1 -1 sc (Source) col-1 sh gr +/Times-Roman ff 240.00 scf sf +6735 5700 m +gs 1 -1 sc (graph file) col-1 sh gr +/Courier ff 240.00 scf sf +6900 6075 m +gs 1 -1 sc (.grf) col-1 sh gr +% Polyline +15.000 slw +n 1950 7800 m 1950 7350 l 450 7350 l 450 7800 l + cp gs col-1 s gr +/Courier-Bold ff 240.00 scf sf +900 7650 m +gs 1 -1 sc (mtst) col-1 sh gr +/Courier ff 240.00 scf sf +11400 6075 m +gs 1 -1 sc (.tgt) col-1 sh gr +/Times-Roman ff 240.00 scf sf +11175 5550 m +gs 1 -1 sc (Target file) col-1 sh gr +% Polyline +n 9075 7800 m 9075 7350 l 7575 7350 l 7575 7800 l + cp gs col-1 s gr +/Courier-Bold ff 240.00 scf sf +8025 7650 m +gs 1 -1 sc (gtst) col-1 sh gr +% Polyline +n 13575 7800 m 13575 7350 l 12075 7350 l 12075 7800 l + cp gs col-1 s gr +/Courier-Bold ff 240.00 scf sf +12525 7650 m +gs 1 -1 sc (atst) col-1 sh gr +/Courier ff 240.00 scf sf +2400 6075 m +gs 1 -1 sc (.msh) col-1 sh gr +/Times-Roman ff 240.00 scf sf +2355 5400 m +gs 1 -1 sc (Source) col-1 sh gr +/Times-Roman ff 240.00 scf sf +2250 5700 m +gs 1 -1 sc (mesh file) col-1 sh gr +% Polyline +n 4200 7800 m 4200 7350 l 2700 7350 l 2700 7800 l + cp gs col-1 s gr +/Courier-Bold ff 240.00 scf sf +3150 7650 m +gs 1 -1 sc (mord) col-1 sh gr +/Times-Roman ff 240.00 scf sf +5724 -720 m +gs 1 -1 sc (External) col-1 sh gr +/Times-Roman ff 240.00 scf sf +5670 -420 m +gs 1 -1 sc (graph file) col-1 sh gr +% Polyline +n 6900 1050 m 6900 600 l 5400 600 l 5400 1050 l + cp gs col-1 s gr +/Courier-Bold ff 240.00 scf sf +5925 900 m +gs 1 -1 sc (gcv) col-1 sh gr +/Times-Roman ff 240.00 scf sf +3324 -720 m +gs 1 -1 sc (External) col-1 sh gr +/Times-Roman ff 240.00 scf sf +3300 -420 m +gs 1 -1 sc (mesh file) col-1 sh gr +% Polyline +n 4500 2400 m 4500 1950 l 3000 1950 l 3000 2400 l + cp gs col-1 s gr +/Courier-Bold ff 240.00 scf sf +3375 2250 m +gs 1 -1 sc (mmk_*) col-1 sh gr +% Polyline +n 6900 2400 m 6900 1950 l 5400 1950 l 5400 2400 l + cp gs col-1 s gr +/Courier-Bold ff 240.00 scf sf +5775 2250 m +gs 1 -1 sc (gmk_*) col-1 sh gr +% Polyline +n 4500 1050 m 4500 600 l 3000 600 l 3000 1050 l + cp gs col-1 s gr +/Courier-Bold ff 240.00 scf sf +3525 900 m +gs 1 -1 sc (mcv) col-1 sh gr +/Courier ff 240.00 scf sf +4650 4275 m +gs 1 -1 sc (.xyz) col-1 sh gr +/Times-Roman ff 240.00 scf sf +4425 3600 m +gs 1 -1 sc (Geometry) col-1 sh gr +/Times-Roman ff 240.00 scf sf +4800 3900 m +gs 1 -1 sc (file) col-1 sh gr +% Polyline +n 6450 7800 m 6450 7350 l 4950 7350 l 4950 7800 l + cp gs col-1 s gr +/Courier-Bold ff 240.00 scf sf +5400 7650 m +gs 1 -1 sc (gord) col-1 sh gr +% Polyline +n 5700 5775 m 5700 5325 l 4200 5325 l 4200 5775 l + cp gs col-1 s gr +/Courier-Bold ff 240.00 scf sf +4425 5625 m +gs 1 -1 sc (gmk_msh) col-1 sh gr +/Times-Roman ff 240.00 scf sf +4425 9450 m +gs 1 -1 sc (file) col-1 sh gr +/Courier ff 240.00 scf sf +4275 9825 m +gs 1 -1 sc (.ord) col-1 sh gr +/Times-Roman ff 240.00 scf sf +4110 9150 m +gs 1 -1 sc (Ordering) col-1 sh gr +/Times-Roman ff 240.00 scf sf +10425 9450 m +gs 1 -1 sc (file) col-1 sh gr +/Times-Roman ff 240.00 scf sf +10125 9150 m +gs 1 -1 sc (Mapping) col-1 sh gr +/Courier ff 240.00 scf sf +10275 9825 m +gs 1 -1 sc (.map) col-1 sh gr +% Polyline +n 11550 11550 m 11550 11100 l 10050 11100 l 10050 11550 l + cp gs col-1 s gr +/Courier-Bold ff 240.00 scf sf +10350 11400 m +gs 1 -1 sc (gmtst) col-1 sh gr +/Times-Roman ff 240.00 scf sf +7950 13200 m +gs 1 -1 sc (file) col-1 sh gr +/Times-Roman ff 240.00 scf sf +7650 12900 m +gs 1 -1 sc (Graphics) col-1 sh gr +% Polyline +n 8850 11550 m 8850 11100 l 7350 11100 l 7350 11550 l + cp gs col-1 s gr +/Courier-Bold ff 240.00 scf sf +7725 11400 m +gs 1 -1 sc (gout) col-1 sh gr +% Polyline +n 10200 5775 m 10200 5325 l 8700 5325 l 8700 5775 l + cp gs col-1 s gr +/Courier-Bold ff 240.00 scf sf +8925 5625 m +gs 1 -1 sc (amk_grf) col-1 sh gr +% Polyline +n 5625 11550 m 5625 11100 l 4125 11100 l 4125 11550 l + cp gs col-1 s gr +/Courier-Bold ff 240.00 scf sf +4425 11400 m +gs 1 -1 sc (gotst) col-1 sh gr +% Polyline +n 14400 5775 m 14400 5325 l 12900 5325 l 12900 5775 l + cp gs col-1 s gr +/Courier-Bold ff 240.00 scf sf +13350 5625 m +gs 1 -1 sc (acpl) col-1 sh gr +% Polyline +n 12300 4050 m 12300 3600 l 10800 3600 l 10800 4050 l + cp gs col-1 s gr +/Courier-Bold ff 240.00 scf sf +11175 3900 m +gs 1 -1 sc (amk_*) col-1 sh gr +% Polyline +n 11325 7800 m 11325 7350 l 9825 7350 l 9825 7800 l + cp gs col-1 s gr +/Courier-Bold ff 240.00 scf sf +10275 7650 m +gs 1 -1 sc (gmap) col-1 sh gr +% Polyline +7.500 slw +n 2475 12150 m 2475 13800 l 450 13800 l 450 12150 l + cp gs col-1 s gr +% Polyline +gs clippath +11145 10947 m 11145 11115 l 11205 11115 l 11205 10947 l 11205 10947 l 11175 11067 l 11145 10947 l cp +eoclip +n 11550 6300 m 11550 10500 l 11175 10725 l + 11175 11100 l gs col-1 s gr gr + +% arrowhead +n 11145 10947 m 11175 11067 l 11205 10947 l col-1 s +% Polyline +gs clippath +6120 447 m 6120 615 l 6180 615 l 6180 447 l 6180 447 l 6150 567 l 6120 447 l cp +eoclip +n 6150 0 m + 6150 600 l gs col-1 s gr gr + +% arrowhead +n 6120 447 m 6150 567 l 6180 447 l col-1 s +% Polyline +gs clippath +897 13605 m 1065 13605 l 1065 13545 l 897 13545 l 897 13545 l 1017 13575 l 897 13605 l cp +eoclip +n 600 13575 m + 1050 13575 l gs col-1 s gr gr + +% arrowhead +n 897 13605 m 1017 13575 l 897 13545 l col-1 s +% Polyline +15.000 slw +n 1050 13125 m 1050 12975 l 600 12975 l 600 13125 l + cp gs col-1 s gr +/Times-Roman ff 240.00 scf sf +1275 13650 m +gs 1 -1 sc (Data flow) col-1 sh gr +% Polyline +7.500 slw +gs clippath +11520 4797 m 11520 4965 l 11580 4965 l 11580 4797 l 11580 4797 l 11550 4917 l 11520 4797 l cp +eoclip +n 11550 4050 m + 11550 4950 l gs col-1 s gr gr + +% arrowhead +n 11520 4797 m 11550 4917 l 11580 4797 l col-1 s +% Polyline +gs clippath +12795 7197 m 12795 7365 l 12855 7365 l 12855 7197 l 12855 7197 l 12825 7317 l 12795 7197 l cp +eoclip +n 11850 6300 m 11850 6600 l 12825 6975 l + 12825 7350 l gs col-1 s gr gr + +% arrowhead +n 12795 7197 m 12825 7317 l 12855 7197 l col-1 s +% Polyline +gs clippath +10245 7197 m 10245 7365 l 10305 7365 l 10305 7197 l 10305 7197 l 10275 7317 l 10245 7197 l cp +eoclip +n 7725 6225 m 7725 6450 l 10275 6975 l + 10275 7350 l gs col-1 s gr gr + +% arrowhead +n 10245 7197 m 10275 7317 l 10305 7197 l col-1 s +% Polyline +gs clippath +10845 7197 m 10845 7365 l 10905 7365 l 10905 7197 l 10905 7197 l 10875 7317 l 10845 7197 l cp +eoclip +n 11250 6225 m 11250 6600 l 10875 6975 l + 10875 7350 l gs col-1 s gr gr + +% arrowhead +n 10845 7197 m 10875 7317 l 10905 7197 l col-1 s +% Polyline +gs clippath +8070 10947 m 8070 11115 l 8130 11115 l 8130 10947 l 8130 10947 l 8100 11067 l 8070 10947 l cp +eoclip +n 7125 6300 m 7125 10050 l 8100 10350 l + 8100 11100 l gs col-1 s gr gr + +% arrowhead +n 8070 10947 m 8100 11067 l 8130 10947 l col-1 s +% Polyline +gs clippath +8295 7197 m 8295 7365 l 8355 7365 l 8355 7197 l 8355 7197 l 8325 7317 l 8295 7197 l cp +eoclip +n 7575 6300 m 7575 6675 l 8325 7125 l + 8325 7350 l gs col-1 s gr gr + +% arrowhead +n 8295 7197 m 8325 7317 l 8355 7197 l col-1 s +% Polyline +gs clippath +10545 8547 m 10545 8715 l 10605 8715 l 10605 8547 l 10605 8547 l 10575 8667 l 10545 8547 l cp +eoclip +n 10575 7800 m + 10575 8700 l gs col-1 s gr gr + +% arrowhead +n 10545 8547 m 10575 8667 l 10605 8547 l col-1 s +% Polyline +gs clippath +3420 7197 m 3420 7365 l 3480 7365 l 3480 7197 l 3480 7197 l 3450 7317 l 3420 7197 l cp +eoclip +n 2925 6300 m 2925 6525 l 3450 7050 l + 3450 7350 l gs col-1 s gr gr + +% arrowhead +n 3420 7197 m 3450 7317 l 3480 7197 l col-1 s +% Polyline +gs clippath +1170 7197 m 1170 7365 l 1230 7365 l 1230 7197 l 1230 7197 l 1200 7317 l 1170 7197 l cp +eoclip +n 2475 6300 m 2475 6525 l 1200 7050 l + 1200 7350 l gs col-1 s gr gr + +% arrowhead +n 1170 7197 m 1200 7317 l 1230 7197 l col-1 s +% Polyline +gs clippath +7020 4797 m 7020 4965 l 7080 4965 l 7080 4797 l 7080 4797 l 7050 4917 l 7020 4797 l cp +eoclip +n 6450 2400 m 6450 2550 l 7050 2850 l + 7050 4950 l gs col-1 s gr gr + +% arrowhead +n 7020 4797 m 7050 4917 l 7080 4797 l col-1 s +% Polyline +gs clippath +7320 4797 m 7320 4965 l 7380 4965 l 7380 4797 l 7380 4797 l 7350 4917 l 7320 4797 l cp +eoclip +n 6450 1050 m 6450 1200 l 7350 1650 l + 7350 4950 l gs col-1 s gr gr + +% arrowhead +n 7320 4797 m 7350 4917 l 7380 4797 l col-1 s +% Polyline + [60] 0 sd +gs clippath +5070 2997 m 5070 3165 l 5130 3165 l 5130 2997 l 5130 2997 l 5100 3117 l 5070 2997 l cp +eoclip +n 5850 1050 m 5850 1200 l 5100 1575 l + 5100 3150 l gs col-1 s gr gr + [] 0 sd +% arrowhead +n 5070 2997 m 5100 3117 l 5130 2997 l col-1 s +% Polyline + [60] 0 sd +gs clippath +5295 2997 m 5295 3165 l 5355 3165 l 5355 2997 l 5355 2997 l 5325 3117 l 5295 2997 l cp +eoclip +n 5850 2400 m 5850 2550 l 5325 2850 l + 5325 3150 l gs col-1 s gr gr + [] 0 sd +% arrowhead +n 5295 2997 m 5325 3117 l 5355 2997 l col-1 s +% Polyline + [60] 0 sd +gs clippath +4770 2997 m 4770 3165 l 4830 3165 l 4830 2997 l 4830 2997 l 4800 3117 l 4770 2997 l cp +eoclip +n 4050 1050 m 4050 1200 l 4800 1575 l + 4800 3150 l gs col-1 s gr gr + [] 0 sd +% arrowhead +n 4770 2997 m 4800 3117 l 4830 2997 l col-1 s +% Polyline + [60] 0 sd +gs clippath +4545 2997 m 4545 3165 l 4605 3165 l 4605 2997 l 4605 2997 l 4575 3117 l 4545 2997 l cp +eoclip +n 4050 2400 m 4050 2550 l 4575 2850 l + 4575 3150 l gs col-1 s gr gr + [] 0 sd +% arrowhead +n 4545 2997 m 4575 3117 l 4605 2997 l col-1 s +% Polyline +gs clippath +2820 4797 m 2820 4965 l 2880 4965 l 2880 4797 l 2880 4797 l 2850 4917 l 2820 4797 l cp +eoclip +n 3450 2400 m 3450 2550 l 2850 2850 l + 2850 4950 l gs col-1 s gr gr + +% arrowhead +n 2820 4797 m 2850 4917 l 2880 4797 l col-1 s +% Polyline +gs clippath +2520 4797 m 2520 4965 l 2580 4965 l 2580 4797 l 2580 4797 l 2550 4917 l 2520 4797 l cp +eoclip +n 3450 1050 m 3450 1200 l 2550 1650 l + 2550 4950 l gs col-1 s gr gr + +% arrowhead +n 2520 4797 m 2550 4917 l 2580 4797 l col-1 s +% Polyline +gs clippath +3720 447 m 3720 615 l 3780 615 l 3780 447 l 3780 447 l 3750 567 l 3720 447 l cp +eoclip +n 3750 0 m + 3750 600 l gs col-1 s gr gr + +% arrowhead +n 3720 447 m 3750 567 l 3780 447 l col-1 s +% Polyline +gs clippath +5670 7197 m 5670 7365 l 5730 7365 l 5730 7197 l 5730 7197 l 5700 7317 l 5670 7197 l cp +eoclip +n 6675 6225 m 6675 6450 l 5700 7050 l + 5700 7350 l gs col-1 s gr gr + +% arrowhead +n 5670 7197 m 5700 7317 l 5730 7197 l col-1 s +% Polyline +gs clippath +4695 8547 m 4695 8715 l 4755 8715 l 4755 8547 l 4755 8547 l 4725 8667 l 4695 8547 l cp +eoclip +n 5700 7800 m 5700 7950 l 4725 8325 l + 4725 8700 l gs col-1 s gr gr + +% arrowhead +n 4695 8547 m 4725 8667 l 4755 8547 l col-1 s +% Polyline +gs clippath +4047 5580 m 4215 5580 l 4215 5520 l 4047 5520 l 4047 5520 l 4167 5550 l 4047 5580 l cp +eoclip +n 3300 5550 m + 4200 5550 l gs col-1 s gr gr + +% arrowhead +n 4047 5580 m 4167 5550 l 4047 5520 l col-1 s +% Polyline +gs clippath +6447 5580 m 6615 5580 l 6615 5520 l 6447 5520 l 6447 5520 l 6567 5550 l 6447 5580 l cp +eoclip +n 5700 5550 m + 6600 5550 l gs col-1 s gr gr + +% arrowhead +n 6447 5580 m 6567 5550 l 6447 5520 l col-1 s +% Polyline +gs clippath +4395 8547 m 4395 8715 l 4455 8715 l 4455 8547 l 4455 8547 l 4425 8667 l 4395 8547 l cp +eoclip +n 3450 7800 m 3450 7950 l 4425 8325 l + 4425 8700 l gs col-1 s gr gr + +% arrowhead +n 4395 8547 m 4425 8667 l 4455 8547 l col-1 s +% Polyline +gs clippath +5145 10947 m 5145 11115 l 5205 11115 l 5205 10947 l 5205 10947 l 5175 11067 l 5145 10947 l cp +eoclip +n 6900 6300 m 6900 10050 l 5175 10725 l + 5175 11100 l gs col-1 s gr gr + +% arrowhead +n 5145 10947 m 5175 11067 l 5205 10947 l col-1 s +% Polyline +gs clippath +10770 10947 m 10770 11115 l 10830 11115 l 10830 10947 l 10830 10947 l 10800 11067 l 10770 10947 l cp +eoclip +n 10800 10050 m + 10800 11100 l gs col-1 s gr gr + +% arrowhead +n 10770 10947 m 10800 11067 l 10830 10947 l col-1 s +% Polyline +gs clippath +8070 12297 m 8070 12465 l 8130 12465 l 8130 12297 l 8130 12297 l 8100 12417 l 8070 12297 l cp +eoclip +n 8100 11550 m + 8100 12450 l gs col-1 s gr gr + +% arrowhead +n 8070 12297 m 8100 12417 l 8130 12297 l col-1 s +% Polyline +gs clippath +4545 10947 m 4545 11115 l 4605 11115 l 4605 10947 l 4605 10947 l 4575 11067 l 4545 10947 l cp +eoclip +n 4575 10050 m + 4575 11100 l gs col-1 s gr gr + +% arrowhead +n 4545 10947 m 4575 11067 l 4605 10947 l col-1 s +% Polyline +gs clippath +8547 5580 m 8715 5580 l 8715 5520 l 8547 5520 l 8547 5520 l 8667 5550 l 8547 5580 l cp +eoclip +n 7800 5550 m + 8700 5550 l gs col-1 s gr gr + +% arrowhead +n 8547 5580 m 8667 5550 l 8547 5520 l col-1 s +% Polyline +gs clippath +10947 5580 m 11115 5580 l 11115 5520 l 10947 5520 l 10947 5520 l 11067 5550 l 10947 5580 l cp +eoclip +n 10200 5550 m + 11100 5550 l gs col-1 s gr gr + +% arrowhead +n 10947 5580 m 11067 5550 l 10947 5520 l col-1 s +% Polyline +gs clippath +13680 5928 m 13680 5760 l 13620 5760 l 13620 5928 l 13620 5928 l 13650 5808 l 13680 5928 l cp +eoclip +n 12145 6234 m 12150 6450 l 13650 6450 l + 13650 5775 l gs col-1 s gr gr + +% arrowhead +n 13680 5928 m 13650 5808 l 13620 5928 l col-1 s +% Polyline +gs clippath +11820 4797 m 11820 4965 l 11880 4965 l 11880 4797 l 11880 4797 l 11850 4917 l 11820 4797 l cp +eoclip +n 13650 5325 m 13650 4500 l 11850 4500 l + 11850 4950 l gs col-1 s gr gr + +% arrowhead +n 11820 4797 m 11850 4917 l 11880 4797 l col-1 s +% here ends figure; +% +% here starts figure with depth 3 +% Polyline +0 slj +0 slc +7.500 slw +gs clippath +10395 10947 m 10395 11115 l 10455 11115 l 10455 10947 l 10455 10947 l 10425 11067 l 10395 10947 l cp +eoclip +n 7350 6300 m 7350 9750 l 10425 10725 l + 10425 11100 l gs col-1 s gr gr + +% arrowhead +n 10395 10947 m 10425 11067 l 10455 10947 l col-1 s +% here ends figure; +$F2psEnd +rs +showpage +%%Trailer +%EOF diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f_synp.fig scotch-6.0.6/doc/src/scotch/s_f_synp.fig --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f_synp.fig 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f_synp.fig 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,352 @@ +#FIG 3.2 Produced by xfig version 3.2.5-alpha5 +Landscape +Center +Inches +Letter +100.00 +Single +-2 +1200 2 +6 6525 4725 7875 6375 +1 1 0 2 -1 -1 10 0 -1 0.000 1 0.0000 7200 4950 600 150 7200 4950 7800 4950 +1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 7200 6150 600 150 7200 6150 7800 6300 +2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 + 7800 4950 7800 6150 +2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 + 6600 4950 6600 6150 +2 2 0 0 -1 -1 9 0 0 0.000 0 0 0 0 0 5 + 7800 6150 7800 5850 6600 5850 6600 6150 7800 6150 +4 0 -1 7 0 0 16 0.0000 4 195 765 6855 5400 Source\001 +4 0 -1 7 0 0 16 0.0000 4 255 1050 6735 5700 graph file\001 +4 0 -1 7 0 12 16 0.0000 4 240 660 6900 6075 .grf\001 +-6 +6 375 7275 2025 7875 +2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 + 1950 7800 1950 7350 450 7350 450 7800 1950 7800 +4 0 -1 7 0 14 16 0.0000 4 180 660 900 7650 mtst\001 +-6 +6 11025 4800 12375 6375 +1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 11700 4950 600 150 11700 4950 12300 5100 +1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 11700 6150 600 150 11700 6150 12300 6300 +2 2 0 0 -1 -1 9 0 0 0.000 0 0 0 0 0 5 + 12300 6150 12300 5850 11100 5850 11100 6150 12300 6150 +2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 + 11100 4950 11100 6150 +2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 + 12300 4950 12300 6150 +4 0 -1 7 0 12 16 0.0000 4 225 660 11400 6075 .tgt\001 +4 0 -1 7 0 0 16 0.0000 4 255 1155 11175 5550 Target file\001 +-6 +6 7500 7275 9150 7875 +2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 + 9075 7800 9075 7350 7575 7350 7575 7800 9075 7800 +4 0 -1 7 0 14 16 0.0000 4 240 660 8025 7650 gtst\001 +-6 +6 12000 7275 13650 7875 +2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 + 13575 7800 13575 7350 12075 7350 12075 7800 13575 7800 +4 0 -1 7 0 14 16 0.0000 4 180 660 12525 7650 atst\001 +-6 +6 2025 4725 3375 6375 +1 1 0 2 -1 -1 10 0 -1 0.000 1 0.0000 2700 4950 600 150 2700 4950 3300 4950 +1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 2700 6150 600 150 2700 6150 3300 6300 +2 2 0 0 -1 -1 9 0 0 0.000 0 0 0 0 0 5 + 3300 6150 3300 5850 2100 5850 2100 6150 3300 6150 +2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 + 3300 4950 3300 6150 +2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 + 2100 4950 2100 6150 +4 0 -1 7 0 12 16 0.0000 4 180 660 2400 6075 .msh\001 +4 0 -1 7 0 0 16 0.0000 4 195 765 2355 5400 Source\001 +4 0 -1 7 0 0 16 0.0000 4 195 1020 2250 5700 mesh file\001 +-6 +6 2625 7275 4275 7875 +2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 + 4200 7800 4200 7350 2700 7350 2700 7800 4200 7800 +4 0 -1 7 0 14 16 0.0000 4 180 660 3150 7650 mord\001 +-6 +6 5475 -1575 6825 75 +1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 6150 -1350 600 150 6150 -1350 6750 -1200 +1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 6150 -150 600 150 6150 -150 6750 0 +2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 + 6750 -1350 6750 -150 +2 2 0 0 -1 -1 9 0 0 0.000 0 0 0 0 0 5 + 6750 -150 6750 -450 5550 -450 5550 -150 6750 -150 +2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 + 5550 -1350 5550 -150 +4 0 -1 7 0 0 16 0.0000 4 195 960 5724 -720 External\001 +4 0 -1 7 0 0 16 0.0000 4 255 1050 5670 -420 graph file\001 +-6 +6 5325 0 6975 1125 +6 5325 525 6975 1125 +2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 + 6900 1050 6900 600 5400 600 5400 1050 6900 1050 +4 0 -1 7 0 14 16 0.0000 4 195 495 5925 900 gcv\001 +-6 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 6150 0 6150 600 +-6 +6 3075 -1575 4425 75 +1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 3750 -1350 600 150 3750 -1350 4350 -1200 +1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 3750 -150 600 150 3750 -150 4350 0 +2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 + 4350 -1350 4350 -150 +2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 + 3150 -1350 3150 -150 +2 2 0 0 -1 -1 9 0 0 0.000 0 0 0 0 0 5 + 4350 -150 4350 -450 3150 -450 3150 -150 4350 -150 +4 0 -1 7 0 0 16 0.0000 4 195 960 3324 -720 External\001 +4 0 -1 7 0 0 16 0.0000 4 195 1020 3300 -420 mesh file\001 +-6 +6 2925 1875 4575 2475 +2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 + 4500 2400 4500 1950 3000 1950 3000 2400 4500 2400 +4 0 -1 7 0 14 16 0.0000 4 240 825 3375 2250 mmk_*\001 +-6 +6 5325 1875 6975 2475 +2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 + 6900 2400 6900 1950 5400 1950 5400 2400 6900 2400 +4 0 -1 7 0 14 16 0.0000 4 240 825 5775 2250 gmk_*\001 +-6 +6 2925 525 4575 1125 +2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 + 4500 1050 4500 600 3000 600 3000 1050 4500 1050 +4 0 -1 7 0 14 16 0.0000 4 135 495 3525 900 mcv\001 +-6 +6 4275 2925 5625 4575 +1 1 0 2 -1 -1 10 0 -1 0.000 1 0.0000 4950 3150 600 150 4950 3150 5550 3150 +1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 4950 4350 600 150 4950 4350 5550 4500 +2 2 0 0 -1 -1 9 0 0 0.000 0 0 0 0 0 5 + 5550 4350 5550 4050 4350 4050 4350 4350 5550 4350 +2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 + 5550 3150 5550 4350 +2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 + 4350 3150 4350 4350 +4 0 -1 7 0 12 16 0.0000 4 180 660 4650 4275 .xyz\001 +4 0 -1 7 0 0 16 0.0000 4 255 1125 4425 3600 Geometry\001 +4 0 -1 7 0 0 16 0.0000 4 195 360 4800 3900 file\001 +-6 +6 4875 7275 6525 7875 +2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 + 6450 7800 6450 7350 4950 7350 4950 7800 6450 7800 +4 0 -1 7 0 14 16 0.0000 4 240 660 5400 7650 gord\001 +-6 +6 4125 5250 5775 5850 +2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 + 5700 5775 5700 5325 4200 5325 4200 5775 5700 5775 +4 0 -1 7 0 14 16 0.0000 4 240 1155 4425 5625 gmk_msh\001 +-6 +6 3900 8475 5250 10125 +1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 4575 8700 600 150 4575 8700 5175 8850 +1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 4575 9900 600 150 4575 9900 5175 10050 +2 2 0 0 -1 -1 9 0 0 0.000 0 0 0 0 0 5 + 5175 9900 5175 9600 3975 9600 3975 9900 5175 9900 +2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 + 5175 8700 5175 9900 +2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 + 3975 8700 3975 9900 +4 0 -1 7 0 0 16 0.0000 4 195 360 4425 9450 file\001 +4 0 -1 7 0 12 16 0.0000 4 180 660 4275 9825 .ord\001 +4 0 -1 7 0 0 16 0.0000 4 255 1020 4110 9150 Ordering\001 +-6 +6 9900 8550 11250 10125 +1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 10575 8700 600 150 10575 8700 11175 8850 +1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 10575 9900 600 150 10575 9900 11175 10050 +2 2 0 0 -1 -1 9 0 0 0.000 0 0 0 0 0 5 + 11175 9900 11175 9600 9975 9600 9975 9900 11175 9900 +2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 + 9975 8700 9975 9900 +2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 + 11175 8700 11175 9900 +4 0 -1 7 0 0 16 0.0000 4 195 360 10425 9450 file\001 +4 0 -1 7 0 0 16 0.0000 4 255 975 10125 9150 Mapping\001 +4 0 -1 7 0 12 16 0.0000 4 180 660 10275 9825 .map\001 +-6 +6 9975 11025 11625 11625 +2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 + 11550 11550 11550 11100 10050 11100 10050 11550 11550 11550 +4 0 -1 7 0 14 16 0.0000 4 240 825 10350 11400 gmtst\001 +-6 +6 7425 12300 8775 13875 +1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 8100 12450 600 150 8100 12450 8700 12600 +1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 8100 13650 600 150 8100 13650 8700 13800 +2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 + 8700 12450 8700 13650 +2 2 0 0 -1 -1 9 0 0 0.000 0 0 0 0 0 5 + 8700 13650 8700 13350 7500 13350 7500 13650 8700 13650 +2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 + 7500 12450 7500 13650 +4 0 -1 7 0 0 16 0.0000 4 195 360 7950 13200 file\001 +4 0 -1 7 0 0 16 0.0000 4 255 1020 7650 12900 Graphics\001 +-6 +6 7275 11025 8925 11625 +2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 + 8850 11550 8850 11100 7350 11100 7350 11550 8850 11550 +4 0 -1 7 0 14 16 0.0000 4 240 660 7725 11400 gout\001 +-6 +6 450 12150 2475 13800 +6 525 12225 2175 13650 +6 525 12225 1125 12825 +1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 825 12675 225 75 825 12675 1050 12750 +1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 825 12315 225 75 825 12315 1050 12390 +2 2 0 0 -1 -1 9 0 0 0.000 0 0 0 0 0 5 + 1050 12525 1050 12675 600 12675 600 12525 1050 12525 +2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 + 600 12300 600 12675 +2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 + 1050 12300 1050 12675 +-6 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 600 13575 1050 13575 +2 2 0 2 -1 -1 5 0 -1 0.000 0 0 0 0 0 5 + 1050 13125 1050 12975 600 12975 600 13125 1050 13125 +4 0 -1 5 0 -1 16 0.0000 4 195 1065 1275 13650 Data flow\001 +4 0 -1 8 0 -1 16 0.0000 4 195 435 1275 12600 File\001 +4 0 -1 10 0 -1 16 0.0000 4 255 960 1275 13125 Program\001 +-6 +2 2 0 1 -1 -1 6 0 -1 0.000 0 0 7 0 0 5 + 2475 12150 2475 13800 450 13800 450 12150 2475 12150 +-6 +6 8625 5250 10275 5850 +2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 + 10200 5775 10200 5325 8700 5325 8700 5775 10200 5775 +4 0 -1 7 0 14 16 0.0000 4 240 1155 8925 5625 amk_grf\001 +-6 +6 4050 11025 5700 11625 +2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 + 5625 11550 5625 11100 4125 11100 4125 11550 5625 11550 +4 0 -1 7 0 14 16 0.0000 4 240 825 4425 11400 gotst\001 +-6 +6 12825 5250 14475 5850 +2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 + 14400 5775 14400 5325 12900 5325 12900 5775 14400 5775 +4 0 -1 7 0 14 16 0.0000 4 240 660 13350 5625 acpl\001 +-6 +6 10725 3525 12375 4950 +6 10725 3525 12375 4125 +2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 + 12300 4050 12300 3600 10800 3600 10800 4050 12300 4050 +4 0 -1 7 0 14 16 0.0000 4 240 825 11175 3900 amk_*\001 +-6 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 11550 4050 11550 4950 +-6 +6 9750 7275 11400 7875 +2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 + 11325 7800 11325 7350 9825 7350 9825 7800 11325 7800 +4 0 -1 7 0 14 16 0.0000 4 195 660 10275 7650 gmap\001 +-6 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 11850 6300 11850 6600 12825 6975 12825 7350 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 7725 6225 7725 6450 10275 6975 10275 7350 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 11250 6225 11250 6600 10875 6975 10875 7350 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 7125 6300 7125 10050 8100 10350 8100 11100 +2 1 0 1 -1 -1 6 0 -1 0.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 11550 6300 11550 10500 11175 10725 11175 11100 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 7575 6300 7575 6675 8325 7125 8325 7350 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 10575 7800 10575 8700 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 2925 6300 2925 6525 3450 7050 3450 7350 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 2475 6300 2475 6525 1200 7050 1200 7350 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 6450 2400 6450 2550 7050 2850 7050 4950 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 6450 1050 6450 1200 7350 1650 7350 4950 +2 1 1 1 -1 -1 5 0 -1 4.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 5850 1050 5850 1200 5100 1575 5100 3150 +2 1 1 1 -1 -1 5 0 -1 4.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 5850 2400 5850 2550 5325 2850 5325 3150 +2 1 1 1 -1 -1 5 0 -1 4.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 4050 1050 4050 1200 4800 1575 4800 3150 +2 1 1 1 -1 -1 5 0 -1 4.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 4050 2400 4050 2550 4575 2850 4575 3150 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 3450 2400 3450 2550 2850 2850 2850 4950 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 3450 1050 3450 1200 2550 1650 2550 4950 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 3750 0 3750 600 +2 1 0 1 -1 -1 9 0 -1 0.000 0 0 -1 1 0 8 + 0 0 1.00 60.00 120.00 + 4950 4500 4950 4725 6150 5175 6150 6450 6675 6825 6675 10350 + 7800 10725 7800 11100 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 6675 6225 6675 6450 5700 7050 5700 7350 +2 1 0 4 7 7 8 -1 20 0.000 0 0 -1 0 0 2 + 6300 5400 6000 5700 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 5700 7800 5700 7950 4725 8325 4725 8700 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 3300 5550 4200 5550 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5700 5550 6600 5550 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 3450 7800 3450 7950 4425 8325 4425 8700 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 6900 6300 6900 10050 5175 10725 5175 11100 +2 1 0 4 7 7 8 -1 20 0.000 0 0 -1 0 0 2 + 6600 6600 6000 6675 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 10800 10050 10800 11100 +2 1 0 1 -1 -1 10 0 -1 0.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 10350 10050 10350 10275 8475 10725 8475 11100 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 8100 11550 8100 12450 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 4575 10050 4575 11100 +2 1 0 1 -1 -1 3 0 -1 0.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 7350 6300 7350 9750 10425 10725 10425 11100 +2 1 0 4 7 7 8 -1 20 0.000 0 0 -1 0 0 2 + 9600 10275 9600 10575 +2 1 0 4 7 7 8 -1 20 0.000 0 0 -1 0 0 2 + 6825 10275 6450 9975 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 7800 5550 8700 5550 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 10200 5550 11100 5550 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 12145 6234 12150 6450 13650 6450 13650 5775 +2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 13650 5325 13650 4500 11850 4500 11850 4950 diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_f.tex scotch-6.0.6/doc/src/scotch/s_f.tex --- scotch-6.0.4.dfsg1/doc/src/scotch/s_f.tex 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_f.tex 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,801 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Titre : s_f.tex % +% Sujet : Manuel de l'utilisateur % +% du projet 'Scotch' % +% Formats de fichiers 6.0 % +% Auteur : Francois Pellegrini % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Files and data structures} +\label{sec-file} + +For the sake of portability, readability, and reduction of storage space, +all the data files shared by the different programs of the +\scotch\ project are coded in plain ASCII text exclusively. +Although we may speak of ``lines'' when describing file formats, +text-formatting characters such as newlines or tabulations are not +mandatory, and are not taken into account when files are read. +They are only used to provide better readability and understanding. +Whenever numbers are used to label objects, and unless explicitely +stated, \textbf{numberings always start from zero}, not one. + +\subsection{Graph files} +\label{sec-file-sgraph} + +Graph files, which usually end in ``\texttt{\@.grf}'' or +``\texttt{\@.src}'', describe valuated graphs, which can be valuated +process graphs to be mapped onto target architectures, or graphs +representing the adjacency structures of matrices to order. + +Graphs are represented by means of adjacency lists: the definition +of each vertex is accompanied by the list of all of its neighbors, i.e. +all of its adjacent arcs. Therefore, the overall number of edge data is +twice the number of edges. +\\ + +Since version \textsc{3.3} has been introduced a new file format, referred +to as the ``new-style'' file format, which replaces the previous, +``old-style'', file format. The two advantages of the new-style +format over its predecessor are its greater compacity, which results +in shorter I/O times, and its ability to handle easily graphs output +by C or by Fortran programs. + +Starting from version \textsc{4.0}, only the new format is supported. To +convert remaining old-style graph files into new-style graph files, +one should get version \textsc{3.4} of the \scotch\ distribution, which +comprises the \texttt{scv} file converter, and use it to produce +new-style \scotch\ graph files from the old-style \scotch\ graph files +which it is able to read. See section~\ref{sec-prog-gcv} for a +description of \texttt{gcv}, formerly called \texttt{scv}. +\\ + +The first line of a graph file holds the graph file version number, +which is currently \texttt{0}. The second line holds the number of +vertices of the graph (referred to as \texttt{vertnbr} in \libscotch; see +for instance Figure~\ref{fig-lib-graf-one}, +page~\pageref{fig-lib-graf-one}, for a detailed example), followed by +its number of arcs (unappropriately called \texttt{edgenbr}, as it is in +fact equal to twice the actual number of edges). The third line holds +two figures: the graph base index value (\texttt{baseval}), and a numeric +flag. + +The graph base index value records the value of the starting index +used to describe the graph; it is usually $0$ when the graph has been +output by C programs, and $1$ for Fortran programs. Its purpose is to +ease the manipulation of graphs within each of these two environments, +while providing compatibility between them. + +The numeric flag, similar to the one used by the \chaco\ graph +format~\cite{hele93c}, is made of three decimal digits. +A non-zero value in the units indicates that vertex weights are provided. +A non-zero value in the tenths indicates that edge weights are provided. +A non-zero value in the hundredths indicates that vertex labels are provided; +if it is the case, vertices can be stored in any order in the file; else, +natural order is assumed, starting from the graph base index. + +This header data is then followed by as many lines as there are +vertices in the graph, that is, \texttt{vertnbr} lines. Each of these +lines begins with the vertex label, if necessary, the vertex load, if +necessary, and the vertex degree, followed by the description of the +arcs. An arc is defined by the load of the edge, if necessary, and by +the label of its other end vertex. +The arcs of a given vertex can be provided in any order in its +neighbor list. If vertex labels are provided, vertices can also be +stored in any order in the file. + +Figure~\ref{fig-file-sgraph} shows the contents of a graph file +modeling a cube with unity vertex and edge weights and base $0$. + +\begin{figure}[hbt] +\begin{center} +\begin{minipage}{7.3cm} +{\renewcommand{\baselinestretch}{1.05} + \footnotesize \tt +\begin{verbatim} +0 +8 24 +0 000 +3 4 2 1 +3 5 3 0 +3 6 0 3 +3 7 1 2 +3 0 6 5 +3 1 7 4 +3 2 4 7 +3 3 5 6 +\end{verbatim}} +\end{minipage} +\end{center} +\caption{Graph file representing a cube.} +\label{fig-file-sgraph} +\end{figure} + +\subsection{Mesh files} +\label{sec-file-smesh} + +Mesh files, which usually end in ``\texttt{\@.msh}'', describe valuated +meshes, made of elements and nodes, the elements of which can be +mapped onto target architectures, and the nodes of which can be +reordered. + +Meshes are bipartite graphs, in the sense that every element is +connected to the nodes that it comprises, and every node is connected +to the elements to which it belongs. No edge connects any two element +vertices, nor any two node vertices. One can also think of meshes as +hypergraphs, such that nodes are the vertices of the hypergraph and +elements are hyper-edges which connect multiple nodes, or reciprocally +such that elements are the vertices of the hypergraph and nodes are +hyper-edges which connect multiple elements. + +Since meshes are graphs, the structure of mesh files resembles very +much the one of graph files described above in +section~\ref{sec-file-sgraph}, and differs only by its header, which +indicates which of the vertices are node vertices and element +vertices. +\\ + +The first line of a mesh file holds the mesh file version number, +which is currently \texttt{1}. Graph and mesh version numbers will always +differ, which enables application programs to accept both file formats +and adapt their behavior according to the type of input data. The +second line holds the number of elements of the mesh (\texttt{velmnbr}), +followed by its number of nodes (\texttt{vnodnbr}), and by its overall +number of arcs (\texttt{edgenbr}, that is, twice the number of edges +which connect elements to nodes and vice-versa). + +The third line holds three figures: the base index of the first +element vertex in memory (\texttt{velmbas}), the base index of the first +node vertex in memory (\texttt{vnodbas}), and a numeric flag. + +The \scotch\ mesh file format requires that all nodes and all elements +be assigned to contiguous ranges of indices. Therefore, either all +element vertices are defined before all node vertices, or all node +vertices are defined before all element vertices. The node and element +base indices indicate at the same time whether elements or nodes are +put in the first place, as well as the value of the starting index +used to describe the graph. Indeed, if +$\mbox{\texttt{velm}}\-\mbox{\texttt{bas}} < +\mbox{\texttt{vnod}}\-\mbox{\texttt{bas}}$, then elements have the +smallest indices, \texttt{velmbas} is the base value of the underlying +graph (that is, \texttt{baseval} = \texttt{velmbas}), and +$\mbox{\texttt{velmbas}} + \mbox{\texttt{velmnbr}} = +\mbox{\texttt{vnodbas}}$ +holds. Conversely, if $\mbox{\texttt{velm}}\-\mbox{\texttt{bas}} +> \mbox{\texttt{vnod}}\-\mbox{\texttt{bas}}$, then nodes have the +smallest indices, \texttt{vnodbas} is the base value of the underlying +graph, (that is, \texttt{baseval} = \texttt{vnodbas}), and +$\mbox{\texttt{vnodbas}} + \mbox{\texttt{vnodnbr}} = +\mbox{\texttt{velmbas}}$ holds. + +The numeric flag, similar to the one used by the \chaco\ graph +format~\cite{hele93c}, is made of three decimal digits. A non-zero +value in the units indicates that vertex weights are provided. A +non-zero value in the tenths indicates that edge weights are provided. +A non-zero value in the hundredths indicates that vertex labels are +provided; if it is the case, and if +$\mbox{\texttt{velm}}\-\mbox{\texttt{bas}} < +\mbox{\texttt{vnod}}\-\mbox{\texttt{bas}}$ +(resp\@. $\mbox{\texttt{velm}}\-\mbox{\texttt{bas}} > +\mbox{\texttt{vnod}}\-\mbox{\texttt{bas}}$), the \texttt{velmnbr} +(resp\@. \texttt{vnodnbr}) first vertex lines are assumed to be element +(resp\@. node) vertices, irrespective of their vertex labels, and the +\texttt{vnodnbr} (resp\@. \texttt{velmnbr}) remaining vertex lines are +assumed to be node (resp\@. element) vertices; else, natural order is +assumed, starting at the underlying graph base index (\texttt{baseval}). + +This header data is then followed by as many lines as there are +node and element vertices in the graph. These lines are similar +to the ones of the graph format, except that, in order to save +disk space, the numberings of nodes and elements all start from +the same base value, that is, +$\min(\mbox{\texttt{velm}}\-\mbox{\texttt{bas}}, +\mbox{\texttt{vnod}}\-\mbox{\texttt{bas}})$ (also called +\texttt{baseval}, like for regular graphs). + +For example, Figure~\ref{fig-file-smesh} shows the contents of the +mesh file modeling three square elements, with unity vertex and edge +weights, elements defined before nodes, and numbering of the +underlying graph starting from $1$. In memory, the three elements are +labeled from $1$ to $3$, and the eight nodes are labeled from $4$ to +$11$. In the file, the three elements are still labeled from $1$ to $3$, +while the eight nodes are labeled from $1$ to $8$. + +When labels are used, elements and nodes may have similar labels, +but not two elements, nor two nodes, should have the same labels. + +\begin{figure}[hbt] +\begin{center} +\includegraphics[scale=0.65]{s_f_msf.eps} +\hfil ~\hfil +\begin{minipage}[b]{7cm} +\verb+1+ + +\noi +\verb+3 8 24+ + +\noi +\verb+1 4 000+ + +\verb+4 2 +\makebox[0em][l]{\tiny (= 5)}\verb+ 8 +\makebox[0em][l]{\tiny (= 11)}\verb+ 4 +\makebox[0em][l]{\tiny (= 7)}\verb+ 3 +\makebox[0em][l]{\tiny (= 6)} + +\noi +\verb+4 7 +\makebox[0em][l]{\tiny (= 10)}\verb+ 2 +\makebox[0em][l]{\tiny (= 5)}\verb+ 8 +\makebox[0em][l]{\tiny (= 11)}\verb+ 1 +\makebox[0em][l]{\tiny (= 4)} + +\noi +\verb+4 5 +\makebox[0em][l]{\tiny (= 8)}\verb+ 6 +\makebox[0em][l]{\tiny (= 9)}\verb+ 3 +\makebox[0em][l]{\tiny (= 6)}\verb+ 4 +\makebox[0em][l]{\tiny (= 7)} + +\noi +\verb+1 2+ + +\noi +\verb+2 2 1+ + +\noi +\verb+2 1 3+ + +\noi +\verb+2 1 3+ + +\noi +\verb+1 3+ + +\noi +\verb+1 3+ + +\noi +\verb+1 2+ + +\noi +\verb+2 2 1+ +%\begin{verbatim} +%1 +%3 8 24 +%1 4 000 +%4 5 11 7 6 +%4 10 5 11 4 +%4 8 9 6 7 +%1 2 +%2 2 1 +%2 1 3 +%2 1 3 +%1 3 +%1 3 +%1 2 +%2 2 1 +%\end{verbatim} +\end{minipage} +\end{center} +\caption{Mesh file representing three square elements, with unity +vertex and edge weights. Elements are defined before nodes, and +numbering of the underlying graph starts from $1$. The left part of +the figure shows the mesh representation in memory, with consecutive +element and node indices. The right part of the figure shows the +contents of the file, with both element and node numberings starting +from $1$, the minimum of the element and node base values. +Corresponding node indices in memory are shown in parentheses for the +sake of comprehension.} +\label{fig-file-smesh} +\end{figure} + +\subsection{Geometry files} +\label{sec-file-geom} + +Geometry files, which usually end in ``\texttt{\@.xyz}'', hold the coordinates +of the vertices of their associated graph or mesh. +These files are not used in the mapping process itself, since only +topological properties are taken into account then (mappings are +computed regardless of graph geometry). +They are used by visualization programs to compute +graphical representations of mapping results. + +The first string to appear in a geometry file codes for its type, or +dimensionality. It is ``\texttt{1}'' if the file contains unidimensional +coordinates, ``\texttt{2}'' for bidimensional coordinates, and ``\texttt{3}'' for +tridimensional coordinates. +It is followed by the number of coordinate data stored in the file, which +should be at least equal to the number of vertices of the associated graph +or mesh, and by that many coordinate lines. +Each coordinate line holds the label of the vertex, plus one, two or three +real numbers which are the (X), (X,Y), or (X,Y,Z), coordinates of the graph +vertices, according to the graph dimensionality. +\\ +Vertices can be stored in any order in the file. Moreover, a geometry +file can have more coordinate data than there are vertices in the +associated graph or mesh file; only coordinates the labels of which +match labels of graph or mesh vertices will be taken into account. +This feature allows all subgraphs of a given graph or mesh to share the +same geometry file, provided that graph vertex labels remain unchanged. +For example, Figure~\ref{fig-file-geom} shows the contents of the 3D~geometry +file associated with the graph of Figure~\ref{fig-file-sgraph}. +\begin{figure}[hbt] +\begin{center} +\begin{minipage}{4.6cm} +{\renewcommand{\baselinestretch}{1.05} + \footnotesize \tt +\begin{verbatim} +3 +8 +0 0.0 0.0 0.0 +1 0.0 0.0 1.0 +2 0.0 1.0 0.0 +3 0.0 1.0 1.0 +4 1.0 0.0 0.0 +5 1.0 0.0 1.0 +6 1.0 1.0 0.0 +7 1.0 1.0 1.0 +\end{verbatim} +}\end{minipage} +\end{center} +\caption{Geometry file associated with the graph file of + Figure~\protect\ref{fig-file-sgraph}.} +\label{fig-file-geom} +\end{figure} + +\subsection{Target files} +\label{sec-file-target} + +Target files describe the architectures onto which source graphs are mapped. +Instead of containing the structure of the target graph itself, as source +graph files do, target files define how target graphs are bipartitioned and +give the distances between all pairs of vertices (that is, processors). +Keeping the bipartitioning information within target files avoids +recomputing it every time a target architecture is used. +We are allowed to do so because, in our approach, the recursive +bipartitioning of the target graph is fully independent with respect to that +of the source graph (however, the opposite is false). + +For space and time saving issues, some classical homogeneous architectures +(2D and 3D meshes and tori, hypercubes, complete graphs, etc\@.) have been +algorithmically coded within the mapper itself by the means of built-in +functions. +Instead of containing the whole graph decomposition data, their target +files hold only a few values, used as parameters by the built-in functions. + +\subsubsection{Decomposition-defined architecture files} +\label{sec-file-target-deco} + +Decomposition-defined architecture files are the way to describe +irregular target architectures that cannot be represented as +algorithmically-coded architectures. + +Two main file formats coexist~: the ``\texttt{deco 0}'' and +``\texttt{deco 2}'' formats. ``\texttt{deco}'' stands for +``decomposition-defined architecture'', followed by the format +number. The ``\texttt{deco 1}'' format is a compiled form of the +``\texttt{deco 0}'' format, which we will not describe here as it is +not meant to be handled by users. + +The ``\texttt{deco 0}'' header is followed by two integer numbers, +which are the number of processors and the largest terminal number used +in the decomposition, respectively. Two arrays follow. +The first array has as many lines as there are processors. Each of +these lines holds three numbers: the processor label, the processor +weight (that is an estimation of its computational power), and its terminal +number. +The terminal number associated with every processor is obtained by giving the +initial domain holding all the processors number $1$, and by numbering the +two subdomains of a given domain of number $i$ with numbers $2i$ and $2i+1$. +The second array is a lower triangular diagonal-less matrix that gives the +distance between all pairs of processors. This distance matrix, combined with +the decomposition tree coded by terminal numbers, allows the evaluation +by averaging of the distance between all pairs of domains. +In order for the mapper to behave properly, distances between processors must +be strictly positive numbers. Therefore, null distances are not accepted. +For instance, Figure~\ref{fig-file-targetdeco} shows the contents of the +architecture decomposition file for $\UB(2,3)$, the binary de~Bruijn graph of +dimension~$3$, as computed by the \texttt{amk\_grf} program. +\begin{figure}[hbt] +\begin{tabular}{p{0.69\linewidth}@{}p{0.29\linewidth}} +\begin{center} +\parbox[t]{0.9\linewidth}{\vspace{0pt}\includegraphics[width=0.7\linewidth]{s_f_d.ps}} +\end{center} +& +\begin{center} +{\renewcommand{\baselinestretch}{1.05} +\footnotesize\tt +\begin{verbatim} +deco 0 +8 15 +0 1 15 +1 1 14 +2 1 13 +3 1 11 +4 1 12 +5 1 9 +6 1 8 +7 1 10 +1 +2 1 +2 1 2 +1 1 1 2 +3 2 1 1 2 +2 2 2 1 1 1 +3 2 3 1 2 2 1 +\end{verbatim} +} +\end{center} +\end{tabular} +\caption{Target decomposition file for $\UB(2,3)$. + The terminal numbers associated with every processor define a unique + recursive bipartitioning of the target graph.} +\label{fig-file-targetdeco} +\end{figure} + +The ``\texttt{deco 2}'' format was created so as to represent bigger +target architectures. Indeed, the distance matrix of the +``\texttt{deco 0}'' format is quadratic in the number of target +vertices, which is not scalable and prevents users from representing +target architectures bigger than a few thousand vertices. In the +``\texttt{deco 2}'' architecture, distances are computed using in a +multilevel representation of the target graph, in the form of a family +of coarser graphs. Hence, the more distant the vertices are, the +coarsest is the graph to be used to estimate this +distance~\cite{pellegrini:hal-01671156}. The vertices and edges of +these graphs encode their respective cost of traversal, which becomes +less accurate as coarser graphs are used. + +\subsubsection{Algorithmically-coded architecture files} +\label{sec-file-target-algo} + +Almost all algorithmically-coded architectures are defined with unity +edge and vertex weights. They start with an abbreviation name of the +architecture, followed by parameters specific to the architecture. The +available built-in architecture definitions are listed below. +\begin{itemize} +\iteme[{\texttt{cmplt} {\it size}}] +Defines a complete graph with $\mathit{size}$ vertices. +Its vertex labels are numbers between $0$ and $\mathit{size} - 1$. +%% +\iteme[{\texttt{cmpltw} {\it size} {\it load$_0$} {\it load$_1$} +\ldots\ {\it load$_{\mathit{size} - 1}$}}] +Defines a weighted complete graph with {\it size\/} vertices. +Its vertex labels are numbers between $0$ and $\mathit{size} - 1$, +and vertices are assigned integer weights in the order in which +these are provided. +%% +\iteme[{\texttt{hcub} $\mathit{dim}$}] +Defines a binary hypercube of dimension $\mathit{dim}$. +Graph vertices are numbered according to the value of the binary +representation of their coordinates in the hypercube. +%% +\iteme[{\texttt{ltleaf} +\parbox[t]{11cm}{$\mathit{levlnbr}$ $\mathit{sizeval}_0$ $\mathit{linkval}_0$ +\ldots\ $\mathit{sizeval}_{\mathit{levlnbr}-1}$ +$\mathit{linkval}_{\mathit{levlnbr}-1}$ +\\ +$\mathit{permnbr}$ $\mathit{permval}_0$ +\ldots\ $\mathit{permval}_{\mathit{permnbr}-1}$}}] +\label{sec-file-target-ltleaf} +The \texttt{ltleaf} (for ``\textit{labeled tree-leaf}'') architecture is +an extended tree-leaf architecture (\texttt{tleaf}, see below) which +models target topologies where cores are not labeled in increasing +order. +\\ +The tree structure of the architecture is described just like for a +regular \texttt{tleaf} architecture. $\mathit{permnbr}$ is the length +of the permutation that is used to label cores, followed by this +number of permutation indices, ranging between $0$ and +$(\mathit{permnbr}-1)$. Figure~\ref{fig-file-targetltleaf} presents an +example of such an architecture. +\\ +The permutation array must be of a size that matches level +boundaries. Alternatively, a permutation of size $1$, with only index +$0$ given, represents the identity permutation. In this case, the +regular \texttt{tleaf} architecture can be used. +\begin{figure}[hbt] +\begin{center} +\begin{minipage}[b]{6cm} +{\renewcommand{\baselinestretch}{1.05} +\footnotesize\tt +\begin{verbatim} +ltleaf +3 32 10 2 5 4 1 +8 0 2 4 6 1 3 5 7 +\end{verbatim} +}\end{minipage} +\end{center} +\caption{Labeled tree-leaf architecture with $3$ levels, representing +a system with $32$ nodes of $2$ quad-core processors. Inter-node +communication costs $10$, inter-processor communication within the +same node costs $5$ and inter-core communication within the same +processor costs $1$. Within a $8$-core node, cores are labeled such +that cores $0$, $2$, $4$ and $6$ are located on the first processor, +while cores $1$, $3$, $5$ and $7$ are located on the second processor.} +\label{fig-file-targetltleaf} +\end{figure} +%% +\iteme[{\texttt{mesh2D} {\it dim$_X$} {\it dim$_Y$}}] +Defines a bidimensional array of {\it dim$_X$} columns by {\it dim$_Y$} +rows. The vertex with coordinates $(\mathit{pos_X},\mathit{pos_Y})$ +has label $\mathit{pos_X} + \mathit{pos_Y} \times \mathit{dim_X}$. +%% +\iteme[{\texttt{mesh3D} {\it dim$_X$} {\it dim$_Y$} {\it dim$_Z$}}] +Defines a tridimensional array of {\it dim$_X$} columns by {\it dim$_Y$} +rows by {\it dim$_Z$} levels. The vertex with coordinates +($\mathit{pos_X},\mathit{pos_Y},\mathit{pos_Z}$) has label +$\mathit{pos_X} + \mathit{pos_Y} \mathit{dim_X} + \mathit{pos_Z} \mathit{dim_X} \mathit{dim_Y}$. +%% +\iteme[{\texttt{meshXD} {\it ndims} {\it dim$_0$} {\it dim$_1$} \ldots +{\it dim$_{(ndims - 1)}$}}] +Generalization of the \texttt{mesh2D} and \texttt{mesh3D} +architectures. Defines a \textit{ndims}-dimensional array of +dimensions \textit{dim$_0$}, \textit{dim$_1$} \ldots +\textit{dim$_{ndims - 1}$}. The vertex with coordinates +($\mathit{pos_0},\mathit{pos_1},\ldots,\mathit{pos_{ndims - 1}}$) +has label $\mathit{pos_0} + \sum_{d=1}^{ndims - 1}\left(\mathit{pos_d} \prod_{d'=0}^{d-1}\mathit{dim_{d'}}\right)$. +%% +\iteme[{\texttt{sub} $\mathit{termnbr}$ $\mathit{termnum}_0$ +$\mathit{termnum}_1$ \ldots\ $\mathit{termnum}_{\mathit{termnbr}-1}$ +$\mathit{architecture}$}] +Defines a sub-architecture of another \textit{architecture}. The +sub-architecture contains $\mathit{termnbr}$ vertices, which have +ranks $\mathit{termnum}_0$, $\mathit{termnum}_1$, +\ldots\ $\mathit{termnum}_{\mathit{termnbr}-1}$ in the prescribed, +original $\mathit{architecture}$. The original architecture must +comprise at least $\mathit{termnbr}$ vertices, and thus cannot be a +variable-sized architecture. The order in which vertex numbers are +provided defines the part indices that will be used as output +mapping data. For instance, in the example shown in +Figure~\ref{fig-file-targetsub}, source vertices that are assigned to +vertex $3$ of the sub-architecture are in fact assigned to vertex $5$ +of the original, 2D mesh architecture, according to its canonical +numbering. +\begin{figure}[hbt] +\begin{tabular}{p{0.69\linewidth}@{}p{0.29\linewidth}} +\begin{center} +\parbox[t]{0.9\linewidth}{\vspace{0pt}\includegraphics[width=0.7\linewidth]{m42_a1}} +\end{center} +& +\begin{center} +{\renewcommand{\baselinestretch}{1.05} +\footnotesize\tt +\begin{verbatim} + + +sub +5 0 4 1 5 7 +mesh2D 4 2 +\end{verbatim} +} +\end{center} +\end{tabular} +\caption{Sub-architecture of a 4x2 \texttt{mesh2D} 2D grid + architecture. The sub-architecture comprises $5$ vertices, numbered + from $0$ to $4$, which correspond to vertices $0$, $4$, $1$, $5$ and + $7$ of the original architecture, respectively.} +\label{fig-file-targetsub} +\end{figure} +%% +\iteme[{\texttt{tleaf} $\mathit{levlnbr}$ $\mathit{sizeval}_0$ +$\mathit{linkval}_0$ \ldots\ $\mathit{sizeval}_{\mathit{levlnbr}-1}$ +$\mathit{linkval}_{\mathit{levlnbr}-1}$}] +Defines a hierarchical, tree-shaped, architecture with $\mathit{levlnbr}$ +levels and $\sum_{i=0}^{\mathit{levlnbr}-1}\mathit{sizeval}_i$ +leaf vertices. This topology is used to model hierarchical NUMA or NUIOA +machines. The mapping is only computed with respect to the leaf +vertices, which represent processing elements, while the upper levels of +the tree model interconnection networks (intra-chip buses, inter-chip +interconnection networks, network routers, etc.), as exemplified in +Figure~\ref{fig-graf-treeleaf}. The communication cost between two +nodes is the cost of the highest common ancestor level. +\begin{figure}[hbt] +\begin{tabular}{p{0.69\linewidth}@{}p{0.29\linewidth}} +\begin{center} +\parbox[t]{0.9\linewidth}{\vspace{0pt}\includegraphics[width=0.95\linewidth]{s_f_lea.eps}} +\end{center} +& +\begin{center} +{\renewcommand{\baselinestretch}{1.05} +\footnotesize\tt +\begin{verbatim} + + +tleaf +3 3 20 2 7 2 2 +\end{verbatim} +} +\end{center} +\end{tabular} +\caption{A ``tree-leaf'' graph with three levels. Processors are drawn +in black and routers in grey. It has $3$ levels, the first level has +$3$ sons and a traversal cost of $20$, the second level has $2$ sons +and a traversal cost of $7$, and the third level has also $2$ sons and +a traversal cost of $2$.} +\label{fig-graf-treeleaf} +\end{figure} +%% +\iteme[{\texttt{torus2D} {\it dim$_X$} {\it dim$_Y$}}] +Defines a bidimensional array of {\it dim$_X$} columns by {\it dim$_Y$} +rows, with wraparound edges. +The vertex with coordinates $(\mathit{pos_X},\mathit{pos_Y})$ has label +$\mathit{pos_X} + \mathit{pos_Y} \times \mathit{dim_X}$. +%% +\iteme[{\texttt{torus3D} {\it dim$_X$} {\it dim$_Y$} {\it dim$_Z$}}] +Defines a tridimensional array of {\it dim$_X$} columns by {\it dim$_Y$} +rows by {\it dim$_Z$} levels, with wraparound edges. The vertex with +coordinates $(\mathit{pos_X},\mathit{pos_Y},\mathit{pos_Z})$ has +label +$\mathit{pos_X} + \mathit{pos_Y} \mathit{dim_X} + \mathit{pos_Z} \mathit{dim_X} \mathit{dim_Y}$. +%% +\iteme[{\texttt{torusXD} {\it ndims} {\it dim$_0$} {\it dim$_1$} \ldots +{\it dim$_{ndims - 1}$}}] +Generalization of the \texttt{torus2D} and \texttt{torus3D} +architectures. Defines a \textit{ndims}-dimensional torus of +dimensions \textit{dim$_0$}, \textit{dim$_1$} \ldots +\textit{dim$_{ndims - 1}$}. The vertex with coordinates +($\mathit{pos_0},\mathit{pos_1},\ldots,\mathit{pos_{(ndims - 1)}}$) +has label $\mathit{pos_0} + \sum_{d=1}^{ndims - 1}\left(\mathit{pos_d} \prod_{d'=0}^{d-1}\mathit{dim_{d'}}\right)$. +\end{itemize} + +\subsubsection{Variable-sized architecture files} +\label{sec-file-target-variable} +\index{Clustering} + +Variable-sized architectures are a class of algorithmically-coded +architectures the size of which is not defined {\it a priori}. Domains +of these target architectures can always be bipartitioned, again and +again (until integer overflow occurs in domain indices). These +architectures are used to perform graph clustering (see +Sections~\ref{sec-prog-gmap} and~\ref{sec-lib-func-graphmap}), +using a specifically tailored graph mapping strategy (see for instance +Section~\ref{sec-lib-func-stratgraphclusterbuild}). + +As for fixed-size algorithmically-coded architectures, they start with +an abbreviation name of the architecture, followed by parameters +specific to the architecture. The available built-in variable-sized +architecture definitions are listed below. +\begin{itemize} +\iteme[{\texttt{varcmplt}}] +Defines a variable-sized complete graph. Domains are labeled such +that the first domain is labeled $1$, and the two subdomains of +any domain $i$ are labeled $2i$ and $2i + 1$. The distance between +any two subdomains $i$ and $j$ is $0$ if $i=j$ and $1$ else. +\iteme[{\texttt{varhcub}}] +Defines a variable-sized hypercube. Domains are labeled such that +the first domain is labeled $1$, and the two subdomains of any domain +$i$ are labeled $2i$ and $2i + 1$. The distance between any two +domains is the Hamming distance between the common bits of the two +domains, plus half of the absolute difference between the levels of +the two domains, this latter term modeling the average distance on +unknown bits. +For instance, the distance between subdomain $9=1001_B$, of level $3$ +(since its leftmost $1$ has been shifted left thrice), and subdomain +$53=110101_B$, of level $5$ (since its leftmost $1$ has been shifted +left five times), is equal to $2$: it is $1$, which is the number of +bits which differ between $1101_B$ (that is, $53=110101_B$ shifted +rightwards twice) and $1001_B$, plus $1$, which is half of the +absolute difference between $5$ and $3$. +\end{itemize} + +\subsection{Mapping files} +\label{sec-file-map} + +Mapping files, which usually end in ``\texttt{\@.map}'', contain the +result of the mapping of source graphs onto target architectures. They +associate a vertex of the target graph with every vertex of the source +graph. + +Mapping files begin with the number of mapping lines which they contain, +followed by that many mapping lines. +Each mapping line holds a mapping pair, made of two integer numbers +which are the label of a source graph vertex and the label +of the target graph vertex onto which it is mapped. +Mapping pairs can be stored in any order in the file; however, labels of +source graph vertices must be all different. +For example, Figure~\ref{fig-file-mapping} shows the result obtained when +mapping the source graph of Figure~\ref{fig-file-sgraph} onto the target +architecture of Figure~\ref{fig-file-targetdeco}. +This one-to-one embedding of $\HY(3)$ into $\UB(2,3)$ has dilation~$1$, +except for one hypercube edge which has dilation~$3$. +\begin{figure}[hbt] +\begin{center} +\begin{minipage}{3cm} +{\renewcommand{\baselinestretch}{1.05} +\footnotesize\tt +\begin{verbatim} +8 +0 1 +1 3 +2 2 +3 5 +4 0 +5 7 +6 4 +7 6 +\end{verbatim} +}\end{minipage} +\end{center} +\caption{Mapping file obtained when mapping the hypercube source graph of + Figure~\protect\ref{fig-file-sgraph} onto the binary de~Bruijn + architecture of Figure~\protect\ref{fig-file-targetdeco}.} +\label{fig-file-mapping} +\end{figure} + +Mapping files are also used on output of the block orderer to +represent the allocation of the vertices of the original graph to the +column blocks associated with the ordering. In this case, column blocks +are labeled in ascending order, such that the number of a block is +always greater than the ones of its predecessors in the elimination +process, that is, its leaves in the elimination tree. + +\subsection{Ordering files} +\label{sec-file-ord} + +Ordering files, which usually end in ``\texttt{\@.ord}'', contain the +result of the ordering of source graphs or meshes that represent +sparse matrices. They associate a number with every vertex of the +source graph or mesh. + +The structure of ordering files is analogous to the one of mapping +files; they differ only by the meaning of their data. + +Ordering files begin with the number of ordering lines which they +contain, that is the number of vertices in the source graph or the +number of nodes in the source mesh, followed by that many ordering +lines. Each ordering line holds an ordering pair, made of two integer +numbers which are the label of a source graph or mesh vertex and its +rank in the ordering. Ranks range from the base value of the graph or +mesh (\texttt{baseval}) to the base value plus the number of vertices +(resp\@. nodes), minus one ($\mbox{\texttt{baseval}} + +\mbox{\texttt{vertnbr}} - 1$ for graphs, and $\mbox{\texttt{baseval}} ++ \mbox{\texttt{vnodnbr}} - 1$ for meshes). Ordering pairs can be +stored in any order in the file; however, indices of source vertices +must be all different. + +For example, Figure~\ref{fig-file-ordering} shows the result obtained +when reordering the source graph of Figure~\ref{fig-file-sgraph}. +\begin{figure}[hbt] +\begin{center} +\begin{minipage}{3cm} +{\renewcommand{\baselinestretch}{1.05} +\footnotesize\tt +\begin{verbatim} +8 +0 6 +1 3 +2 2 +3 7 +4 1 +5 5 +6 4 +7 0 +\end{verbatim} +}\end{minipage} +\end{center} +\caption{Ordering file obtained when reordering the hypercube graph of +Figure~\protect\ref{fig-file-sgraph}.} +\label{fig-file-ordering} +\end{figure} + +The advantage of having both graph and mesh orderings start from +\texttt{baseval} (and not \texttt{vnodbas} in the case of meshes) is +that an ordering computed on the nodal graph of some mesh has the same +structure as an ordering computed from the native mesh structure, +allowing for greater modularity. However, in memory, permutation +indices for meshes are numbered from \texttt{vnodbas} to +$\mbox{\texttt{vnodbas}} + \mbox{\texttt{vnodnbr}} - 1$. + +\subsection{Vertex list files} + +Vertex lists are used by programs that select vertices from graphs. + +Vertex lists are coded as lists of integer numbers. +The first integer is the number of vertices in the list and +the other integers are the labels of the selected vertices, given in +any order. +For example, Figure~\ref{fig-file-vertex} shows the list made from +three vertices of labels $2$, $45$, and $7$. +\begin{figure}[hbt] +\begin{center} +\begin{minipage}{3cm} +{\renewcommand{\baselinestretch}{1.05} + \footnotesize \tt \begin{verbatim} +3 2 45 7 +\end{verbatim}} +\end{minipage} +\end{center} +\caption{Example of vertex list with three vertices of labels~$2$, $45$, and~$7$.} +\label{fig-file-vertex} +\end{figure} diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_i.tex scotch-6.0.6/doc/src/scotch/s_i.tex --- scotch-6.0.4.dfsg1/doc/src/scotch/s_i.tex 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_i.tex 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,895 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Titre : s_i.tex % +% Sujet : Manuel de l'utilisateur % +% du projet 'Scotch' % +% Introductions % +% Auteur : Francois Pellegrini % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Introduction} + +\subsection{Static mapping} + +The efficient execution of a parallel program on a parallel machine +requires that the communicating processes of the program be assigned +to the processors of the machine so as to minimize its overall running +time. +When processes have a limited duration and their logical dependencies +are accounted for, this optimization problem is referred to as +\emph{scheduling}. +When processes are assumed to coexist simultaneously for the entire +duration of the program, it is referred to as \emph{mapping}. It +amounts to balancing the computational weight of the processes among the +processors of the machine, while reducing the cost of communication by +keeping intensively inter-communicating processes on nearby +processors. +In most cases, the underlying computational structure of the parallel +programs to map can be conveniently modeled as a graph in which +vertices correspond to processes that handle distributed pieces of +data, and edges reflect data dependencies. The mapping problem can +then be addressed by assigning processor labels to the vertices of the +graph, so that all processes assigned to some processor are loaded and +run on it. +In a SPMD context, this is equivalent to the \emph{distribution\/} +across processors of the data structures of parallel programs; in this +case, all pieces of data assigned to some processor are handled by a +single process located on this processor. + +A mapping is called \emph{static\/} if it is computed prior to the +execution of the program. Static mapping is NP-complete in the general +case~\cite{gajo79}. Therefore, many studies have been carried out in +order to find sub-optimal solutions in reasonable time, including +the development of specific algorithms for common topologies such +as the hypercube~\cite{errasa90,hamm92}. +When the target machine is assumed to have a communication network in +the shape of a complete graph, the static mapping problem turns into +the \emph{partitioning\/} problem, which has also been intensely +studied~\cite{basi94,hele93a,kaku95a,kaku95c,posili90}. +However, when mapping onto parallel machines the communication network +of which is not a bus, not accounting for the topology of the target +machine usually leads to worse running times, because simple cut +minimization can induce more expensive long-distance +communication~\cite{hamm92,wacrevjo95}. + +\subsection{Sparse matrix ordering} + +Many scientific and engineering problems can be modeled by sparse linear +systems, which are solved either by iterative or direct methods. +To achieve efficiency with direct methods, one must minimize the +fill-in induced by factorization. This fill-in is a direct consequence of +the order in which the unknowns of the linear system are numbered, +and its effects are critical both in terms of memory and computation costs. +\\ + +An efficient way to compute fill reducing orderings of symmetric +sparse matrices is to use recursive nested dissection~\cite{geli81}. +It amounts to computing a vertex set~$S$ that separates the graph into +two parts~$A$ and~$B$, ordering $S$ with the highest indices that are +still available, and proceeding recursively on parts~$A$ and~$B$ until +their sizes become smaller than some threshold value. This ordering +guarantees that, at each step, no non-zero term can appear in the +factorization process between unknowns of~$A$ and unknowns of~$B$. + +The main issue of the nested dissection ordering algorithm is thus to +find small vertex separators that balance the remaining subgraphs as +evenly as possible, in order to minimize fill-in and to increase +concurrency in the factorization process. + +\subsection{Contents of this document} + +This document describes the capabilities and operations of \scotch, +a software package devoted to static mapping, graph and mesh +partitioning, and sparse matrix block ordering. +\scotch\ allows the user to map efficiently any kind of weighted process +graph onto any kind of weighted architecture graph, and provides high-quality +block orderings of sparse matrices. +The rest of this manual is organized as follows. +Section~\ref{sec-project} presents the goals of the \scotch\ project. +Sections~\ref{sec-algo-map} and~\ref{sec-algo-order} outline the most +important aspects of the mapping and ordering algorithms that it +implements, respectively. +Section~\ref{sec-changes} summarizes the most important changes between +version~\textsc{5.0} and previous versions. +Section~\ref{sec-file} defines the formats of the files used in \scotch, +section~\ref{sec-prog} describes the programs of the +\scotch\ distribution, and section~\ref{sec-lib} defines the interface +and operations of the \libscotch\ library. +Section~\ref{sec-install} explains how to obtain and install the +\scotch\ distribution. +Finally, some practical examples are given in +section~\ref{sec-examples}, and instructions on how to implement new +methods in the \libscotch\ library are provided in +section~\ref{sec-coding}. + +\section{The \scotch\ project} +\label{sec-project} + +\subsection{Description} + +\scotch\ is a project carried out at the \textit{Laboratoire Bordelais de +Recherche en Informatique\/} (LaBRI) of the Universit\'e de Bordeaux and +within the Tadaam team-project of INRIA Bordeaux Sud-Ouest. Its goal +is to study the application of graph theory to scientific computing. + +It focused first on static mapping, and has resulted in the +development of the Dual Recursive Bipartitioning (or DRB) mapping +algorithm and in the study of several graph bipartitioning +heuristics~\cite{pell94a}, all of which have been implemented in the +\scotch\ software package~\cite{pero96a}. Then, it focused on the +computation of high-quality vertex separators for the ordering of +sparse matrices by nested dissection, by extending the work that has +been done on graph partitioning in the context of static +mapping~\cite{pero97a,peroam99}. The ordering +capabilities of \scotch\ have then been extended to native mesh structures, +thanks to hypergraph partitioning algorithms. Diffusion-based graph +partitioning methods have also been added~\cite{chpe06a,pell07b}. + +Version \textsc{5.0} of \scotch\ was the first one to comprise parallel +graph ordering routines. The parallel features of \scotch\ are referred +to as \ptscotch\ (``\emph{Parallel Threaded \scotch}''). While both +packages share a significant amount of code, because +\ptscotch\ transfers control to the sequential routines of the +\libscotch\ library when the subgraphs on which it operates are +located on a single processor, the two sets of routines have a +distinct user's manual. Readers interested in the parallel features +of \scotch\ should refer to the \emph{\ptscotch\ \textsc{\scotchver} +User's Guide}~\scotchcitepuser. + +Version \textsc{6.0} of \scotch\ is oriented towards the development of +new features, namely graph repartitioning and +remapping~\cite{fope11a}. A whole set of direct $k$-way graph +partitioning and mapping algorithms has also been implemented. +Also, new target architectures have been created, to allow \scotch\ to +map efficiently onto parts of regular target +architectures~\cite{pellegrini:hal-01671156}, as it is the case when +considering a potentially non-connected partition of a big machine, as +provided by a batch scheduler. + +\subsection{Availability} + +Starting from version \textsc{4.0}, which has been developed at INRIA +within the ScAlApplix project, \scotch\ is available under a dual +licensing basis. On the one hand, it is downloadable from the +\scotch\ web page as free/libre software, to all interested parties +willing to use it as a library or to contribute to it as a testbed for +new partitioning and ordering methods. On the other hand, it can also +be distributed, under other types of licenses and conditions, to +parties willing to embed it tightly into closed, proprietary software. +\\ + +The free/libre software license under which \scotch\ \textsc{\scotchver} +is distributed is the CeCILL-C license~\cite{cecill}, which has +basically the same features as the GNU LGPL (``\textit{Lesser General +Public License}''): ability to link the code as a library to any +free/libre or even proprietary software, ability to modify the code +and to redistribute these modifications. Version \textsc{4.0} of +\scotch\ was distributed under the LGPL itself. +\\ + +Please refer to section~\ref{sec-install} to see how to obtain the +free/libre distribution of \scotch. + +\section{Static mapping algorithms} +\label{sec-algo-map} + +The parallel program to be mapped onto the target architecture is modeled +by a valuated unoriented graph $S$ called \emph{source graph\/} or +\emph{process graph}, the vertices of which represent the processes of the +parallel program, and the edges of which the communication channels between +communicating processes. +Vertex- and edge- valuations associate with every vertex $v_S$ and every +edge $e_S$ of $S$ integer numbers $w_S(v_S)$ and $w_S(e_S)$ which +estimate the computation weight of the corresponding process +and the amount of communication to be transmitted on the channel, +respectively. + +The target machine onto which is mapped the parallel program is also +modeled by a valuated unoriented graph $T$ called \emph{target graph\/} +or \emph{architecture graph}. +Vertices $v_T$ and edges $e_T$ of $T$ are assigned integer weights +$w_T(v_T)$ and $w_T(e_T)$, which estimate the computational power of the +corresponding processor and the cost of traversal of the inter-processor +link, respectively. + +A \emph{mapping} from $S$ to $T$ consists of two applications +$\too{S,T} : V(S) \rghta V(T)$ and +$\roo{S,T} : E(S) \rghta {\cal P}(E(T))$, +where ${\cal P}(E(T))$ denotes the set of all simple loopless paths which +can be built from $E(T)$. +$\too{S,T}(v_S) = v_T$ if process $v_S$ of $S$ is mapped onto processor +$v_T$ of $T$, and $\roo{S,T}(e_S) = \{ e^1_T, e^2_T, \ldots, e^n_T \}$ if +communication channel $e_S$ of $S$ is routed through communication links +$e^1_T$, $e^2_T$, \ldots, $e^n_T$ of $T$. +$|\roo{S,T}(e_S)|$ denotes the dilation of edge $e_S$, that is, the number of +edges of $E(T)$ used to route $e_S$. + +\subsection{Cost function and performance criteria} + +The computation of efficient static mappings requires an \emph{a priori\/} +knowledge of the dynamic behavior of the target machine with respect to +the programs which are run on it. +This knowledge is synthesized in a \emph{cost function}, the nature of which +determines the characteristics of the desired optimal mappings. +The goal of our mapping algorithm is to minimize some communication cost +function, while keeping the load balance within a specified tolerance. +The communication cost function $f_C$ that we have chosen is the sum, +for all edges, of their dilation multiplied by their weight: +\bn +f_C(\too{S,T},\roo{S,T}) +\eqdef \hspace*{-0.25cm}\sum\limits_{e_S\in E(S)}\hspace*{-0.25cm} +w_S(e_S)\,|\roo{S,T}(e_S)|\enspace. +\en +This function, which has already been considered by several authors for +hypercube target topologies~\cite{errasa90,hamm92,hele94b}, has several +interesting properties: +it is easy to compute, allows incremental updates performed by +iterative algorithms, and +its minimization favors the mapping of intensively intercommunicating +processes onto nearby processors; +regardless of the type of routing implemented on the target machine +(store-and-forward or cut-through), it models the traffic on the +interconnection network and thus the risk of congestion. + +The strong positive correlation between values of this function and +effective execution times has been experimentally verified by +Hammond~\cite{hamm92} on the CM-2, and by Hendrickson and +Leland~\cite{hele94a} on the nCUBE~2. +\hfill~\\ + +The quality of mappings is evaluated with respect to the criteria for +quality that we have chosen: the balance of the computation load across +processors, and the minimization of the inter-processor communication cost +modeled by function~$f_C$. These criteria lead to the definition of +several parameters, which are described below. + +For load balance, one can define $\mmap$, the average load per +computational power unit (which does not depend on the mapping), and +$\dmap$, the load imbalance ratio, as\\[-0.5em] +\bn +\mmap \eqdef +{\sum\limits_{v_S \in V(S)} w_S(v_S) \over + \sum\limits_{v_T \in V(T)} w_T(v_T)} +\hspace*{2.5em}\mbox{~and~} +\en +\bn +\dmap \eqdef +{\sum\limits_{v_T \in V(T)} + \left|\left(\!\!{1 \over w_T(v_T)}\hspace*{-0.3em} + \sum\limits_{\scriptsize + \shortstack{$v_S \in V(S)$\\[-0.2em] + $\too{S,T}(v_S) = v_T$}} + \hspace*{-0.2em} w_S(v_S)\!\!\right)\:-\:\mmap\right| \over +\sum\limits_{v_S \in V(S)} w_S(v_S)}\enspace. +\en +However, since the maximum load imbalance ratio is provided by the user in +input of the mapping, the information given by these parameters is of little +interest, since what matters is the minimization of the communication cost +function under this load balance constraint. + +For communication, the straightforward parameter to consider is $f_C$. +It can be normalized as $\mexp$, the average edge expansion, which can +be compared to $\mdil$, the average edge dilation; these are defined +as\\[-1.3em] +\bn +\mexp \eqdef {f_C \over \sum\limits_{e_S \in E(S)} w_S(e_S)} +\hspace*{2.5em}\mbox{~and~}\hspace*{2.5em} +\mdil \eqdef {\sum\limits_{e_S \in E(S)}|\roo{S,T}(e_S)| \over |E(S)|} +\enspace. +\en +$\dexp \eqdef {\mexp \over \mdil}$ is smaller than $1$ when the mapper +succeeds in putting heavily intercommunicating processes closer to each other +than it does for lightly communicating processes; they are equal if all edges +have same weight. + +\subsection{The Dual Recursive Bipartitioning algorithm} +\label{sec-algo-drb} + +This mapping algorithm, which is the primary way to compute initial +static mappings, uses a \emph{divide and conquer\/} approach to +recursively allocate subsets of processes to subsets of +processors~\cite{pell94a,pero96b}. It starts by considering a set of +processors, also called \emph{domain}, containing all the processors of +the target machine, and with which is associated the set of all the +processes to map. At each step, the algorithm bipartitions a yet +unprocessed domain into two disjoint subdomains, and calls a +\emph{graph bipartitioning algorithm\/} to split the subset of +processes associated with the domain across the two subdomains, as +sketched in the following. + +\noi +{\renewcommand{\baselinestretch}{0.95}\footnotesize\tt {% +\begin{verbatim} +mapping (D, P) +Set_Of_Processors D; +Set_Of_Processes P; +{ + Set_Of_Processors D0, D1; + Set_Of_Processes P0, P1; + + if (|P| == 0) return; /* If nothing to do. */ + if (|D| == 1) { /* If one processor in D */ + result (D, P); /* P is mapped onto it. */ + return; + } + + (D0, D1) = processor_bipartition (D); + (P0, P1) = process_bipartition (P, D0, D1); + mapping (D0, P0); /* Perform recursion. */ + mapping (D1, P1); +} +\end{verbatim}}} + +\noi +The association of a subdomain with every process defines a \emph{partial +mapping\/} of the process graph. As bipartitionings are performed, +the subdomain sizes decrease, up to give a complete mapping when all +subdomains are of size~one. +\\ + +The above algorithm lies on the ability to define five main objects: +\begin{itemize} +\item +a \emph{domain structure}, which represents a set of processors in the target +architecture; +\item +a \emph{domain bipartitioning function}, which, given a domain, bipartitions +it in two disjoint subdomains; +\item +a \emph{domain distance function}, which gives, in the target graph, a measure +of the distance between two disjoint domains. Since domains may not be convex +nor connected, this distance may be estimated. +However, it must respect certain homogeneity properties, such as +giving more accurate results as domain sizes +decrease~\cite{pero96b,pellegrini:hal-01671156}. +The domain distance function is used by the graph bipartitioning algorithms +to compute the communication function to minimize, since it allows the mapper +to estimate the dilation of the edges that link vertices which belong to +different domains. +Using such a distance function amounts to considering that all routings +will use shortest paths on the target architecture, which is how most +parallel machines actually do. +We have thus chosen that our program would not provide routings for the +communication channels, leaving their handling to the communication system of +the target machine; +\item +a \emph{process subgraph structure}, which represents the subgraph induced by a +subset of the vertex set of the original source graph; +\item +a \emph{process subgraph bipartitioning function}, which bipartitions subgraphs +in two disjoint pieces to be mapped onto the two subdomains computed by +the domain bipartitioning function. +\end{itemize} +All these routines are seen as black boxes by the mapping program, which can +thus accept any kind of target architecture and process bipartitioning +functions. + +\subsubsection{Partial cost function} + +The production of efficient complete mappings requires that all graph +bipartitionings favor the criteria that we have chosen. +Therefore, the bipartitioning of a subgraph~$S'$ of $S$ should maintain +load balance within the user-specified tolerance, and minimize the +\emph{partial\/} communication cost function $f'_C$, defined as +\bn +f'_C(\too{S,T},\roo{S,T}) \eqdef +\hspace*{-0.45cm}\sum\limits_{\mbox{\scriptsize + \shortstack{$v\in V(S')$\\ + $\{v,v'\}\in E(S)$}}}\hspace*{-0.45cm} +w_S(\{v,v'\})\,|\roo{S,T}(\{v,v'\})|\enspace, +\en +which accounts for the dilation of edges internal to subgraph~$S'$ as well as +for the one of edges which belong to the cocycle of $S'$, as shown in +Figure~\ref{fig-bipcost}. +Taking into account the partial mapping results issued by previous +bipartitionings makes it possible to avoid local choices that +might prove globally bad, as explained below. +This amounts to incorporating additional constraints to the standard graph +bipartitioning problem, turning it into a more general optimization problem +termed \emph{skewed graph partitioning\/} by some authors~\cite{heledr97}. + +\begin{figure}[hbt] +\hfill +\parbox[b]{4.9cm}{ +\hfill +\includegraphics[scale=0.40]{s_f_rua.eps} +\hfill\\ +\textbf{a.} Initial position. +}\ \hfill\ +\parbox[b]{4.9cm}{ +\hfill +\includegraphics[scale=0.40]{s_f_rub.eps} +\hfill\\ +\textbf{b.} After one vertex is moved. +}\hfill\ +\caption% +{Edges accounted for in the partial communication cost function when + bipartitioning the subgraph associated with domain~$D$ between + the two subdomains $D_0$ and $D_1$ of~$D$. + Dotted edges are of dilation zero, their two ends being mapped onto the + same subdomain. Thin edges are cocycle edges.} +\label{fig-bipcost} +\end{figure} + +\subsubsection{Execution scheme} + +From an algorithmic point of view, our mapper behaves as a greedy algorithm, +since the mapping of a process to a subdomain is never reconsidered, and +at each step of which iterative algorithms can be applied. +The double recursive call performed at each step induces a recursion scheme +in the shape of a binary tree, each vertex of which corresponds to a +bipartitioning job, that is, the bipartitioning of both a domain and +its associated subgraph. + +In the case of depth-first sequencing, as written in the above sketch, +bipartitioning jobs run in the left branches of the tree have no information +on the distance between the vertices they handle and neighbor vertices to be +processed in the right branches. +On the contrary, sequencing the jobs according to a by-level (breadth-first) +travel of the tree allows any bipartitioning job of a given level to +have information on the subdomains to which all the processes have been +assigned at the previous level. +Thus, when deciding in which subdomain to put a given process, a +bipartitioning job can account for the communication costs induced by +its neighbor processes, whether they are handled by the job itself or not, +since it can estimate in $f'_C$ the dilation of the corresponding edges. +This results in an interesting feedback effect: once an edge has been kept +in a cut between two subdomains, the distance between its end vertices will +be accounted for in the partial communication cost function to be minimized, +and following jobs will be more likely to keep these vertices close to +each other, as illustrated in Figure~\ref{fig-biprub}. +\begin{figure}[hbt] +\hfill +\parbox[b]{5.2cm}{ +\hfill +\includegraphics[scale=0.40]{s_f_run.eps} +\hfill\\ +\textbf{a.} Depth-first sequencing. +}\ \hfill\ +\parbox[b]{5.2cm}{ +\hfill +\includegraphics[scale=0.40]{s_f_ruy.eps} +\hfill\\ +\textbf{b.} Breadth-first sequencing. +}\hfill\ % +\caption% +{Influence of depth-first and breadth-first sequencings on the + bipartitioning of a domain~$D$ belonging to the leftmost branch of + the bipartitioning tree. + With breadth-first sequencing, the partial mapping data regarding vertices + belonging to the right branches of the bipartitioning tree are more + accurate (C.L. stands for ``Cut Level'').} +\label{fig-biprub} +\end{figure} +The relative efficiency of depth-first and breadth-first sequencing schemes +with respect to the structure of the source and target graphs is discussed +in~\cite{pero96b}. + +\subsubsection{Clustering by mapping onto variable-sized architectures} +\label{sec-algo-variable} +\index{Architecture|Variable-sized!see Clustering} +\index{Clustering} + +Several constrained graph partitioning problems can be modeled as +mapping the problem graph onto a target architecture, the number of +vertices and topology of which depend dynamically on the structure of +the subgraphs to bipartition at each step. + +Variable-sized architectures are supported by the DRB algorithm in the +following way: at the end of each bipartitioning step, if any of the +variable subdomains is empty (that is, all vertices of the subgraph +are mapped only to one of the subdomains), then the DRB process stops +for both subdomains, and all of the vertices are assigned to their +parent subdomain; else, if a variable subdomain has only one vertex +mapped onto it, the DRB process stops for this subdomain, and the +vertex is assigned to it. + +The moment when to stop the DRB process for a specific subgraph can be +controlled by defining a bipartitioning strategy that checks the +validity of a criterion at each bipartitioning step (see for instance +Section~\ref{sec-lib-func-stratgraphclusterbuild}), and maps all of +the subgraph vertices to one of the subdomains when it becomes false. + +\subsection{Static mapping methods} +\label{sec-algo-map-methods} + +The core of our static mapping software uses graph mapping methods as +black boxes. It maintains an internal image of the current mapping, +which records the target vertex index onto which each of the source +graph vertices is mapped. It is therefore possible to apply several +mapping methods in sequence, such that the first method computes an +initial mapping to be further refined by the following methods, thus +enabling us to define \emph{static mapping strategies}. The currently +implemented static mapping methods are listed below. + +\begin{itemize} +\iteme[\textbf{Multilevel}]\label{sec-algo-mle} +This framework, which has been studied by several +authors~\cite{basi94,hele93b,kaku95a} and should be considered as a strategy +rather than as a method since it uses other methods as parameters, repeatedly +reduces the size of the graph to map by finding matchings that +collapse vertices and edges, computes a mapping of the coarsest +graph obtained, and prolongs the result back to the original graph, +as shown in Figure~\ref{fig-multiproc}. +\begin{figure}[hbt] +~\hfill\includegraphics[scale=0.50]{s_f_mult.eps}\hfill\ ~ +\caption% +{The multilevel partitioning process. In the uncoarsening phase, the light + and bold lines represent for each level the prolonged partition obtained + from the coarser graph, and the partition obtained after refinement, + respectively.} +\label{fig-multiproc} +\end{figure} +The multilevel method, when used in conjunction with some local +optimization methods to refine the projected partitions at every +level, usually leads to a significant improvement in quality with +respect to methods operating only on the finest graph. By coarsening +the graphs, the multilevel algorithm broadens the scope of local +optimization algorithms: it makes possible for them to account for +topological structures of the original graph that would else be of a +too high level for them to be encompassed in their local optimization +process. +\iteme[\textbf{Band}]\label{sec-algo-band} +Like the multilevel method above, the band method is a framework, in +the sense that it does not itself compute partitions, but rather helps +other partitioning algorithms perform better. It is a refinement +algorithm which, from a given initial partition, extracts a band graph +of given width (which only contains graph vertices that are at most at +this distance from the frontiers of the parts), calls a partitioning +strategy on this band graph, and projects back the refined partition +on the original graph. This method was designed to be able to use +expensive partitioning heuristics, such as genetic algorithms, on +large graphs, as it dramatically reduces the problem space by several +orders of magnitude. However, it was found that, in a multilevel +context, it also improves partition quality, by coercing partitions in +a problem space that derives from the one which was globally defined +at the coarsest level, thus preventing local optimization refinement +algorithms to be trapped in local optima of the finer +graphs~\cite{chpe06a}. +\iteme[\textbf{Fiduccia-Mattheyses}] +This is a direct $k$-way version of the traditional Fiduccia-Mattheyses +heuristics used for computing bipartitions, that will be presented in +the next section. By default, boundary vertices can only be moved to +parts to which at least one of their neighbors belong. +\iteme[\textbf{Diffusion}] +This is also a $k$-way version of an algorithm that has been first used +in the context of bipartitioning, and which will be presented in the +next section. The $k$-way version differs from the latter as it diffuses +$k$ sorts of liquids rather than just two as in the bipartitioning case. +\iteme[\textbf{Exactifier}]\label{sec-algo-map-exact} +This greedy algorithm refines its input mapping so as to reduce load +imbalance as much as possible. Since this method does not consider +load balance minimization, its use should be restricted to cases where +achieving load balance is critical and where recursive +bipartitioning may fail to achieve it. It is especially the case when +vertex loads are very irregular: some subdomains may receive only a +few heavy vertices, yielding load balance artifacts when no light +vertices are locally available to compensate. + +Graph vertices are sorted by decreasing weights, and considered in +turn. If the current vertex can fit in its initial part without +causing imbalance by excess, it is added to it, and the algorithm goes +on. Else, a candidate part is found by exploring other subdomains in +an order based on an implicit recursive bipartitioning of the +architecture graph. Consequently, such vertices will be placed in +subdomains that tend to be as close as possible to the original +location of the vertex. This method is most likely to result in +disconnected parts. +\iteme[\textbf{Dual recursive bipartitioning}] +This algorithm implements the dual recursive bipartitioning algorithm +that has been presented in Section~\ref{sec-algo-drb}. The DRB +algorithms can be used either directly on the original graph to +partition, or on the coarsest graph yielded by the direct $k$-way +multilevel framework. It uses graph bipartitioning methods, described +below, to compute its bipartitions. +\end{itemize} + +\subsection{Graph bipartitioning methods} +\label{sec-algo-bipart} + +The core of our dual recursive bipartitioning mapping algorithm uses +process graph bipartitioning methods as black boxes. It allows the +mapper to run any type of graph bipartitioning method compatible with +our criteria for quality. Bipartitioning jobs maintain an internal +image of the current bipartition, indicating for every vertex of the +job whether it is currently assigned to the first or to the second +subdomain. +It is therefore possible to apply several different methods in sequence, +each one starting from the result of the previous one, +and to select the methods with respect to the job characteristics, thus +enabling us to define \emph{graph bipartitioning strategies}. +The currently implemented graph bipartitioning methods are listed below. +\begin{itemize} +\iteme[\textbf{Diffusion}] +This global optimization method, presented in~\cite{pell07b}, flows two +kinds of antagonistic liquids, scotch and anti-scotch, from two source +vertices, and sets the new frontier as the limit between vertices +which contain scotch and the ones which contain anti-scotch. In order +to add load-balancing constraints to the algorithm, a constant amount +of liquid disappears from every vertex per unit of time, so that no +domain can spread across more than half of the vertices. Because +selecting the source vertices is essential to the obtainment of useful +results, this method has been hard-coded so that the two source +vertices are the two vertices of highest indices, since in the band +method these are the anchor vertices which represent all of the removed +vertices of each part. Therefore, this method must be used on band +graphs only, or on specifically crafted graphs. +\iteme[\textbf{Exactifier}] +This greedy algorithm refines the current partition so as to reduce load +imbalance as much as possible, while keeping the value of the communication +cost function as small as possible. +The vertex set is scanned in order of decreasing vertex weights, and vertices +are moved from one subdomain to the other if doing so reduces load imbalance. +When several vertices have same weight, the vertex whose swap +decreases most the communication cost function is selected first. +This method is used in post-processing of other methods when load balance is +mandatory. For weighted graphs, the strict enforcement of load balance may +cause the swapping of isolated vertices of small weight, thus greatly +increasing the cut. Therefore, great care should be taken when using this +method if connectivity or cut minimization are mandatory. +\iteme[\textbf{Fiduccia-Mattheyses}]\label{sec-algo-fme} +The Fiduccia-Mattheyses heuristics~\cite{fima82} is an almost-linear +improvement of the famous Kernighan-Lin algorithm~\cite{keli70}. +It tries to improve the bipartition that is input to it +by incrementally moving vertices between the subsets of the partition, +as long as it can find sequences of moves that lower its communication cost. +By considering sequences of moves instead of single swaps, +the algorithm allows hill-climbing from local minima of the cost function. +As an extension to the original Fiduccia-Mattheyses algorithm, +we have developed new data structures, based on logarithmic indexings of +arrays, that allow us to handle weighted graphs while preserving the +almost-linearity in time of the algorithm~\cite{pero96b}. + +As several authors quoted before~\cite{hele93c,kaku95b}, +the Fiduccia-Mattheyses algorithm gives better results when trying to optimize +a good starting partition. Therefore, it should not be used on its own, but +rather after greedy starting methods such as the Gibbs-Poole-Stockmeyer or +the greedy graph growing methods. +\iteme[\textbf{Gibbs-Poole-Stockmeyer}] +This greedy bipartitioning method derives from an algorithm proposed by +Gibbs, Poole, and Stockmeyer to minimize the dilation of graph orderings, +that is, the maximum absolute value of the difference between the numbers of +neighbor vertices~\cite{gipost76}. +The graph is sliced by using a breadth-first spanning tree rooted +at a randomly chosen vertex, and this process is iterated by selecting a new +root vertex within the last layer as long as the number of layers increases. +Then, starting from the current root vertex, vertices are assigned layer after +layer to the first subdomain, until half of the total weight has been +processed. Remaining vertices are then allocated to the second subdomain. + +As for the original Gibbs, Poole, and Stockmeyer algorithm, it is assumed that +the maximization of the number of layers results in the minimization of the +sizes --and therefore of the cocycles-- of the layers. +This property has already been used by George and Liu to reorder sparse +linear systems using the nested dissection method~\cite{geli81}, and by +Simon in~\cite{simo91}. +\iteme[\textbf{Greedy graph growing}]\label{sec-algo-ggge} +This greedy algorithm, which has been proposed by Karypis and +Kumar~\cite{kaku95a}, belongs to the GRASP (``\textit{Greedy +Randomized Adaptive Search Procedure\/}'') class~\cite{lafeel94}. +It consists in selecting an initial vertex at random, and repeatedly adding +vertices to this growing subset, such that each added vertex results in the +smallest increase in the communication cost function. +This process, which stops when load balance is achieved, is repeated +several times in order to explore (mostly in a gradient-like fashion) +different areas of the solution space, and the best partition found is kept. +\iteme[\textbf{Multilevel}] +This is a graph bipartition-oriented version of the static mapping +multilevel method described in the previous section, +page~\pageref{sec-algo-mle}. +\end{itemize} + +\section{Sparse matrix ordering algorithms} +\label{sec-algo-order} + +When solving large sparse linear systems of the form $Ax=b$, it is +common to precede the numerical factorization by a symmetric +reordering. This reordering is chosen in such a way that pivoting down +the diagonal in order on the resulting permuted matrix $PAP^T$ +produces much less fill-in and work than computing the factors of $A$ +by pivoting down the diagonal in the original order (the fill-in is +the set of zero entries in $A$ that become non-zero in the factored +matrix). + +\subsection{Performance criteria} +\label{sec-order-perf} + +The quality of orderings is evaluated with respect to several +criteria. The first one, \NNZ, is the number of non-zero terms in the +factored reordered matrix. The second one, \OPC, is the operation +count, that is the number of arithmetic operations required to factor +the matrix. The operation count that we have considered takes into +consideration all operations (additions, subtractions, +multiplications, divisions) required by Cholesky factorization, except +square roots; it is equal to $\sum_c n_c^2$, where $n_c$ is the number +of non-zeros of column $c$ of the factored matrix, diagonal included. +A third criterion for quality is the shape of the elimination tree; +concurrency in parallel solving is all the higher as the elimination tree is +broad and short. To measure its quality, several parameters can be defined: +\hmin, \hmax, and \havg\ denote the minimum, maximum, and average heights +of the tree\footnote% +{We do not consider as leaves the disconnected vertices that are present in +some meshes, since they do not participate in the solving process.}, +respectively, and \hdlt\ is the variance, expressed as a percentage of \havg. +Since small separators result in small chains in the elimination tree, +\havg\ should also indirectly reflect the quality of separators. + +\subsection{Minimum Degree} + +The minimum degree algorithm~\cite{tiwa67} is +a local heuristic that performs its pivot selection by iteratively +selecting from the graph a node of minimum degree. + +The minimum degree algorithm is known to be a very fast and general +purpose algorithm, and has received much attention over the last three +decades (see for example~\cite{amdadu96,geli89,liu-85}). However, the +algorithm is intrinsically sequential, and very little can be +theoretically proved about its efficiency. + +\subsection{Nested dissection} +\label{sec-algo-nested} + +The nested dissection algorithm~\cite{geli81} is a global, heuristic, +recursive algorithm which computes a vertex set~$S$ that separates the +graph into two parts~$A$ and~$B$, ordering $S$ with the highest +remaining indices. It then proceeds recursively on parts~$A$ and~$B$ +until their sizes become smaller than some threshold value. This +ordering guarantees that, at each step, no non zero term can appear +in the factorization process between unknowns of~$A$ and unknowns +of~$B$. + +Many theoretical results have been carried out on nested dissection +ordering~\cite{chro89,lirota79}, and its divide and conquer nature +makes it easily parallelizable. The main issue of the nested +dissection ordering algorithm is thus to find small vertex separators +that balance the remaining subgraphs as evenly as possible. Most +often, vertex separators are computed by using direct +heuristics~\cite{hero98,lele87}, or from edge separators~\cite[and +included references]{pofa90} by minimum cover +techniques~\cite{duff81,hoka73}, but other techniques such as spectral +vertex partitioning have also been used~\cite{posili90}. + +Provided that good vertex separators are found, the nested dissection +algorithm produces orderings which, both in terms of fill-in and +operation count, compare favorably~\cite{gukaku96,kaku95a,pero97a} to +the ones obtained with the minimum degree algorithm~\cite{liu-85}. +Moreover, the elimination trees induced by nested dissection are +broader, shorter, and better balanced, and therefore +exhibit much more concurrency in the context of parallel Cholesky +factorization~\cite[and included +references]{aseilish91,geng89,geheling88,gukaku96,pero97a,shre92}. + +\subsection{Hybridization} +\label{sec-algo-nested-hybrid} + +Due to their complementary nature, several schemes have been proposed +to hybridize the two methods~\cite{hero98,kaku98a,pero97a}. However, +to our knowledge, only loose couplings have been achieved: incomplete +nested dissection is performed on the graph to order, and the +resulting subgraphs are passed to some minimum degree algorithm. This +results in the fact that the minimum degree algorithm does not have +exact degree values for all of the boundary vertices of the subgraphs, +leading to a misbehavior of the vertex selection process. +\\ + +Our ordering program implements a tight coupling of the nested dissection +and minimum degree algorithms, that allows each of them to take +advantage of the information computed by the other. +First, the nested dissection algorithm provides exact degree values +for the boundary vertices of the subgraphs passed to the minimum +degree algorithm (called \emph{halo\/} minimum degree since it has a +partial visibility of the neighborhood of the subgraph). +Second, the minimum degree algorithm returns the assembly tree that it +computes for each subgraph, thus allowing for supervariable amalgamation, +in order to obtain column-blocks of a size suitable for BLAS3 block +computations. + +As for our mapping program, it is possible to combine ordering methods +into ordering strategies, which allow the user to select the proper +methods with respect to the characteristics of the subgraphs. +\\ + +The ordering program is completely parametrized by its ordering strategy. +The nested dissection method allows the user to take advantage of all of +the graph partitioning routines that have been developed in the earlier +stages of the \scotch\ project. +Internal ordering strategies for the separators are relevant in the case of +sequential or parallel~\cite{gukaku97,roth94,rogu93,rosc94} block solving, +to select ordering algorithms that minimize the number of extra-diagonal +blocks~\cite{chro89}, thus allowing for efficient use of BLAS3 primitives, +and to reduce inter-processor communication. + +\subsection{Ordering methods} + +The core of our ordering algorithm uses graph ordering methods as +black boxes, which allows the orderer to run any type of ordering +method. In addition to yielding orderings of the subgraphs that are +passed to them, these methods may compute column block partitions of +the subgraphs, that are recorded in a separate tree structure. +The currently implemented graph ordering methods are listed below. +\begin{itemize} +\iteme[\textbf{Halo approximate minimum degree}] +The halo approximate minimum degree method~\cite{peroam99} is an +improvement of the approximate minimum degree~\cite{amdadu96} +algorithm, suited for use on subgraphs produced by nested dissection +methods. Its interest compared to classical minimum degree algorithms +is that boundary vertices are processed using their real degree in the +global graph rather than their (much smaller) degree in the subgraph, +resulting in smaller fill-in and operation count. This method also +implements amalgamation techniques that result in efficient block +computations in the factoring and the solving processes. +\iteme[\textbf{Halo approximate minimum fill}] +The halo approximate minimum fill method is a variant of the +halo approximate minimum degree algorithm, where the criterion to +select the next vertex to permute is not based on its current +estimated degree but on the minimization of the induced fill. +\iteme[\textbf{Graph compression}] +The graph compression method~\cite{ashc95} merges cliques of vertices +into single nodes, so as to speed-up the ordering of the compressed +graph. It also results in some improvement of the quality of +separators, especially for stiffness matrices. +\iteme[\textbf{Gibbs-Poole-Stockmeyer}] +This method is mainly used on separators to reduce the number and +extent of extra-diagonal blocks. +\iteme[\textbf{Simple method}] +Vertices are ordered consecutively, in the same order as they are +stored in the graph. This is the fastest method to use on separators +when the shape of extra-diagonal structures is not a concern. +\iteme[\textbf{Nested dissection}] +Incomplete nested dissection method. Separators are computed +recursively on subgraphs, and specific ordering methods are applied to +the separators and to the resulting subgraphs (see +sections~\ref{sec-algo-nested} and ~\ref{sec-algo-nested-hybrid}). +\iteme[\textbf{Disconnected subgraph detection}] +This method may be used as a pre-processing step so as to apply the same +ordering strategy on each of the disconnected components of a +graph. While finding the connected components of a graph is expensive, +it may bring an improvement on graph ordering quality in some cases. +\end{itemize} + +\subsection{Graph separation methods} + +The core of our incomplete nested dissection algorithm uses graph separation +methods as black boxes. It allows the orderer to run any type of graph +separation method compatible with our criteria for quality, that is, +reducing the size of the vertex separator while maintaining the loads of +the separated parts within some user-specified tolerance. +Separation jobs maintain an internal image of the current vertex separator, +indicating for every vertex of the job whether it is currently assigned to +one of the two parts, or to the separator. +It is therefore possible to apply several different methods in sequence, +each one starting from the result of the previous one, +and to select the methods with respect to the job characteristics, thus +enabling the definition of separation strategies. +\\ + +The currently implemented graph separation methods are listed below. +\begin{itemize} +\iteme[\textbf{Fiduccia-Mattheyses}] +This is a vertex-oriented version of the original, edge-oriented, +Fiduccia-Mattheyses heuristics described in page~\pageref{sec-algo-fme}. +\iteme[\textbf{Greedy graph growing}] +This is a vertex-oriented version of the edge-oriented +greedy graph growing algorithm described in page~\pageref{sec-algo-ggge}. +\iteme[\textbf{Multilevel}] +This is a vertex-oriented version of the edge-oriented +multilevel algorithm described in page~\pageref{sec-algo-mle}. +\iteme[\textbf{Thinner}] +This greedy algorithm refines the current separator by removing all of +the exceeding vertices, that is, vertices that do not have neighbors +in both parts. It is provided as a simple gradient refinement +algorithm for the multilevel method, and is clearly outperformed by +the Fiduccia-Mattheyses algorithm. +\iteme[\textbf{Vertex cover}] +This algorithm computes a vertex separator by first computing an edge +separator, that is, a bipartition of the graph, and then turning it +into a vertex separator by using the method proposed by Pothen and +Fang~\cite{pofa90}. This method requires the computation of maximal +matchings in the bipartite graphs associated with the edge cuts, which +are built using Duff's variant~\cite{duff81} of the Hopcroft and Karp +algorithm~\cite{hoka73}. +Edge separators are computed by using a bipartitioning strategy, +which can use any of the graph bipartitioning methods described in +section~\ref{sec-algo-bipart}, page~\pageref{sec-algo-bipart}. +\end{itemize} diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_l.tex scotch-6.0.6/doc/src/scotch/s_l.tex --- scotch-6.0.4.dfsg1/doc/src/scotch/s_l.tex 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_l.tex 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,7292 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Titre : s_l.tex % +% Sujet : Manuel de l'utilisateur % +% du projet 'Scotch' % +% Bibliotheque % +% Auteur : Francois Pellegrini % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Library} +\label{sec-lib} + +All of the features provided by the programs of the +\scotch\ distribution may be directly accessed by calling +the appropriate functions of the \libscotch\ library, archived +in files {\tt libscotch.a} and {\tt libscotcherr.a}. +These routines belong to six distinct classes: +\begin{itemize} +\item +source graph and source mesh handling routines, which serve to declare, build, +load, save, and check the consistency of source graphs and meshes, along with +their geometry data; +\item +target architecture handling routines, which allow the user to +declare, build, load, and save target architectures; +\item +strategy handling routines, which allow the user to declare and build +mapping and ordering strategies; +\item +mapping routines, which serve to declare, compute, and save +mappings of source graphs to target architectures by means of +mapping strategies; +\item +a partitioning-with-overlap routine, which computes a vertex separator +that splits a graph into a prescribed number of parts, such that the +vertex load of each part and of its neighboring separator vertices are +balanced; +\item +ordering routines, which allow the user to declare, compute, and save +orderings of source graphs and meshes; +\item +error handling routines, which allow the user either to provide his own +error servicing routines, or to use the default routines provided +in the \libscotch\ distribution. +\end{itemize} + +A \metis\ compatibility library, called {\tt lib\lbo scotch\lbo metis.a}, +is also available. It allows users who were previously using +\metis\ in their software to take advantage of the efficieny of +\scotch\ without having to modify their code. The +services provided by this library are described in +Section~\ref{sec-lib-metis}. + +\subsection{Calling the routines of {\sc libScotch}} + +\subsubsection{Calling from C} + +All of the C routines of the \libscotch\ library are prefixed with +``{\tt SCOTCH\_}''. The remainder of the function names is made of the +name of the type of object to which the functions apply (e\@.g\@. +``{\tt graph}'', ``{\tt mesh}'', ``{\tt arch}'', ``{\tt map}'', etc.), +followed by the type of action performed on this object: ``{\tt +Init}'' for the initialization of the object, ``{\tt Exit}'' for the +freeing of its internal structures, ``{\tt Load}'' for loading the +object from a stream, and so on. + +Typically, functions that return an error code return zero if the +function succeeds, and a non-zero value in case of error. + +For instance, the {\tt SCOTCH\_\lbt graph\lbt Init} and +{\tt SCOTCH\_\lbt graph\lbt Load} routines, described in +sections~\ref{sec-lib-func-graphinit} +and~\ref{sec-lib-func-graphload}, respectively, can +be called from C by using the following code. +{\tt +\begin{verbatim} +#include +#include "scotch.h" + ... + SCOTCH_Graph grafdat; + FILE * fileptr; + + if (SCOTCH_graphInit (&grafdat) != 0) { + ... /* Error handling */ + } + if ((fileptr = fopen ("brol.grf", "r")) == NULL) { + ... /* Error handling */ + } + if (SCOTCH_graphLoad (&grafdat, fileptr, -1, 0) != 0) { + ... /* Error handling */ + } + ... +\end{verbatim} +} + +Since ``{\tt scotch.h}'' uses several system objects which are +declared in ``{\tt stdio.h}'', this latter file must be +included beforehand in your application code. + +Although the ``{\tt scotch.h}'' and ``{\tt ptscotch.h}'' files may +look very similar on your system, never mistake them, and always use +the ``{\tt scotch.h}'' file as the include file for compiling a +program which uses only the sequential routines of the \libscotch\ +library. + +\subsubsection{Calling from Fortran} + +The routines of the \libscotch\ library can also be called from +Fortran. For any C function named {\tt SCOTCH\_\lbt {\it type\lbt +Action}()} which is documented in this manual, there exists a {\tt +SCOTCHF\lbt {\it TYPE\lbt ACTION\/}()} Fortran counterpart, in which +the separating underscore character is replaced by an ``{\tt +F}''. In most cases, the Fortran routines have exactly the same +parameters as the C functions, save for an added trailing {\tt +INTEGER} argument to store the return value yielded by the function +when the return type of the C function is not {\tt void}. +\\ + +Since all the data structures used in \libscotch\ are +opaque, equivalent declarations for these structures must +be provided in Fortran. These structures must therefore +be defined as arrays of {\tt DOUBLEPRECISION}s, of sizes +given in file {\tt scotchf.h}, which must be included whenever +necessary. + +For routines which read or write data using a {\tt FILE~*} stream +in C, the Fortran counterpart uses an {\tt INTEGER} parameter which +is the numer of the Unix file descriptor corresponding to the logical +unit from which to read or write. In most Unix implementations of +Fortran, standard descriptors 0 for standard input (logical unit 5), +1 for standard output (logical unit 6) and 2 for standard error are +opened by default. However, for files which are opened using +{\tt OPEN} statements, an additional function must be used to obtain +the number of the Unix file descriptor from the number of the logical +unit. This function is called \texttt{PXFFILENO} in the normalized +POSIX Fortran API, and files which use it should include the +\texttt{USE IFPOSIX} directive whenever necessary. An alternate, non +normalized, function also exists in most Unix implementations of +Fortran, and is called {\tt FNUM}. + +For instance, the {\tt SCOTCH\_\lbt graph\lbt Init} and +{\tt SCOTCH\_\lbt graph\lbt Load} routines, described in +sections~\ref{sec-lib-func-graphinit} +and~\ref{sec-lib-func-graphload}, respectively, can +be called from Fortran by using the following code. +{\tt +\begin{verbatim} + INCLUDE "scotchf.h" + DOUBLEPRECISION GRAFDAT(SCOTCH_GRAPHDIM) + INTEGER RETVAL + ... + CALL SCOTCHFGRAPHINIT (GRAFDAT (1), RETVAL) + IF (RETVAL .NE. 0) THEN + ... + OPEN (10, FILE='brol.grf') + CALL SCOTCHFGRAPHLOAD (GRAFDAT (1), FNUM (10), 1, 0, RETVAL) + CLOSE (10) + IF (RETVAL .NE. 0) THEN + ... +\end{verbatim} +} + +Although the ``{\tt scotchf.h}'' and ``{\tt ptscotchf.h}'' files may +look very similar on your system, never mistake them, and always use +the ``{\tt scotchf.h}'' file as the include file for compiling a +program which uses only the sequential routines of the \libscotch\ +library. + +\subsubsection{Compiling and linking} + +The compilation of C or Fortran routines which use routines of +the \libscotch\ library requires that either ``{\tt scotch.h}'' or +``{\tt scotchf.h}'' be included, respectively. + +The routines of the \libscotch\ library are grouped in a library +file called {\tt libscotch.a}. Default error routines that print +an error message and exit are provided in library file +{\tt libscotcherr.a}. + +Therefore, the linking of applications that make use of the +\libscotch\ library with standard error handling is carried out by +using the following options: ``{\tt -lscotch -lscotcherr -lm}''. +If you want to handle errors by yourself, you should not link with +library file {\tt libscotcherr.a}, but rather provide a +{\tt SCOTCH\_\lbt error\lbt Print()} routine. +Please refer to section~\ref{sec-lib-error} for more information. + +Programs that call both sequential and parallel routines of +\scotch\ should use only the parallel versions of the include file and +of the library. Please refer to the equivalent section of the +\ptscotch\ user's manual for more information. + +\subsubsection{Dynamic library issues} +\label{sec-lib-dynalloc} + +The advantage of dynamic libraries is that application code may not +need to be recompiled when the library is updated. Whether this is +true or not depends on the extent of the changes. One of the cases +when recompilation is mandatory is when API data structures change: +code that statically reserves space for them may be subject to +boundary overflow errors when the size of library data structures +increase, so that library routines operate on more space than what was +statically allocated by the compiler based on the header files of the +old version of the library. + +In order to alleviate this problem, the \libscotch\ proposes a set of +routines to dynamically allocate storage space for the opaque API +\scotch\ structures. Because these routines return pointers, these +{\tt SCOTCH\_\lbt *Alloc} routines, as well as the {\tt SCOTCH\_\lbt +free} routine, are only available in the C interface. + +\subsubsection{Machine word size issues} +\label{sec-lib-inttypesize} + +Graph indices are represented in \scotch\ as integer values of type +{\tt SCOTCH\_\lbt Num}. By default, this type equates to the {\tt int} +C type, that is, an integer type of size equal to the one of +the machine word. However, it can represent any other integer +type. Indeed, the size of the {\tt SCOTCH\_\lbt Num} integer type can +be coerced to 32 or 64 bits by using the ``{\tt -DINTSIZE32}'' or +``{\tt -DINTSIZE64}'' compilation flags, respectively, or else by +using the ``{\tt -DINT=}'' definition (see +Section~\ref{sec-install-inttypesize} for more information on the +setting of these compilation flags). + +Consequently, the C interface of \scotch\ uses two types of integers. +Graph-related quantities are passed as {\tt SCOTCH\_\lbt Num}s, +while system-related values such as file handles, as well as +return values of \libscotch\ routines, are always passed as +{\tt int}s. + +Because of the variability of library integer type sizes, one must be +careful when using the Fortran interface of \scotch, as it does not +provide any prototyping information, and consequently cannot produce +any warning at link time. In the manual pages of the +\libscotch\ routines, Fortran prototypes are written using three types +of {\tt INTEGER}s. As for the C interface, the regular {\tt INTEGER} +type is used for system-based values, such as file handles and MPI +communicators, as well as for return values of the +\libscotch\ routines, while the {\tt INTEGER*}{\it num} type +should be used for all graph-related values, in accordance to the size +of the {\tt SCOTCH\_\lbt Num} type, as set by the +``{\tt -DINTSIZE}{\it x\/}'' compilation flags. Also, the +{\tt INTEGER*}{\it idx} type represents an integer type of a size +equivalent to the one of a {\tt SCOTCH\_\lbt Idx}, as set by the +``{\tt -DIDXSIZE}{\it x\/}'' compilation flags. Values of this type +are used in the Fortran interface to represent arbitrary array indices +which can span across the whole address space, and consequently +deserve special treatment. + +In practice, when \scotch\ is compiled on a 32-bit architecture so as +to use 64-bit {\tt SCOTCH\_\lbt Num}s, graph indices should be +declared as {\tt INTEGER*8}, while error return values +should still be declared as plain {\tt INTEGER} (that is, +{\tt INTEGER*4}) values. On a 32\_64-bit architecture, irrespective of +whether {\tt SCOTCH\_\lbt Num}s are defined as {\tt INTEGER*4} +or {\tt INTEGER*8} quantities, the {\tt SCOTCH\_\lbt Idx} type +should always be defined as a 64-bit quantity, that is, an +{\tt INTEGER*8}, because it stores differences between memory +addresses, which are represented by 64-bit values. +The above is no longer a problem if \scotch\ is compiled such that +{\tt int}s equate 64-bit integers. In this case, there is no need to +use any type coercing definition. +\\ + +The \metis\ v3 compatibility library provided by \scotch\ can also +run on a 64-bit architecture. Yet, if you are willing to use it this +way, you will have to replace all {\tt int}'s that are passed to the +\metis\ routines by 64-bit integer {\tt SCOTCH\_\lbt Num} values (even +the option configuration values). However, in this case, you will no +longer be able to link against the service routines of the genuine +\metis\ v3 library, as they are only available as a 32-bit +implementation. + +\subsection{Data formats} + +All of the data used in the \libscotch\ interface are of integer type +{\tt SCOTCH\_Num}. To hide the internals of \scotch\ to callers, all +of the data structures are opaque, that is, declared within ``{\tt +scotch.h}'' as dummy arrays of double precision values, for the sake of +data alignment. Accessor routines, the names of which end in ``{\tt +Size}'' and ``{\tt Data}'', allow callers to retrieve information from +opaque structures. +\\ + +In all of the following, whenever arrays are defined, passed, and +accessed, it is assumed that the first element of these arrays is +always labeled as {\tt baseval}, whether {\tt baseval} is set to $0$ +(for C-style arrays) or $1$ (for Fortran-style arrays). \scotch\ +internally manages with base values and array pointers so as to +process these arrays accordingly. + +\subsubsection{Architecture format} + +Target architecture structures are completely opaque. The only way +to describe an architecture is by means of a graph passed to the +{\tt SCOTCH\_\lbt arch\lbt Build} or {\tt SCOTCH\_\lbt arch\lbt +Build2} routines. + +\subsubsection{Graph format} +\label{sec-lib-format-graph} + +Source graphs are described by means of adjacency lists. The +description of a graph requires several {\tt SCOTCH\_Num} scalars and +arrays, as shown in Figures~\ref{fig-lib-graf-one} +and~\ref{fig-lib-graf-two}. They have the following meaning: +\begin{itemize} +\iteme[{\tt baseval}] +Base value for all array indexings. +\iteme[{\tt vertnbr}] +Number of vertices in graph. +\iteme[{\tt edgenbr}] +Number of arcs in graph. Since edges are represented by both of their +ends, the number of edge data in the graph is twice the number of +graph edges. +\iteme[{\tt verttab}] +Array of start indices in $\mathtt{edgetab}$ of vertex adjacency +sub-arrays. +\iteme[{\tt vendtab}] +Array of after-last indices in {\tt edgetab} of vertex adjacency +sub-arrays. +For any vertex $i$, with $\mathtt{baseval} \leq i < (\mathtt{baseval} ++ \mathtt{vertnbr})$, $\mathtt{vendtab}\mbox{\tt [}\mathit{i}\mbox{\tt +]} - \mathtt{verttab}\mbox{\tt [}\mathit{i}\mbox{\tt ]}$ is the degree +of vertex $i$, and the indices of the neighbors of $i$ are stored in +$\mathtt{edgetab}$ from $\mathtt{edgetab}\lbt \mbox{\tt +[}\mathtt{verttab}\mbox{\tt [}i\mbox{\tt ]]}$ to +$\mathtt{edgetab}\lbt \mbox{\tt [}\mathtt{vendtab}\mbox{\tt +[}i\mbox{\tt ]} - 1\mbox{\tt ]}$, inclusive. + +When all vertex adjacency lists are stored in order in {\tt edgetab}, +it is possible to save memory by not allocating the physical memory +for {\tt vendtab}. In this case, illustrated in +Figure~\ref{fig-lib-graf-one}, {\tt verttab} is of size +$\mathtt{vertnbr} + 1$ and $\mathtt{vendtab}$ points to +$\mathtt{verttab} + 1$. This case is referred to as the ``compact edge +array'' case, such that $\mathtt{verttab}$ is sorted in ascending +order, $\mathtt{verttab}\mbox{\tt [}\lbt\mathtt{baseval}\mbox{\tt ]} = +\mathtt{baseval}$ and $\mathtt{verttab}\lbt\mbox{\tt +[}\mathtt{baseval} + \mathtt{vertnbr}\mbox{\tt ]} = +(\mathtt{baseval} + \mathtt{edgenbr})$. +\iteme[{\tt velotab}] +Optional array, of size {\tt vertnbr}, holding the integer load +associated with every vertex. +\iteme[{\tt edgetab}] +Array, of a size equal at least to +$\left(\max_{i}(\mathtt{vendtab}\mbox{\tt [}i\mbox{\tt ]}) - +\mathtt{baseval}\right)$, holding the adjacency array of every +vertex. +\iteme[{\tt edlotab}] +Optional array, of a size equal at least to $\left(\max_{i}(\mbox{\tt +vendtab[} i \mathtt{]}) - \mathtt{baseval}\right)$, holding the +integer load associated with every arc. Matching arcs should always +have identical loads. +\end{itemize} + +\begin{figure} +\centering\includegraphics[scale=0.47]{s_f_gr1.eps} +\caption{Sample graph and its description by \libscotch\ arrays using +a compact edge array. Numbers within vertices are vertex indices, bold +numbers close to vertices are vertex loads, and numbers close to edges +are edge loads. Since the edge array is compact, {\tt verttab} is of +size $\mathtt{vertnbr} + 1$ and {\tt vendtab} points to +$\mathtt{verttab} + 1$.} +\label{fig-lib-graf-one} +\end{figure} + +\begin{figure} +\centering\includegraphics[scale=0.47]{s_f_gr2.eps} +\caption{Adjacency structure of the sample graph of +Figure~\protect\ref{fig-lib-graf-one} with disjoint edge and +edge load arrays. Both {\tt verttab} and {\tt vendtab} are of +size {\tt vertnbr}. This allows for the handling of dynamic +graphs, the structure of which can evolve with time.} +\label{fig-lib-graf-two} +\end{figure} + +Dynamic graphs can be handled elegantly by using the {\tt vendtab} +array. In order to dynamically manage graphs, one just has to allocate +{\tt verttab}, {\tt vendtab} and {\tt edgetab} arrays that are large +enough to contain all of the expected new vertex and edge +data. Original vertices are labeled starting from {\tt baseval}, +leaving free space at the end of the arrays. To remove some vertex +$i$, one just has to replace ${\tt verttab}\mathtt{[}i\mbox{\tt +]}$ and ${\tt vendtab}\mathtt{[}i\mathtt{]}$ with the values of +{\tt verttab\lbt [vertnbr\lbt -1]} and {\tt vendtab\lbt [vertnbr\lbt +-1]}, respectively, and browse the adjacencies of all neighbors of +former vertex {\tt vertnbr-1} such that all {\tt (vertnbr-1)} indices +are turned into $i$s. Then, {\tt vertnbr} must be decremented, and +{\tt SCOTCH\_\lbt graphBuild()} must be called to account for the +change of topology. If a graph building routine such as {\tt +SCOTCH\_\lbt graph\lbt Load()} or {\tt SCOTCH\_\lbt graph\lbt Build()} +had already been called on the {\tt SCOTCH\_\lbt Graph} structure, +{\tt SCOTCH\_\lbt graph\lbt Free()} has to be called first in order to +free the internal structures associated with the older version of the +graph, else these data would be lost, which would result in memory +leakage. + +To add a new vertex, one has to fill {\tt verttab\lbt [vertnbr\lbt +-1]} and {\tt vendtab\lbt [vertnbr\lbt -1]} with the starting and end +indices of the adjacency sub-array of the new vertex. Then, the +adjacencies of its neighbor vertices must also be updated to account +for it. If free space had been reserved at the end of each of the +neighbors, one just has to increment the ${\tt vendtab}\mbox{\tt +[}i\mathtt{]}$ values of every neighbor $i$, and add the index of +the new vertex at the end of the adjacency sub-array. If the sub-array +cannot be extended, then it has to be copied elsewhere in the edge +array, and both ${\tt verttab}\mathtt{[}i\mathtt{]}$ and ${\tt +vendtab}\mathtt{[}i\mathtt{]}$ must be updated accordingly. With +simple housekeeping of free areas of the edge array, dynamic arrays +can be updated with as little data movement as possible. + +\subsubsection{Mesh format} +\label{sec-lib-format-mesh} + +Since meshes are basically bipartite graphs, source meshes are also +described by means of adjacency lists. The description of a mesh +requires several {\tt SCOTCH\_Num} scalars and arrays, as shown in +Figure~\ref{fig-lib-mesh-one}. They have the following meaning: +\begin{itemize} +\iteme[{\tt velmbas}] +Base value for element indexings. +\iteme[{\tt vnodbas}] +Base value for node indexings. The base value of the underlying graph, +{\tt baseval}, is set as $\min(\mathtt{velmbas}, \mathtt{vnodbas})$. +\iteme[{\tt velmnbr}] +Number of element vertices in mesh. +\iteme[{\tt vnodnbr}] +Number of node vertices in mesh. +The overall number of vertices in the underlying graph, {\tt vertnbr}, +is set as $\mathtt{velmnbr} +\mathtt{vnodnbr}$. +\iteme[{\tt edgenbr}] +Number of arcs in mesh. Since edges are represented by both of their +ends, the number of edge data in the mesh is twice the number of +edges. +\iteme[{\tt verttab}] +Array of start indices in {\tt edgetab} of vertex (that is, both +elements and nodes) adjacency sub-arrays. +\iteme[{\tt vendtab}] +Array of after-last indices in {\tt edgetab} of vertex adjacency +sub-arrays. For any element or node vertex $i$, with +$\mathtt{baseval} \leq i < +(\mathtt{baseval} + \mathtt{vertnbr})$, $\mbox{\tt +vendtab[}i\mathtt{]} - \mathtt{verttab[}i\mathtt{]}$ is the +degree of vertex $i$, and the indices of the neighbors of $i$ are +stored in {\tt edgetab} from {\tt edgetab\lbt [verttab[$i$]]} to {\tt +edgetab\lbt [vendtab[$i$]\lbt $- 1$]}, inclusive. + +When all vertex adjacency lists are stored in order in {\tt edgetab}, +it is possible to save memory by not allocating the physical memory +for {\tt vendtab}. In this case, illustrated in +Figure~\ref{fig-lib-mesh-one}, {\tt verttab} is of size $\mbox{\tt +vertnbr} + 1$ and {\tt vendtab} points to $\mathtt{verttab} + 1$. +This case is referred to as the ``compact edge array'' case, such that +{\tt verttab} is sorted in ascending order, +$\mathtt{verttab[}\lbt\mathtt{baseval]} = \mathtt{baseval}$ +and $\mathtt{verttab[}\lbt\mathtt{baseval} + \mbox{\tt +vertnbr]} = (\mathtt{baseval} + \mathtt{edgenbr})$. +\iteme[{\tt velotab}] +Array, of size {\tt vertnbr}, holding the integer load associated with +each vertex. +\end{itemize} + +\begin{figure} +\centering\includegraphics[scale=0.47]{s_f_me1.eps} +\caption{Sample mesh and its description by \libscotch\ arrays using a +compact edge array. Numbers within vertices are vertex indices. Since the +edge array is compact, {\tt verttab} is of size $\mathtt{vertnbr} + +1$ and {\tt vendtab} points to $\mathtt{verttab} + 1$.} +\label{fig-lib-mesh-one} +\end{figure} + +As for graphs, it is possible to handle elegantly dynamic meshes by +means of the {\tt verttab} and {\tt vendtab} arrays. There is, +however, an additional constraint, which is that mesh nodes and +elements must be ordered consecutively. The solution to fulfill this +constraint in the context of mesh ordering is to keep a set of empty +elements (that is, elements which have no node adjacency attached to +them) between the element and node arrays. For instance, +Figure~\ref{fig-lib-mesh-two} represents a $4$-element mesh with $6$ +nodes, and such that $4$ element vertex slots have been reserved for +new elements and nodes. These slots are empty elements for which +{\tt verttab[i]} equals {\tt vendtab[i]}, irrespective of these +values, since they will not lead to any memory access in {\tt edgetab}. + +\begin{figure} +\centering\includegraphics[scale=0.47]{s_f_me2.eps} +\caption{Sample mesh and its description by \libscotch\ arrays, with +nodes numbered first and elements numbered last. In order to allow for +dynamic re-meshing, empty elements (in grey) have been inserted between +existing node and element vertices.} +\label{fig-lib-mesh-two} +\end{figure} + +Using this layout of vertices, new nodes and elements can be created +by growing the element and node sub-arrays into the empty element +sub-array, by both of its sides, without having to re-write the whole +mesh structure, as illustrated in +Figure~\ref{fig-lib-mesh-three}. Empty elements are transparent to the +mesh ordering routines, which base their work on node vertices only. +Users who want to update the arrays of a mesh that has already +been declared using the {\tt SCOTCH\_\lbt mesh\lbo Build} routine must +call {\tt SCOTCH\_\lbt mesh\lbo Exit} prior to updating the mesh arrays, +and then call {\tt SCOTCH\_\lbt mesh\lbo Build} again after the arrays +have been updated, so that the {\tt SCOTCH\_\lbt Mesh} structure remains +consistent with the new mesh data. + +\begin{figure} +\centering\includegraphics[scale=0.47]{s_f_me3.eps} +\caption{Re-meshing of the mesh of Figure~\protect\ref{fig-lib-mesh-two}. +New node vertices have been added at the end of the vertex sub-array, +new elements have been added at the beginning of the element sub-array, +and vertex base values have been updated accordingly. Node adjacency +lists that could not fit in place have been added at the end of the edge +array, and some of the freed space has been re-used for new adjacency +lists. Element adjacency lists do not require moving in this case, as +all of the elements have the name number of nodes.} +\label{fig-lib-mesh-three} +\end{figure} + +\subsubsection{Geometry format} +\label{sec-lib-format-geom} + +Geometry data is always associated with a graph or a mesh. It is +simply made of a single array of double-precision values which +represent the coordinates of the vertices of a graph, or of +the node vertices of a mesh, in vertex order. The fields of +a geometry structure are the following: +\begin{itemize} +\iteme[{\tt dimnnbr}] +Number of dimensions of the graph or of the mesh, which can be $1$, +$2$, or $3$. +\iteme[{\tt geomtab}] +Array of coordinates. This is an array of double precision values +organized as an array of $(x)$, or $(x,y)$, or $(x,y,z)$ tuples, +according to $\mathtt{dimnnbr}$. Coordinates that are not used +(e.g. the $z$ coordinates for a bidimentional object) are not +allocated. Therefore, the $x$ coordinate of some graph vertex $i$ is +located at $\mathtt{geomtab}\mbox{\tt [}(i - \mathtt{baseval}) * +\mathtt{dimnnbr} + \mathtt{baseval}\mbox{\tt ]}$, its $y$ coordinate +is located at $\mathtt{geomtab}\mbox{\tt [}(i - \mathtt{baseval}) * + \mathtt{dimnnbr} + \mathtt{baseval} + 1\mbox{\tt ]}$ if +$\mathtt{dimnnbr} \geq 2$, and its $z$ coordinate is located at +$\mathtt{geomtab}\mbox{\tt [}(i - \mathtt{baseval}) * \mathtt{dimnnbr} ++ \mathtt{baseval} + 2\mbox{\tt ]}$ if $\mathtt{dimnnbr} = +3$. Whenever the geometry is associated with a mesh, +only node vertices are considered, so the $x$ coordinate of some mesh +node vertex $i$, with $\mathtt{vnodbas} \leq i$, is located +at $\mathtt{geomtab}\mbox{\tt [}(i - \mathtt{vnodbas}) * +\mathtt{dimnnbr} + \mathtt{baseval}\mbox{\tt ]}$, its $y$ coordinate +is located at $\mathtt{geomtab}\mbox{\tt [}(i - \mathtt{vnodbas}) * +\mathtt{dimnnbr} + \mathtt{baseval} + 1\mbox{\tt ]}$ if +$\mathtt{dimnnbr} \geq 2$, and its $z$ coordinate is located at +$\mathtt{geomtab}\mbox{\tt [}(i - \mathtt{vnodbas}) * \mathtt{dimnnbr} ++ \mathtt{baseval} + 2\mbox{\tt ]}$ if $\mbox{\tt dimnnbr} = 3$. +\end{itemize} + +\subsubsection{Block ordering format} +\label{sec-lib-format-order} + +Block orderings associated with graphs and meshes are described by +means of block and permutation arrays, made of {\tt SCOTCH\_Num}s, as +shown in Figure~\ref{fig-lib-ord-block}. In order for all orderings to +have the same structure, irrespective of whether they are created from +graphs or meshes, all ordering data indices start from {\tt baseval}, +even when they refer to a mesh the node vertices of which are labeled +from a $\mathtt{vnodbas}$ index such that $\mathtt{vnodbas} > +\mathtt{baseval}$. Consequently, row indices are related to vertex +indices in memory in the following way: row $i$ is associated with +vertex $i$ of the {\tt SCOTCH\_\lbt Graph} structure if the ordering +was computed from a graph, and with node vertex $i + (\mbox{\tt +vnodbas} - \mathtt{baseval})$ of the {\tt SCOTCH\_\lbt Mesh} +structure if the ordering was computed from a mesh. +Block orderings are made of the following data: +\begin{itemize} +\iteme[{\tt permtab}] +Array holding the permutation of the reordered matrix. Thus, if $k = +\mathtt{permtab}\mbox{\tt [}\mathit{i}\mbox{\tt ]}$, then row $i$ of +the original matrix is now row $k$ of the reordered matrix, that is, +row $i$ is the $k^{\mathrm{th}}$ pivot. +\iteme[{\tt peritab}] +Inverse permutation of the reordered matrix. Thus, if +$i = \mathtt{peritab}\mbox{\tt [}\mathit{k}\mbox{\tt ]}$, then row $k$ +of the reordered matrix was row $i$ of the original matrix. +\iteme[{\tt cblknbr}] +Number of column blocks (that is, supervariables) in the block ordering. +\iteme[{\tt rangtab}] +Array of ranges for the column blocks. Column block $c$, with +$\mathtt{baseval} \leq c < (\mathtt{cblknbr} + \mathtt{baseval})$, +contains columns with indices ranging from +$\mathtt{rangtab}\mbox{\tt [}\mathit{i}\mbox{\tt ]}$ to +$\mathtt{rangtab}\mbox{\tt [}\mathit{i} + 1\mbox{\tt ]}$, exclusive, +in the reordered matrix. Indices in $\mathtt{rangtab}$ are +based. Therefore, +$\mathtt{rangtab}\mbox{\tt [}\mathtt{baseval}\mbox{\tt ]}$ is always +equal to $\mathtt{baseval}$, and +$\mathtt{rangtab}\mbox{\tt [}\mathtt{cblknbr} + +\mathtt{baseval}\mbox{\tt ]}$ is always equal to +$\mathtt{vertnbr} + \mathtt{baseval}$ for graphs and +to $\mathtt{vnodnbr} + \mathtt{baseval}$ for meshes. +In order to avoid memory errors when column blocks are all single +columns, the size of {\tt rangtab} must always be one more than the +number of columns, that is, $\mathtt{vertnbr} + 1$ for graphs and +$\mathtt{vnodnbr} + 1$ for meshes. +\iteme[{\tt treetab}] +Array of ascendants of permuted column blocks in the separators tree. +{\tt treetab[i]} is the index of the father of column block $i$ in the +separators tree, or $-1$ if column block $i$ is the root of the +separators tree. Whenever separators or leaves of the separators tree +are split into subblocks, as the block splitting, minimum fill or minimum +degree methods do, all subblocks of the same level are linked to the +column block of higher index belonging to the closest separator +ancestor. Indices in {\tt treetab} are based, in the same way as for +the other blocking structures. See Figure~\ref{fig-lib-ord-block} for +a complete example. +\end{itemize} + +\begin{figure} +\centering\includegraphics[scale=0.47]{s_f_orb.eps} +\caption{Arrays resulting from the ordering by complete nested +dissection of a 4 by 3 grid based from $1$. Leftmost grid is the +original grid, and righmost grid is the reordered grid, with +separators shown and column block indices written in bold.} +% using strategy n{sep=hf{bal=0},ole=s,ose=s} +\label{fig-lib-ord-block} +\end{figure} + +\subsection{Strategy strings} + +The behavior of the mapping and block ordering routines of the +\libscotch\ library is parametrized by means of strategy strings, +which describe how and when given partitioning or ordering methods +should be applied to graphs and subgraphs, or to meshes and submeshes. + +\subsubsection{Using default strategy strings} +\label{sec-lib-format-strat-default} + +While strategy strings can be built by hand, according to the syntax +given in the next sections, users who do not have specific needs can +take advantage of default strategies already implemented in the +\libscotch, which will yield very good results in most cases. By +doing so, they will spare themselves the hassle of updating their +strategies to comply to subsequent syntactic changes, and they will +benefit from the availability of new partitioning or ordering methods +as soon as they are released. + +The simplest way to use default strategy strings is to avoid +specifying any. By initializing a strategy object, by means of the +{\tt SCOTCH\_\lbt stratInit} routine, and by using the initialized +strategy object as is, without further parametrization, this object +will be filled with a default strategy when passing it as a parameter +to the next partitioning or ordering routine to be called. On return, +the strategy object will contain a fully specified strategy, tailored +for the type of operation which has been requested. Consequently, a +fresh strategy object that was used to partition a graph cannot be +used afterward as a default strategy when calling an ordering routine, +for instance, as partitioning and ordering strategies are incompatible. + +The \libscotch\ also provides helper routines which allow users to +express their preferences on the kind of strategy that they +need. These helper routines, which are of the form +{\tt SCOTCH\_\lbt strat\lbt *\lbt Build} (see +Section~\ref{sec-lib-func-stratgraphclusterbuild} and after), tune +default strategy strings according to parameters provided by the user, +such as the requested number of parts (used as a hint to select the +most efficient partitioning routines), the desired maximum load +imbalance ratio, and a set of preference flags. While some of these +flags are antagonistic, most of them can be combined, by means of +addition or ``binary or'' operators. These flags are the following. +They are grouped by application class. + +\paragraph{Global flags} + +\begin{itemize} +\iteme[{\tt SCOTCH\_STRATDEFAULT}] +Default behavior. No flags are set. +\iteme[{\tt SCOTCH\_STRATBALANCE}] +Enforce load balance as much as possible. +\iteme[{\tt SCOTCH\_STRATQUALITY}] +Privilege quality over speed. +\iteme[{\tt SCOTCH\_STRATSAFETY}] +Do not use methods that can lead to the occurrence of problematic +events, such as floating point exceptions, which could not be properly +handled by the calling software. +\iteme[{\tt SCOTCH\_STRATSPEED}] +Privilege speed over quality. +\end{itemize} + +\paragraph{Mapping and partitioning flags} + +\begin{itemize} +\iteme[{\tt SCOTCH\_STRATRECURSIVE}] +Use only recursive bipartitioning methods, and not direct k-way +methods. When this flag is not set, any combination of methods can be +used, so as to achieve the best result according to other user +preferences. +\iteme[{\tt SCOTCH\_STRATREMAP}] +Use the strategy for remapping an existing partition. +\end{itemize} + +\paragraph{Ordering flags} + +\begin{itemize} +\iteme[{\tt SCOTCH\_STRATDISCONNECTED}] +Find and handle independently disconnected components. +\iteme[{\tt SCOTCH\_STRATLEVELMAX}] +Create at most the prescribed levels of nested dissection separators. +\iteme[{\tt SCOTCH\_STRATLEVELMIN}] +Create at least the prescribed levels of nested dissection separators. +When used in conjunction with {\tt SCOTCH\_\lbt STRAT\lbt LEVEL\lbt +MAX}, the exact number of nested dissection levels will be performed, +unless the graph to order is too small. +\iteme[{\tt SCOTCH\_STRATLEAFSIMPLE}] +Order nested dissection leaves as cheaply as possible. +\iteme[{\tt SCOTCH\_STRATSEPASIMPLE}] +Order nested dissection separators as cheaply as possible. +\end{itemize} + +\subsubsection{Mapping strategy strings} +\label{sec-lib-format-map} + +At the time being, mapping methods only apply to graphs, as there is +not yet a mesh mapping tool in the \scotch\ package. +Mapping strategies are made of methods, with optional parameters enclosed +between curly braces, and separated by commas, in the form of +{\it method\/}{[{\tt \{}{\it parameters\/}{\tt \}}]}\enspace. +The currently available mapping methods are the following. + +\begin{itemize} +\iteme[{\tt b}] +Band method. This method builds a band graph of given width around the +current frontier of the k-way partition to which it is applied, and +calls a graph mapping strategy to refine the equivalent k-way +partition of the band graph. Then, the refined frontier of the band +graph is projected back to the current graph. This method was +initially presented in~\cite{chpe06a} in the case of bipartitioning. +The parameters of the band bipartitioning method are listed below. +\begin{itemize} +\iteme[{\tt bnd=}{\it strat}] +Set the graph mapping strategy to be used on the band graph. +\iteme[{\tt org=}{\it strat}] +Set the fallback graph mapping strategy to be used on the +original graph if the band graph strategy could not be used. The three +cases which require the use of this fallback strategy are the +following. First, if the separator of the original graph is empty, +which makes it impossible to compute a band graph. Second, if any part +of the band graph to be built is of the same size as the one of the +original graph. Third, if the application of the {\tt bnd} +bipartitioning method to the band graph leads to a situation where any +two anchor vertices are placed in the same part. +\iteme[{\tt width=}{\it val}] +Set the width of the band graph. All graph vertices that are at a +distance less than or equal to {\it val} from any frontier vertex +are kept in the band graph. +\end{itemize} +\iteme[{\tt d}] +Diffusion method. This method, presented in~\cite{pell07b} in the case +of bipartitioning, flows $k$ kinds of antagonistic liquids from $k$ +source vertices, and sets the new frontier as the limit between vertices +which contain different kinds of liquids. Because +selecting the source vertices is essential to the obtainment of useful +results, this method has been hard-coded so that the $k$ source +vertices are the $k$ vertices of highest indices, since in the band +method these are the anchor vertices which represent all of the removed +vertices of each part. Therefore, this method must be used on band +graphs only, or on specifically crafted graphs. Applying it to any +other graphs is very likely to lead to extremely poor results. +The physical analogy of this method loses weight when it is applied to +target architectures that are not complete graphs. +The parameters of the diffusion mapping method are listed below. +\begin{itemize} +\iteme[{\tt dif=}{\it rat}] +Fraction of liquid which is diffused to neighbor vertices at each +pass. To achieve convergence, the sum of the {\tt dif} and {\tt rem} +parameters must be equal to $1$, but in order to speed-up the diffusion +process, other combinations of higher sum can be tried. In this case, +the number of passes must be kept low, to avoid numerical overflows +which would make the results useless. +\iteme[{\tt pass=}{\it nbr}] +Set the number of diffusion sweeps performed by the algorithm. This +number depends on the width of the band graph to which the diffusion +method is applied. Useful values range from $30$ to $500$ according +to chosen {\tt dif} and {\tt rem} coefficients. +\iteme[{\tt rem=}{\it rat}] +Fraction of liquid which remains on vertices at each pass. See above. +\end{itemize} +\iteme[{\tt f}] +$k$-way Fiduccia-Mattheyses method. The parameters of the +Fiduccia-Mattheyses method are listed below. +\begin{itemize} +\iteme[{\tt bal=}{\it rat}] +Set the maximum weight imbalance ratio to the given fraction of +the subgraph vertex weight. Common values are around $0.01$, that +is, one percent. +\iteme[{\tt move=}{\it nbr}] +Maximum number of hill-climbing moves that can be performed before a +pass ends. During each of its passes, the Fiduccia-Mattheyses +algorithm repeatedly swaps vertices between parts so as to +minimize the cost function. A pass completes either when all of the +vertices have been moved once, or if too many swaps that do not +decrease the value of the cost function have been performed. Setting +this value to zero turns the Fiduccia-Mattheyses algorithm into a +gradient-like method, which may be used to quickly refine partitions +during the uncoarsening phase of the multilevel method. +\iteme[{\tt pass=}{\it nbr}] +Set the maximum number of optimization passes performed by the +algorithm. The Fiduccia-Mattheyses algorithm stops as soon as a pass +has not yielded any improvement of the cost function, or when the +maximum number of passes has been reached. Value $-1$ stands for an +infinite number of passes, that is, as many as needed by the algorithm +to converge. +\end{itemize} +\iteme[{\tt m}] +Multilevel method. The parameters of the multilevel method are listed below. +\begin{itemize} +\iteme[{\tt asc=}{\it strat}] +Set the strategy that is used to refine the mappings obtained +at ascending levels of the uncoarsening phase by projection of the +mappings computed for coarser graphs. +This strategy is not applied to the coarsest graph, for which only the +{\tt low} strategy is used. +\iteme[{\tt low=}{\it strat}] +Set the strategy that is used to compute the mapping of the +coarsest graph, at the lowest level of the coarsening process. +\iteme[{\tt rat=}{\it rat}] +Set the threshold maximum coarsening ratio over which graphs are no longer +coarsened. The ratio of any given coarsening cannot be less that $0.5$ +(case of a perfect matching), and cannot be greater than $1.0$. +Coarsening stops when either the coarsening ratio is above the maximum +coarsening ratio, or the graph has fewer vertices than the minimum number of +vertices allowed. +\iteme[{\tt vert=}{\it nbr}] +Set the threshold under which graphs are no longer +coarsened. Coarsening stops when either the coarsening ratio is above +the maximum coarsening ratio, or the graph would have fewer vertices +than the minimum number of vertices allowed. When the target +architecture is a variable-sized architecture, coarsening stops when +the coarsened graph would have less than \mbox{\it nbr} vertices. When +the target architecture is a regular, fixed-size, architecture, +coarsening stops when each subdomain would have less than \mbox{\it + nbr} vertices, that is, when the size of the coarsened graph would +have less than $\mbox{\it nbr}\times\mathtt{domnnbr}$ vertices, +where $\mathtt{domnnbr}$ is the number of vertices in the target +architecture. +\end{itemize} +\iteme[{\tt r}] +Dual Recursive Bipartitioning mapping algorithm, as defined in +section~\ref{sec-algo-drb}. The parameters of the DRB mapping method are +listed below. +\begin{itemize} +\iteme[{\tt job=}{\it tie}] +The {\it tie\/} flag defines how new jobs are stored in job pools. +\begin{itemize} +\iteme[{\tt t}] +Tie job pools together. Subjobs are stored in same pool as their parent job. +This is the default behavior, as it proves the most efficient in practice. +\iteme[{\tt u}] +Untie job pools. Subjobs are stored in the next job pool to be processed. +\end{itemize} +\iteme[{\tt map=}{\it tie}] +The {\it tie\/} flag defines how results of bipartitioning jobs are +propagated to jobs still in pools. +\begin{itemize} +\iteme[{\tt t}] +Tie both mapping tables together. Results are immediately available to jobs +in the same job pool. This is the default behavior. +\iteme[{\tt u}] +Untie mapping tables. Results are only available to jobs of next pool to be +processed. +\end{itemize} +\iteme[{\tt poli=}{\it policy}] +Select jobs according to policy {\it policy}. Job selection policies +define how bipartitioning jobs are ordered within the currently active job +pool. Valid policy flags are +\begin{itemize} +\iteme[{\tt L}] +Most neighbors of higher level. +\iteme[{\tt l}] +Highest level. +\iteme[{\tt r}] +Random. +\iteme[{\tt S}] +Most neighbors of smaller size. This is the default behavior. +\iteme[{\tt s}] +Biggest size. +\end{itemize} +\iteme[{\tt sep=}{\it strat}] +Apply bipartitioning strategy {\it strat\/} to each bipartitioning job. +A bipartitioning strategy is made of one or several bipartitioning methods, +which can be combined by means of strategy operators. Graph +bipartitioning strategies are described below. +\end{itemize} +\iteme[{\tt x}] +Exactifier method, as defined in Section~\ref{sec-algo-map-exact}. +This greedy algorithm refines the current mapping so as to reduce load +imbalance as much as possible. Since this method does not consider +communication minimization, its use should be restricted to cases +where achieving load balance is critical and where recursive +bipartitioning may fail to achieve it, because of very irregular +vertex loads. +\end{itemize} + +\subsubsection{Graph bipartitioning strategy strings} +\label{sec-lib-format-bipart} + +A graph bipartitioning strategy is made of one or several graph +bipartitioning methods, which can be combined by means of strategy +operators. Strategy operators are listed below, by increasing +precedence. + +\begin{itemize} +\iteme[{\it strat1\/}{\tt |}{\it strat2}] +Selection operator. The result of the selection is the best bipartition of +the two that are obtained by the separate application of {\it strat1\/} and +{\it strat2\/} to the current bipartition. +\iteme[{\it strat1$\:$}{\it strat2}] +Combination operator. Strategy {\it strat2\/} is applied to the bipartition +resulting from the application of strategy {\it strat1\/} to the current +bipartition. Typically, the first method used should compute an initial +bipartition from scratch, and every following method should use the +result of the previous one at its starting point. +\iteme[{\tt (}{\it strat\/}{\tt )}] +Grouping operator. +The strategy enclosed within the parentheses is treated as a single +bipartitioning method. +\iteme[{\tt /}{\it cond\/}{\tt ?}{\it strat1\/}{[{\tt :}{\it strat2}]{\tt ;}}] +Condition operator. According to the result of the evaluation of condition +{\it cond}, either {\it strat1\/} or {\it strat2\/} (if it is present) is +applied. The condition applies to the characteristics of the current active +graph, and can be built from logical and relational operators. Conditional +operators are listed below, by increasing precedence. +\begin{itemize} +\iteme[{\it cond1\/}{\tt |}{\it cond2}] +Logical or operator. The result of the condition is true if {\it cond1\/} +or {\it cond2\/} are true, or both. +\iteme[{\it cond1\/}{\tt \&}{\it cond2}] +Logical and operator. The result of the condition is true only if both +{\it cond1\/} and {\it cond2\/} are true. +\iteme[{\tt !}{\it cond}] +Logical not operator. The result of the condition is true only if +{\it cond\/} is false. +\iteme[{\it var} {\it relop} {\it val}] +Relational operator, where {\it var\/} is a graph variable, {\it val\/} is +either a graph variable or a constant of the type of variable {\it var\/}, and +{\it relop\/} is one of '{\tt\verb+<+}', '{\tt\verb+=+}', and '{\tt\verb+>+}'. +The graph variables are listed below, along with their types. +\begin{itemize} +\iteme[{\tt deg}] +The average degree of the current graph. +Float. +\iteme[{\tt edge}] +The number of arcs (which is twice the number of edges) of the current graph. +Integer. +\iteme[{\tt load}] +The overall vertex load (weight) of the current graph. +Integer. +\iteme[{\tt load0}] +The vertex load of the first subset of the current bipartition of the current +graph. +Integer. +\iteme[{\tt vert}] +The number of vertices of the current graph. +Integer. +\end{itemize} +\end{itemize} +\iteme[{\it method\/}{[{\tt \{}{\it parameters\/}{\tt \}}]}] +Bipartitioning method. For bipartitioning methods that can be +parametrized, parameter settings may be provided after the method +name. Parameters must be separated by commas, and the whole list +be enclosed between curly braces. +\end{itemize} +The currently available graph bipartitioning methods are the following. +\begin{itemize} +\iteme[{\tt b}] +Band method. This method builds a band graph of given width around the +current frontier of the graph to which it is applied, and +calls a graph bipartitioning strategy to refine the equivalent +bipartition of the band graph. Then, the refined frontier of the band +graph is projected back to the current graph. This method, presented +in~\cite{chpe06a}, was created to reduce the cost of vertex separator +refinement algorithms in a multilevel context, but it improves +partition quality too. The same behavior is observed for graph +bipartitioning. The parameters of the band bipartitioning method are +listed below. +\begin{itemize} +\iteme[{\tt bnd=}{\it strat}] +Set the graph bipartitioning strategy to be used on the band graph. +\iteme[{\tt org=}{\it strat}] +Set the fallback graph bipartitioning strategy to be used on the +original graph if the band graph strategy could not be used. The three +cases which require the use of this fallback strategy are the +following. First, if the separator of the original graph is empty, +which makes it impossible to compute a band graph. Second, if any part +of the band graph to be built is of the same size as the one of the +original graph. Third, if the application of the {\tt bnd} +bipartitioning method to the band graph leads to a situation where both +anchor vertices are placed in the same part. +\iteme[{\tt width=}{\it val}] +Set the width of the band graph. All graph vertices that are at a +distance less than or equal to {\it val} from any frontier vertex +are kept in the band graph. +\end{itemize} +\iteme[{\tt d}] +Diffusion method. This method, presented in~\cite{pell07b}, flows two +kinds of antagonistic liquids, scotch and anti-scotch, from two source +vertices, and sets the new frontier as the limit between vertices +which contain scotch and the ones which contain anti-scotch. Because +selecting the source vertices is essential to the obtainment of useful +results, this method has been hard-coded so that the two source +vertices are the two vertices of highest indices, since in the band +method these are the anchor vertices which represent all of the removed +vertices of each part. Therefore, this method must be used on band +graphs only, or on specifically crafted graphs. Applying it to any +other graphs is very likely to lead to extremely poor results. +The parameters of the diffusion bipartitioning method are +listed below. +\begin{itemize} +\iteme[{\tt dif=}{\it rat}] +Fraction of liquid which is diffused to neighbor vertices at each +pass. To achieve convergence, the sum of the {\tt dif} and {\tt rem} +parameters must be equal to $1$, but in order to speed-up the diffusion +process, other combinations of higher sum can be tried. In this case, +the number of passes must be kept low, to avoid numerical overflows +which would make the results useless. +\iteme[{\tt pass=}{\it nbr}] +Set the number of diffusion sweeps performed by the algorithm. This +number depends on the width of the band graph to which the diffusion +method is applied. Useful values range from $30$ to $500$ according +to chosen {\tt dif} and {\tt rem} coefficients. +\iteme[{\tt rem=}{\it rat}] +Fraction of liquid which remains on vertices at each pass. See above. +\end{itemize} +\iteme[{\tt f}] +Fiduccia-Mattheyses method. The parameters of the Fiduccia-Mattheyses method +are listed below. +\begin{itemize} +\iteme[{\tt bal=}{\it rat}] +Set the maximum weight imbalance ratio to the given fraction of +the subgraph vertex weight. Common values are around $0.01$, that +is, one percent. +\iteme[{\tt move=}{\it nbr}] +Maximum number of hill-climbing moves that can be performed before a +pass ends. During each of its passes, the Fiduccia-Mattheyses +algorithm repeatedly swaps vertices between the two parts so as to +minimize the cost function. A pass completes either when all of the +vertices have been moved once, or if too many swaps that do not +decrease the value of the cost function have been performed. Setting +this value to zero turns the Fiduccia-Mattheyses algorithm into a +gradient-like method, which may be used to quickly refine partitions +during the uncoarsening phase of the multilevel method. +\iteme[{\tt pass=}{\it nbr}] +Set the maximum number of optimization passes performed by the +algorithm. The Fiduccia-Mattheyses algorithm stops as soon as a pass +has not yielded any improvement of the cost function, or when the +maximum number of passes has been reached. Value $-1$ stands for an +infinite number of passes, that is, as many as needed by the algorithm +to converge. +\end{itemize} +\iteme[{\tt g}] +Gibbs-Poole-Stockmeyer method. This method has only one parameter. +\begin{itemize} +\iteme[{\tt pass=}{\it nbr}] +Set the number of sweeps performed by the algorithm. +\end{itemize} +\iteme[{\tt h}] +Greedy-graph-growing method. This method has only one parameter. +\begin{itemize} +\iteme[{\tt pass=}{\it nbr}] +Set the number of runs performed by the algorithm. +\end{itemize} +\iteme[{\tt m}] +Multilevel method. The parameters of the multilevel method are listed below. +\begin{itemize} +\iteme[{\tt asc=}{\it strat}] +Set the strategy that is used to refine the partitions obtained +at ascending levels of the uncoarsening phase by projection of the +bipartitions computed for coarser graphs. +This strategy is not applied to the coarsest graph, for which only the +{\tt low} strategy is used. +\iteme[{\tt low=}{\it strat}] +Set the strategy that is used to compute the partition of the +coarsest graph, at the lowest level of the coarsening process. +\iteme[{\tt rat=}{\it rat}] +Set the threshold maximum coarsening ratio over which graphs are no longer +coarsened. The ratio of any given coarsening cannot be less that $0.5$ +(case of a perfect matching), and cannot be greater than $1.0$. +Coarsening stops when either the coarsening ratio is above the maximum +coarsening ratio, or the graph has fewer vertices than the minimum number of +vertices allowed. +\iteme[{\tt vert=}{\it nbr}] +Set the threshold minimum graph size under which graphs are no longer +coarsened. Coarsening stops when either the coarsening ratio is above the +maximum coarsening ratio, or the coarsened graph would have fewer +vertices than the minimum number of vertices allowed. +\end{itemize} +\iteme[{\tt x}] +Exactifying method. +\iteme[{\tt z}] +Zero method. This method moves all of the vertices to the first +part. Its main use is to stop the bipartitioning process, if some +condition is true, when mapping onto variable-sized architectures (see +section~\ref{sec-algo-variable}). +\end{itemize} + +\subsubsection{Vertex partitioning strategy strings} +\label{sec-lib-format-part-ovl} + +Vertex partitioning is a special form of graph partitioning, in which +graphs are partitioned into a prescribed number of parts by means of +vertex separators rather than of edge separators like in +Section~\ref{sec-lib-format-map}. The load balance criterion also +differs from common practice: the load to be balanced across all parts +comprises not only the load of the vertices which belong to the part, +but also the load of all the separator vertices which are their +immediate neighbors. Consequently, the load of every separator vertex +is accounted for several times, in each of the parts it separates. + +Vertex partitioning strategies are made of methods, with optional +parameters enclosed between curly braces, and separated by commas, in +the form of {\it method\/}{[{\tt \{}{\it parameters\/}{\tt \}}]}\enspace. +The currently available mapping methods are the following. + +\begin{itemize} +\iteme[{\tt f}] +Fiduccia-Mattheyses method. The parameters of the Fiduccia-Mattheyses method +are listed below. +\begin{itemize} +\iteme[{\tt bal=}{\it rat}] +Set the maximum weight imbalance ratio to the given fraction of +the subgraph vertex weight. Common values are around $0.01$, that +is, one percent. +\iteme[{\tt move=}{\it nbr}] +Maximum number of hill-climbing moves that can be performed before a +pass ends. During each of its passes, the Fiduccia-Mattheyses +algorithm repeatedly moves vertices between parts so as to +minimize the cost function. A pass completes either when all of the +vertices have been moved once, or if too many swaps that do not +decrease the value of the cost function have been performed. Setting +this value to zero turns the Fiduccia-Mattheyses algorithm into a +gradient-like method, which may be used to quickly refine partitions +during the uncoarsening phase of the multilevel method. +\iteme[{\tt pass=}{\it nbr}] +Set the maximum number of optimization passes performed by the +algorithm. The Fiduccia-Mattheyses algorithm stops as soon as a pass +has not yielded any improvement of the cost function, or when the +maximum number of passes has been reached. Value $-1$ stands for an +infinite number of passes, that is, as many as needed by the algorithm +to converge. +\end{itemize} +\iteme[{\tt g}] +Gibbs-Poole-Stockmeyer method. This is a k-way version of the +original algorithm, in which parts are grown one after the +other. Consequently, depending on graph topology, this method is +likely to yield disconnected parts, with higher probability as the +number of part increases. This method has only one parameter. +\begin{itemize} +\iteme[{\tt pass=}{\it nbr}] +Set the number of sweeps performed by the algorithm. +\end{itemize} +\iteme[{\tt h}] +Greedy-graph-growing method. This is a $k$-way version of the +original algorithm, in which parts are grown one after the +other. Consequently, depending on graph topology, this method is +likely to yield disconnected parts, with higher probability as the +number of part increases. This method has only one parameter. +\begin{itemize} +\iteme[{\tt pass=}{\it nbr}] +Set the number of runs performed by the algorithm. +\end{itemize} +\iteme[{\tt m}] +Multilevel method. The parameters of the multilevel method are listed below. +\begin{itemize} +\iteme[{\tt asc=}{\it strat}] +Set the strategy that is used to refine the partitions obtained +at ascending levels of the uncoarsening phase by projection of the +bipartitions computed for coarser graphs. +This strategy is not applied to the coarsest graph, for which only the +{\tt low} strategy is used. +\iteme[{\tt low=}{\it strat}] +Set the strategy that is used to compute the partition of the +coarsest graph, at the lowest level of the coarsening process. +\iteme[{\tt rat=}{\it rat}] +Set the threshold maximum coarsening ratio over which graphs are no longer +coarsened. The ratio of any given coarsening cannot be less that $0.5$ +(case of a perfect matching), and cannot be greater than $1.0$. +Coarsening stops when either the coarsening ratio is above the maximum +coarsening ratio, or the graph has fewer vertices than the minimum number of +vertices allowed. +\iteme[{\tt vert=}{\it nbr}] +Set the threshold minimum number of vertices per part under which +graphs are no longer coarsened. Coarsening stops when either the +coarsening ratio is above the maximum coarsening ratio, or the graph +has fewer vertices than the minimum number of vertices allowed. +\end{itemize} +\iteme[{\tt r}] +Recursive bipartitioning algorithm. The parameters of the recursive +bipartitioning method are listed below. +\begin{itemize} +\iteme[{\tt sep=}{\it strat}] +Apply vertex (node) separation strategy {\it strat\/} to each +bipartitioning job. A node separation strategy is made of one or +several node separation methods, which can be combined by means of +strategy operators. Node separation strategies are described in +Section~\ref{sec-lib-format-nsep}. +\end{itemize} +\end{itemize} + +\subsubsection{Ordering strategy strings} +\label{sec-lib-format-ord} + +Ordering strategies are available both for graphs and for meshes. +An ordering strategy is made of one or several ordering methods, which +can be combined by means of strategy operators. The strategy +operators that can be used in ordering strategies are listed below, by +increasing precedence. + +\begin{itemize} +\iteme[{\tt (}{\it strat\/}{\tt )}] +Grouping operator. +The strategy enclosed within the parentheses is treated as a single +ordering method. +\iteme[{\tt /}{\it cond\/}{\tt ?}{\it strat1\/}{[{\tt :}{\it strat2}]{\tt ;}}] +Condition operator. According to the result of the evaluation of +condition {\it cond}, either {\it strat1\/} or {\it strat2\/} (if it +is present) is applied. The condition applies to the characteristics +of the current node of the separators tree, and can be built from +logical and relational operators. Conditional operators are listed +below, by increasing precedence. +\begin{itemize} +\iteme[{\it cond1\/}{\tt |}{\it cond2}] +Logical or operator. The result of the condition is true if {\it cond1\/} +or {\it cond2\/} are true, or both. +\iteme[{\it cond1\/}{\tt \&}{\it cond2}] +Logical and operator. The result of the condition is true only if both +{\it cond1\/} and {\it cond2\/} are true. +\iteme[{\tt !}{\it cond}] +Logical not operator. The result of the condition is true only if +{\it cond\/} is false. +\iteme[{\it var} {\it relop} {\it val}] +Relational operator, where {\it var\/} is a node variable, {\it val\/} is +either a node variable or a constant of the type of variable {\it var}, and +{\it relop\/} is one of '{\tt\verb+<+}', '{\tt\verb+=+}', and '{\tt\verb+>+}'. +The node variables are listed below, along with their types. +\begin{itemize} +\iteme[{\tt edge}] +The number of vertices of the current subgraph. +Integer. +\iteme[{\tt levl}] +The level of the subgraph in the separators tree, starting from zero +for the initial graph at the root of the tree. +Integer. +\iteme[{\tt load}] +The overall vertex load (weight) of the current subgraph. +Integer. +\iteme[{\tt mdeg}] +The maximum degree of the current subgraph. +Integer. +\iteme[{\tt vert}] +The number of vertices of the current subgraph. +Integer. +\end{itemize} +\end{itemize} +\iteme[{\it method\/}{[{\tt \{}{\it parameters\/}{\tt \}}]}] +Graph or mesh ordering method. Available ordering methods are listed +below. +\end{itemize} +The currently available ordering methods are the following. +\begin{itemize} +\iteme[{\tt b}] +Blocking method. This method does not perform ordering by itself, but +is used as post-processing to cut into blocks of smaller sizes the +separators or large blocks produced by other ordering methods. This is +not useful in the context of direct solving methods, because the +off-diagonal blocks created by the splitting of large diagonal blocks +are likely to be filled at factoring time. However, in the context of +incomplete solving methods such as ILU(k)~\cite{heperaro04a}, it can +lead to a significant reduction of the required memory space and time, +because it helps carving large triangular blocks. +The parameters of the blocking method are described below. +\begin{itemize} +\iteme[{\tt cmin=}{\it size}] +Set the minimum size of the resulting subblocks, in number of columns. +Blocks larger than twice this minimum size are cut into sub-blocks of +equal sizes (within one), having a number of columns comprised between +{\it size} and $2${\it size}. +\\ +The definition of {\it size} depends on the size of the graph +to order. Large graphs cannot afford very small values, because the +number of blocks becomes much too large and limits the acceleration +of BLAS~3 routines, while large values do not help reducing enough +the complexity of ILU(k) solving. +\iteme[{\tt strat=}{\it strat}] +Ordering strategy to be performed. After the ordering strategy is +applied, the resulting separators tree is traversed and all of the +column blocks that are larger than $2${\it size} are split into +smaller column blocks, without changing the ordering that has been +computed. +\end{itemize} +\iteme[{\tt c}] +Compression method~\cite{ashc95}. +The parameters of the compression method are listed below. +\begin{itemize} +\iteme[{\tt rat=}{\it rat}] +Set the compression ratio over which graphs and meshes will not be +compressed. Useful values range between $0.7$ and $0.8$. +\iteme[{\tt cpr=}{\it strat}] +Ordering strategy to use on the compressed graph or mesh if its size +is below the compression ratio times the size of the original graph +or mesh. +\iteme[{\tt unc=}{\it strat}] +Ordering strategy to use on the original graph or mesh if the size of +the compressed graph or mesh were above the compression ratio times +the size of the original graph or mesh. +\end{itemize} +\iteme[{\tt d}] +Block Halo Approximate Minimum Degree method~\cite{peroam99}. +The parameters of the Halo Approximate Minimum Degree method are +listed below. The Block Halo Approximate Minimum Fill method, +described below, is more efficient and should be preferred. +\begin{itemize} +\iteme[{\tt cmin=}{\it size}] +Minimum number of columns per column block. All column blocks +of width smaller than {\it size\/} are amalgamated to their +parent column block in the elimination tree, provided that it +does not violate the {\tt cmax} constraint. +\iteme[{\tt cmax=}{\it size}] +Maximum number of column blocks over which some column block +will not amalgamate one of its descendents in the elimination +tree. This parameter is mainly designed to provide an upper +bound for block size in the context of BLAS3 computations~; +else, a huge value should be provided. +\iteme[{\tt frat=}{\it rat}] +Fill-in ratio over which some column block will not amalgamate +one of its descendents in the elimination tree. Typical values +range from $0.05$ to $0.10$. +\end{itemize} +\iteme[{\tt f}] +Block Halo Approximate Minimum Fill method. +The parameters of the Halo Approximate Minimum Fill method are +listed below. +\begin{itemize} +\iteme[{\tt cmin=}{\it size}] +Minimum number of columns per column block. All column blocks +of width smaller than {\it size\/} are amalgamated to their +parent column block in the elimination tree, provided that it +does not violate the {\tt cmax} constraint. +\iteme[{\tt cmax=}{\it size}] +Maximum number of column blocks over which some column block +will not amalgamate one of its descendents in the elimination +tree. This parameter is mainly designed to provide an upper +bound for block size in the context of BLAS3 computations~; +else, a huge value should be provided. +\iteme[{\tt frat=}{\it rat}] +Fill-in ratio over which some column block will not amalgamate +one of its descendents in the elimination tree. Typical values +range from $0.05$ to $0.10$. +\end{itemize} +\iteme[{\tt g}] +Gibbs-Poole-Stockmeyer method. This method is used on separators +to reduce the number and extent of extra-diagonal blocks. If +the number of extra-diagonal blocks is not relevant, the {\tt s} +method should be preferred. This method has only one parameter. +\begin{itemize} +\iteme[{\tt pass=}{\it nbr}] +Set the number of sweeps performed by the algorithm. +\end{itemize} +\iteme[{\tt n}] +Nested dissection method. The parameters of the nested dissection method are +given below. +\begin{itemize} +\iteme[{\tt ole=}{\it strat}] +Set the ordering strategy that is used on every leaf of the separators tree +if the node separation strategy {\tt sep} has failed to separate it further. +\iteme[{\tt ose=}{\it strat}] +Set the ordering strategy that is used on every separator of the separators +tree. +\iteme[{\tt sep=}{\it strat}] +Set the node separation strategy that is used on every leaf of the +separators tree to make it grow. Node separation strategies are +described below, in section~\ref{sec-lib-format-nsep}. +\end{itemize} +\iteme[{\tt o}] +Disconnected subgraph detection method. This method is used at the +global level to search for connected components, and run independently +the provided graph ordering strategy on each of them. +\begin{itemize} +\iteme[{\tt strat=}{\it strat}] +Ordering strategy to apply to each of the connected components. +\end{itemize} +\iteme[{\tt s}] +Simple method. Vertices are ordered in their natural order. This +method is fast, and should be used to order separators if the number +of extra-diagonal blocks is not relevant~; else, the {\tt g} method +should be preferred. +\iteme[{\tt v}] +Mesh-to-graph method. Available only for mesh ordering strategies. +From the mesh to which this method applies is derived a graph, +such that a graph vertex is associated with every node of the +mesh, and a clique is created between all vertices which represent +nodes that belong to the same element. A graph ordering strategy is +then applied to the derived graph, and this ordering is projected +back to the nodes of the mesh. This method is here for evaluation +purposes only, as mesh ordering methods are generally more +efficient than their graph ordering counterpart. +\begin{itemize} +\iteme[{\tt strat=}{\it strat}] +Graph ordering strategy to apply to the associated graph. +\end{itemize} +\end{itemize} + +\subsubsection{Node separation strategy strings} +\label{sec-lib-format-nsep} + +A node separation strategy is made of one or several node separation +methods, which can be combined by means of strategy +operators. Strategy operators are listed below, by increasing +precedence. + +\begin{itemize} +\iteme[{\it strat1\/}{\tt |}{\it strat2}] +Selection operator. The result of the selection is the best vertex separator of +the two that are obtained by the distinct application of {\it strat1\/} and +{\it strat2\/} to the current separator. +\iteme[{\it strat1$\:$}{\it strat2}] +Combination operator. Strategy {\it strat2\/} is applied to the vertex +separator resulting from the application of strategy {\it strat1\/} to the +current separator. Typically, the first method used should compute an initial +separation from scratch, and every following method should use the +result of the previous one as a starting point. +\iteme[{\tt (}{\it strat\/}{\tt )}] +Grouping operator. +The strategy enclosed within the parentheses is treated as a single +separation method. +\iteme[{\tt /}{\it cond\/}{\tt ?}{\it strat1\/}{[{\tt :}{\it strat2}]{\tt ;}}] +Condition operator. According to the result of the evaluation of condition +{\it cond}, either {\it strat1\/} or {\it strat2\/} (if it is present) is +applied. The condition applies to the characteristics of the current subgraph, +and can be built from logical and relational operators. Conditional +operators are listed below, by increasing precedence. +\begin{itemize} +\iteme[{\it cond1\/}{\tt |}{\it cond2}] +Logical or operator. The result of the condition is true if {\it cond1\/} +or {\it cond2\/} are true, or both. +\iteme[{\it cond1\/}{\tt \&}{\it cond2}] +Logical and operator. The result of the condition is true only if both +{\it cond1\/} and {\it cond2\/} are true. +\iteme[{\tt !}{\it cond}] +Logical not operator. The result of the condition is true only if +{\it cond\/} is false. +\iteme[{\it var} {\it relop} {\it val}] +Relational operator, where {\it var\/} is a graph or node variable, +{\it val\/} is either a graph or node variable or a constant of the type of +variable {\it var\/}, and {\it relop\/} is one of +'{\tt\verb+<+}', '{\tt\verb+=+}', and '{\tt\verb+>+}'. +The graph and node variables are listed below, along with their types. +\begin{itemize} +\iteme[{\tt levl}] +The level of the subgraph in the separators tree, starting from zero at the root +of the tree. +Integer. +\iteme[{\tt proc}] +The number of processors on which the current subgraph is distributed +at this level of the separators tree. This variable is available only +when calling from routines of the \ptscotch\ parallel library. +Integer. +\iteme[{\tt rank}] +The rank of the current processor among the group of processors on +which the current subgraph is distributed at this level of the +separators tree. This variable is available only +when calling from routines of the \ptscotch\ parallel library, for +instance to decide which node separation strategy should be used on +which processor in a multi-sequential approach. +Integer. +\iteme[{\tt vert}] +The number of vertices of the current subgraph. +Integer. +\end{itemize} +\end{itemize} +\end{itemize} +The currently available vertex separation methods are the following. +\begin{itemize} +\iteme[{\tt b}] +Band method. Available only for graph separation strategies. This +method builds a band graph of given width around the current separator +of the graph to which it is applied, and calls a graph +separation strategy to refine the equivalent separator of the band +graph. Then, the refined separator of the band graph is projected back +to the current graph. This method, presented in~\cite{chpe06a}, was +created to reduce the cost of separator refinement algorithms in a +multilevel context, but it improves partition quality too. +The parameters of the band separation method are listed below. +\begin{itemize} +\iteme[{\tt bnd=}{\it strat}] +Set the vertex separation strategy to be used on the band graph. +\iteme[{\tt org=}{\it strat}] +Set the fallback vertex separation strategy to be used on the +original graph if the band graph strategy could not be used. The three +cases which require the use of this fallback strategy are the +following. First, if the separator of the original graph is empty, +which makes it impossible to compute a band graph. Second, if any part +of the band graph to be built is of the same size as the one of the +original graph. Third, if the application of the {\tt bnd} +vertex separation method to the band graph leads to a situation where both +anchor vertices are placed in the same part. +\iteme[{\tt width=}{\it val}] +Set the width of the band graph. All graph vertices that are at a +distance less than or equal to {\it val} from any separator vertex +are kept in the band graph. +\end{itemize} +\iteme[{\tt e}] +Edge-separation method. Available only for graph separation strategies. +This method builds vertex separators from edge separators, by the +method proposed by Pothen and Fang~\cite{pofa90}, which uses a variant +of the Hopcroft and Karp algorithm due to Duff~\cite{duff81}. This +method is expensive and most often yields poorer results than direct +vertex-oriented methods such as the vertex vertex Greedy-graph-growing +and the vertex Fiduccia-Mattheyses algorithms. The parameters of the +edge-separation method are listed below. +\begin{itemize} +\iteme[{\tt bal=}{\it val}] +Set the load imbalance tolerance to {\it val}, which is a floating-point +ratio expressed with respect to the ideal load of the partitions. +\iteme[{\tt strat=}{\it strat}] +Set the graph bipartitioning strategy that is used to compute the edge +bipartition. The syntax of bipartitioning +strategy strings is defined within section~\ref{sec-lib-format-bipart}, +at page~\pageref{sec-lib-format-bipart}. +\iteme[{\tt width=}{\it type}] +Select the width of the vertex separators built from edge separators. +When {\it type\/} is set to {\tt f}, fat vertex separators are built, +that hold all of the ends of the edges of the edge cut. When it is set +to {\tt t}, a thin vertex separator is built by removing as many +vertices as possible from the fat separator. +\end{itemize} +\iteme[{\tt f}] +Vertex Fiduccia-Mattheyses method. The parameters of the vertex +Fiduccia-Mattheyses method are listed below. +\begin{itemize} +\iteme[{\tt bal=}{\it rat}] +Set the maximum weight imbalance ratio to the given fraction of +the weight of all node vertices. Common values are around $0.01$, +that is, one percent. +\iteme[{\tt move=}{\it nbr}] +Maximum number of hill-climbing moves that can be performed before a +pass ends. During each of its passes, the vertex Fiduccia-Mattheyses +algorithm repeatedly moves vertices from the separator to any of the +two parts, so as to minimize the size of the separator. A pass +completes either when all of the vertices have been moved once, or if +too many swaps that do not decrease the size of the separator have +been performed. +\iteme[{\tt pass=}{\it nbr}] +Set the maximum number of optimization passes performed by the +algorithm. The vertex Fiduccia-Mattheyses algorithm stops as soon as a +pass has not yielded any reduction of the size of the separator, or +when the maximum number of passes has been reached. Value -1 stands +for an infinite number of passes, that is, as many as needed by the +algorithm to converge. +\end{itemize} +\iteme[{\tt g}] +Gibbs-Poole-Stockmeyer method. Available only for graph separation strategies. +This method has only one parameter. +\begin{itemize} +\iteme[{\tt pass=}{\it nbr}] +Set the number of sweeps performed by the algorithm. +\end{itemize} +\iteme[{\tt h}] +Vertex greedy-graph-growing method. This method has only one parameter. +\begin{itemize} +\iteme[{\tt pass=}{\it nbr}] +Set the number of runs performed by the algorithm. +\end{itemize} +\iteme[{\tt m}] +Vertex multilevel method. The parameters of the vertex +multilevel method are listed below. +\begin{itemize} +\iteme[{\tt asc=}{\it strat}] +Set the strategy that is used to refine the vertex separators obtained +at ascending levels of the uncoarsening phase by projection of the +separators computed for coarser graphs or meshes. This strategy is +not applied to the coarsest graph or mesh, for which only the +{\tt low} strategy is used. +\iteme[{\tt low=}{\it strat}] +Set the strategy that is used to compute the vertex separator of the +coarsest graph or mesh, at the lowest level of the coarsening process. +\iteme[{\tt rat=}{\it rat}] +Set the threshold maximum coarsening ratio over which graphs or meshes +are no longer coarsened. The ratio of any given coarsening cannot be +less that $0.5$ (case of a perfect matching), and cannot be greater +than $1.0$. Coarsening stops when either the coarsening ratio is +above the maximum coarsening ratio, or the graph or mesh has fewer +node vertices than the minimum number of vertices allowed. +\iteme[{\tt vert=}{\it nbr}] +Set the threshold minimum size under which graphs or meshes are no longer +coarsened. Coarsening stops when either the coarsening ratio is above the +maximum coarsening ratio, or the graph or mesh has fewer node vertices +than the minimum number of vertices allowed. +\end{itemize} +\iteme[{\tt t}] +Thinner method. Available only for graph separation strategies. +This method quickly eliminates all useless vertices of +the current separator. It searches the separator for vertices that +have no neighbors in one of the two parts, and moves these vertices to +the part they are connected to. This method may be used to refine +separators during the uncoarsening phase of the multilevel method, +and is faster than a vertex Fiduccia-Mattheyses algorithm with +{\tt \{move\lbt =\lbt 0\}}. +\iteme[{\tt v}] +Mesh-to-graph method. Available only for mesh separation strategies. +From the mesh to which this method applies is derived a graph, +such that a graph vertex is associated with every node of the +mesh, and a clique is created between all vertices which represent +nodes that belong to the same element. A graph separation strategy is +then applied to the derived graph, and the separator is projected +back to the nodes of the mesh. This method is here for evaluation +purposes only, as mesh separation methods are generally more +efficient than their graph separation counterpart. +\begin{itemize} +\iteme[{\tt strat=}{\it strat}] +Graph separation strategy to apply to the associated graph. +\end{itemize} +\iteme[{\tt w}] +Graph separator viewer. Available only for graph separation strategies. +Every call to this method results in the creation, in the current +subdirectory, of partial mapping files called ``{\tt vgraph\lbt +separate\lbt vw\_\lbt output\_\lbt {\it nnnnnnnn}.map}'', where +``{\it nnnnnnnn}'' are increasing decimal numbers, which contain the +current state of the two parts and the separator. These mapping files +can be used as input by the {\tt gout} program to produce displays of +the evolving shape of the current separator and parts. This is mostly +a debugging feature, but it can also have an illustrative interest. +While it is only available for graph separation strategies, mesh +separation strategies can indirectly use it through the mesh-to-graph +separation method. +\iteme[{\tt z}] +Zero method. This method moves all of the node vertices to the first +part, resulting in an empty separator. Its main use is to stop the +separation process whenever some condition is true. +\end{itemize} + +\subsection{Target architecture handling routines} +\label{sec-lib-arch-handling} + +\subsubsection{{\tt SCOTCH\_archExit}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_archExit ( & SCOTCH\_Arch * & archptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfarchexit ( & doubleprecision (*) & archdat) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_archExit} function frees the contents of a +{\tt SCOTCH\_\lbt Arch} structure previously initialized by +{\tt SCOTCH\_\lbt archInit}. All subsequent calls to +{\tt SCOTCH\_\lbt arch} routines other than {\tt SCOTCH\_\lbt +archInit}, using this structure as parameter, may yield +unpredictable results. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_archInit}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_archInit ( & SCOTCH\_Arch * & archptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfarchinit ( & doubleprecision (*) & archdat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_archInit} function initializes a {\tt SCOTCH\_\lbt +Arch} structure so as to make it suitable for future operations. It +should be the first function to be called upon a {\tt SCOTCH\_\lbt +Arch} structure. When the target architecture data is no longer of +use, call function {\tt SCOTCH\_\lbt archExit} to free its internal +structures. + +\progret + +{\tt SCOTCH\_archInit} returns $0$ if the graph structure has been +successfully initialized, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_archLoad}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_archLoad ( & SCOTCH\_Arch * & archptr, \\ + & FILE * & stream) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfarchload ( & doubleprecision (*) & archdat, \\ + & integer & fildes, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_archLoad} routine fills the {\tt +SCOTCH\_\lbt Arch} structure pointed to by {\tt archptr} with the +source graph description available from stream {\tt stream} in the +\scotch\ target architecture format (see +Section~\ref{sec-file-target}). + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt fildes} associated +with the logical unit of the architecture file. + +\progret + +{\tt SCOTCH\_archLoad} returns $0$ if the target architecture structure +has been successfully allocated and filled with the data read, and $1$ +else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_archName}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +const char * SCOTCH\_archName ( & const SCOTCH\_Arch * & archptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfarchname ( & doubleprecision (*) & archdat, \\ + & character (*) & chartab, \\ + & integer & charnbr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_archName} function returns a string containing the +name of the architecture pointed to by {\tt archptr}. Since Fortran +routines cannot return string pointers, the {\tt scotchf\lbt arch\lbt +name} routine takes as second and third parameters a {\tt character()} +array to be filled with the name of the architecture, and the {\tt +integer} size of the array, respectively. If the array is of +sufficient size, a trailing nul character is appended to the string to +materialize the end of the string (this is the C style of handling +character strings). + +\progret + +{\tt SCOTCH\_archName} returns a non-null character pointer that points +to a null-terminated string describing the type of the architecture. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_archSave}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_archSave ( & const SCOTCH\_Arch * & archptr, \\ + & FILE * & stream) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfarchsave ( & doubleprecision (*) & archdat, \\ + & integer & fildes, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_archSave} routine saves the contents of the {\tt +SCOTCH\_\lbt Arch} structure pointed to by {\tt archptr} to stream +{\tt stream}, in the \scotch\ target architecture format (see +section~\ref{sec-file-target}). + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt fildes} associated +with the logical unit of the architecture file. + +\progret + +{\tt SCOTCH\_archSave} returns $0$ if the graph structure has been +successfully written to {\tt stream}, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_archSize}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +SCOTCH\_Num SCOTCH\_archSize ( & const SCOTCH\_Arch * & archptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfarchsize ( & doubleprecision (*) & archdat, \\ + & integer*{\it num} & archnbr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_archSize} function returns the number of nodes of +the given target architecture. The Fortran routine has a second +parameter, of integer type, which is set on return with the number +of nodes of the target architecture. + +\progret + +{\tt SCOTCH\_archSize} returns the number of nodes of the target +architecture. +\end{itemize} + +\subsection{Target architecture creation routines} +\label{sec-lib-arch-create} + +\subsubsection{{\tt SCOTCH\_archBuild0} / {\tt SCOTCH\_archBuild}} +\label{sec-lib-arch-build} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_archBuild0 ( & SCOTCH\_Arch * & archptr, \\ + & const SCOTCH\_Graph * & grafptr, \\ + & const SCOTCH\_Num & listnbr, \\ + & const SCOTCH\_Num * & listtab, \\ + & const SCOTCH\_Strat * & straptr) \\ +~\\ +int SCOTCH\_archBuild ( & SCOTCH\_Arch * & archptr, \\ + & const SCOTCH\_Graph * & grafptr, \\ + & const SCOTCH\_Num & listnbr, \\ + & const SCOTCH\_Num * & listtab, \\ + & const SCOTCH\_Strat * & straptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfarchbuild0 ( & doubleprecision (*) & archdat, \\ + & doubleprecision (*) & grafdat, \\ + & integer*{\it num} & listnbr, \\ + & integer*{\it num} (*) & listtab, \\ + & doubleprecision (*) & stradat, \\ + & integer & ierr) \\ +~\\ +scotchfarchbuild ( & doubleprecision (*) & archdat, \\ + & doubleprecision (*) & grafdat, \\ + & integer*{\it num} & listnbr, \\ + & integer*{\it num} (*) & listtab, \\ + & doubleprecision (*) & stradat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_archBuild0} routine fills the architecture structure +pointed to by {\tt archptr} with the ``\texttt{deco 1}'' (that is, a +compiled form of a ``\texttt{deco 0}'') decomposition-defined target +architecture computed by applying the graph bipartitioning strategy +pointed to by {\tt straptr} to the architecture graph pointed to by +{\tt grafptr}. + +When {\tt listptr} is not {\tt NULL} and {\tt listnbr} is greater than +zero, the decomposition-defined architecture is restricted to the +{\tt listnbr} vertices whose indices are given in the array pointed to +by {\tt listtab}, from {\tt listtab\lbt [0]} to {\tt listtab\lbt +[listnbr - 1]}. These indices should have the same base value as the +one of the graph pointed to by {\tt grafptr}, that is, be in the +range from $0$ to $\mathtt{vertnbr} - 1$ if the graph base is +$0$, and from $1$ to $\mathtt{vertnbr}$ if the graph base is $1$. + +Graph bipartitioning strategies are declared by means of the +{\tt SCOTCH\_\lbt strat\lbt Graph\lbt Bipart} function, described in +page~\pageref{sec-lib-strat-graph-bipart}. The syntax of bipartitioning +strategy strings is defined in section~\ref{sec-lib-format-map}, +page~\pageref{sec-lib-format-bipart}. +Additional information may be obtained from the manual page of +{\tt amk\_\lbt grf}, the stand-alone executable that builds +decomposition-defined target architecture files from source graph +files, available at page~\pageref{sec-prog-amkgrf}. + +At the time being, {\tt SCOTCH\_arch\lbt Build} is equivalent to {\tt +SCOTCH\_\lbt arch\lbt Build0}. In future releases, it is planned that +{\tt SCOTCH\_\lbt arch\lbt Build} will either behave as +{\tt SCOTCH\_\lbt arch\lbt Build0} or {\tt SCOTCH\_\lbt arch\lbt +Build2}, depending on target graph size. For target graphs of small +sizes, users are invited to use explicitly the {\tt SCOTCH\_\lbt +arch\lbt Build0} routine. + +\progret + +{\tt SCOTCH\_archBuild0} returns $0$ if the decomposition-defined +architecture has been successfully computed, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_archBuild2}} +\label{sec-lib-arch-build-two} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_archBuild2 ( & SCOTCH\_Arch * & archptr, \\ + & const SCOTCH\_Graph * & grafptr, \\ + & const SCOTCH\_Num & listnbr, \\ + & const SCOTCH\_Num * & listtab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfarchbuild2 ( & doubleprecision (*) & archdat, \\ + & doubleprecision (*) & grafdat, \\ + & integer*{\it num} & listnbr, \\ + & integer*{\it num} (*) & listtab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_archBuild2} routine fills the architecture structure +pointed to by {\tt archptr} with the ``\texttt{deco 2}'' +decomposition-defined target architecture corresponding to the graph +pointed to by {\tt grafptr}. Since the computation of the +decomposition is performed by means of graph coarsening, +unlike {\tt SCOTCH\_\lbt arch\lbt Build}, no bipartitioning strategy +has to be provided. + +When {\tt listptr} is not {\tt NULL} and {\tt listnbr} is greater than +zero, the decomposition-defined architecture is restricted to the +{\tt listnbr} vertices whose indices are given in the array pointed to +by {\tt listtab}, from {\tt listtab\lbt [0]} to {\tt listtab\lbt +[listnbr - 1]}. These indices should have the same base value as that +of the graph pointed to by {\tt grafptr}, that is, be in the +range from $0$ to $\mathtt{vertnbr} - 1$ if the graph base is +$0$, and from $1$ to $\mathtt{vertnbr}$ if the graph base is $1$. + +Additional information may be obtained from the manual page of +{\tt amk\_\lbt grf}, the stand-alone executable that builds +decomposition-defined target architecture files from source graph +files, available at page~\pageref{sec-prog-amkgrf}. + +\progret + +{\tt SCOTCH\_archBuild} returns $0$ if the decomposition-defined +architecture has been successfully computed, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_archCmplt}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_archCmplt ( & SCOTCH\_Arch * & archptr, \\ + & const SCOTCH\_Num & vertnbr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfarchcmplt ( & doubleprecision (*) & archdat, \\ + & integer*{\it num} & vertnbr, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_archCmplt} routine fills the {\tt SCOTCH\_\lbt Arch} +structure pointed to by {\tt archptr} with the description of a complete +graph architecture with {\tt vertnbr} processors, which can be used as +input to {\tt SCOTCH\_\lbt graph\lbt Map} to perform graph partitioning. +A shortcut to this is to use the {\tt SCOTCH\_\lbt graph\lbt Part} +routine. + +\progret + +{\tt SCOTCH\_archCmplt} returns $0$ if the complete graph target +architecture has been successfully built, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_archCmpltw}} +\label{sec-lib-arch-cmpltw} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_archCmpltw ( & SCOTCH\_Arch * & archptr, \\ + & const SCOTCH\_Num & vertnbr, \\ + & const SCOTCH\_Num * const & velotab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfarchcmplt ( & doubleprecision (*) & archdat, \\ + & integer*{\it num} & vertnbr, \\ + & integer*{\it num} (*) & velotab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_archCmpltw} routine fills the {\tt SCOTCH\_\lbt Arch} +structure pointed to by {\tt archptr} with the description of a +weighted complete graph architecture with {\tt vertnbr} processors. +The relative weights of the processors are given in the {\tt velotab} +array. Once the target architecture has been created, it can be +used as input to {\tt SCOTCH\_\lbt graph\lbt Map} to perform weighted +graph partitioning. + +\progret + +{\tt SCOTCH\_archCmpltw} returns $0$ if the weighted complete graph target +architecture has been successfully built, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_archHcub}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_archHcub ( & SCOTCH\_Arch * & archptr, \\ + & const SCOTCH\_Num & hdimval) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfarchhcub ( & doubleprecision (*) & archdat, \\ + & integer*{\it num} & hdimval, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_archHcub} routine fills the {\tt SCOTCH\_\lbt Arch} +structure pointed to by {\tt archptr} with the description of a +hypercube graph of dimension {\tt hdimval}. + +\progret + +{\tt SCOTCH\_archHcub} returns $0$ if the hypercube target +architecture has been successfully built, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_archLtleaf}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_archLtleaf ( & SCOTCH\_Arch * & archptr, \\ + & const SCOTCH\_Num & levlnbr, \\ + & const SCOTCH\_Num * & sizetab, \\ + & const SCOTCH\_Num * & linktab, \\ + & const SCOTCH\_Num & permnbr, \\ + & const SCOTCH\_Num * & permtab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfarchltleaf ( & doubleprecision (*) & archdat, \\ + & integer*{\it num} & levlnbr, \\ + & integer*{\it num} (*) & sizetab, \\ + & integer*{\it num} (*) & linktab, \\ + & integer*{\it num} & permnbr, \\ + & integer*{\it num} (*) & permtab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_archLtleaf} routine fills the {\tt SCOTCH\_\lbt Arch} +structure pointed to by {\tt archptr} with the description of a +labeled, tree-shaped, hierarchical graph architecture with +$\sum_{i=0}^{\mathtt{levlnbr}-1}\mathtt{sizetab}\mbox{\tt [}i\mbox{\tt ]}$ +processors. Level $0$ is the root of the tree. For each level $i$, +with $0 \leq i < \mathtt{levlnbr}$, $\mathtt{sizetab}\mbox{\tt [}i\mbox{\tt +]}$ is the number of childs at level $(i+1)$ of each node at level $i$, +and {\tt linktab[}$i${\tt ]} is the cost of communication between +processors the first common ancestor of which belongs to this +level. See Section~\ref{sec-file-target-algo}, +page~\pageref{sec-file-target-ltleaf}, for an example of this +architecture. + +\progret + +{\tt SCOTCH\_archLtleaf} returns $0$ if the labeled tree-leaf target +architecture has been successfully built, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_archMesh2}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_archMesh2 ( & SCOTCH\_Arch * & archptr, \\ + & const SCOTCH\_Num & xdimval, \\ + & const SCOTCH\_Num & ydimval) \\ +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfarchmesh2 ( & doubleprecision (*) & archdat, \\ + & integer*{\it num} & xdimval, \\ + & integer*{\it num} & ydimval, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_archMesh2} routine fills the {\tt SCOTCH\_\lbt Arch} +structure pointed to by {\tt archptr} with the description of a +2D mesh architecture with $\mathtt{xdimval} \times \mathtt{ydimval}$ +processors. + +\progret + +{\tt SCOTCH\_archMesh2} returns $0$ if the 2D mesh target +architecture has been successfully built, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_archMesh3}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_archMesh3 ( & SCOTCH\_Arch * & archptr, \\ + & const SCOTCH\_Num & xdimval, \\ + & const SCOTCH\_Num & ydimval, \\ + & const SCOTCH\_Num & zdimval) \\ +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfarchmesh3 ( & doubleprecision (*) & archdat, \\ + & integer*{\it num} & xdimval, \\ + & integer*{\it num} & ydimval, \\ + & integer*{\it num} & zdimval, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_archMesh3} routine fills the {\tt SCOTCH\_\lbt Arch} +structure pointed to by {\tt archptr} with the description of a +3D mesh architecture with $\mathtt{xdimval} \times \mathtt{ydimval} +\times \mathtt{zdimval}$ processors. + +\progret + +{\tt SCOTCH\_archMesh3} returns $0$ if the 3D mesh target +architecture has been successfully built, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_archMeshX}} + +\begin{itemize} +\progsyn + +\texttt{\begin{tabular}{l@{}ll} +int SCOTCH\_archMeshX ( & SCOTCH\_Arch * & archptr, \\ + & const SCOTCH\_Num & dimnnbr, \\ + & const SCOTCH\_Num * & dimntab) \\ +\end{tabular}} + +\texttt{\begin{tabular}{l@{}ll} +scotchfarchmeshx ( & doubleprecision (*) & archdat, \\ + & integer*{\it num} & dimnnbr, \\ + & integer*{\it num} & dimntab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The \texttt{SCOTCH\_archMeshX} routine fills the +\texttt{SCOTCH\_\lbt Arch} structure pointed to by \texttt{archptr} +with the description of a \texttt{dimnnbr}-dimension mesh architecture +with $\prod_d\mathtt{dimntab[}d\mathtt{]}$ processors. The maximum +number of dimensions is defined at compile-time. + +\progret + +\texttt{SCOTCH\_archMeshX} returns $0$ if the +\texttt{dimnnbr}-dimension mesh target architecture has been +successfully built, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_archSub}} +\label{sec-lib-arch-sub} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_archSub ( & SCOTCH\_Arch * & subarchptr, \\ + & SCOTCH\_Arch * & orgarchptr, \\ + & const SCOTCH\_Num & vnumnbr, \\ + & const SCOTCH\_Num * & vnumtab) \\ +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfarchsub ( & doubleprecision (*) & subarchdat, \\ + & doubleprecision (*) & orgarchdat, \\ + & integer*{\it num} & vnumnbr, \\ + & integer*{\it num} & vnumtab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The \texttt{SCOTCH\_archSub} routine fills the +\texttt{SCOTCH\_\lbt Arch} structure pointed to by \texttt{subarchptr} +with the description of a subset of the \texttt{orgarchptr} +architecture, restricted to \texttt{vertnbr} processors which are +listed in the \texttt{vnumtab} array. The order in which these +processor indices in the original architecture are stored in the +\texttt{vnumtab} array defines the rank of these processors in the +sub-architecture. + +\progret + +{\tt SCOTCH\_archSub} returns $0$ if the target sub-architecture +has been successfully built, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_archTleaf}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_archTleaf ( & SCOTCH\_Arch * & archptr, \\ + & const SCOTCH\_Num & levlnbr, \\ + & const SCOTCH\_Num * & sizetab, \\ + & const SCOTCH\_Num * & linktab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfarchtleaf ( & doubleprecision (*) & archdat, \\ + & integer*{\it num} & levlnbr, \\ + & integer*{\it num} (*) & sizetab, \\ + & integer*{\it num} (*) & linktab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_archTleaf} routine fills the {\tt SCOTCH\_\lbt Arch} +structure pointed to by {\tt archptr} with the description of a +tree-shaped, hierarchical graph architecture with +$\sum_{i=0}^{\mathtt{levlnbr}-1}\mathtt{sizetab}{\tt [}i{\tt ]}$ +processors. Level $0$ is the root of the tree. For each level $i$, +with $0 \leq i < \mathtt{levlnbr}$, {\tt sizetab[}$i${\tt +]} is the number of childs at level $(i+1)$ of each node at level $i$, +and {\tt linktab[}$i${\tt ]} is the cost of communication between +processors the first common ancestor of which belongs to this +level. See Section~\ref{sec-file-target-algo}, +page~\pageref{sec-file-target-algo}, for an example of this +architecture. + +\progret + +{\tt SCOTCH\_archTleaf} returns $0$ if the tree-leaf target +architecture has been successfully built, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_archTorus2}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_archTorus2 ( & SCOTCH\_Arch * & archptr, \\ + & const SCOTCH\_Num & xdimval, \\ + & const SCOTCH\_Num & ydimval) \\ +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfarchtorus2 ( & doubleprecision (*) & archdat, \\ + & integer*{\it num} & xdimval, \\ + & integer*{\it num} & ydimval, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_archTorus2} routine fills the {\tt SCOTCH\_\lbt Arch} +structure pointed to by {\tt archptr} with the description of a +2D torus architecture with $\mathtt{xdimval} \times \mathtt{ydimval}$ +processors. + +\progret + +{\tt SCOTCH\_archTorus2} returns $0$ if the 2D torus target +architecture has been successfully built, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_archTorus3}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_archTorus3 ( & SCOTCH\_Arch * & archptr, \\ + & const SCOTCH\_Num & xdimval, \\ + & const SCOTCH\_Num & ydimval, \\ + & const SCOTCH\_Num & zdimval) \\ +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfarchtorus3 ( & doubleprecision (*) & archdat, \\ + & integer*{\it num} & xdimval, \\ + & integer*{\it num} & ydimval, \\ + & integer*{\it num} & zdimval, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_archTorus3} routine fills the {\tt SCOTCH\_\lbt Arch} +structure pointed to by {\tt archptr} with the description of a +3D torus architecture with $\mathtt{xdimval} \times \mbox{\tt +ydimval} \times \mathtt{zdimval}$ processors. + +\progret + +{\tt SCOTCH\_archTorus3} returns $0$ if the 3D torus target +architecture has been successfully built, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_archTorusX}} + +\begin{itemize} +\progsyn + +\texttt{\begin{tabular}{l@{}ll} +int SCOTCH\_archTorusX ( & SCOTCH\_Arch * & archptr, \\ + & const SCOTCH\_Num & dimnnbr, \\ + & const SCOTCH\_Num * & dimntab) \\ +\end{tabular}} + +\texttt{\begin{tabular}{l@{}ll} +scotchfarchtorusx ( & doubleprecision (*) & archdat, \\ + & integer*{\it num} & dimnnbr, \\ + & integer*{\it num} & dimntab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The \texttt{SCOTCH\_archTorusX} routine fills the +\texttt{SCOTCH\_\lbt Arch} +structure pointed to by \texttt{archptr} with the description of a +\texttt{dimnnbr}-dimension torus architecture with +$\prod_d\mathtt{dimntab[}d\mathtt{]}$ processors. The maximum number +of dimensions is defined at compile-time. + +\progret + +\texttt{SCOTCH\_archTorusX} returns $0$ if the +\texttt{dimnnbr}-dimension mesh target architecture has been +successfully built, and $1$ else. +\end{itemize} + +\subsection{Graph handling routines} +\label{sec-lib-graph} + +\subsubsection{{\tt SCOTCH\_graphAlloc}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}l} +SCOTCH\_Graph * SCOTCH\_graphAlloc ( & void) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphAlloc} function allocates a memory area of a +size sufficient to store a {\tt SCOTCH\_\lbt Graph} structure. It is +the user's responsibility to free this memory when it is no longer +needed, using the {\tt SCOTCH\_\lbt mem\lbt Free} routine. The +allocated space must be initialized before use, by means of the +{\tt SCOTCH\_\lbt graph\lbt Init} routine. + +\progret + +{\tt SCOTCH\_graphAlloc} returns the pointer to the memory area if it +has been successfully allocated, and {\tt NULL} else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphBase}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphBase ( & SCOTCH\_Graph * & grafptr, \\ + & SCOTCH\_Num & baseval) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphbase ( & doubleprecision (*) & grafdat, \\ + & integer*{\it num} & baseval, \\ + & integer*{\it num} & oldbaseval) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphBase} routine sets the base of all graph indices +according to the given base value, and returns the old base value. +This routine is a helper for applications that do not handle base +values properly. + +In Fortan, the old base value is returned in the third parameter of +the function call. + +\progret + +{\tt SCOTCH\_graphBase} returns the old base value. + +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphBuild}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphBuild ( & SCOTCH\_Graph * & grafptr, \\ + & const SCOTCH\_Num & baseval, \\ + & const SCOTCH\_Num & vertnbr, \\ + & const SCOTCH\_Num * & verttab, \\ + & const SCOTCH\_Num * & vendtab, \\ + & const SCOTCH\_Num * & velotab, \\ + & const SCOTCH\_Num * & vlbltab, \\ + & const SCOTCH\_Num & edgenbr, \\ + & const SCOTCH\_Num * & edgetab, \\ + & const SCOTCH\_Num * & edlotab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphbuild ( & doubleprecision (*) & grafdat, \\ + & integer*{\it num} & baseval, \\ + & integer*{\it num} & vertnbr, \\ + & integer*{\it num} (*) & verttab, \\ + & integer*{\it num} (*) & vendtab, \\ + & integer*{\it num} (*) & velotab, \\ + & integer*{\it num} (*) & vlbltab, \\ + & integer*{\it num} & edgenbr, \\ + & integer*{\it num} (*) & edgetab, \\ + & integer*{\it num} (*) & edlotab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphBuild} routine fills the source graph structure +pointed to by {\tt grafptr} with all of the data that are passed to it. + +{\tt baseval} is the graph base value for index arrays (typically $0$ for +structures built from C and $1$ for structures built from Fortran). +{\tt vertnbr} is the number of vertices. +{\tt verttab} is the adjacency index array, of size $({\tt vertnbr} + +1)$ if the edge array is compact (that is, if {\tt vendtab} equals +$\mathtt{verttab}+1$ or {\tt NULL}), or of size {\tt vertnbr} else. +{\tt vendtab} is the adjacency end index array, of size {\tt vertnbr} if +it is disjoint from {\tt verttab}. +{\tt velotab} is the vertex load array, of size {\tt vertnbr} if it exists. +{\tt vlbltab} is the vertex label array, of size {\tt vertnbr} if it exists. +{\tt edgenbr} is the number of arcs (that is, twice the number of edges). +{\tt edgetab} is the adjacency array, of size at least {\tt edgenbr} +(it can be more if the edge array is not compact). {\tt edlotab} is +the arc load array, of size {\tt edgenbr} if it exists. + +The {\tt vendtab}, {\tt velotab}, {\tt vlbltab} and {\tt edlotab} +arrays are optional, and a {\tt NULL} pointer can be passed as +argument whenever they are not defined. +Since, in Fortran, there is no null reference, passing the +{\tt scotchf\lbt graph\lbt build} routine a reference equal to +{\tt verttab} in the {\tt velotab} or {\tt vlbltab} fields makes them +be considered as missing arrays. The same holds for {\tt edlotab} +when it is passed a reference equal to {\tt edgetab}. Setting +{\tt vendtab} to refer to one cell after {\tt verttab} yields the +same result, as it is the exact semantics of a compact vertex array. + +To limit memory consumption, {\tt SCOTCH\_\lbt graph\lbo Build} does +not copy array data, but instead references them in the {\tt +SCOTCH\_\lbt Graph} structure. Therefore, great care should be taken +not to modify the contents of the arrays passed to {\tt SCOTCH\_\lbt +graph\lbo Build} as long as the graph structure is in use. Every +update of the arrays should be preceded by a call to {\tt SCOTCH\_\lbt +graph\lbo Free}, to free internal graph structures, and eventually +followed by a new call to {\tt SCOTCH\_\lbt graph\lbo Build} to +re-build these internal structures so as to be able to use the new +graph. + +To ensure that inconsistencies in user data do not result in an +erroneous behavior of the \libscotch\ routines, it is recommended, at +least in the development stage, to call the {\tt SCOTCH\_\lbt +graph\lbt Check} routine on the newly created {\tt SCOTCH\_\lbt Graph} +structure before calling any other \libscotch\ routine. + +\progret + +{\tt SCOTCH\_graphBuild} returns $0$ if the graph structure has been +successfully set with all of the input data, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphCheck}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphCheck ( & const SCOTCH\_Graph * & grafptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphcheck ( & doubleprecision (*) & grafdat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphCheck} routine checks the consistency of the +given {\tt SCOTCH\_\lbt Graph} structure. It can be used in client +applications to determine if a graph that has been created from +used-generated data by means of the {\tt SCOTCH\_\lbt graph\lbt Build} +routine is consistent, prior to calling any other routines of the +\libscotch\ library. + +\progret + +{\tt SCOTCH\_graphCheck} returns $0$ if graph data are consistent, and +$1$ else. + +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphCoarsen}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphCoarsen ( & SCOTCH\_Graph * const & finegrafptr, \\ + & const SCOTCH\_Num & coarvertnbr, \\ + & const double & coarrat, \\ + & const SCOTCH\_Num & flagval, \\ + & SCOTCH\_Graph * const & coargrafptr, \\ + & SCOTCH\_Num * const & coarmulttab) \\ +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphcoarsen ( & doubleprecision (*) & finegrafdat, \\ + & integer*{\it num} & coarvertnbr, \\ + & doubleprecision & coarrat, \\ + & integer*{\it num} & flagval, \\ + & doubleprecision (*) & coargrafdat, \\ + & integer*{\it num} (*) & coarmulttab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphCoarsen} routine creates, in the +{\tt SCOTCH\_\lbt Graph} structure {\tt coar\lbt graf\lbt dat} pointed +to by {\tt coar\lbt graf\lbt ptr}, a graph coarsened from the +{\tt SCOTCH\_\lbt Graph} structure {\tt fine\lbt graf\lbt dat} pointed +to by {\tt fine\lbt graf\lbt ptr}. The coarsened graph is created only +if it comprises more than {\tt coar\lbt vert\lbt nbr} vertices, or if +the coarsening ratio is lower than {\tt coarrat}. Valid coarsening +ratio values range from $0.5$ (in the case of a perfect matching) to +$1.0$ (if no vertex could be coarsened). Classical threshold values +range from $0.7$ to $0.8$. + +The {\tt flagval} flag specifies the type of coarsening. +% Several groups of flags can be combined, by means of addition or +% ``binary or'' operators. +When {\tt SCOTCH\_\lbt COARSEN\lbt NO\lbt MERGE} is set, isolated +vertices are never merged with other vertices. This preserves the +topology of the graph, at the expense of a higher coarsening ratio. + +The {\tt multloctab} array should be of a size big enough to store +multinode data for the resulting coarsened graph. Hence, the size of +the array must be at least twice the maximum expected number of local +coarse vertices, according to the prescribed coarsening ratio +{\tt coarrat}. Upon successful completion, this array will contain +pairs of consecutive {\tt SCOTCH\_\lbt Num} values, representing the +indices of the two fine vertices that have been coarsened into each of +the coarse vertices. When a vertex has been coarsened with itself, its +two multinode values are identical. + +{\tt coargrafdat} must have been initialized with the +{\tt SCOTCH\_\lbt graph\lbt Init} routine before +{\tt SCOTCH\_graph\lbt Coarsen} is called. + +\progret + +{\tt SCOTCH\_graphCoarsen} returns $0$ if the coarse graph +structure has been successfully created, $1$ if the coarse graph was +not created because it did not enforce the threshold parameters, and +$2$ on error. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphCoarsenBuild}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphCoarsenBuild ( & SCOTCH\_Graph * const & finegrafptr, \\ + & const SCOTCH\_Num & coarvertnbr, \\ + & SCOTCH\_Num * const & finematetab, \\ + & SCOTCH\_Graph * const & coargrafptr, \\ + & SCOTCH\_Num * const & coarmulttab) \\ +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphcoarsenbuild ( & doubleprecision (*) & finegrafdat, \\ + & integer*{\it num} & coarvertnbr, \\ + & integer*{\it num} (*) & finematetab, \\ + & doubleprecision (*) & coargrafdat, \\ + & integer*{\it num} (*) & coarmulttab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphCoarsenBuild} routine creates, in the +{\tt SCOTCH\_\lbt Graph} structure {\tt coar\lbt graf\lbt dat} pointed +to by {\tt coar\lbt graf\lbt ptr}, a graph with {\tt coar\lbt vert\lbt nbr} +vertices, coarsened from the {\tt SCOTCH\_\lbt Graph} structure +{\tt fine\lbt graf\lbt dat} pointed to by {\tt fine\lbt graf\lbt ptr}, +using the matching provided by {\tt fine\lbt mate\lbt tab}. + +On input, the {\tt fine\lbt mate\lbt tab} mating array should contain +the indices of the mates chosen for each vertex of the fine +graph. When some vertex is mated to itself, its array cell value is +equal to its own index. Upon successful completion, this array is +updated so as to contain fine-to-coarse indices: each array cell +contains the index of the coarse vertex created from the given fine +vertex. + +The {\tt fine\lbt mate\lbt tab} mating array and its associated number +of coarse vertices {\tt coar\lbt vert\lbt nbr} may have been computed +using the {\tt SCOTCH\_\lbt graph\lbt Coarsen\lbt Match} +routine. Indeed, calling the +{\tt SCOTCH\_\lbt graph\lbt Coarsen\lbt Match} and +{\tt SCOTCH\_\lbt graph\lbt Coarsen\lbt Build} routines in sequence +amounts to calling the {\tt SCOTCH\_\lbt graph\lbt Coarsen} routine, +yet additionally publicizing the {\tt fine\lbt mate\lbt tab} array. + +The {\tt multloctab} array should be of a size big enough to store +multinode data for the resulting coarsened graph, that is, twice the +value of {\tt coar\lbt vert\lbt nbr}. Upon successful completion, +this array will contain pairs of consecutive {\tt SCOTCH\_\lbt Num} +values, representing the indices of the two fine vertices that have +been coarsened into each of the coarse vertices. When a vertex has +been coarsened with itself, the two multinode values are identical. + +{\tt coargrafdat} must have been initialized with the +{\tt SCOTCH\_\lbt graph\lbt Init} routine before +{\tt SCOTCH\_graph\lbt Coarsen\lbt Build} is called. + +\progret + +{\tt SCOTCH\_graphCoarsenBuild} returns $0$ if the coarse graph +structure has been successfully created, and $1$ on error. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphCoarsenMatch}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphCoarsenMatch ( & SCOTCH\_Graph * const & finegrafptr, \\ + & SCOTCH\_Num * const & coarvertptr, \\ + & const double & coarrat, \\ + & const SCOTCH\_Num & flagval, \\ + & SCOTCH\_Num * const & finematetab) \\ +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphcoarsenmatch ( & doubleprecision (*) & finegrafdat, \\ + & integer*{\it num} & coarvertnbr, \\ + & doubleprecision & coarrat, \\ + & integer*{\it num} & flagval, \\ + & integer*{\it num} (*) & finematetab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphCoarsenMatch} routine fills the +{\tt fine\lbt mate\lbt tab} array with a matching of the vertices of +the {\tt SCOTCH\_\lbt Graph} structure {\tt fine\lbt graf\lbt dat} +pointed to by {\tt fine\lbt graf\lbt ptr}. The matching is +computed only if it amounts to the creation of more than +{\tt coar\lbt vert\lbt nbr} (that is, the value pointed to by +{\tt coar\lbt vert\lbt ptr} in the C interface) coarse vertices, or if +the coarsening ratio is lower than {\tt coarrat}. Valid coarsening +ratio values range from $0.5$ (in the case of a perfect matching) to +$1.0$ (if no vertex could be coarsened). Classical threshold values +range from $0.7$ to $0.8$. + +The {\tt flagval} flag specifies the type of matching. +% Several groups of flags can be combined, by means of addition or +% ``binary or'' operators. +When {\tt SCOTCH\_\lbt COARSEN\lbt NO\lbt MERGE} is set, isolated +vertices are never matched with other vertices. This preserves the +topology of the graph, at the expense of a higher coarsening ratio. + +The {\tt finematetab} array must be of a size sufficient to hold as +many {\tt SCOTCH\_\lbt Num} values as the number of vertices in the +{\tt fine\lbt graf\lbt dat} graph. Upon successful completion, this +array will contain the indices of the mates chosen for each vertex of +the provided graph. When some vertex is mated to itself, its array +cell value is equal to its own index. Additionally, {\tt coarvertnbr} +will be set to the number of coarse vertices associated with the +matching. This number is equal to the number of vertices in the +provided graph, minus the number of matched pairs of vertices, +since in a subsequent coarsening process, each pair should see its two +matched vertices collapsed into a single coarse vertex. + +The mating array and its associated number of coarse vertices can be +used by the {\tt SCOTCH\_\lbt graph\lbt Coarsen\lbt Build} routine. +Indeed, calling the {\tt SCOTCH\_\lbt graph\lbt Coarsen\lbt Match} and +{\tt SCOTCH\_\lbt graph\lbt Coarsen\lbt Build} routines in sequence +amounts to calling the {\tt SCOTCH\_\lbt graph\lbt Coarsen} routine, +yet additionally publicizing the {\tt fine\lbt mate\lbt tab} array. + +\progret + +{\tt SCOTCH\_graphCoarsenMatch} returns $0$ if a matching has been +successfully computed, $1$ if the matching was not computed because it +did not enforce the threshold parameters, and $2$ on error. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphColor}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphColor ( & const SCOTCH\_Graph * & grafptr, \\ + & SCOTCH\_Num * & colotab, \\ + & SCOTCH\_Num * & coloptr, \\ + & SCOTCH\_Num & flagval) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphcolor ( & doubleprecision (*) & grafdat, \\ + & integer*{\it num} (*) & colotab, \\ + & integer{\it num} & colonbr, \\ + & integer{\it num} & flagval, \\ + & integer & ierr) + +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphColor} routine computes a coloring of the graph +vertices. The {\tt colotab} array is filled with color values, and the +number of colors found is placed into the integer variable +{\tt colonbr}, pointed to by {\tt coloptr}. + +The computed coloring is not guaranteed to be maximal. Indeed, +the only algorithm currently implemented is a variant of Luby's +algorithm. Due to the operations of this algorithm, the first colors +are likely to have many more representatives than the last colors. + +Like for partition arrays, color values are \textit{not} based: color +values range from $0$ to $(\mathtt{colonbr} - 1)$. + +The flag value {\tt flagval} is currently not used. It may be used in +the future to select a coloring method. At the time being, a value of +$0$ should be provided. + +\progret + +{\tt SCOTCH\_graphColor} returns $0$ if the graph coloring has been +successfully computed, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphData}} +\label{sec-lib-func-graphdata} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_graphData ( & const SCOTCH\_Graph * & grafptr, \\ + & SCOTCH\_Num * & baseptr, \\ + & SCOTCH\_Num * & vertptr, \\ + & SCOTCH\_Num ** & verttab, \\ + & SCOTCH\_Num ** & vendtab, \\ + & SCOTCH\_Num ** & velotab, \\ + & SCOTCH\_Num ** & vlbltab, \\ + & SCOTCH\_Num * & edgeptr, \\ + & SCOTCH\_Num ** & edgetab, \\ + & SCOTCH\_Num ** & edlotab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphdata ( & doubleprecision (*) & grafdat, \\ + & integer*{\it num} (*) & indxtab, \\ + & integer*{\it num} & baseval, \\ + & integer*{\it num} & vertnbr, \\ + & integer*{\it idx} & vertidx, \\ + & integer*{\it idx} & vendidx, \\ + & integer*{\it idx} & veloidx, \\ + & integer*{\it idx} & vlblidx, \\ + & integer*{\it num} & edgenbr, \\ + & integer*{\it idx} & edgeidx, \\ + & integer*{\it num} & edloidx) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphData} routine is the dual of the +{\tt SCOTCH\_\lbt graph\lbo Build} routine. It is a multiple +accessor that returns scalar values and array references. + +{\tt baseptr} is the pointer to a location that will hold the graph base +value for index arrays (typically $0$ for +structures built from C and $1$ for structures built from Fortran). +{\tt vertptr} is the pointer to a location that will hold the number of +vertices. +{\tt verttab} is the pointer to a location that will hold the reference to +the adjacency index array, of size $\mathtt{*vertptr} + 1$ if the +adjacency array is compact, or of size {\tt *vertptr} else. +{\tt vendtab} is the pointer to a location that will hold the reference to +the adjacency end index array, and is equal to $\mathtt{verttab} + +1$ if the adjacency array is compact. +{\tt velotab} is the pointer to a location that will hold the reference to +the vertex load array, of size {\tt *vertptr}. +{\tt vlbltab} is the pointer to a location that will hold the reference to +the vertex label array, of size {\tt vertnbr}. +{\tt edgeptr} is the pointer to a location that will hold the number of arcs +(that is, twice the number of edges). +{\tt edgetab} is the pointer to a location that will hold the reference to +the adjacency array, of size at least {\tt *edgeptr}. +{\tt edlotab} is the pointer to a location that will hold the reference to +the arc load array, of size {\tt *edgeptr}. + +Any of these pointers can be set to {\tt NULL} on input if the +corresponding information is not needed. Else, the reference to a +dummy area can be provided, where all unwanted data will be written. + +Since there are no pointers in Fortran, a specific mechanism is used +to allow users to access graph arrays. The {\tt scotchf\lbt graph\lbt +data} routine is passed an integer array, the first element of which is used +as a base address from which all other array indices are +computed. Therefore, instead of returning references, the routine +returns integers, which represent the starting index of each of the +relevant arrays with respect to the base input array, or {\tt +vertidx}, the index of {\tt verttab}, if they do not exist. For +instance, if some base array {\tt myarray\lbt (1)} is passed as +parameter {\tt indxtab}, then the first cell of array {\tt verttab} +will be accessible as {\tt myarray\lbt (vertidx)}. +In order for this feature to behave properly, the {\tt indxtab} +array must be word-aligned with the graph arrays. This is +automatically enforced on most systems, but some care should be +taken on systems that allow one to access data that is not +word-aligned. On such systems, declaring the array after a +dummy {\tt double\lbt precision} array can coerce the compiler +into enforcing the proper alignment. Also, on 32\_64 architectures, +such indices can be larger than the size of a regular +{\tt INTEGER}. This is why the indices to be returned are defined by +means of a specific integer type. See +Section~\ref{sec-lib-inttypesize} for more information on this +issue. +\end{itemize} + + + + +\subsubsection{{\tt SCOTCH\_graphDiamPV}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +SCOTCH\_Num SCOTCH\_graphDiamPV ( & const SCOTCH\_Graph * & grafptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphdiampv ( & doubleprecision (*) & grafdat, \\ + & integer{\it num} & diamval) + +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphDiamPV} routine computes the edge-weighted +(pseudo-)diameter value of the given graph. + +To do so, it selects a random vertex, computes the set of vertices at +maximum distance from this vertex by means of Dijkstra's algorithm, +selects a vertex from this set, and repeats the process as long as +this maximum distance value increases. If the graph is not +edge-weighted, neighboring vertices are assumed to be at distance $1$ +from each other; else, edge weights represent distances between +vertices. + +\progret + +{\tt SCOTCH\_graphDiamPV} returns a positive value if the graph +diameter has been successfully computed, the \texttt{SCOTCH\_\lbt +NUMMAX} maximum positive value if the graph is disconnected, and $-1$ +on error. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphExit}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_graphExit ( & SCOTCH\_Graph * & grafptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphexit ( & doubleprecision (*) & grafdat) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphExit} function frees the contents of a +{\tt SCOTCH\_\lbt Graph} structure previously initialized by +{\tt SCOTCH\_\lbt graphInit}. All subsequent calls to +{\tt SCOTCH\_\lbt graph} routines other than {\tt SCOTCH\_\lbt +graphInit}, using this structure as parameter, may yield +unpredictable results. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphFree}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_graphFree ( & SCOTCH\_Graph * & grafptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphfree ( & doubleprecision (*) & grafdat) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphFree} function frees the graph data of a {\tt +SCOTCH\_\lbt Graph} structure previously initialized by {\tt +SCOTCH\_\lbt graph\lbt Init}, but preserves its internal data +structures. This call is equivalent to a call to {\tt SCOTCH\_\lbt +graph\lbt Exit} immediately followed by a call to {\tt SCOTCH\_\lbt +graph\lbt Init}. Consequently, the given {\tt SCOTCH\_\lbt Graph} +structure remains ready for subsequent calls to any routine of the +\libscotch\ library. + +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphInduceList}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphInduceList ( & const SCOTCH\_Graph * & orggrafptr, \\ + & SCOTCH\_Num & vnumnbr, \\ + & SCOTCH\_Num * & vnumtab, \\ + & SCOTCH\_Graph * & indgrafptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphinducelist ( & doubleprecision (*) & orggrafdat, \\ + & integer*{\it num} & vnumnbr, \\ + & integer{\it num} (*) & vnumtab, \\ + & doubleprecision (*) & indgrafdat, \\ + & integer & ierr) + +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphInduceList} routine computes an induced graph +\texttt{indgrafdat} from the original graph \texttt{orggrafdat}. The +vertices that are kept in the induced graph are the \texttt{vnumnbr} +vertices whose based indices in the original graph are provided in the +\texttt{vnumtab} array, in its first \texttt{vnumnbr} cells. + +\progret + +{\tt SCOTCH\_graphInduceList} returns $0$ if the induced graph has +been successfully computed, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphInducePart}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphInducePart ( & const SCOTCH\_Graph * & orggrafptr, \\ + & SCOTCH\_Num & vnumnbr, \\ + & SCOTCH\_GraphPart2 * & parttab, \\ + & SCOTCH\_GraphPart2 & partval, \\ + & SCOTCH\_Graph * & indgrafptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphinducepart ( & doubleprecision (*) & orggrafdat, \\ + & integer*{\it num} & vnumnbr, \\ + & character{\it num} (*) & parttab, \\ + & character{\it num} & partval, \\ + & doubleprecision (*) & indgrafdat, \\ + & integer & ierr) + +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphInducePart} routine computes an induced graph +\texttt{indgrafdat} from the original graph \texttt{orggrafdat}. The +vertices that are kept in the induced graph are the \texttt{vnumnbr} +vertices whose part number in the \texttt{parttab} array are equal to +\texttt{partval}. The \texttt{SCOTCH\_\lbt Graph\lbt Part2} type, +being a very small integer (most likely, an \texttt{unsigned char}), +is assumed to hold only small values, e.g. \texttt{0} or \texttt{1}. + +\progret + +{\tt SCOTCH\_graphInducePart} returns $0$ if the induced graph has +been successfully computed, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphInit}} +\label{sec-lib-func-graphinit} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphInit ( & SCOTCH\_Graph * & grafptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphinit ( & doubleprecision (*) & grafdat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphInit} function initializes a {\tt SCOTCH\_\lbt +Graph} structure so as to make it suitable for future operations. It +should be the first function to be called upon a {\tt SCOTCH\_\lbt +Graph} structure. When the graph data is no longer of use, call +function {\tt SCOTCH\_\lbt graph\lbt Exit} to free its internal +structures. + +\progret + +{\tt SCOTCH\_graphInit} returns $0$ if the graph structure has been +successfully initialized, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphLoad}} +\label{sec-lib-func-graphload} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphLoad ( & SCOTCH\_Graph * & grafptr, \\ + & FILE * & stream, \\ + & SCOTCH\_Num & baseval, \\ + & SCOTCH\_Num & flagval) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphload ( & doubleprecision (*) & grafdat, \\ + & integer & fildes, \\ + & integer*{\it num} & baseval, \\ + & integer*{\it num} & flagval, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphLoad} routine fills the {\tt +SCOTCH\_\lbt Graph} structure pointed to by {\tt grafptr} with the +source graph description available from stream {\tt stream} in the +\scotch\ graph format (see section~\ref{sec-file-sgraph}). + +To ease the handling of source graph files by programs written in C as +well as in Fortran, the base value of the graph to read can be set +to {\tt 0} or {\tt 1}, by setting the {\tt baseval} parameter to the +proper value. A value of {\tt -1} indicates that the graph base should +be the same as the one provided in the graph description that is read +from {\tt stream}. + +The {\tt flagval} value is a combination of the following integer values, +that may be added or bitwise-ored: +\begin{itemize} +\iteme[{\tt 0}] +Keep vertex and edge weights if they are present in the {\tt stream} data. +\iteme[{\tt 1}] +Remove vertex weights. The graph read will have all of its vertex weights +set to one, regardless of what is specified in the {\tt stream} data. +\iteme[{\tt 2}] +Remove edge weights. The graph read will have all of its edge weights +set to one, regardless of what is specified in the {\tt stream} data. +\end{itemize} + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt fildes} associated +with the logical unit of the graph file. + +\progret + +{\tt SCOTCH\_graphLoad} returns $0$ if the graph structure has been +successfully allocated and filled with the data read, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphSave}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphSave ( & const SCOTCH\_Graph * & grafptr, \\ + & FILE * & stream) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphsave ( & doubleprecision (*) & grafdat, \\ + & integer & fildes, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphSave} routine saves the contents of the {\tt +SCOTCH\_\lbt Graph} structure pointed to by {\tt grafptr} to stream +{\tt stream}, in the \scotch\ graph format (see +section~\ref{sec-file-sgraph}). + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt fildes} associated +with the logical unit of the graph file. + +\progret + +{\tt SCOTCH\_graphSave} returns $0$ if the graph structure has been +successfully written to {\tt stream}, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphSize}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_graphSize ( & const SCOTCH\_Graph * & grafptr, \\ + & SCOTCH\_Num * & vertptr, \\ + & SCOTCH\_Num * & edgeptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphsize ( & doubleprecision (*) & grafdat, \\ + & integer*{\it num} & vertnbr, \\ + & integer*{\it num} & edgenbr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphSize} routine fills the two areas of type +{\tt SCOTCH\_\lbt Num} pointed to by {\tt vertptr} and {\tt edgeptr} +with the number of vertices and arcs (that is, twice the number +of edges) of the given graph pointed to by {\tt grafptr}, +respectively. + +Any of these pointers can be set to {\tt NULL} on input if the +corresponding information is not needed. Else, the reference to a +dummy area can be provided, where all unwanted data will be written. + +This routine is useful to get the size of a graph read by means +of the {\tt SCOTCH\_\lbt graph\lbo Load} routine, in order to allocate +auxiliary arrays of proper sizes. If the whole structure of the +graph is wanted, function {\tt SCOTCH\_graph\lbo Data} should be +preferred. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphStat}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_graphStat ( & const SCOTCH\_Graph * & grafptr, \\ + & SCOTCH\_Num * & velominptr, \\ + & SCOTCH\_Num * & velomaxptr, \\ + & SCOTCH\_Num * & velosumptr, \\ + & double * & veloavgptr, \\ + & double * & velodltptr, \\ + & SCOTCH\_Num * & degrminptr, \\ + & SCOTCH\_Num * & degrmaxptr, \\ + & double * & degravgptr, \\ + & double * & degrdltptr, \\ + & SCOTCH\_Num * & edlominptr, \\ + & SCOTCH\_Num * & edlomaxptr, \\ + & SCOTCH\_Num * & edlosumptr, \\ + & double * & edloavgptr, \\ + & double * & edlodltptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphstat ( & doubleprecision (*) & grafdat, \\ + & integer*{\it num} & velomin, \\ + & integer*{\it num} & velomax, \\ + & integer*{\it num} & velosum, \\ + & doubleprecision & veloavg, \\ + & doubleprecision & velodlt, \\ + & integer*{\it num} & degrmin, \\ + & integer*{\it num} & degrmax, \\ + & doubleprecision & degravg, \\ + & doubleprecision & degrdlt, \\ + & integer*{\it num} & edlomin, \\ + & integer*{\it num} & edlomax, \\ + & integer*{\it num} & edlosum, \\ + & doubleprecision & edloavg, \\ + & doubleprecision & edlodlt) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphStat} routine produces some statistics regarding +the graph structure pointed to by {\tt grafptr}. +{\tt velomin}, {\tt velomax}, {\tt velosum}, {\tt veloavg} and +{\tt velodlt} are the minimum vertex load, the maximum vertex +load, the sum of all vertex loads, the average vertex load, +and the variance of the vertex loads, respectively. +{\tt degrmin}, {\tt degrmax}, {\tt degravg} and +{\tt degrdlt} are the minimum vertex degree, the maximum vertex +degree, the average vertex degree, and the variance of the vertex +degrees, respectively. +{\tt edlomin}, {\tt edlomax}, {\tt edlosum}, {\tt edloavg} and +{\tt edlodlt} are the minimum edge load, the maximum edge +load, the sum of all edge loads, the average edge load, +and the variance of the edge loads, respectively. +\end{itemize} + +\subsection{High-level graph partitioning, mapping and clustering routines} +\label{sec-lib-func-part-map} +\index{Clustering} + +The routines presented in this section provide high-level +functionalities and free the user from the burden of calling in +sequence several of the low-level routines described in the next +section. + +\subsubsection{{\tt SCOTCH\_graphMap}} +\label{sec-lib-func-graphmap} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphMap ( & const SCOTCH\_Graph * & grafptr, \\ + & const SCOTCH\_Arch * & archptr, \\ + & const SCOTCH\_Strat * & straptr, \\ + & SCOTCH\_Num * & parttab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphmap ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & archdat, \\ + & doubleprecision (*) & stradat, \\ + & integer*{\it num} (*) & parttab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphMap} routine computes a mapping of the source +graph structure pointed to by {\tt grafptr} onto the target +architecture pointed to by {\tt archptr}, using the mapping strategy +pointed to by {\tt straptr} (as defined in +Section~\ref{sec-lib-format-map}), and returns the mapping data in the +array pointed to by {\tt parttab}. + +The {\tt parttab} array should have been previously allocated, of a +size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as +there are vertices in the source graph. + +On return, every cell of the mapping array holds the number of the +target vertex to which the corresponding source vertex is mapped. +The numbering of target values is {\em not\/} based: target vertices +are numbered from $0$ to the number of target vertices minus $1$. +This semantics aims at complying with standards such as MPI, in +which process ranks start from $0$. + +When a variable-sized architecture is used (see +Section~\ref{sec-file-target-variable}) and a proper strategy is +provided (see Section~\ref{sec-lib-func-stratgraphclusterbuild}), +the {\tt SCOTCH\_graph\lbt Map} routine can cluster\index{Clustering} +the given graph by means of recursive bipartitioning. +In this case, clusters are labeled according to a binary scheme: the +part equal to the whole graph is numbered $1$, its two bipartitioned +descendants are labeled $2$ and $3$, the two descendants of part $2$ +are labeled $4$ and $5$, and so on. More generally, clusters are +labeled such that the two descendants of any cluster $i$ that has been +split are labeled $2i$ and $2i + 1$. + +Classical clustering strategies perform recursive bipartitioning of +process graphs until some criterion is met: either parts become +smaller than some size threshold, or edge density becomes higher than +some ratio, etc. If graph mapping is performed using a variable-sized +architecture and a classical mapping strategy, recursive +bipartitioning will halt only when the load imbalance criterion allows +for one of the bipartitioned parts to be empty (that is, most often, +parts contains a single vertex). + +\progret + +{\tt SCOTCH\_graphMap} returns $0$ if the mapping of the graph has +been successfully computed, and $1$ else. In this last case, the +{\tt parttab} array may however have been partially or completely +filled, but its contents are not significant. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphMapFixed}} +\label{sec-lib-func-graphmapfixed} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphMapFixed ( & const SCOTCH\_Graph * & grafptr, \\ + & const SCOTCH\_Arch * & archptr, \\ + & const SCOTCH\_Strat * & straptr, \\ + & SCOTCH\_Num * & parttab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphmapfixed ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & archdat, \\ + & doubleprecision (*) & stradat, \\ + & integer*{\it num} (*) & parttab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphMapFixed} routine computes a mapping of the +source graph structure pointed to by {\tt grafptr} onto the target +architecture pointed to by {\tt archptr}, using the mapping strategy +pointed to by {\tt straptr} (as defined in +Section~\ref{sec-lib-format-map}), and fills the array pointed to by +{\tt parttab} with the mapping data regarding vertices which have not +been pre-assigned by the user. + +The {\tt parttab} array should have been previously allocated, of a +size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as +there are vertices in the source graph. It must also have been filled +in advance by the user, with data indicating whether vertices have +been already pre-assigned to a fixed position or are to be processed +by the routine. In each cell of the {\tt parttab} array, a value of +$-1$ indicates that the vertex is movable, while a value between $0$ +and the number of target vertices minus $1$ indicates that the vertex +has been pre-assigned to the given part. + +On return, every cell of the mapping array that contained a $-1$ will +hold the number of the target vertex to which the corresponding source +vertex is mapped. The numbering of target values is {\em not\/} +based: target vertices are numbered from $0$ to the number of target +vertices minus $1$. This semantics aims at complying with standards +such as MPI, in which process ranks start from $0$. + +\progret + +{\tt SCOTCH\_graphMapFixed} returns $0$ if the mapping of the graph +has been successfully computed, and $1$ else. In this last case, the +{\tt parttab} array may however have been partially or completely +filled, but its contents are not significant. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphPart}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphPart ( & const SCOTCH\_Graph * & grafptr, \\ + & const SCOTCH\_Num & partnbr, \\ + & const SCOTCH\_Strat * & straptr, \\ + & SCOTCH\_Num * & parttab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphpart ( & doubleprecision (*) & grafdat, \\ + & integer*{\it num} & partnbr, \\ + & doubleprecision (*) & stradat, \\ + & integer*{\it num} (*) & parttab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphPart} routine computes an edge-separated +partition, into {\tt partnbr} parts, of the source graph structure +pointed to by {\tt grafptr}, using the graph edge partitioning +strategy pointed to by {\tt stratptr} (as defined in +Section~\ref{sec-lib-format-map}), and returns the partition data in +the array pointed to by {\tt parttab}. + +The {\tt parttab} array should have been previously allocated, of a +size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as +there are vertices in the source graph. + +On return, every cell of the mapping array holds the number of the +target vertex to which the corresponding source vertex is mapped. The +numbering of target values is {\em not\/} based: target vertices are +numbered from $0$ to $\mathtt{partnbr} - 1$. This semantics aims at +complying with standards such as MPI, in which process ranks start +from $0$. + +\progret + +{\tt SCOTCH\_graphPart} returns $0$ if the graph partition has +been successfully computed, and $1$ else. In the latter case, the +{\tt parttab} array may however have been partially or completely +filled, but its contents are not significant. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphPartFixed}} +\label{sec-lib-func-graphpartfixed} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphPartFixed ( & const SCOTCH\_Graph * & grafptr, \\ + & const SCOTCH\_Num & partnbr, \\ + & const SCOTCH\_Strat * & straptr, \\ + & SCOTCH\_Num * & parttab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphpartfixed ( & doubleprecision (*) & grafdat, \\ + & integer*{\it num} & partnbr, \\ + & doubleprecision (*) & stradat, \\ + & integer*{\it num} (*) & parttab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphPartFixed} routine computes an edge-separated +partition, into {\tt partnbr} parts, of the source graph structure +pointed to by {\tt grafptr}, using the graph edge partitioning +strategy pointed to by {\tt stratptr} (as defined in +Section~\ref{sec-lib-format-map}), and fills the array pointed to by +{\tt parttab} with the partitioning data regarding vertices which have +not been pre-assigned by the user. + +The {\tt parttab} array should have been previously allocated, of a +size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as +there are vertices in the source graph. It must also have been filled +in advance by the user, with data indicating whether vertices have +been already pre-assigned to a fixed position or are to be processed +by the routine. In each cell of the {\tt parttab} array, a value of +$-1$ indicates that the vertex is movable, while a value between $0$ +and the number of target vertices minus $1$ indicates that the vertex +has been pre-assigned to the given part. + +On return, every cell of the mapping array that contained a $-1$ will +hold the number of the target vertex to which the corresponding source +vertex is assigned. The numbering of target values is {\em not\/} +based: target vertices are numbered from $0$ to the number of target +vertices minus $1$. This semantics aims at complying with standards +such as MPI, in which process ranks start from $0$. + +\progret + +{\tt SCOTCH\_graphPartFixed} returns $0$ if the graph partition +has been successfully computed, and $1$ else. In the latter case, the +{\tt parttab} array may however have been partially or completely +filled, but its contents are not significant. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphPartOvl}} +\label{sec-lib-func-graphpartovl} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphPartOvl ( & const SCOTCH\_Graph * & grafptr, \\ + & const SCOTCH\_Num & partnbr, \\ + & const SCOTCH\_Strat * & straptr, \\ + & SCOTCH\_Num * & parttab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphpartovl ( & doubleprecision (*) & grafdat, \\ + & integer*{\it num} & partnbr, \\ + & doubleprecision (*) & stradat, \\ + & integer*{\it num} (*) & parttab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphPartOvl} routine computes an overlapped +vertex-separated partition, into {\tt partnbr} parts, of the source +graph structure pointed to by {\tt grafptr}, using the graph vertex +partitioning with overlap strategy pointed to by {\tt stratptr} (as +defined in Section~\ref{sec-lib-format-part-ovl}), and returns the +partition data in the array pointed to by {\tt parttab}. + +The {\tt parttab} array should have been previously allocated, of a +size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as +there are vertices in the source graph. + +On return, every array cell holds the number of the part to which the +corresponding vertex is mapped. Regular parts are numbered from $0$ to +$\mathtt{partnbr} - 1$, and separator vertices are labeled with part +number {\tt -1}. + +While {\tt SCOTCH\_graphMap} and {\tt SCOTCH\_\lbt graph\lbt Part} are +based on edge partitioning methods, +{\tt SCOTCH\_\lbt graph\lbt Part\lbt Ovl} relies on a completely +distinct set of routines to compute vertex separators. This is why +{\tt SCOTCH\_\lbt graph\lbt Part\lbt Ovl} requires strategy strings of +a different kind, created by the +{\tt SCOTCH\_\lbt strat\lbt Graph\lbt Part\lbt Ovl*} routines only +(see Sections~\ref{sec-lib-func-stratgraphpartovl} +and~\ref{sec-lib-func-stratgraphpartovlbuild}). + +\progret + +{\tt SCOTCH\_graphPartOvl} returns $0$ if the partition of the graph +has been successfully computed, and $1$ else. In the latter case, the +{\tt parttab} array may however have been partially or completely +filled, but its contents are not significant. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphRemap}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphRemap ( & const SCOTCH\_Graph * & grafptr, \\ + & const SCOTCH\_Arch * & archptr, \\ + & const SCOTCH\_Num * & parotab, \\ + & const double & emraval, \\ + & const SCOTCH\_Num * & vmlotab, \\ + & const SCOTCH\_Strat * & straptr, \\ + & SCOTCH\_Num * & parttab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphremap ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & archdat, \\ + & integer*{\it num} (*) & parotab, \\ + & doubleprecision & emraval, \\ + & integer*{\it num} (*) & vmlotab, \\ + & doubleprecision (*) & stradat, \\ + & integer*{\it num} (*) & parttab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphRemap} routine computes a remapping of the +source graph structure pointed to by {\tt grafptr} onto the target +architecture pointed to by {\tt archptr}, based on the old partition +array pointed to by {\tt parotab}, using the mapping strategy pointed +to by {\tt straptr} (as defined in Section~\ref{sec-lib-format-map}), +and returns the mapping data in the array pointed to by {\tt parttab}. + +The {\tt parotab} array stores the old partition that is used to +compute migration costs. Every cell contains values from $0$ to the +number of target vertices minus $1$, or $-1$ for vertices that did not +belong to the old partition (e.g., vertices newly created by graph +adaptation, which can be placed at no cost before their associated +data is interpolated). + +With every source graph vertex is associated an individual integer +migration cost, stored in the {\tt vmlotab} array. These costs are +accounted for in the communication cost function to minimize as +multiples of the individual migration cost {\tt emraval}. Since this +value is provided as a floating point number, migration costs can be +set as fractions or as non-integer multiples of the cut metric +communication costs stored as integer edge loads. + +The {\tt parttab} array should have been previously allocated, of a +size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as +there are vertices in the source graph. + +On return, every cell of the mapping array holds the number of the +target vertex to which the corresponding source vertex is mapped. +The numbering of target values is {\em not\/} based: target vertices +are numbered from $0$ to the number of target vertices minus $1$. +This semantics aims at complying with standards such as MPI, in +which process ranks start from $0$. + +\progret + +{\tt SCOTCH\_graphRemap} returns $0$ if the mapping of the graph has +been successfully computed, and $1$ else. In this last case, the +{\tt parttab} array may however have been partially or completely +filled, but its contents are not significant. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphRemapFixed}} +\label{sec-lib-func-graphremapfixed} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphRemapFixed ( & const SCOTCH\_Graph * & grafptr, \\ + & const SCOTCH\_Arch * & archptr, \\ + & const SCOTCH\_Num * & parotab, \\ + & const double & emraval, \\ + & const SCOTCH\_Num * & vmlotab, \\ + & const SCOTCH\_Strat * & straptr, \\ + & SCOTCH\_Num * & parttab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphremapfixed ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & archdat, \\ + & integer*{\it num} (*) & parotab, \\ + & doubleprecision & emraval, \\ + & integer*{\it num} (*) & vmlotab, \\ + & doubleprecision (*) & stradat, \\ + & integer*{\it num} (*) & parttab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphRemapFixed} routine computes a remapping of the +source graph structure pointed to by {\tt grafptr} onto the target +architecture pointed to by {\tt archptr}, based on the old partition +array pointed to by {\tt parotab}, using the mapping strategy pointed +to by {\tt straptr} (as defined in Section~\ref{sec-lib-format-map}), +and fills the array pointed to by {\tt parttab} with the mapping data +regarding vertices which have not been pre-assigned by the user. + +The {\tt parotab} array stores the old partition that is used to +compute migration costs. Every cell contains values from $0$ to the +number of target vertices minus $1$, or $-1$ for vertices that did not +belong to the old partition (e.g., vertices newly created by graph +adaptation, which can be placed at no cost before their associated +data is interpolated). + +With every source graph vertex is associated an individual integer +migration cost, stored in the {\tt vmlotab} array. These costs are +accounted for in the communication cost function to minimize as +multiples of the individual migration cost {\tt emraval}. Since this +value is provided as a floating point number, migration costs can be +set as fractions or as non-integer multiples of the cut metric +communication costs stored as integer edge loads. + +The {\tt parttab} array should have been previously allocated, of a +size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as +there are vertices in the source graph. It must also have been filled +in advance by the user, with data indicating whether vertices have +been already pre-assigned to a fixed position or are to be processed +by the routine. In each cell of the {\tt parttab} array, a value of +$-1$ indicates that the vertex is movable, while a value between $0$ +and the number of target vertices minus $1$ indicates that the vertex +has been pre-assigned to the given part. + +On return, every cell of the mapping array that contained a $-1$ will +hold the number of the target vertex to which the corresponding source +vertex is mapped. The numbering of target values is {\em not\/} +based: target vertices are numbered from $0$ to the number of target +vertices minus $1$. This semantics aims at complying with standards +such as MPI, in which process ranks start from $0$. + +\progret + +{\tt SCOTCH\_graphRemapFixed} returns $0$ if the mapping of the +graph has been successfully computed, and $1$ else. In this last case, +the {\tt parttab} array may however have been partially or completely +filled, with some $-1$'s removed, but its contents are not significant. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphRepart}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphRepart ( & const SCOTCH\_Graph * & grafptr, \\ + & const SCOTCH\_Num & partnbr, \\ + & const SCOTCH\_Num * & parotab, \\ + & const double & emraval, \\ + & const SCOTCH\_Num * & vmlotab, \\ + & const SCOTCH\_Strat * & straptr, \\ + & SCOTCH\_Num * & parttab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphrepart ( & doubleprecision (*) & grafdat, \\ + & integer*{\it num} & partnbr, \\ + & integer*{\it num} (*) & parotab, \\ + & doubleprecision & emraval, \\ + & integer*{\it num} (*) & vmlotab, \\ + & doubleprecision (*) & stradat, \\ + & integer*{\it num} (*) & parttab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphRepart} routine computes an edge-separated +repartition, into {\tt partnbr} parts, of the source graph structure +pointed to by {\tt grafptr}, based on the old partition array pointed +to by {\tt parotab}, using the partitioning strategy pointed to by +{\tt straptr} (as defined in Section~\ref{sec-lib-format-map}), and +returns the partition data in the array pointed to by {\tt parttab}. + +The {\tt parotab} array stores the old partition that is used to +compute migration costs. Every cell contains values from $0$ to the +number of target vertices minus $1$, or $-1$ for vertices that did not +belong to the old partition (e.g., vertices newly created by graph +adaptation, which can be assigned to any part at no cost before +their associated data is interpolated). + +With every source graph vertex is associated an individual integer +migration cost, stored in the {\tt vmlotab} array. These costs are +accounted for in the communication cost function to minimize as +multiples of the individual migration cost {\tt emraval}. Since this +value is provided as a floating point number, migration costs can be +set as fractions or as non-integer multiples of the cut metric +communication costs stored as integer edge loads. + +The {\tt parttab} array should have been previously allocated, of a +size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as +there are vertices in the source graph. + +On return, every cell of the mapping array holds the number of the +target vertex to which the corresponding source vertex is mapped. +The numbering of target values is {\em not\/} based: target vertices +are numbered from $0$ to the number of target vertices minus $1$. +This semantics aims at complying with standards such as MPI, in +which process ranks start from $0$. + +\progret + +{\tt SCOTCH\_graphRepart} returns $0$ if the graph partition has +been successfully computed, and $1$ else. In the latter case, the +{\tt parttab} array may however have been partially or completely +filled, but its contents are not significant. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphRepartFixed}} +\label{sec-lib-func-graphrepartfixed} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphRepartFixed ( & const SCOTCH\_Graph * & grafptr, \\ + & const SCOTCH\_Num & partnbr, \\ + & const SCOTCH\_Num * & parotab, \\ + & const double & emraval, \\ + & const SCOTCH\_Num * & vmlotab, \\ + & const SCOTCH\_Strat * & straptr, \\ + & SCOTCH\_Num * & parttab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphrepartfixed ( & doubleprecision (*) & grafdat, \\ + & integer*{\it num} & partnbr, \\ + & integer*{\it num} (*) & parotab, \\ + & doubleprecision & emraval, \\ + & integer*{\it num} (*) & vmlotab, \\ + & doubleprecision (*) & stradat, \\ + & integer*{\it num} (*) & parttab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphRepartFixed} routine computes an edge-separated +repartition, into {\tt partnbr} parts, of the source graph structure +pointed to by {\tt grafptr}, based on the old partition array pointed +to by {\tt parotab}, using the partitioning strategy pointed to by +{\tt straptr} (as defined in Section~\ref{sec-lib-format-map}), +and fills the array pointed to by {\tt parttab} with the mapping data +regarding vertices which have not been pre-assigned by the user. + +The {\tt parotab} array stores the old partition that is used to +compute migration costs. Every cell contains values from $0$ to the +number of target vertices minus $1$, or $-1$ for vertices that did not +belong to the old partition (e.g., vertices newly created by graph +adaptation, which can be assigned to any part at no cost before +their associated data is interpolated). + +With every source graph vertex is associated an individual integer +migration cost, stored in the {\tt vmlotab} array. These costs are +accounted for in the communication cost function to minimize as +multiples of the individual migration cost {\tt emraval}. Since this +value is provided as a floating point number, migration costs can be +set as fractions or as non-integer multiples of the cut metric +communication costs stored as integer edge loads. + +The {\tt parttab} array should have been previously allocated, of a +size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as +there are vertices in the source graph. It must also have been filled +in advance by the user, with data indicating whether vertices have +been already pre-assigned to a fixed position or are to be processed +by the routine. In each cell of the {\tt parttab} array, a value of +$-1$ indicates that the vertex is movable, while a value between $0$ +and the number of target vertices minus $1$ indicates that the vertex +has been pre-assigned to the given part. + +On return, every cell of the mapping array that contained a $-1$ will +hold the number of the target vertex to which the corresponding source +vertex is mapped. The numbering of target values is {\em not\/} +based: target vertices are numbered from $0$ to the number of target +vertices minus $1$. This semantics aims at complying with standards +such as MPI, in which process ranks start from $0$. + +\progret + +{\tt SCOTCH\_graphRepartFixed} returns $0$ if the graph partition has +has been successfully computed, and $1$ else. In this last case, the +{\tt parttab} array may however have been partially or completely +filled, with some $-1$'s removed, but its contents are not +significant. +\end{itemize} + +\subsection{Low-level graph partitioning, mapping and clustering routines} +\label{sec-lib-func-part-map-low} + +All of the following routines operate on a {\tt SCOTCH\_\lbt Mapping} +structure that contains references to the partition and mapping arrays +to be filled during the mapping or remapping process. + +\subsubsection{{\tt SCOTCH\_graphMapCompute}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphMapCompute ( & const SCOTCH\_Graph * & grafptr, \\ + & SCOTCH\_Mapping * & mappptr, \\ + & const SCOTCH\_Strat * & straptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphmapcompute ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & mappdat, \\ + & doubleprecision (*) & stradat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphMapCompute} routine computes a mapping +on the given {\tt SCOTCH\_\lbt Mapping} structure pointed +to by {\tt mappptr} using the mapping strategy pointed to +by {\tt stratptr}. + +On return, every cell of the mapping array defined by +{\tt SCOTCH\_\lbt map\lbt Init} holds the number of the target +vertex to which the corresponding source vertex is mapped. The +numbering of target values is {\em not\/} based: target vertices are +numbered from $0$ to the number of target vertices, minus $1$. + +\progret + +{\tt SCOTCH\_graphMapCompute} returns $0$ if the mapping has been +successfully computed, and $1$ else. In this latter case, the mapping +array may however have been partially or completely filled, but its +contents are not significant. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphMapExit}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_graphMapExit ( & const SCOTCH\_Graph * & grafptr, \\ + & SCOTCH\_Mapping * & mappptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphmapexit ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & mappdat) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphMapExit} function frees the contents of a +{\tt SCOTCH\_\lbt Mapping} structure previously initialized by +{\tt SCOTCH\_\lbt graph\lbt Map\lbt Init}. All subsequent calls to +{\tt SCOTCH\_\lbt graph\lbt Map*} routines other than +{\tt SCOTCH\_\lbt graph\lbt Map\lbt Init}, using this structure +as parameter, may yield unpredictable results. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphMapFixedCompute}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphMapFixedCompute ( & const SCOTCH\_Graph * & grafptr, \\ + & SCOTCH\_Mapping * & mappptr, \\ + & const SCOTCH\_Strat * & straptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphmapfixedcompute ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & mappdat, \\ + & doubleprecision (*) & stradat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphMapFixedCompute} routine computes a mapping on +the given {\tt SCOTCH\_\lbt Mapping} structure pointed to by +{\tt mappptr} using the mapping strategy pointed to by +{\tt stratptr}. The mapping must have been built so that its partition +array has been filled in advance by the user, with data indicating +whether vertices have been already pre-assigned to a fixed position or +are to be processed by the routine. In each cell of the {\tt parttab} +array, a value of $-1$ indicates that the vertex is movable, while a +value between $0$ and the number of target vertices minus $1$ +indicates that the vertex has been pre-assigned to the given part. + +On return, every cell of the mapping array defined by +{\tt SCOTCH\_\lbt map\lbt Init} that contained a $-1$ will hold +the number of the target vertex to which the corresponding source +vertex is mapped. The numbering of target values is {\em not\/} based: +target vertices are numbered from $0$ to the number of target +vertices, minus $1$. + +\progret + +{\tt SCOTCH\_graphMapFixedCompute} returns $0$ if the mapping has been +successfully computed, and $1$ else. In this latter case, the mapping +array may however have been partially or completely filled, with some +$-1$'s removed, but its contents are not significant. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphMapInit}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphMapInit ( & const SCOTCH\_Graph * & grafptr, \\ + & SCOTCH\_Mapping * & mappptr, \\ + & const SCOTCH\_Arch * & archptr, \\ + & SCOTCH\_Num * & parttab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphmapinit ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & mappdat, \\ + & doubleprecision (*) & archdat, \\ + & integer*{\it num} (*) & parttab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphMapInit} routine fills the mapping structure +pointed to by {\tt mappptr} with all of the data that is passed to it. +Thus, all subsequent calls to ordering routines such as {\tt +SCOTCH\_\lbt graph\lbt Map\lbt Compute}, using this mapping structure +as parameter, will place mapping results in field {\tt parttab}. + +{\tt parttab} is the pointer to an array of as many {\tt SCOTCH\_\lbt +Num}s as there are vertices in the graph pointed to by {\tt grafptr}, +and which will receive the indices of the vertices of the target +architecture pointed to by {\tt archptr}. + +It should be the first function to be called upon a {\tt SCOTCH\_\lbt +Mapping} structure. When the mapping structure is no longer of use, +call function {\tt SCOTCH\_graph\lbt \lbt Map\lbt Exit} to free its +internal structures. + +\progret + +{\tt SCOTCH\_graphMapInit} returns $0$ if the mapping structure has been +successfully initialized, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphMapLoad}} +\label{sec-lib-graph-map-load} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphMapLoad ( & const SCOTCH\_Graph * & grafptr, \\ + & SCOTCH\_Mapping * & mappptr, \\ + & FILE * & stream) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphmapload ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & mappdat, \\ + & integer & fildes, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphMapLoad} routine fills the +{\tt SCOTCH\_\lbt Mapping} structure pointed to by +{\tt mappptr} with the mapping data available in +the \scotch\ mapping format (see section~\ref{sec-file-map}) +from stream {\tt stream}. If the source graph has vertex labels +attached to its vertices, mapping indices in the input stream are +assumed to be vertex labels as well. + +Users willing to have subsequent access to the partition data +rather than to fill an opaque {\tt SCOTCH\_\lbt Mapping} structure +are invited to use the {\tt SCOTCH\_\lbt graph\lbt Tab\lbt Load} +routine instead. + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt fildes} associated +with the logical unit of the mapping file. + +\progret + +{\tt SCOTCH\_graphMapLoad} returns $0$ if the mapping structure +has been successfully loaded from {\tt stream}, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphMapSave}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphMapSave ( & const SCOTCH\_Graph * & grafptr, \\ + & const SCOTCH\_Mapping * & mappptr, \\ + & FILE * & stream) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphmapsave ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & mappdat, \\ + & integer & fildes, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphMapSave} routine saves the contents of the {\tt +SCOTCH\_\lbt Mapping} structure pointed to by {\tt mappptr} to stream +{\tt stream}, in the \scotch\ mapping format (see +section~\ref{sec-file-map}). + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt fildes} associated +with the logical unit of the mapping file. + +\progret + +{\tt SCOTCH\_graphMapSave} returns $0$ if the mapping structure +has been successfully written to {\tt stream}, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphMapView}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphMapView ( & const SCOTCH\_Graph * & grafptr, \\ + & const SCOTCH\_Mapping * & mappptr, \\ + & FILE * & stream) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphmapview ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & mappdat, \\ + & integer & fildes, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_mapView} routine summarizes statistical information +on the mapping pointed to by {\tt mappptr} (load of target processors, +number of neighboring domains, average dilation and expansion, edge +cut size, distribution of edge dilations), and prints these results to +stream {\tt stream}. + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt fildes} associated +with the logical unit of the output data file. + +\progret + +{\tt SCOTCH\_mapView} returns $0$ if the data has been successfully +written to {\tt stream}, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphRemapCompute}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphRemapCompute ( & const SCOTCH\_Graph * & grafptr, \\ + & SCOTCH\_Mapping * & mappptr, \\ + & SCOTCH\_Mapping * & mapoptr, \\ + & const double & emraval, \\ + & const SCOTCH\_Num * & vmlotab, \\ + & const SCOTCH\_Strat * & straptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphremapcompute ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & mappdat, \\ + & doubleprecision (*) & mapodat, \\ + & doubleprecision & emraval, \\ + & integer*{\it num} (*) & vmlotab, \\ + & doubleprecision (*) & stradat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphRemapCompute} routine computes a mapping +on the given {\tt SCOTCH\_\lbt Mapping} structure pointed +to by {\tt mappptr}, using the mapping strategy pointed to +by {\tt stratptr}, and accounting for migration costs computed +based on the already computed partition pointed to by +{\tt mapoptr}. This partition should have been created from the same +graph and target architecture as the one pointer to by {\tt mappptr}. + +With every source graph vertex is associated an individual integer +migration cost, stored in the {\tt vmlotab} array. These costs are +accounted for in the communication cost function to minimize as +multiples of the individual migration cost {\tt emraval}. Since this +value is provided as a floating point number, migration costs can be +set as fractions or as non-integer multiples of the cut metric +communication costs stored as integer edge loads. + +On return, every cell of the new mapping array defined by +{\tt SCOTCH\_\lbt map\lbt Init} holds the number of the target +vertex to which the corresponding source vertex is mapped. The +numbering of target values is {\em not\/} based: target vertices are +numbered from $0$ to the number of target vertices, minus $1$. + +\progret + +{\tt SCOTCH\_graphRemapCompute} returns $0$ if the remapping has been +successfully computed, and $1$ else. In this latter case, the mapping +array may however have been partially or completely filled, but its +contents are not significant. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphRemapFixedCompute}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphRemapFixedCompute ( & const SCOTCH\_Graph * & grafptr, \\ + & SCOTCH\_Mapping * & mappptr, \\ + & SCOTCH\_Mapping * & mapoptr, \\ + & const double & emraval, \\ + & const SCOTCH\_Num * & vmlotab, \\ + & const SCOTCH\_Strat * & straptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphremapfixedcompute ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & mappdat, \\ + & doubleprecision (*) & mapodat, \\ + & doubleprecision & emraval, \\ + & integer*{\it num} (*) & vmlotab, \\ + & doubleprecision (*) & stradat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphRemapFixedCompute} routine computes a mapping +on the given {\tt SCOTCH\_\lbt Mapping} structure pointed +to by {\tt mappptr}, using the mapping strategy pointed to +by {\tt stratptr}, and accounting for migration costs computed +based on the already computed partition pointed to by +{\tt mapoptr}. This partition should have been created from the same +graph and target architecture as the one pointer to by {\tt mappptr}. + +The partition array of the mapping pointed to by {\tt mappptr} must +have been filled in advance by the user, with data indicating whether +vertices have been already pre-assigned to a fixed position or are to +be processed by the routine. A value of $-1$ indicates that the vertex +is movable, while a value between $0$ and the number of target +vertices minus $1$ indicates that the vertex has been pre-assigned to +the given part. + +With every source graph vertex is associated an individual integer +migration cost, stored in the {\tt vmlotab} array. These costs are +accounted for in the communication cost function to minimize as +multiples of the individual migration cost {\tt emraval}. Since this +value is provided as a floating point number, migration costs can be +set as fractions or as non-integer multiples of the cut metric +communication costs stored as integer edge loads. + +On return, every cell of the new mapping array defined by +{\tt SCOTCH\_\lbt map\lbt Init} that contained a $-1$ holds the number +of the target vertex to which the corresponding source vertex is +mapped. The numbering of target values is {\em not\/} based: target +vertices are numbered from $0$ to the number of target vertices, minus +$1$. + +\progret + +{\tt SCOTCH\_graphRemapFixedCompute} returns $0$ if the remapping has +been successfully computed, and $1$ else. In this latter case, the +mapping array may however have been partially or completely filled, +with some $-1$'s removed, but its contents are not significant. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphTabLoad}} +\label{sec-lib-graph-tab-load} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphTabLoad ( & const SCOTCH\_Graph * & grafptr, \\ + & SCOTCH\_Num * & parttab, \\ + & FILE * & stream) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphmapload ( & doubleprecision (*) & grafdat, \\ + & integer*{\it num} (*) & parttab, \\ + & integer & fildes, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphTabLoad} routine fills the +{\tt parttab} part array pointed to by {\tt parttab} with the mapping +data available in the \scotch\ mapping format (see section~\ref{sec-file-map}) +from stream {\tt stream}. + +This routine allows users to fill plain partition arrays rather than +opaque mapping structures, as routine {\tt SCOTCH\_\lbt graph\lbt +Map\lbt Load} does. + +The {\tt parttab} array should have been previously allocated, of a +size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as +there are vertices in the source graph. Upon completion, array cells +contain the indices of the parts to which vertices belong according to +the input mapping stream, or {\tt -1} if they were not mentioned in +the stream. If the source graph has vertex labels attached to its +vertices, mapping indices in the input stream are assumed to be vertex +labels as well. + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt fildes} associated +with the logical unit of the mapping file. + +\progret + +{\tt SCOTCH\_graphMapLoad} returns $0$ if the mapping structure +has been successfully loaded from {\tt stream}, and $1$ else. +\end{itemize} + +\subsection{High-level graph ordering routines} + +This routine provides high-level functionality and frees the +user from the burden of calling in sequence several of the low-level +routines described in the next section. + +\subsubsection{{\tt SCOTCH\_graphOrder}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphOrder ( & const SCOTCH\_Graph * & grafptr, \\ + & const SCOTCH\_Strat * & straptr, \\ + & SCOTCH\_Num * & permtab, \\ + & SCOTCH\_Num * & peritab, \\ + & SCOTCH\_Num * & cblkptr, \\ + & SCOTCH\_Num * & rangtab, \\ + & SCOTCH\_Num * & treetab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphorder ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & stradat, \\ + & integer*{\it num} (*) & permtab, \\ + & integer*{\it num} (*) & peritab, \\ + & integer*{\it num} & cblknbr, \\ + & integer*{\it num} (*) & rangtab, \\ + & integer*{\it num} (*) & treetab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphOrder} routine computes a block ordering of the +unknowns of the symmetric sparse matrix the adjacency structure of +which is represented by the source graph structure pointed to by {\tt +grafptr}, using the ordering strategy pointed to by {\tt stratptr}, +and returns ordering data in the scalar pointed to by {\tt cblkptr} +and the four arrays {\tt permtab}, {\tt peritab}, {\tt rangtab} and +{\tt treetab}. + +The {\tt permtab}, {\tt peritab}, {\tt rangtab} and {\tt treetab} +arrays should have been previously allocated, of a size sufficient to +hold as many {\tt SCOTCH\_\lbt Num} integers as there are vertices in +the source graph, plus one in the case of {\tt rangtab}. Any of the +five output fields can be set to {\tt NULL} if the corresponding +information is not needed. Since, in Fortran, there is no null +reference, passing a reference to {\tt grafptr} in these fields will +have the same effect. + +On return, {\tt permtab} holds the direct permutation of the unknowns, +that is, vertex $i$ of the original graph has index {\tt permtab[$i$]} +in the reordered graph, while {\tt peritab} holds the inverse +permutation, that is, vertex $i$ in the reordered graph had index {\tt +peritab[$i$]} in the original graph. All of these indices are numbered +according to the base value of the source graph: permutation indices +are numbered from {\tt baseval} to +$\mathtt{vertnbr} + \mathtt{baseval} - 1$, that is, +from $0$ to $\mathtt{vertnbr} - 1$ if the graph base is +$0$, and from $1$ to $\mathtt{vertnbr}$ if the graph base is $1$. + +The three other result fields, {\tt *cblkptr}, {\tt rangtab} and {\tt +treetab}, contain data related to the block structure. {\tt *cblkptr} +holds the number of column blocks of the produced ordering, and {\tt +rangtab} holds the starting indices of each of the permuted column +blocks, in increasing order, so that column block $i$ starts at index +{\tt rangtab\lbt [$i$]} and ends at index $(\mbox{\tt +rangtab}\lbt\mathtt{[}i + 1\mathtt{]} - 1)$, inclusive, in the new +ordering. {\tt treetab} holds the separators tree structure, that is, +{\tt treetab[$i$]} is the index of the father of column block $i$ in +the separators tree, or $-1$ if column block $i$ is the root of the +separators tree. Please refer to Section~\ref{sec-lib-format-order} +for more information. + +\progret + +{\tt SCOTCH\_graphOrder} returns $0$ if the ordering of the graph has +been successfully computed, and $1$ else. In this last case, the +{\tt rangtab}, {\tt permtab}, and {\tt peritab} arrays may however have +been partially or completely filled, but their contents are not significant. +\end{itemize} + +\subsection{Low-level graph ordering routines} + +All of the following routines operate on a {\tt SCOTCH\_\lbt Ordering} +structure that contains references to the permutation arrays to be +filled during the graph ordering process. + +\subsubsection{{\tt SCOTCH\_graphOrderCheck}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphOrderCheck ( & const SCOTCH\_Graph * & grafptr, \\ + & const SCOTCH\_Ordering * & ordeptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphordercheck ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & ordedat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphOrderCheck} routine checks the consistency of +the given {\tt SCOTCH\_\lbt Ordering} structure pointed to by {\tt ordeptr}. + +\progret + +{\tt SCOTCH\_graphOrderCheck} returns $0$ if ordering data are consistent, and +$1$ else. + +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphOrderCompute}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphOrderCompute ( & const SCOTCH\_Graph * & grafptr, \\ + & SCOTCH\_Ordering * & ordeptr, \\ + & const SCOTCH\_Strat * & straptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphordercompute ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & ordedat, \\ + & doubleprecision (*) & stradat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphOrderCompute} routine computes a block ordering +of the graph structure pointed to by {\tt grafptr}, using the ordering +strategy pointed to by {\tt stratptr}, and stores its result in the +ordering structure pointed to by {\tt ordeptr}. + +On return, the ordering structure holds a block ordering of the +given graph (see section~\ref{sec-lib-graph-order-init} for a +description of the ordering fields). + +\progret + +{\tt SCOTCH\_graphOrderCompute} returns $0$ if the ordering has been +successfully computed, and $1$ else. In this latter case, the ordering +arrays may however have been partially or completely filled, but their +contents are not significant. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphOrderComputeList}} +\label{sec-lib-graph-order-compute-list} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphOrderComputeList ( & const SCOTCH\_Graph * & grafptr, \\ + & SCOTCH\_Ordering * & ordeptr, \\ + & SCOTCH\_Num & listnbr, \\ + & SCOTCH\_Num * & listtab, \\ + & const SCOTCH\_Strat * & straptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphordercompute ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & ordedat, \\ + & integer*{\it num} & listnbr, \\ + & integer*{\it num} (*) & listtab, \\ + & doubleprecision (*) & stradat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphOrderComputeList} routine computes a block +ordering of a subgraph of the graph structure pointed to by {\tt +grafptr}, using the ordering strategy pointed to by {\tt stratptr}, +and stores its result in the ordering structure pointed to by {\tt +ordeptr}. The induced subgraph is described by means of a vertex +list: {\tt listnbr} holds the number of vertices to keep in the +induced subgraph, the indices of which are given, in any order, +in the {\tt listtab} array. + +On return, the ordering structure holds a block ordering of the +induced subgraph (see section~\ref{sec-lib-format-order} for a +description of the ordering fields). To compute this ordering, graph +ordering methods such as the minimum degree and minimum fill methods +will base on the original degree of the induced graph vertices, their +non-induced neighbors being considered as halo vertices (see +Section~\ref{sec-algo-nested-hybrid} for more information on halo +vertices). + +Because an ordering always refers to the full graph, the ordering +computed by {\tt SCOTCH\_\lbt graph\lbt Order\lbt Compute\lbt List} is +divided into two distinct parts: the induced graph vertices are ordered +by applying to the induced graph the strategy provided by the {\tt +stratptr} parameter, while non-induced vertex are ordered +consecutively with the highest available indices. Consequently, the +permuted indices of induced vertices range from {\tt baseval} to +$(\mathtt{listnbr} + \mathtt{baseval} - 1)$, while the permuted +indices of the remaining vertices range from $(\mathtt{listnbr} + +\mathtt{baseval})$ to $(\mathtt{vertnbr} + \mathtt{baseval} - +1)$, inclusive. The separation tree yielded by {\tt SCOTCH\_\lbt +graph\lbt Order\lbt Compute\lbt List} reflects this property: it +is made of two branches, the first one corresponding to the induced +subgraph, and the second one to the remaining vertices. Since these +two subgraphs are not considered to be connected, both will have their +own root, represented by a $-1$ value in the {\tt treetab} array of the +ordering. + +\progret + +{\tt SCOTCH\_graphOrderComputeList} returns $0$ if the ordering has been +successfully computed, and $1$ else. In this latter case, the ordering +arrays may however have been partially or completely filled, but their +contents are not significant. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphOrderExit}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_graphOrderExit ( & const SCOTCH\_Graph * & grafptr, \\ + & SCOTCH\_Ordering * & ordeptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphorderexit ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & ordedat) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphOrderExit} function frees the contents of a +{\tt SCOTCH\_\lbt Ordering} structure previously initialized by +{\tt SCOTCH\_\lbt graph\lbt Order\lbt Init}. All subsequent calls to +{\tt SCOTCH\_\lbt graph\lbt Order*} routines other than +{\tt SCOTCH\_\lbt graph\lbt Order\lbt Init}, using this structure +as parameter, may yield unpredictable results. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphOrderInit}} +\label{sec-lib-graph-order-init} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphOrderInit ( & const SCOTCH\_Graph * & grafptr, \\ + & SCOTCH\_Ordering * & ordeptr, \\ + & SCOTCH\_Num * & permtab, \\ + & SCOTCH\_Num * & peritab, \\ + & SCOTCH\_Num * & cblkptr, \\ + & SCOTCH\_Num * & rangtab, \\ + & SCOTCH\_Num * & treetab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphorderinit ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & ordedat, \\ + & integer*{\it num} (*) & permtab, \\ + & integer*{\it num} (*) & peritab, \\ + & integer*{\it num} & cblknbr, \\ + & integer*{\it num} (*) & rangtab, \\ + & integer*{\it num} (*) & treetab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graph\lbt Order\lbt Init} routine fills the ordering +structure pointed to by {\tt ordeptr} with all of the data that are +passed to it. Thus, all subsequent calls to ordering routines such as +{\tt SCOTCH\_\lbt graph\lbt Order\lbt Compute}, using this ordering +structure as parameter, will place ordering results in fields {\tt +permtab}, {\tt peritab}, {\tt *cblkptr}, {\tt rangtab} or {\tt +treetab}, if they are not set to {\tt NULL}. + +{\tt permtab} is the ordering permutation array, of size ${\tt +vertnbr}$, {\tt peritab} is the inverse ordering permutation array, +of size ${\tt vertnbr}$, {\tt cblkptr} is the pointer to a +{\tt SCOTCH\_\lbt Num} that will receive the number of produced +column blocks, {\tt rangtab} is the array that holds the column block +span information, of size $\mathtt{vertnbr} + 1$, and {\tt treetab} +is the array holding the structure of the separators tree, of size +${\tt vertnbr}$. See the above manual page of +{\tt SCOTCH\_graph\lbt Order}, as well as +section~\ref{sec-lib-format-order}, for an explanation of the +semantics of all of these fields. + +The {\tt SCOTCH\_\lbt graph\lbt Order\lbt Init} routine should be the +first function to be called upon a {\tt SCOTCH\_\lbt Ordering} +structure for ordering graphs. When the ordering structure is no +longer of use, the {\tt SCOTCH\_\lbt graph\lbt Order\lbt Exit} +function must be called, in order to to free its internal structures. + +\progret + +{\tt SCOTCH\_graphOrderInit} returns $0$ if the ordering structure has +been successfully initialized, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphOrderLoad}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphOrderLoad ( & const SCOTCH\_Graph * & grafptr, \\ + & SCOTCH\_Ordering * & ordeptr, \\ + & FILE * & stream) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphorderload ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & ordedat, \\ + & integer & fildes, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphOrderLoad} routine fills the +{\tt SCOTCH\_\lbt Ordering} structure pointed to by +{\tt ordeptr} with the ordering data available in +the \scotch\ ordering format (see section~\ref{sec-file-ord}) +from stream {\tt stream}. + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt fildes} associated +with the logical unit of the ordering file. + +\progret + +{\tt SCOTCH\_graphOrderLoad} returns $0$ if the ordering structure +has been successfully loaded from {\tt stream}, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphOrderSave}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphOrderSave ( & const SCOTCH\_Graph * & grafptr, \\ + & const SCOTCH\_Ordering * & ordeptr, \\ + & FILE * & stream) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphordersave ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & ordedat, \\ + & integer & fildes, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphOrderSave} routine saves the contents of the {\tt +SCOTCH\_\lbt Ordering} structure pointed to by {\tt ordeptr} to stream +{\tt stream}, in the \scotch\ ordering format (see +section~\ref{sec-file-ord}). + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt fildes} associated +with the logical unit of the ordering file. + +\progret + +{\tt SCOTCH\_graphOrderSave} returns $0$ if the ordering structure +has been successfully written to {\tt stream}, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphOrderSaveMap}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphOrderSaveMap ( & const SCOTCH\_Graph * & grafptr, \\ + & const SCOTCH\_Ordering * & ordeptr, \\ + & FILE * & stream) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphordersavemap ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & ordedat, \\ + & integer & fildes, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphOrderSaveMap} routine saves the block +partitioning data associated with the {\tt SCOTCH\_\lbt Ordering} +structure pointed to by {\tt ordeptr} to stream {\tt stream}, +in the \scotch\ mapping format (see section~\ref{sec-file-map}). +A target domain number is associated with every block, such that +all node vertices belonging to the same block are shown as belonging +to the same target vertex. +The resulting mapping file can be used by the {\tt gout} program +(see Section~\ref{sec-prog-gout}) to produce pictures showing +the different separators and blocks. + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt fildes} associated +with the logical unit of the mapping file. + +\progret + +{\tt SCOTCH\_graphOrderSaveMap} returns $0$ if the ordering structure +has been successfully written to {\tt stream}, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphOrderSaveTree}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphOrderSaveTree ( & const SCOTCH\_Graph * & grafptr, \\ + & const SCOTCH\_Ordering * & ordeptr, \\ + & FILE * & stream) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphordersavetree ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & ordedat, \\ + & integer & fildes, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphOrderSaveTree} routine saves the tree +hierarchy information associated with the {\tt SCOTCH\_\lbt Ordering} +structure pointed to by {\tt ordeptr} to stream {\tt stream}. + +The format of the tree output file resembles the one of a mapping or +ordering file: it is made up of as many lines as there are vertices in +the ordering. Each of these lines holds two integer numbers. The first +one is the index or the label of the vertex, and the second one is the +index of its parent node in the separators tree, or $-1$ if the vertex +belongs to a root node. + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt fildes} associated +with the logical unit of the tree mapping file. + +\progret + +{\tt SCOTCH\_graphOrderSaveTree} returns $0$ if the separators tree +structure has been successfully written to {\tt stream}, and $1$ else. +\end{itemize} + +\subsection{Mesh handling routines} +\label{sec-lib-mesh} + +\subsubsection{{\tt SCOTCH\_meshAlloc}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}l} +SCOTCH\_Mesh * SCOTCH\_meshAlloc ( & void) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_meshAlloc} function allocates a memory area of a +size sufficient to store a {\tt SCOTCH\_\lbt Mesh} structure. It is +the user's responsibility to free this memory when it is no longer +needed, using the {\tt SCOTCH\_\lbt mem\lbt Free} routine. The +allocated space must be initialized before use, by means of the +{\tt SCOTCH\_\lbt mesh\lbt Init} routine. + +\progret + +{\tt SCOTCH\_meshAlloc} returns the pointer to the memory area if it +has been successfully allocated, and {\tt NULL} else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_meshBuild}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_meshBuild ( & SCOTCH\_Mesh * & meshptr, \\ + & const SCOTCH\_Num & velmbas, \\ + & const SCOTCH\_Num & vnodbas, \\ + & const SCOTCH\_Num & velmnbr, \\ + & const SCOTCH\_Num & vnodnbr, \\ + & const SCOTCH\_Num * & verttab, \\ + & const SCOTCH\_Num * & vendtab, \\ + & const SCOTCH\_Num * & velotab, \\ + & const SCOTCH\_Num * & vnlotab, \\ + & const SCOTCH\_Num * & vlbltab, \\ + & const SCOTCH\_Num & edgenbr, \\ + & const SCOTCH\_Num * & edgetab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmeshbuild ( & doubleprecision (*) & meshdat, \\ + & integer*{\it num} & velmbas, \\ + & integer*{\it num} & vnodbas, \\ + & integer*{\it num} & velmnbr, \\ + & integer*{\it num} & vnodnbr, \\ + & integer*{\it num} (*) & verttab, \\ + & integer*{\it num} (*) & vendtab, \\ + & integer*{\it num} (*) & velotab, \\ + & integer*{\it num} (*) & vnlotab, \\ + & integer*{\it num} (*) & vlbltab, \\ + & integer*{\it num} & edgenbr, \\ + & integer*{\it num} (*) & edgetab, \\ + & integer*{\it num} & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_meshBuild} routine fills the source mesh structure +pointed to by {\tt meshptr} with all of the data that is passed to it. + +{\tt velmbas} and {\tt vnodbas} are the base values for the element +and node vertices, respectively. +{\tt velmnbr} and {\tt vnodnbr} are the number of element and node +vertices, respectively, such that either $\mathtt{velmbas} ++\mathtt{velmnbr}=\mathtt{vnodnbr}$ or $\mathtt{vnodbas} ++\mathtt{vnodnbr}=\mathtt{velmnbr}$ holds, and typically +$\min(\mathtt{velmbas}, \mathtt{vnodbas})$ is $0$ for +structures built from C and $1$ for structures built from Fortran. +{\tt verttab} is the adjacency index array, of size $({\tt velmnbr} + +{\tt vnodnbr} + 1)$ if the edge array is compact (that is, if +{\tt vendtab} equals $\mathtt{vendtab}+1$ or {\tt NULL}), or of +size $({\tt velmnbr} + {\tt vnodnbr}1)$ else. +{\tt vendtab} is the adjacency end index array, of size $({\tt velmnbr} + +{\tt vnodnbr})$ if it is disjoint from {\tt verttab}. +{\tt velotab} is the element vertex load array, of size {\tt velmnbr} +if it exists. +{\tt vnlotab} is the node vertex load array, of size {\tt vnodnbr} if +it exists. +{\tt vlbltab} is the vertex label array, of size $({\tt velmnbr} + +{\tt vnodnbr})$ if it exists. +{\tt edgenbr} is the number of arcs (that is, twice the number of edges). +{\tt edgetab} is the adjacency array, of size at least {\tt edgenbr} +(it can be more if the edge array is not compact). + +The {\tt vendtab}, {\tt velotab}, {\tt vnlotab} and {\tt vlbltab} +arrays are optional, and a {\tt NULL} pointer can be passed as +argument whenever they are not defined. +Since, in Fortran, there is no null reference, passing the +{\tt scotchf\lbt mesh\lbt build} routine a reference equal to +{\tt verttab} in the {\tt velotab}, {\tt vnlotab} or {\tt vlbltab} +fields makes them be considered as missing arrays. Setting +{\tt vendtab} to refer to one cell after {\tt verttab} yields the +same result, as it is the exact semantics of a compact vertex array. + +To limit memory consumption, {\tt SCOTCH\_\lbt mesh\lbo Build} does +not copy array data, but instead references them in the {\tt +SCOTCH\_\lbt Mesh} structure. Therefore, great care should be taken +not to modify the contents of the arrays passed to {\tt SCOTCH\_\lbt +mesh\lbo Build} as long as the mesh structure is in use. Every +update of the arrays should be preceded by a call to {\tt SCOTCH\_\lbt +mesh\lbo Exit}, to free internal mesh structures, and eventually +followed by a new call to {\tt SCOTCH\_\lbt mesh\lbo Build} to +re-build these internal structures so as to be able to use the new +mesh. + +To ensure that inconsistencies in user data do not result in an +erroneous behavior of the \libscotch\ routines, it is recommended, at +least in the development stage, to call the {\tt SCOTCH\_\lbt mesh\lbt Check} +routine on the newly created {\tt SCOTCH\_\lbt Mesh} structure, prior +to any other calls to \libscotch\ routines. + +\progret + +{\tt SCOTCH\_meshBuild} returns $0$ if the mesh structure has been +successfully set with all of the input data, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_meshCheck}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_meshCheck ( & const SCOTCH\_Mesh * & meshptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmeshcheck ( & doubleprecision (*) & meshdat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_meshCheck} routine checks the consistency of the +given {\tt SCOTCH\_\lbt Mesh} structure. It can be used in client +applications to determine if a mesh that has been created from +used-generated data by means of the {\tt SCOTCH\_\lbt mesh\lbt Build} +routine is consistent, prior to calling any other routines of the +\libscotch\ library. + +\progret + +{\tt SCOTCH\_meshCheck} returns $0$ if mesh data are consistent, and +$1$ else. + +\end{itemize} + +\subsubsection{{\tt SCOTCH\_meshData}} +\label{sec-lib-func-meshdata} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_meshData ( & const SCOTCH\_Mesh * & meshptr, \\ + & SCOTCH\_Num * & vebaptr, \\ + & SCOTCH\_Num * & vnbaptr, \\ + & SCOTCH\_Num * & velmptr, \\ + & SCOTCH\_Num * & vnodptr, \\ + & SCOTCH\_Num ** & verttab, \\ + & SCOTCH\_Num ** & vendtab, \\ + & SCOTCH\_Num ** & velotab, \\ + & SCOTCH\_Num ** & vnlotab, \\ + & SCOTCH\_Num ** & vlbltab, \\ + & SCOTCH\_Num * & edgeptr, \\ + & SCOTCH\_Num ** & edgetab, \\ + & SCOTCH\_Num * & degrptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmeshdata ( & doubleprecision (*) & meshdat, \\ + & integer*{\it num} (*) & indxtab, \\ + & integer*{\it num} & velobas, \\ + & integer*{\it num} & vnlobas, \\ + & integer*{\it num} & velmnbr, \\ + & integer*{\it num} & vnodnbr, \\ + & integer*{\it idx} & vertidx, \\ + & integer*{\it idx} & vendidx, \\ + & integer*{\it idx} & veloidx, \\ + & integer*{\it idx} & vnloidx, \\ + & integer*{\it idx} & vlblidx, \\ + & integer*{\it num} & edgenbr, \\ + & integer*{\it idx} & edgeidx, \\ + & integer*{\it num} & degrmax) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_meshData} routine is the dual of the +{\tt SCOTCH\_\lbt mesh\lbo Build} routine. It is a multiple +accessor that returns scalar values and array references. + +{\tt vebaptr} and {\tt vnbaptr} are pointers to locations that +will hold the mesh base value for elements and nodes, respectively +(the minimum of these two values is typically $0$ for structures built +from C and $1$ for structures built from Fortran). +{\tt velmptr} and {\tt vnodptr} are pointers to locations that +will hold the number of element and node vertices, respectively. +{\tt verttab} is the pointer to a location that will hold the reference to +the adjacency index array, of size $(\mathtt{*velmptr} + +\mathtt{*vnodptr} + 1)$ if the adjacency array is compact, or +of size $(\mathtt{*velmptr} + \mathtt{*vnodptr})$ else. +{\tt vendtab} is the pointer to a location that will hold the +reference to the adjacency end index array, and is equal to +$\mathtt{verttab} + 1$ if the adjacency array is compact. +{\tt velotab} and {\tt vnlotab} are pointers to locations that will +hold the reference to the element and node vertex load arrays, of +sizes {\tt *velmptr} and {\tt *vnodptr}, respectively. +{\tt vlbltab} is the pointer to a location that will hold the reference to +the vertex label array, of size $(\mathtt{*velmptr} + \mathtt{*vnodptr})$. +{\tt edgeptr} is the pointer to a location that will hold the number of arcs +(that is, twice the number of edges). +{\tt edgetab} is the pointer to a location that will hold the reference to +the adjacency array, of size at least {\tt edgenbr}. +{\tt degrptr} is the pointer to a location that will hold the maximum +vertex degree computed across all element and node vertices. + +Any of these pointers can be set to {\tt NULL} on input if the +corresponding information is not needed. Else, the reference to a +dummy area can be provided, where all unwanted data will be written. + +Since there are no pointers in Fortran, a specific mechanism is used +to allow users to access mesh arrays. The {\tt scotchf\lbt mesh\lbt +data} routine is passed an integer array, the first element of which is used +as a base address from which all other array indices are +computed. Therefore, instead of returning references, the routine +returns integers, which represent the starting index of each of the +relevant arrays with respect to the base input array, or {\tt +vertidx}, the index of {\tt verttab}, if they do not exist. For +instance, if some base array {\tt myarray\lbt (1)} is passed as +parameter {\tt indxtab}, then the first cell of array {\tt verttab} +will be accessible as {\tt myarray\lbt (vertidx)}. +In order for this feature to behave properly, the {\tt indxtab} +array must be word-aligned with the mesh arrays. This is +automatically enforced on most systems, but some care should be +taken on systems that allow one to access data that is not +word-aligned. On such systems, declaring the array after a +dummy {\tt double\lbt precision} array can coerce the compiler +into enforcing the proper alignment. Also, on 32\_64 architectures, +such indices can be larger than the size of a regular +{\tt INTEGER}. This is why the indices to be returned are defined by +means of a specific integer type. See +Section~\ref{sec-lib-inttypesize} for more information on this +issue. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_meshExit}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_meshExit ( & SCOTCH\_Mesh * & meshptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmeshexit ( & doubleprecision (*) & meshdat) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_meshExit} function frees the contents of a +{\tt SCOTCH\_\lbt Mesh} structure previously initialized by +{\tt SCOTCH\_\lbt meshInit}. All subsequent calls to +{\tt SCOTCH\_\lbt mesh*} routines other than {\tt SCOTCH\_\lbt +meshInit}, using this structure as parameter, may yield +unpredictable results. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_meshGraph}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_meshGraph ( & const SCOTCH\_Mesh * & meshptr, \\ + & SCOTCH\_Graph * & grafptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmeshgraph ( & doubleprecision (*) & meshdat, \\ + & doubleprecision (*) & grafdat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_meshGraph} routine builds a graph from a mesh. It +creates in the {\tt SCOTCH\_\lbt Graph} structure pointed to by {\tt +grafptr} a graph having as many vertices as there are nodes in the +{\tt SCOTCH\_\lbt Mesh} structure pointed to by {\tt meshptr}, and +where there is an edge between any two graph vertices if and only if +there exists in the mesh an element containing both of the associated +nodes. Consequently, all of the elements of the mesh are turned into +cliques in the resulting graph. + +In order to save memory space as well as computation time, in the +current implementation of {\tt SCOTCH\_meshGraph}, some mesh +arrays are shared with the graph structure. Therefore, one should make +sure that the graph must no longer be used after the mesh structure +is freed. The graph structure can be freed before or after the mesh +structure, but must not be used after the mesh structure is freed. + +\progret + +{\tt SCOTCH\_meshGraph} returns $0$ if the graph structure has been +successfully allocated and filled, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_meshInit}} +\label{sec-lib-func-meshinit} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_meshInit ( & SCOTCH\_Mesh * & meshptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmeshinit ( & doubleprecision (*) & meshdat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_meshInit} function initializes a {\tt SCOTCH\_\lbt +Mesh} structure so as to make it suitable for future operations. It +should be the first function to be called upon a {\tt SCOTCH\_\lbt +Mesh} structure. When the mesh data is no longer of use, call +function {\tt SCOTCH\_\lbt mesh\lbt Exit} to free its internal +structures. + +\progret + +{\tt SCOTCH\_meshInit} returns $0$ if the mesh structure has been +successfully initialized, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_meshLoad}} +\label{sec-lib-func-meshload} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_meshLoad ( & SCOTCH\_Mesh * & meshptr, \\ + & FILE * & stream, \\ + & SCOTCH\_Num & baseval) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmeshload ( & doubleprecision (*) & meshdat, \\ + & integer & fildes, \\ + & integer*{\it num} & baseval, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_meshLoad} routine fills the {\tt +SCOTCH\_\lbt Mesh} structure pointed to by {\tt meshptr} with the +source mesh description available from stream {\tt stream} in the +\scotch\ mesh format (see section~\ref{sec-file-smesh}). + +To ease the handling of source mesh files by programs written in C as +well as in Fortran, The base value of the mesh to read can be set +to {\tt 0} or {\tt 1}, by setting the {\tt baseval} parameter to the +proper value. A value of {\tt -1} indicates that the mesh base should +be the same as the one provided in the mesh description that is read +from {\tt stream}. + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt fildes} associated +with the logical unit of the mesh file. + +\progret + +{\tt SCOTCH\_meshLoad} returns $0$ if the mesh structure has been +successfully allocated and filled with the data read, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_meshSave}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_meshSave ( & const SCOTCH\_Mesh * & meshptr, \\ + & FILE * & stream) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmeshsave ( & doubleprecision (*) & meshdat, \\ + & integer & fildes, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_meshSave} routine saves the contents of the {\tt +SCOTCH\_\lbt Mesh} structure pointed to by {\tt meshptr} to stream +{\tt stream}, in the \scotch\ mesh format (see +section~\ref{sec-file-smesh}). + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt fildes} associated +with the logical unit of the mesh file. + +\progret + +{\tt SCOTCH\_meshSave} returns $0$ if the mesh structure has been +successfully written to {\tt stream}, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_meshSize}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_meshSize ( & const SCOTCH\_Mesh * & meshptr, \\ + & SCOTCH\_Num * & velmptr, \\ + & SCOTCH\_Num * & vnodptr, \\ + & SCOTCH\_Num * & edgeptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmeshsize ( & doubleprecision (*) & meshdat, \\ + & integer*{\it num} & velmnbr, \\ + & integer*{\it num} & vnodnbr, \\ + & integer*{\it num} & edgenbr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_meshSize} routine fills the three areas of type +{\tt SCOTCH\_\lbt Num} pointed to by {\tt velmptr}, {\tt vnodptr} +and {\tt edgeptr} with the number of element vertices, node +vertices and arcs (that is, twice the number of edges) of the +given mesh pointed to by {\tt meshptr}, respectively. + +Any of these pointers can be set to {\tt NULL} on input if the +corresponding information is not needed. Else, the reference to a +dummy area can be provided, where all unwanted data will be written. + +This routine is useful to get the size of a mesh read by means +of the {\tt SCOTCH\_\lbt mesh\lbo Load} routine, in order to allocate +auxiliary arrays of proper sizes. If the whole structure of the +mesh is wanted, function {\tt SCOTCH\_mesh\lbo Data} should be +preferred. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_meshStat}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_meshStat ( & const SCOTCH\_Mesh * & meshptr, \\ + & SCOTCH\_Num * & vnlominptr, \\ + & SCOTCH\_Num * & vnlomaxptr, \\ + & SCOTCH\_Num * & vnlosumptr, \\ + & double * & vnloavgptr, \\ + & double * & vnlodltptr, \\ + & SCOTCH\_Num * & edegminptr, \\ + & SCOTCH\_Num * & edegmaxptr, \\ + & double * & edegavgptr, \\ + & double * & edegdltptr, \\ + & SCOTCH\_Num * & ndegminptr, \\ + & SCOTCH\_Num * & ndegmaxptr, \\ + & double * & ndegavgptr, \\ + & double * & ndegdltptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmeshstat ( & doubleprecision (*) & meshdat, \\ + & integer*{\it num} & vnlomin, \\ + & integer*{\it num} & vnlomax, \\ + & integer*{\it num} & vnlosum, \\ + & doubleprecision & vnloavg, \\ + & doubleprecision & vnlodlt, \\ + & integer*{\it num} & edegmin, \\ + & integer*{\it num} & edegmax, \\ + & doubleprecision & edegavg, \\ + & doubleprecision & edegdlt, \\ + & integer*{\it num} & ndegmin, \\ + & integer*{\it num} & ndegmax, \\ + & doubleprecision & ndegavg, \\ + & doubleprecision & ndegdlt) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_meshStat} routine produces some statistics regarding +the mesh structure pointed to by {\tt meshptr}. +{\tt vnlomin}, {\tt vnlomax}, {\tt vnlosum}, {\tt vnloavg} and +{\tt vnlodlt} are the minimum node vertex load, the maximum node +vertex load, the sum of all node vertex loads, the average node +vertex load, and the variance of the node vertex loads, respectively. +{\tt edegmin}, {\tt edegmax}, {\tt edegavg} and +{\tt edegdlt} are the minimum element vertex degree, the maximum +element vertex degree, the average element vertex degree, and the +variance of the element vertex degrees, respectively. +{\tt ndegmin}, {\tt ndegmax}, {\tt ndegavg} and +{\tt ndegdlt} are the minimum element vertex degree, the maximum +element vertex degree, the average element vertex degree, and the +variance of the element vertex degrees, respectively. +\end{itemize} + +\subsection{High-level mesh ordering routines} + +This routine provides high-level functionality and frees the +user from the burden of calling in sequence several of the low-level +routines described afterward. + +\subsubsection{{\tt SCOTCH\_meshOrder}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_meshOrder ( & const SCOTCH\_Mesh * & meshptr, \\ + & const SCOTCH\_Strat * & straptr, \\ + & SCOTCH\_Num * & permtab, \\ + & SCOTCH\_Num * & peritab, \\ + & SCOTCH\_Num * & cblkptr, \\ + & SCOTCH\_Num * & rangtab, \\ + & SCOTCH\_Num * & treetab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmeshorder ( & doubleprecision (*) & meshdat, \\ + & doubleprecision (*) & stradat, \\ + & integer*{\it num} (*) & permtab, \\ + & integer*{\it num} (*) & peritab, \\ + & integer*{\it num} & cblknbr, \\ + & integer*{\it num} (*) & rangtab, \\ + & integer*{\it num} (*) & treetab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_meshOrder} routine computes a block ordering of the +unknowns of the symmetric sparse matrix the adjacency structure of +which is represented by the elements that connect the nodes of the +source mesh structure pointed to by {\tt meshptr}, using the ordering +strategy pointed to by {\tt stratptr}, and returns ordering data in +the scalar pointed to by {\tt cblkptr} and the four arrays +{\tt permtab}, {\tt peritab}, {\tt rangtab} and {\tt treetab}. + +The {\tt permtab}, {\tt peritab}, {\tt rangtab} and {\tt treetab} +arrays should have been previously allocated, of a size sufficient to +hold as many {\tt SCOTCH\_\lbt Num} integers as there are node +vertices in the source mesh, plus one in the case of {\tt rangtab}. +Any of the five output fields can be set to {\tt NULL} if the +corresponding information is not needed. Since, in Fortran, there is +no null reference, passing a reference to {\tt meshptr} in these +fields will have the same effect. + +On return, {\tt permtab} holds the direct permutation of the unknowns, +that is, node vertex $i$ of the original mesh has index {\tt permtab[$i$]} +in the reordered mesh, while {\tt peritab} holds the inverse +permutation, that is, node vertex $i$ in the reordered mesh had index +{\tt peritab[$i$]} in the original mesh. All of these indices are numbered +according to the base value of the source mesh: permutation indices +are numbered from $\min(\mathtt{velmbas},\mathtt{vnodbas})$ to +$\mathtt{vnodnbr} + \min(\mathtt{velmbas},\mathtt{vnodbas}) - +1$, that is, from $0$ to $\mathtt{vnodnbr} - 1$ if the mesh base is +$0$, and from $1$ to $\mathtt{vnodnbr}$ if the mesh base is $1$. +The base value for mesh orderings is taken as +$\min(\mathtt{velmbas},\mathtt{vnodbas})$, and not just as +{\tt vnodbas}, such that orderings that are computed on some mesh +have exactly the same index range as orderings that would be computed +on the graph obtained from the original mesh by means of the +{\tt SCOTCH\_\lbt mesh\lbt Graph} routine. + +The three other result fields, {\tt *cblkptr}, {\tt rangtab} and {\tt +treetab}, contain data related to the block structure. {\tt *cblkptr} +holds the number of column blocks of the produced ordering, and {\tt +rangtab} holds the starting indices of each of the permuted column +blocks, in increasing order, so that column block $i$ starts at index +{\tt rangtab\lbt [$i$]} and ends at index $(\mbox{\tt +rangtab}\lbt\mathtt{[}i + 1\mathtt{]} - 1)$, inclusive, in the new +ordering. {\tt treetab} holds the separators tree structure, that is, +{\tt treetab[$i$]} is the index of the father of column block $i$ in +the separators tree, or $-1$ if column block $i$ is the root of the +separators tree. Please refer to Section~\ref{sec-lib-format-order} +for more information. + +\progret + +{\tt SCOTCH\_meshOrder} returns $0$ if the ordering of the mesh has +been successfully computed, and $1$ else. In this last case, the +{\tt rangtab}, {\tt permtab}, and {\tt peritab} arrays may however have +been partially or completely filled, but their contents are not significant. +\end{itemize} + +\subsection{Low-level mesh ordering routines} + +All of the following routines operate on a {\tt SCOTCH\_\lbt Ordering} +structure that contains references to the permutation arrays to be +filled during the mesh ordering process. + +\subsubsection{{\tt SCOTCH\_meshOrderCheck}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_meshOrderCheck ( & const SCOTCH\_Mesh * & meshptr, \\ + & const SCOTCH\_Ordering * & ordeptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmeshordercheck ( & doubleprecision (*) & meshdat, \\ + & doubleprecision (*) & ordedat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_meshOrderCheck} routine checks the consistency of +the given {\tt SCOTCH\_\lbt Ordering} structure pointed to by {\tt ordeptr}. + +\progret + +{\tt SCOTCH\_meshOrderCheck} returns $0$ if ordering data are consistent, and +$1$ else. + +\end{itemize} + +\subsubsection{{\tt SCOTCH\_meshOrderCompute}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_meshOrderCompute ( & const SCOTCH\_Mesh * & meshptr, \\ + & SCOTCH\_Ordering * & ordeptr, \\ + & const SCOTCH\_Strat * & straptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmeshordercompute ( & doubleprecision (*) & meshdat, \\ + & doubleprecision (*) & ordedat, \\ + & doubleprecision (*) & stradat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_meshOrderCompute} routine computes a block ordering +of the mesh structure pointed to by {\tt grafptr}, using the mapping +strategy pointed to by {\tt stratptr}, and stores its result in the +ordering structure pointed to by {\tt ordeptr}. + +On return, the ordering structure holds a block ordering of the +given mesh (see section~\ref{sec-lib-mesh-order-init} for a +description of the ordering fields). + +\progret + +{\tt SCOTCH\_meshOrderCompute} returns $0$ if the ordering has been +successfully computed, and $1$ else. In this latter case, the ordering +arrays may however have been partially or completely filled, but their +contents are not significant. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_meshOrderExit}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_meshOrderExit ( & const SCOTCH\_Mesh * & meshptr, \\ + & SCOTCH\_Ordering * & ordeptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmeshorderexit ( & doubleprecision (*) & meshdat, \\ + & doubleprecision (*) & ordedat) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_meshOrderExit} function frees the contents of a +{\tt SCOTCH\_\lbt Ordering} structure previously initialized by +{\tt SCOTCH\_\lbt mesh\lbt Order\lbt Init}. All subsequent calls to +{\tt SCOTCH\_\lbt mesh\lbt Order*} routines other than +{\tt SCOTCH\_\lbt mesh\lbt Order\lbt Init}, using this structure +as parameter, may yield unpredictable results. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_meshOrderInit}} +\label{sec-lib-mesh-order-init} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_meshOrderInit ( & const SCOTCH\_Mesh * & meshptr, \\ + & SCOTCH\_Ordering * & ordeptr, \\ + & SCOTCH\_Num * & permtab, \\ + & SCOTCH\_Num * & peritab, \\ + & SCOTCH\_Num * & cblkptr, \\ + & SCOTCH\_Num * & rangtab, \\ + & SCOTCH\_Num * & treetab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmeshorderinit ( & doubleprecision (*) & meshdat, \\ + & doubleprecision (*) & ordedat, \\ + & integer*{\it num} (*) & permtab, \\ + & integer*{\it num} (*) & peritab, \\ + & integer*{\it num} & cblknbr, \\ + & integer*{\it num} (*) & rangtab, \\ + & integer*{\it num} (*) & treetab, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_mesh\lbt Order\lbt Init} routine fills the ordering +structure pointed to by {\tt ordeptr} with all of the data that are +passed to it. Thus, all subsequent calls to ordering routines such as +{\tt SCOTCH\_\lbt mesh\lbt Order\lbt Compute}, using this ordering +structure as parameter, will place ordering results in fields {\tt +permtab}, {\tt peritab}, {\tt *cblkptr}, {\tt rangtab} or {\tt +treetab}, if they are not set to {\tt NULL}. + +{\tt permtab} is the ordering permutation array, of size ${\tt +vnodnbr}$, {\tt peritab} is the inverse ordering permutation array, +of size ${\tt vnodnbr}$, {\tt cblkptr} is the pointer to a +{\tt SCOTCH\_\lbt Num} that will receive the number of produced +column blocks, {\tt rangtab} is the array that holds the column block +span information, of size $\mathtt{vnodnbr} + 1$, and {\tt treetab} +is the array holding the structure of the separators tree, of size +${\tt vnodnbr}$. See the above manual page of +{\tt SCOTCH\_mesh\lbt Order}, as well as +section~\ref{sec-lib-format-order}, for an explanation of the +semantics of all of these fields. + +The {\tt SCOTCH\_\lbt mesh\lbt Order\lbt Init} routine should be the +first function to be called upon a {\tt SCOTCH\_\lbt Ordering} +structure for ordering meshes. When the ordering structure is no +longer of use, the {\tt SCOTCH\_\lbt mesh\lbt Order\lbt Exit} +function must be called, in order to to free its internal structures. + +\progret + +{\tt SCOTCH\_meshOrderInit} returns $0$ if the ordering structure has +been successfully initialized, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_meshOrderSave}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_meshOrderSave ( & const SCOTCH\_Mesh * & meshptr, \\ + & const SCOTCH\_Ordering * & ordeptr, \\ + & FILE * & stream) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmeshordersave ( & doubleprecision (*) & meshdat, \\ + & doubleprecision (*) & ordedat, \\ + & integer & fildes, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_meshOrderSave} routine saves the contents of the {\tt +SCOTCH\_\lbt Ordering} structure pointed to by {\tt ordeptr} to stream +{\tt stream}, in the \scotch\ ordering format (see +section~\ref{sec-file-ord}). + +\progret + +{\tt SCOTCH\_meshOrderSave} returns $0$ if the ordering structure +has been successfully written to {\tt stream}, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_meshOrderSaveMap}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_meshOrderSaveMap ( & const SCOTCH\_Mesh * & meshptr, \\ + & const SCOTCH\_Ordering * & ordeptr, \\ + & FILE * & stream) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmeshordersavemap ( & doubleprecision (*) & meshdat, \\ + & doubleprecision (*) & ordedat, \\ + & integer & fildes, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_meshOrderSaveMap} routine saves the block +partitioning data associated with the {\tt SCOTCH\_\lbt Ordering} +structure pointed to by {\tt ordeptr} to stream {\tt stream}, +in the \scotch\ mapping format (see section~\ref{sec-file-map}). +A target domain number is associated with every block, such that +all node vertices belonging to the same block are shown as belonging +to the same target vertex. + +This mapping file can then be used by the {\tt gout} program +(see section~\ref{sec-prog-gout}) to produce pictures showing +the different separators and blocks. Since {\tt gout} only takes +graphs as input, the mesh has to be converted into a graph by +means of the {\tt gmk\_\lbt msh} program (see +section~\ref{sec-prog-gmkmsh}). + +\progret + +{\tt SCOTCH\_meshOrderSaveMap} returns $0$ if the ordering structure +has been successfully written to {\tt stream}, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_meshOrderSaveTree}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_meshOrderSaveTree ( & const SCOTCH\_Mesh * & meshptr, \\ + & const SCOTCH\_Ordering * & ordeptr, \\ + & FILE * & stream) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmeshordersavetree ( & doubleprecision (*) & meshdat, \\ + & doubleprecision (*) & ordedat, \\ + & integer & fildes, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_meshOrderSaveTree} routine saves the tree +hierarchy information associated with the {\tt SCOTCH\_\lbt Ordering} +structure pointed to by {\tt ordeptr} to stream {\tt stream}. + +The format of the tree output file resembles the one of a mapping or +ordering file: it is made up of as many lines as there are node +vertices in the ordering. Each of these lines holds two integer +numbers. The first one is the index or the label of the node vertex, +starting from {\tt baseval}, and the second one is the index of its +parent node in the separators tree, or $-1$ if the vertex belongs to a +root node. + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt fildes} associated +with the logical unit of the tree mapping file. + +\progret + +{\tt SCOTCH\_meshOrderSaveTree} returns $0$ if the separators tree +structure has been successfully written to {\tt stream}, and $1$ else. +\end{itemize} + +\subsection{Strategy handling routines} +\label{sec-lib-strat} + +\subsubsection{{\tt SCOTCH\_stratAlloc}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}l} +SCOTCH\_Strat * SCOTCH\_stratAlloc ( & void) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_stratAlloc} function allocates a memory area of a +size sufficient to store a {\tt SCOTCH\_\lbt Strat} structure. It is +the user's responsibility to free this memory when it is no longer +needed, using the {\tt SCOTCH\_\lbt mem\lbt Free} routine. The +allocated space must be initialized before use, by means of the +{\tt SCOTCH\_\lbt strat\lbt Init} routine. + +\progret + +{\tt SCOTCH\_stratAlloc} returns the pointer to the memory area if it +has been successfully allocated, and {\tt NULL} else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_stratExit}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_stratExit ( & SCOTCH\_Strat * & archptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfstratexit ( & doubleprecision (*) & stradat) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_stratExit} function frees the contents of a +{\tt SCOTCH\_\lbt Strat} structure previously initialized by +{\tt SCOTCH\_\lbt strat\lbt Init}. All subsequent calls to +{\tt SCOTCH\_\lbt strat} routines other than {\tt SCOTCH\_\lbt +strat\lbt Init}, using this structure as parameter, may yield +unpredictable results. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_stratInit}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_stratInit ( & SCOTCH\_Strat * & straptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfstratinit ( & doubleprecision (*) & stradat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_stratInit} function initializes a {\tt SCOTCH\_\lbt +Strat} structure so as to make it suitable for future operations. It +should be the first function to be called upon a {\tt SCOTCH\_\lbt +Strat} structure. When the strategy data is no longer of use, call +function {\tt SCOTCH\_\lbt strat\lbt Exit} to free its internal +structures. + +\progret + +{\tt SCOTCH\_stratInit} returns $0$ if the strategy structure has been +successfully initialized, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_stratSave}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_stratSave ( & const SCOTCH\_Strat * & straptr, \\ + & FILE * & stream) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfstratsave ( & doubleprecision (*) & stradat, \\ + & integer & fildes, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_stratSave} routine saves the contents of the {\tt +SCOTCH\_\lbt Strat} structure pointed to by {\tt straptr} to stream +{\tt stream}, in the form of a text string. The methods and +parameters of the strategy string depend on the type of the strategy, +that is, whether it is a bipartitioning, mapping, or ordering +strategy, and to which structure it applies, that is, graphs or +meshes. + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt fildes} associated +with the logical unit of the output file. + +\progret + +{\tt SCOTCH\_stratSave} returns $0$ if the strategy string has been +successfully written to {\tt stream}, and $1$ else. +\end{itemize} + +\subsection{Strategy creation routines} +\label{sec-lib-strat-creation} + +Strategy creation routines parse the user-provided strategy string and +populate the given opaque strategy object with a tree-shaped structure +that represents the parsed expression. It is this structure that will +be later traversed by the generic routines for partitioning, mapping or +ordering, so as to determine which specific partitioning, mapping or +ordering method to be called on a subgraph being considered. + +Because strategy creation routines call third-party lexical analyzers +that may have been implemented in a non-reentrant way, no guarantee is +given on the reentrance of these routines. Consequently, strategy +creation routines that might be called simultaneously by multiple +threads should be protected by a mutex. + +\subsubsection{{\tt SCOTCH\_stratGraphBipart}} +\label{sec-lib-strat-graph-bipart} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_stratGraphBipart ( & SCOTCH\_Strat * & straptr, \\ + & const char * & string) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfstratgraphbipart ( & doubleprecision (*) & stradat, \\ + & character (*) & string, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_stratGraphBipart} routine fills the strategy structure +pointed to by {\tt straptr} with the graph bipartitioning strategy +string pointed to by {\tt string}. From this point, the strategy +structure can only be used as a graph bipartitioning strategy, to be +used by function {\tt SCOTCH\_\lbt arch\lbt Build}, for instance. + +When using the C interface, the array of characters pointed to by +{\tt string} must be null-terminated. + +\progret + +{\tt SCOTCH\_stratGraphBipart} returns $0$ if the strategy string has +been successfully set, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_stratGraphClusterBuild}} +\label{sec-lib-func-stratgraphclusterbuild} +\index{Clustering} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_stratGraphClusterBuild ( & SCOTCH\_Strat * & straptr, \\ + & const SCOTCH\_Num & flagval, \\ + & const SCOTCH\_Num & pwgtmax, \\ + & const double & densmin, \\ + & const double & bbalval) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfstratgraphclusterbuild ( & doubleprecision (*) & stradat, \\ + & integer*{\it num} & flagval, \\ + & integer*{\it num} & pwgtmax, \\ + & doubleprecision & densmin, \\ + & doubleprecision & bbalval, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_stratGraphClusterBuild} routine fills the strategy +structure pointed to by {\tt straptr} with a default clustering +strategy tuned according to the preference flags passed as +{\tt flagval}, the maximum cluster vertex weight {\tt pwgtmax}, +the minimum edge density {\tt densmin}, and the bipartition imbalance +ratio {\tt bbalval}. From this point, the strategy structure +can only be used as a mapping strategy, to be used by a mapping +function such as {\tt SCOTCH\_\lbt graph\lbt Map}. + +Recursive bipartitioning will be applied to the graph, every +bipartition allowing for an imbalance tolerance of {\tt bbalval}. +Recursion will stop if either cluster size becomes smaller than +{\tt pwgtmax}, or cluster edge density becomes higher than +{\tt densmin}, which represents the fraction of edges internal to the +cluster with respect to a complete graph. See +Section~\ref{sec-lib-format-strat-default} for a description of the +available flags. + +\progret + +{\tt SCOTCH\_stratGraphClusterBuild} returns $0$ if the strategy string +has been successfully set, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_stratGraphMap}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_stratGraphMap ( & SCOTCH\_Strat * & straptr, \\ + & const char * & string) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfstratgraphmap ( & doubleprecision (*) & stradat, \\ + & character (*) & string, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_stratGraphMap} routine fills the strategy +structure pointed to by {\tt straptr} with the graph mapping +strategy string pointed to by {\tt string}. From this point, +the strategy structure can only be used as a mapping strategy, +to be used by function {\tt SCOTCH\_\lbt graph\lbt Map}, +for instance. + +When using the C interface, the array of characters pointed to by +{\tt string} must be null-terminated. + +\progret + +{\tt SCOTCH\_stratGraphMap} returns $0$ if the strategy string +has been successfully set, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_stratGraphMapBuild}} +\label{sec-lib-func-stratgraphmapbuild} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_stratGraphMapBuild ( & SCOTCH\_Strat * & straptr, \\ + & const SCOTCH\_Num & flagval, \\ + & const SCOTCH\_Num & partnbr, \\ + & const double & balrat) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfstratgraphmapbuild ( & doubleprecision (*) & stradat, \\ + & integer*{\it num} & flagval, \\ + & integer*{\it num} & partnbr, \\ + & doubleprecision & balrat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_stratGraphMapBuild} routine fills the strategy +structure pointed to by {\tt straptr} with a default mapping strategy +tuned according to the preference flags passed as {\tt flagval} and +to the desired number of parts {\tt partnbr} and imbalance ratio +{\tt balrat}. From this point, the strategy structure can only be used +as a mapping strategy, to be used by function +{\tt SCOTCH\_\lbt graph\lbt Map}, for instance. See +Section~\ref{sec-lib-format-strat-default} for a description of the +available flags. + +\progret + +{\tt SCOTCH\_stratGraphMapBuild} returns $0$ if the strategy string +has been successfully set, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_stratGraphPartOvl}} +\label{sec-lib-func-stratgraphpartovl} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_stratGraphPartOvl ( & SCOTCH\_Strat * & straptr, \\ + & const char * & string) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfstratgraphpartovl ( & doubleprecision (*) & stradat, \\ + & character (*) & string, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_stratGraphPartOvl} routine fills the strategy +structure pointed to by {\tt straptr} with the graph partitioning with +overlap strategy string pointed to by {\tt string}. From this point, +the strategy structure can only be used as a partitioning with overlap +strategy, to be used by function +{\tt SCOTCH\_\lbt graph\lbt Part\lbt Ovl} only. + +When using the C interface, the array of characters pointed to by +{\tt string} must be null-terminated. + +\progret + +{\tt SCOTCH\_stratGraphPartOvl} returns $0$ if the strategy string +has been successfully set, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_stratGraphPartOvlBuild}} +\label{sec-lib-func-stratgraphpartovlbuild} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_stratGraphPartOvlBuild ( & SCOTCH\_Strat * & straptr, \\ + & const SCOTCH\_Num & flagval, \\ + & const SCOTCH\_Num & partnbr, \\ + & const double & balrat) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfstratgraphpartovlbuild ( & doubleprecision (*) & stradat, \\ + & integer*{\it num} & flagval, \\ + & integer*{\it num} & partnbr, \\ + & doubleprecision & balrat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_stratGraphPartOvlBuild} routine fills the strategy +structure pointed to by {\tt straptr} with a default partitioning with +overlap strategy tuned according to the preference flags passed as +{\tt flagval} and to the desired number of parts {\tt partnbr} and +imbalance ratio {\tt balrat}. From this point, the strategy structure +can only be used as a partitioning with overlap strategy, to be used +by function {\tt SCOTCH\_\lbt graph\lbt Part\lbt Ovl} only. See +Section~\ref{sec-lib-format-strat-default} for a description of the +available flags. + +\progret + +{\tt SCOTCH\_stratGraphPartOvlBuild} returns $0$ if the strategy string +has been successfully set, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_stratGraphOrder}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_stratGraphOrder ( & SCOTCH\_Strat * & straptr, \\ + & const char * & string) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfstratgraphorder ( & doubleprecision (*) & stradat, \\ + & character (*) & string, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_stratGraphOrder} routine fills the strategy +structure pointed to by {\tt straptr} with the graph ordering +strategy string pointed to by {\tt string}. From this point, +the strategy structure can only be used as a graph ordering +strategy, to be used by function +{\tt SCOTCH\_\lbt graph\lbt Order}, for instance. + +When using the C interface, the array of characters pointed to by +{\tt string} must be null-terminated. + +\progret + +{\tt SCOTCH\_stratGraphOrder} returns $0$ if the strategy string +has been successfully set, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_stratGraphOrderBuild}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_stratGraphOrderBuild ( & SCOTCH\_Strat * & straptr, \\ + & const SCOTCH\_Num & flagval, \\ + & const SCOTCH\_Num & levlnbr, \\ + & const double & balrat) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfstratgraphorderbuild ( & doubleprecision (*) & stradat, \\ + & integer*{\it num} & flagval, \\ + & integer*{\it num} & levlnbr, \\ + & doubleprecision & balrat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_stratGraphOrderBuild} routine fills the strategy +structure pointed to by {\tt straptr} with a default sequential +ordering strategy tuned according to the preference flags passed as +{\tt flagval} and to the desired nested dissection imbalance ratio +{\tt balrat}. From this point, the strategy structure can only be used +as an ordering strategy, to be used by function {\tt SCOTCH\_\lbt +graph\lbt Order}, for instance. + +See Section~\ref{sec-lib-format-strat-default} for a description of +the available flags. When any of the {\tt SCOTCH\_\lbt STRAT\lbt +LEVEL\lbt MIN} or {\tt SCOTCH\_\lbt STRAT\lbt LEVEL\lbt MAX} flags is +set, the {\tt levlnbr} parameter is taken into account. + +\progret + +{\tt SCOTCH\_stratGraphOrderBuild} returns $0$ if the strategy string +has been successfully set, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_stratMeshOrder}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_stratMeshOrder ( & SCOTCH\_Strat * & straptr, \\ + & const char * & string) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfstratmeshorder ( & doubleprecision (*) & stradat, \\ + & character (*) & string, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_stratMeshOrder} routine fills the strategy +structure pointed to by {\tt straptr} with the mesh ordering +strategy string pointed to by {\tt string}. From this point, +strategy {\tt strat} can only be used as a mesh ordering +strategy, to be used by function +{\tt SCOTCH\_\lbt mesh\lbt Order}, for instance. + +When using the C interface, the array of characters pointed to by +{\tt string} must be null-terminated. + +\progret + +{\tt SCOTCH\_stratMeshOrder} returns $0$ if the strategy string +has been successfully set, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_stratMeshOrderBuild}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_stratMeshOrderBuild ( & SCOTCH\_Strat * & straptr, \\ + & const SCOTCH\_Num & flagval, \\ + & const double & balrat) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfstratmeshorderbuild ( & doubleprecision (*) & stradat, \\ + & integer*{\it num} & flagval, \\ + & doubleprecision & balrat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_stratMeshOrderBuild} routine fills the strategy +structure pointed to by {\tt straptr} with a default ordering strategy +tuned according to the preference flags passed as {\tt flagval} and to +the desired nested dissection imbalance ratio {\tt balrat}. From this +point, the strategy structure can only be used as an ordering +strategy, to be used by function {\tt SCOTCH\_\lbt mesh\lbt Order}, +for instance. See Section~\ref{sec-lib-format-strat-default} for a +description of the available flags. + +\progret + +{\tt SCOTCH\_stratMesdOrderBuild} returns $0$ if the strategy string +has been successfully set, and $1$ else. +\end{itemize} + +\subsection{Geometry handling routines} +\label{sec-lib-geom} + +Since the \scotch\ project is based on algorithms that rely +on topology data only, geometry data do not play an +important role in the \libscotch\ library. They are only +relevant to programs that display graphs, such as the +{\tt gout} program. However, since all routines that are +used by the programs of the \scotch\ distributions have +an interface in the \libscotch\ library, there exist +geometry handling routines in it, which manipulate +{\tt SCOTCH\_\lbt Geom} structures. + +Apart from the routines that create, destroy or access +{\tt SCOTCH\_\lbt Geom} structures, all of the routines +in this section are input/output routines, which read or +write both {\tt SCOTCH\_\lbt Graph} and {\tt SCOTCH\_\lbt Geom} +structures. We have chosen to define the interface of the +geometry-handling routines such that they also handle +graph or mesh topology because some external file formats +mix these data, and that we wanted our routines to be able +to read their data on the fly from streams that can only be +read once, such as communication pipes. Having both aspects +taken into account in a single call makes the writing of +file conversion tools, such as {\tt gcv} and {\tt mcv}, +very easy. When the file format from which to read or into +which to write mixes both sorts of data, the geometry file +pointer can be set to {\tt NULL}, as it will not be used. + +\subsubsection{{\tt SCOTCH\_geomAlloc}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}l} +SCOTCH\_Geom * SCOTCH\_geomAlloc ( & void) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_geomAlloc} function allocates a memory area of a +size sufficient to store a {\tt SCOTCH\_\lbt Geom} structure. It is +the user's responsibility to free this memory when it is no longer +needed, using the {\tt SCOTCH\_\lbt mem\lbt Free} routine. The +allocated space must be initialized before use, by means of the +{\tt SCOTCH\_\lbt geom\lbt Init} routine. + +\progret + +{\tt SCOTCH\_geomAlloc} returns the pointer to the memory area if it +has been successfully allocated, and {\tt NULL} else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_geomInit}} +\label{sec-lib-func-geominit} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_geomInit ( & SCOTCH\_Geom * & geomptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgeominit ( & doubleprecision (*) & geomdat, \\ + & integer & ierr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_geomInit} function initializes a {\tt SCOTCH\_\lbt +Geom} structure so as to make it suitable for future operations. It +should be the first function to be called upon a {\tt SCOTCH\_\lbt +Geom} structure. When the geometrical data is no longer of use, call +function {\tt SCOTCH\_\lbt geom\lbt Exit} to free its internal +structures. + +\progret + +{\tt SCOTCH\_geomInit} returns $0$ if the geometrical structure has been +successfully initialized, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_geomExit}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_geomExit ( & SCOTCH\_Geom * & geomptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgeomexit ( & doubleprecision (*) & geomdat) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_geomExit} function frees the contents of a +{\tt SCOTCH\_\lbt Geom} structure previously initialized by +{\tt SCOTCH\_\lbt geomInit}. All subsequent calls to +{\tt SCOTCH\_\lbt *Geom*} routines other than {\tt SCOTCH\_\lbt +geomInit}, using this structure as parameter, may yield +unpredictable results. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_geomData}} +\label{sec-lib-func-geomdata} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_geomData ( & const SCOTCH\_Geom * & geomptr, \\ + & SCOTCH\_Num * & dimnptr, \\ + & double ** & geomtab) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgeomdata ( & doubleprecision (*) & geomdat, \\ + & doubleprecision (*) & indxtab, \\ + & integer*{\it num} & dimnnbr, \\ + & integer*{\it idx} & geomidx) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_geomData} routine is a multiple +accessor to the contents of {\tt SCOTCH\_Geom} structures. + +{\tt dimnptr} is the pointer to a location that will hold the +number of dimensions of the graph vertex or mesh node vertex +coordinates, and will therefore be equal to $1$, $2$ or $3$. +{\tt geomtab} is the pointer to a location that will hold the +reference to the geometry coordinates, as defined in +section~\ref{sec-lib-format-geom}. + +Any of these pointers can be set to {\tt NULL} on input if the +corresponding information is not needed. Else, the reference to a +dummy area can be provided, where all unwanted data will be written. + +Since there are no pointers in Fortran, a specific mechanism is used +to allow users to access the coordinate array. The {\tt scotchf\lbt geom\lbt +data} routine is passed an integer array, the first element of which is used +as a base address from which all other array indices are +computed. Therefore, instead of returning a reference, the routine +returns an integer, which represents the starting index of the coordinate +array with respect to the base input array. For +instance, if some base array {\tt myarray\lbt (1)} is passed as +parameter {\tt indxtab}, then the first cell of array {\tt geomtab} +will be accessible as {\tt myarray\lbt (geomidx)}. +In order for this feature to behave properly, the {\tt indxtab} +array must be double-precision-aligned with the geometry array. This is +automatically enforced on most systems, but some care should be +taken on systems that allow one to access data that is not +double-aligned. On such systems, declaring the array after a +dummy {\tt double\lbt precision} array can coerce the compiler +into enforcing the proper alignment. Also, on 32\_64 architectures, +such indices can be larger than the size of a regular +{\tt INTEGER}. This is why the indices to be returned are defined by +means of a specific integer type. See +Section~\ref{sec-lib-inttypesize} for more information on this +issue. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphGeomLoadChac}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphGeomLoadChac ( & SCOTCH\_Graph * & grafptr, \\ + & SCOTCH\_Geom * & geomptr, \\ + & FILE * & grafstream, \\ + & FILE * & geomstream, \\ + & const char * & string) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphgeomloadchac ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & geomdat, \\ + & integer & graffildes, \\ + & integer & geomfildes, \\ + & character (*) & string) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphGeomLoadChac} routine fills the {\tt +SCOTCH\_\lbt Graph} structure pointed to by {\tt grafptr} with the +source graph description available from stream {\tt graf\lbt stream} +in the \chaco\ graph format~\cite{hele93c}. Since this graph format +does not handle geometry data, the {\tt geomptr} and +{\tt geom\lbt stream} fields are not used, as well as the {\tt string} +field. + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt graf\lbt fildes} +associated with the logical unit of the graph file. + +\progret + +{\tt SCOTCH\_graphGeomLoadChac} returns $0$ if the graph structure has +been successfully allocated and filled with the data read, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphGeomSaveChac}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphGeomSaveChac ( & const SCOTCH\_Graph * & grafptr, \\ + & const SCOTCH\_Geom * & geomptr, \\ + & FILE * & grafstream, \\ + & FILE * & geomstream, \\ + & const char * & string) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphgeomsavechac ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & geomdat, \\ + & integer & graffildes, \\ + & integer & geomfildes, \\ + & character (*) & string) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphGeomSaveChac} routine saves the contents +of the {\tt SCOTCH\_\lbt Graph} structure pointed to by {\tt grafptr} +to stream {\tt graf\lbt stream}, in the \chaco\ graph +format~\cite{hele93c}. Since this graph format does +not handle geometry data, the {\tt geomptr} and {\tt geom\lbt stream} +fields are not used, as well as the {\tt string} field. + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt graf\lbt fildes} +associated with the logical unit of the graph file. + +\progret + +{\tt SCOTCH\_graphGeomSaveChac} returns $0$ if the graph structure +has been successfully written to {\tt graf\lbt stream}, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphGeomLoadHabo}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphGeomLoadHabo ( & SCOTCH\_Graph * & grafptr, \\ + & SCOTCH\_Geom * & geomptr, \\ + & FILE * & grafstream, \\ + & FILE * & geomstream, \\ + & const char * & string) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphgeomloadhabo ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & geomdat, \\ + & integer & graffildes, \\ + & integer & geomfildes, \\ + & character (*) & string) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphGeomLoadHabo} routine fills the {\tt +SCOTCH\_\lbt Graph} structure pointed to by {\tt grafptr} with the +source graph description available from stream {\tt graf\lbt stream} +in the Harwell-Boeing square assembled matrix format~\cite{dugrle92}. +Since this graph format does not handle geometry data, the +{\tt geomptr} and {\tt geom\lbt stream} fields are not used. Since +multiple graph structures can be encoded sequentially within the same +file, the {\tt string} field contains the string representation of an +integer number that codes the rank of the graph to read within the +Harwell-Boeing file. It is equal to ``0'' in most cases. + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt graf\lbt fildes} +associated with the logical unit of the graph file. + +\progret + +{\tt SCOTCH\_graphGeomLoadHabo} returns $0$ if the graph structure has +been successfully allocated and filled with the data read, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphGeomLoadScot}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphGeomLoadScot ( & SCOTCH\_Graph * & grafptr, \\ + & SCOTCH\_Geom * & geomptr, \\ + & FILE * & grafstream, \\ + & FILE * & geomstream, \\ + & const char * & string) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphgeomloadscot ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & geomdat, \\ + & integer & graffildes, \\ + & integer & geomfildes, \\ + & character (*) & string) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphGeomLoadScot} routine fills the {\tt +SCOTCH\_\lbt Graph} and {\tt SCOTCH\_\lbt Geom} structures pointed to +by {\tt grafptr} and {\tt geomptr} with the source graph description +and geometry data available from streams {\tt graf\lbt stream} and +{\tt geom\lbt stream} in the \scotch\ graph and geometry formats +(see sections~\ref{sec-file-sgraph} and~\ref{sec-file-geom}, +respectively). The {\tt string} field is not used. + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the numbers of the Unix file descriptors {\tt graf\lbt fildes} +and {\tt geom\lbt fildes} associated with the logical units of the +graph and geometry files. + +\progret + +{\tt SCOTCH\_graphGeomLoadScot} returns $0$ if the graph topology and +geometry have been successfully allocated and filled with the data +read, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_graphGeomSaveScot}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_graphGeomSaveScot ( & const SCOTCH\_Graph * & grafptr, \\ + & const SCOTCH\_Geom * & geomptr, \\ + & FILE * & grafstream, \\ + & FILE * & geomstream, \\ + & const char * & string) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfgraphgeomsavescot ( & doubleprecision (*) & grafdat, \\ + & doubleprecision (*) & geomdat, \\ + & integer & graffildes, \\ + & integer & geomfildes, \\ + & character (*) & string) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_graphGeomSaveScot} routine saves the contents +of the {\tt +SCOTCH\_\lbt Graph} and {\tt SCOTCH\_\lbt Geom} structures pointed to +by {\tt grafptr} and {\tt geomptr} to streams {\tt graf\lbt stream} +and {\tt geom\lbt stream}, in the \scotch\ graph and geometry +formats (see sections~\ref{sec-file-sgraph} and~\ref{sec-file-geom}, +respectively). The {\tt string} field is not used. + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the numbers of the Unix file descriptors {\tt graf\lbt fildes} +and {\tt geom\lbt fildes} associated with the logical units of the +graph and geometry files. + +\progret + +{\tt SCOTCH\_graphGeomSaveScot} returns $0$ if the graph topology and +geometry have been successfully written to {\tt graf\lbt stream} and +{\tt geom\lbt stream}, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_meshGeomLoadHabo}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_meshGeomLoadHabo ( & SCOTCH\_Mesh * & meshptr, \\ + & SCOTCH\_Geom * & geomptr, \\ + & FILE * & meshstream, \\ + & FILE * & geomstream, \\ + & const char * & string) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmeshgeomloadhabo ( & doubleprecision (*) & meshdat, \\ + & doubleprecision (*) & geomdat, \\ + & integer & meshfildes, \\ + & integer & geomfildes, \\ + & character (*) & string) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_meshGeomLoadHabo} routine fills the {\tt +SCOTCH\_\lbt Mesh} structure pointed to by {\tt meshptr} with the +source mesh description available from stream {\tt mesh\lbt stream} +in the Harwell-Boeing square elemental matrix format~\cite{dugrle92}. +Since this mesh format does not handle geometry data, the +{\tt geomptr} and {\tt geom\lbt stream} fields are not used. Since +multiple mesh structures can be encoded sequentially within the same +file, the {\tt string} field contains the string representation of an +integer number that codes the rank of the mesh to read within the +Harwell-Boeing file. It is equal to ``0'' in most cases. + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the number of the Unix file descriptor {\tt mesh\lbt fildes} +associated with the logical unit of the mesh file. + +\progret + +{\tt SCOTCH\_meshGeomLoadHabo} returns $0$ if the mesh structure has +been successfully allocated and filled with the data read, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_meshGeomLoadScot}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_meshGeomLoadScot ( & SCOTCH\_Mesh * & meshptr, \\ + & SCOTCH\_Geom * & geomptr, \\ + & FILE * & meshstream, \\ + & FILE * & geomstream, \\ + & const char * & string) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmeshgeomloadscot ( & doubleprecision (*) & meshdat, \\ + & doubleprecision (*) & geomdat, \\ + & integer & meshfildes, \\ + & integer & geomfildes, \\ + & character (*) & string) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_meshGeomLoadScot} routine fills the {\tt +SCOTCH\_\lbt Mesh} and {\tt SCOTCH\_\lbt Geom} structures pointed to +by {\tt meshptr} and {\tt geomptr} with the source mesh description +and node geometry data available from streams {\tt mesh\lbt stream} +and {\tt geom\lbt stream} in the \scotch\ mesh and geometry formats +(see sections~\ref{sec-file-smesh} and~\ref{sec-file-geom}, +respectively). The {\tt string} field is not used. + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the numbers of the Unix file descriptors {\tt mesh\lbt fildes} +and {\tt geom\lbt fildes} associated with the logical units of the +mesh and geometry files. + +\progret + +{\tt SCOTCH\_meshGeomLoadScot} returns $0$ if the mesh topology and +node geometry have been successfully allocated and filled with the +data read, and $1$ else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_meshGeomSaveScot}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_meshGeomSaveScot ( & const SCOTCH\_Mesh * & meshptr, \\ + & const SCOTCH\_Geom * & geomptr, \\ + & FILE * & meshstream, \\ + & FILE * & geomstream, \\ + & const char * & string) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmeshgeomsavescot ( & doubleprecision (*) & meshdat, \\ + & doubleprecision (*) & geomdat, \\ + & integer & meshfildes, \\ + & integer & geomfildes, \\ + & character (*) & string) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_meshGeomSaveScot} routine saves the contents +of the {\tt SCOTCH\_\lbt Mesh} and {\tt SCOTCH\_\lbt Geom} +structures pointed to by {\tt meshptr} and {\tt geomptr} to +streams {\tt mesh\lbt stream} and {\tt geom\lbt stream}, in +the \scotch\ mesh and geometry formats (see +sections~\ref{sec-file-smesh} and~\ref{sec-file-geom}, +respectively). The {\tt string} field is not used. + +Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to +obtain the numbers of the Unix file descriptors {\tt mesh\lbt fildes} +and {\tt geom\lbt fildes} associated with the logical units of the +mesh and geometry files. + +\progret + +{\tt SCOTCH\_meshGeomSaveScot} returns $0$ if the mesh topology and +node geometry have been successfully written to {\tt mesh\lbt stream} +and {\tt geom\lbt stream}, and $1$ else. +\end{itemize} + +\subsection{Other data structure handling routines} +\label{sec-lib-other} + +\subsubsection{{\tt SCOTCH\_mapAlloc}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}l} +SCOTCH\_Mapping * SCOTCH\_mapAlloc ( & void) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_mapAlloc} function allocates a memory area of a +size sufficient to store a {\tt SCOTCH\_\lbt Mapping} structure. It is +the user's responsibility to free this memory when it is no longer +needed, using the {\tt SCOTCH\_\lbt mem\lbt Free} routine. + +\progret + +{\tt SCOTCH\_mapAlloc} returns the pointer to the memory area if it +has been successfully allocated, and {\tt NULL} else. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_orderAlloc}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}l} +SCOTCH\_Ordering * SCOTCH\_orderAlloc ( & void) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_orderAlloc} function allocates a memory area of a +size sufficient to store a {\tt SCOTCH\_\lbt Ordering} structure. It is +the user's responsibility to free this memory when it is no longer +needed, using the {\tt SCOTCH\_\lbt mem\lbt Free} routine. + +\progret + +{\tt SCOTCH\_orderAlloc} returns the pointer to the memory area if it +has been successfully allocated, and {\tt NULL} else. +\end{itemize} + +\subsection{Error handling routines} +\label{sec-lib-error} + +The handling of errors that occur within library routines is +often difficult, because library routines should be able to issue +error messages that help the application programmer to find the +error, while being compatible with the way the application handles +its own errors. + +To match these two requirements, all the error and warning messages +produced by the routines of the \libscotch\ library are issued using +the user-definable variable-length argument routines {\tt SCOTCH\_\lbt +error\lbt Print} and {\tt SCOTCH\_\lbt error\lbt PrintW}. Thus, one +can redirect these error messages to his own error handling routines, +and can choose if he wants his program to terminate on error or to +resume execution after the erroneous function has returned. + +In order to free the user from the burden of writing a basic error +handler from scratch, the {\tt libscotcherr.a} library provides error +routines that print error messages on the standard error stream +{\tt stderr} and return control to the application. Application +programmers who want to take advantage of them have to add +{\tt -lscotcherr} to the list of arguments of the linker, after +the {\tt -lscotch} argument. + +\subsubsection{{\tt SCOTCH\_errorPrint}} +\label{sec-lib-func-errorprint} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_errorPrint ( & const char * const & errstr, ...) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_errorPrint} function is designed to output a +variable-length argument error string to some stream. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_errorPrintW}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_errorPrintW ( & const char * const & errstr, ...) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_errorPrintW} function is designed to output a +variable-length argument warning string to some stream. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_errorProg}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_errorProg ( & const char * & progstr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_errorProg} function is designed to be called at +the beginning of a program or of a portion of code to identify the +place where subsequent errors take place. +This routine is not reentrant, as it is only a minor help function. It +is defined in {\tt lib\lbt scotch\lbt err.a} and is used by the +standalone programs of the \scotch\ distribution. +\end{itemize} + +\subsection{Miscellaneous routines} +\label{sec-lib-misc} + +\subsubsection{{\tt SCOTCH\_memCur}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}l} +SCOTCH\_Idx SCOTCH\_memCur ( & void) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmemcur ( & integer*{\it idx} & memcur) \\ + +\end{tabular}} + +\progdes + +When \scotch\ is compiled with the {\tt COMMON\_\lbt MEMORY\_\lbt +TRACE} flag set, the {\tt SCOTCH\_memCur} routine returns the amount +of memory, in bytes, that is currently allocated by \scotch\ on the +current processing element, either by itself or on the behalf of the +user. Else, the routine returns {\tt -1}. + +The returned figure does not account for the memory that has been +allocated by the user and made visible to \scotch\ by means of +routines such as {\tt SCOTCH\_\lbt dgraph\lbt Build} calls. This +memory is not under the control of \scotch, and it is the user's +responsibility to free it after calling the relevant +{\tt SCOTCH\_\lbt *\lbt Exit} routines. + +Some third-party software used by \scotch, such as the strategy string +parser, may allocate some memory for internal use and never free it. +Consequently, there may be small discrepancies between memory +occupation figures returned by \scotch\ and those returned by +third-party tools. However, these discrepancies should not exceed a +few kilobytes. + +While memory occupation is internally recorded in a variable of type +{\tt intptr\_\lbt t}, it is output as a {\tt SCOTCH\_\lbt Idx} for the +sake of interface homogeneity, especially for Fortran. It is therefore +the installer's responsibility to make sure that the support integer +type of {\tt SCOTCH\_\lbt Idx} is large enough to not overflow. See +section~\ref{sec-lib-inttypesize} for more information. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_memFree}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_memFree ( & void * & dataptr) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_memFree} routine frees the memory space allocated +by routines such as {\tt SCOTCH\_\lbt graph\lbt Alloc}, +{\tt SCOTCH\_\lbt mesh\lbt Alloc}, or +{\tt SCOTCH\_\lbt strat\lbt Alloc}. + +The standard {\tt free} routine of the {\textsc libc} must not be +used for this purpose. Else, the allocated memory will not be +considered as properly released by memory accounting routines +{\tt SCOTCH\_\lbt mem\lbt Cur} and {\tt SCOTCH\_\lbt mem\lbt Max}, +and segmentation errors would happen when the +{\tt COMMON\_\lbt MEMORY\_\lbt CHECK} compile flag is set. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_memMax}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}l} +SCOTCH\_Idx SCOTCH\_memMax ( & void) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfmemmax ( & integer*{\it idx} & memcur) \\ + +\end{tabular}} + +\progdes + +When \scotch\ is compiled with the {\tt COMMON\_\lbt MEMORY\_\lbt +TRACE} flag set, the {\tt SCOTCH\_memMax} routine returns the maximum +amount of memory, in bytes, ever allocated by \scotch\ on the current +processing element, either by itself or on the behalf of the +user. Else, the routine returns {\tt -1}. + +The returned figure does not account for the memory that has been +allocated by the user and made visible to \scotch\ by means of +routines such as {\tt SCOTCH\_\lbt dgraph\lbt Build} calls. This +memory is not under the control of \scotch, and it is the user's +responsibility to free it after calling the relevant +{\tt SCOTCH\_\lbt *\lbt Exit} routines. + +Some third-party software used by \scotch, such as the strategy string +parser, may allocate some memory for internal use and never free it. +Consequently, there may be small discrepancies between memory +occupation figures returned by \scotch\ and those returned by +third-party tools. However, these discrepancies should not exceed a +few kilobytes. + +While memory occupation is internally recorded in a variable of type +{\tt intptr\_\lbt t}, it is output as a {\tt SCOTCH\_\lbt Idx} for the +sake of interface homogeneity, especially for Fortran. It is therefore +the installer's responsibility to make sure that the support integer +type of {\tt SCOTCH\_\lbt Idx} is large enough to not overflow. See +section~\ref{sec-lib-inttypesize} for more information. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_numSizeof}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}l} +int SCOTCH\_numSizeof ( & void) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfnumsizeof ( & integer & size ) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_numSizeof} routine returns the size, in bytes, of a +{\tt SCOTCH\_\lbt Num}. This information is useful to export the +interface of the {\sc libScotch} to interpreted languages, without +access to the ``{\tt scotch.h}'' include file. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_randomReset}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}l} +void SCOTCH\_randomReset ( & void) +\end{tabular}} + +{\tt\begin{tabular}{l@{}l} +scotchfrandomreset ( & ) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_randomReset} routine resets the seed of the +pseudo-random generator used by the graph partitioning routines +of the \libscotch\ library. Two consecutive calls to +the same \libscotch\ partitioning or ordering routines, separated +by a call to {\tt SCOTCH\_\lbt random\lbt Reset}, will always yield +the same results. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_randomSeed}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void SCOTCH\_randomSeed ( & SCOTCH\_Num & seedval) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfrandomseed ( & integer*{\it num} & seedval ) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_randomSeed} routine sets to {\tt seedval} the +seed of the pseudo-random generator used internally by several +algorithms of \scotch. All subsequent calls to {\tt SCOTCH\_\lbt +random\lbt Reset} will use this value to reset the pseudo-random +generator. + +This routine needs only to be used by users willing to evaluate +the robustness and quality of partitioning algorithms with respect to +the variability of random seeds. Else, depending whether \scotch\ has +been compiled with any of the flags {\tt COMMON\_\lbt RANDOM\_\lbt +FIXED\_\lbt SEED} or {\tt SCOTCH\_\lbt DETERMINISTIC} set or not, +either the same pseudo-random seed will be always used, or a +process-dependent seed will be used, respectively. +\end{itemize} + +\subsubsection{{\tt SCOTCH\_version}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +int SCOTCH\_version ( & int * const & versptr, \\ + & int * const & relaptr, \\ + & int * const & patcptr) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +scotchfversion ( & integer & versval, \\ + & integer & relaval, \\ + & integer & patcval) +\end{tabular}} + +\progdes + +The {\tt SCOTCH\_version} routine writes the version, release and +patchlevel numbers of the \scotch\ library that is currently being +used, to integer values {\tt *versptr}, {\tt *relaptr} and {\tt +patcptr}, respectively. This routine is mainly useful for applications +willing to record runtime information, such as the library against +which they are dynamically linked. +\end{itemize} + +\subsection{\metis\ compatibility library} +\label{sec-lib-metis} + +The \metis\ compatibility library provides stubs which redirect some +calls to \metis\ routines to the corresponding \scotch\ counterparts. +In order to use this feature, the only thing to do is to re-link the +existing software with the {\tt lib\lbo scotch\lbo metis} library, and +eventually with the original \metis\ library if the software uses +\metis\ routines which do not need to have \scotch\ equivalents, such +as graph transformation routines. +In that latter case, the ``{\tt -lscotch\lbt metis}'' argument must be +placed before the ``{\tt -lmetis}'' one (and of course before the +``{\tt -lscotch}'' one too), so that routines that are redefined by +\scotch\ are chosen instead of their \metis\ counterpart. When no +other \metis\ routines than the ones redefined by \scotch\ are used, +the ``{\tt -lmetis}'' argument can be omitted. See +Section~\ref{sec-examples} for an example. + +\subsubsection{{\tt METIS\_EdgeND}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void METIS\_EdgeND ( & const SCOTCH\_Num * const & n, \\ + & const SCOTCH\_Num * const & xadj, \\ + & const SCOTCH\_Num * const & adjncy, \\ + & const SCOTCH\_Num * const & numflag, \\ + & const SCOTCH\_Num * const & options, \\ + & SCOTCH\_Num * const & perm, \\ + & SCOTCH\_Num * const & iperm) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +metis\_edgend ( & integer*{\it num} & n, \\ + & integer*{\it num} (*) & xadj, \\ + & integer*{\it num} (*) & adjncy, \\ + & integer*{\it num} & numflag, \\ + & integer*{\it num} (*) & options, \\ + & integer*{\it num} (*) & perm, \\ + & integer*{\it num} (*) & iperm) +\end{tabular}} + +\progdes + +The {\tt METIS\_EdgeND} function performs a nested dissection ordering +of the graph passed as arrays {\tt xadj} and {\tt adjncy}, using +the default \scotch\ ordering strategy. The {\tt options} array is not +used. The {\tt perm} and {\tt iperm} arrays have the opposite meaning +as in \scotch: the \metis\ {\tt perm} array holds what is called +``inverse permutation'' in \scotch, while {\tt iperm} holds what is +called ``direct permutation'' in \scotch. + +While \scotch\ has also both node and edge separation capabilities, +all of the three \metis\ stubs {\tt METIS\_\lbo EdgeND}, {\tt +METIS\_\lbo NodeND} and {\tt METIS\_\lbo NodeWND} call the same +\scotch\ routine, which uses the \scotch\ default ordering strategy +proved to be efficient in most cases. +\end{itemize} + +\subsubsection{{\tt METIS\_NodeND}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void METIS\_NodeND ( & const SCOTCH\_Num * const & n, \\ + & const SCOTCH\_Num * const & xadj, \\ + & const SCOTCH\_Num * const & adjncy, \\ + & const SCOTCH\_Num * const & numflag, \\ + & const SCOTCH\_Num * const & options, \\ + & SCOTCH\_Num * const & perm, \\ + & SCOTCH\_Num * const & iperm) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +metis\_nodend ( & integer*{\it num} & n, \\ + & integer*{\it num} (*) & xadj, \\ + & integer*{\it num} (*) & adjncy, \\ + & integer*{\it num} & numflag, \\ + & integer*{\it num} (*) & options, \\ + & integer*{\it num} (*) & perm, \\ + & integer*{\it num} (*) & iperm) +\end{tabular}} + +\progdes + +The {\tt METIS\_NodeND} function performs a nested dissection ordering +of the graph passed as arrays {\tt xadj} and {\tt adjncy}, using +the default \scotch\ ordering strategy. The {\tt options} array is not +used. The {\tt perm} and {\tt iperm} arrays have the opposite meaning +as in \scotch: the \metis\ {\tt perm} array holds what is called +``inverse permutation'' in \scotch, while {\tt iperm} holds what is +called ``direct permutation'' in \scotch. + +While \scotch\ has also both node and edge separation capabilities, +all of the three \metis\ stubs {\tt METIS\_\lbo EdgeND}, {\tt +METIS\_\lbo NodeND} and {\tt METIS\_\lbo NodeWND} call the same +\scotch\ routine, which uses the \scotch\ default ordering strategy +proved to be efficient in most cases. +\end{itemize} + +\subsubsection{{\tt METIS\_NodeWND}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void METIS\_NodeWND ( & const SCOTCH\_Num * const & n, \\ + & const SCOTCH\_Num * const & xadj, \\ + & const SCOTCH\_Num * const & adjncy, \\ + & const SCOTCH\_Num * const & vwgt, \\ + & const SCOTCH\_Num * const & numflag, \\ + & const SCOTCH\_Num * const & options, \\ + & SCOTCH\_Num * const & perm, \\ + & SCOTCH\_Num * const & iperm) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +metis\_nodwend ( & integer*{\it num} & n, \\ + & integer*{\it num} (*) & xadj, \\ + & integer*{\it num} (*) & adjncy, \\ + & integer*{\it num} (*) & vwgt, \\ + & integer*{\it num} & numflag, \\ + & integer*{\it num} (*) & options, \\ + & integer*{\it num} (*) & perm, \\ + & integer*{\it num} (*) & iperm) +\end{tabular}} + +\progdes + +The {\tt METIS\_NodeWND} function performs a nested dissection +ordering of the graph passed as arrays {\tt xadj}, {\tt adjncy} +and {\tt vwgt}, using the default \scotch\ ordering strategy. The {\tt +options} array is not used. The {\tt perm} and {\tt iperm} arrays have +the opposite meaning as in \scotch: the \metis\ {\tt perm} array +holds what is called ``inverse permutation'' in \scotch, while {\tt +iperm} holds what is called ``direct permutation'' in \scotch. + +While \scotch\ has also both node and edge separation capabilities, +all of the three \metis\ stubs {\tt METIS\_\lbo EdgeND}, {\tt +METIS\_\lbo NodeND} and {\tt METIS\_\lbo NodeWND} call the same +\scotch\ routine, which uses the \scotch\ default ordering strategy +proved to be efficient in most cases. +\end{itemize} + +\subsubsection{{\tt METIS\_PartGraphKway}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void METIS\_PartGraphKway ( & const SCOTCH\_Num * const & n, \\ + & const SCOTCH\_Num * const & xadj, \\ + & const SCOTCH\_Num * const & adjncy, \\ + & const SCOTCH\_Num * const & vwgt, \\ + & const SCOTCH\_Num * const & adjwgt, \\ + & const SCOTCH\_Num * const & wgtflag, \\ + & const SCOTCH\_Num * const & numflag, \\ + & const SCOTCH\_Num * const & nparts, \\ + & const SCOTCH\_Num * const & options, \\ + & SCOTCH\_Num * const & edgecut, \\ + & SCOTCH\_Num * const & part) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +metis\_partgraphkway ( & integer*{\it num} & n, \\ + & integer*{\it num} (*) & xadj, \\ + & integer*{\it num} (*) & adjncy, \\ + & integer*{\it num} (*) & vwgt, \\ + & integer*{\it num} (*) & adjwgt, \\ + & integer*{\it num} & wgtflag, \\ + & integer*{\it num} & numflag, \\ + & integer*{\it num} & nparts, \\ + & integer*{\it num} (*) & options, \\ + & integer*{\it num} & edgecut, \\ + & integer*{\it num} (*) & part) +\end{tabular}} + +\progdes + +The {\tt METIS\_PartGraphKway} function performs a mapping onto the +complete graph of the graph represented by arrays {\tt xadj}, {\tt +adjncy}, {\tt vwgt} and {\tt adjwgt}, using the default +\scotch\ mapping strategy. The {\tt options} array is not used. The +{\tt part} array has the same meaning as the {\tt parttab} array of +\scotch. + +All of the three \metis\ stubs +{\tt METIS\_\lbo Part\lbo Graph\lbo Kway}, {\tt +METIS\_\lbo Part\lbo Graph\lbo Recursive} and {\tt METIS\_\lbo +Part\lbo Graph\lbo VKway} call the same \scotch\ routine, which uses +the \scotch\ default mapping strategy proved to be efficient in most +cases. +\end{itemize} + +\subsubsection{{\tt METIS\_PartGraphRecursive}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void METIS\_PartGraphRecursive ( & const SCOTCH\_Num * const & n, \\ + & const SCOTCH\_Num * const & xadj, \\ + & const SCOTCH\_Num * const & adjncy, \\ + & const SCOTCH\_Num * const & vwgt, \\ + & const SCOTCH\_Num * const & adjwgt, \\ + & const SCOTCH\_Num * const & wgtflag, \\ + & const SCOTCH\_Num * const & numflag, \\ + & const SCOTCH\_Num * const & nparts, \\ + & const SCOTCH\_Num * const & options, \\ + & SCOTCH\_Num * const & edgecut, \\ + & SCOTCH\_Num * const & part) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +metis\_partgraphrecursive ( & integer*{\it num} & n, \\ + & integer*{\it num} (*) & xadj, \\ + & integer*{\it num} (*) & adjncy, \\ + & integer*{\it num} (*) & vwgt, \\ + & integer*{\it num} (*) & adjwgt, \\ + & integer*{\it num} & wgtflag, \\ + & integer*{\it num} & numflag, \\ + & integer*{\it num} & nparts, \\ + & integer*{\it num} (*) & options, \\ + & integer*{\it num} & edgecut, \\ + & integer*{\it num} (*) & part) +\end{tabular}} + +\progdes + +The {\tt METIS\_PartGraphRecursive} function performs a mapping onto +the complete graph of the graph represented by arrays {\tt xadj}, {\tt +adjncy}, {\tt vwgt} and {\tt adjwgt}, using the default \scotch\ +mapping strategy. The {\tt options} array is not used. The {\tt part} +array has the same meaning as the {\tt parttab} array of \scotch. To +date, the computation of the {\tt edgecut} field requires extra +processing, which increases running time to a small extent. + +All of the three \metis\ stubs +{\tt METIS\_\lbo Part\lbo Graph\lbo Kway}, {\tt +METIS\_\lbo Part\lbo Graph\lbo Recursive} and {\tt METIS\_\lbo +Part\lbo Graph\lbo VKway} call the same \scotch\ routine, which uses +the \scotch\ default mapping strategy proved to be efficient in most +cases. +\end{itemize} + +\subsubsection{{\tt METIS\_PartGraphVKway}} + +\begin{itemize} +\progsyn + +{\tt\begin{tabular}{l@{}ll} +void METIS\_PartGraphVKway ( & const SCOTCH\_Num * const & n, \\ + & const SCOTCH\_Num * const & xadj, \\ + & const SCOTCH\_Num * const & adjncy, \\ + & const SCOTCH\_Num * const & vwgt, \\ + & const SCOTCH\_Num * const & vsize, \\ + & const SCOTCH\_Num * const & wgtflag, \\ + & const SCOTCH\_Num * const & numflag, \\ + & const SCOTCH\_Num * const & nparts, \\ + & const SCOTCH\_Num * const & options, \\ + & SCOTCH\_Num * const & volume, \\ + & SCOTCH\_Num * const & part) +\end{tabular}} + +{\tt\begin{tabular}{l@{}ll} +metis\_partgraphvkway ( & integer*{\it num} & n, \\ + & integer*{\it num} (*) & xadj, \\ + & integer*{\it num} (*) & adjncy, \\ + & integer*{\it num} (*) & vwgt, \\ + & integer*{\it num} (*) & vsize, \\ + & integer*{\it num} & wgtflag, \\ + & integer*{\it num} & numflag, \\ + & integer*{\it num} & nparts, \\ + & integer*{\it num} (*) & options, \\ + & integer*{\it num} & volume, \\ + & integer*{\it num} (*) & part) +\end{tabular}} + +\progdes + +The {\tt METIS\_PartGraphVKway} function performs a mapping onto the +complete graph of the graph represented by arrays {\tt xadj}, {\tt +adjncy}, {\tt vwgt} and {\tt vsize}, using the default +\scotch\ mapping strategy. The {\tt options} array is not used. The +{\tt part} array has the same meaning as the {\tt parttab} array of +\scotch. + +Since \scotch\ does not have methods for explicitely reducing the +communication volume according to the metric of {\tt METIS\_\lbo +Part\lbo Graph\lbo VKway}, this routine creates a temporary +edge weight array such that each edge $(u,v)$ receives a weight +equal to $mbox{\tt vsize}(u) + mbox{\tt vsize}(v)$. Consequently, +edges which are incident to highly communicating vertices will be +less likely to be cut. However, the communication volume value +returned by this routine is exactly the one which would be returned +by \metis\ with respect to the output partition. Users interested +in minimizing the exact communication volume should consider using +hypergraphs, implemented in \scotch\ as +meshes (see Section~\ref{sec-lib-format-mesh}). + +All of the three \metis\ stubs +{\tt METIS\_\lbo Part\lbo Graph\lbo Kway}, {\tt +METIS\_\lbo Part\lbo Graph\lbo Recursive} and {\tt METIS\_\lbo +Part\lbo Graph\lbo VKway} call the same \scotch\ routine, which uses +the \scotch\ default mapping strategy proved to be efficient in most +cases. +\end{itemize} diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_n.tex scotch-6.0.6/doc/src/scotch/s_n.tex --- scotch-6.0.4.dfsg1/doc/src/scotch/s_n.tex 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_n.tex 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,221 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Titre : s_n.tex % +% Sujet : Manuel de l'utilisateur % +% du projet 'Scotch' % +% Codage de nouvelles % +% methodes % +% Auteur : Francois Pellegrini % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Adding new features to \scotch} +\label{sec-coding} + +Since \scotch\ is free/libre software, users have the ability +to add new features to it. Moreover, as \scotch\ is intended to be a +testbed for new partitioning and ordering algorithms, it has been +developed in a very modular way, to ease the development and inclusion +of new partitioning and ordering methods to be called within +\scotch\ strategies. + +All of the source code for partitioning and ordering methods for +graphs and meshes is located in the {\tt src/\lbt libscotch/} source +subdirectory. Source file names have a very regular pattern, based on +the internal data structures they handle. + +\subsection{Graphs and meshes} + +The basic structures in \scotch\ are the {\tt Graph} and {\tt Mesh} +structures, which model a simple symmetric graph the definition of +which is given in file {\tt graph.h}, and a simple mesh, in the form +of a bipartite graph, the definition of which is given in file {\tt +mesh.h}, respectively. From this structure are derived enriched graph +and mesh structures: +\begin{itemize} +\item +{\tt Bgraph}, in file {\tt bgraph.h}: graph with bipartition, that is, +edge separation, information attached to it; +\item +{\tt Kgraph}, in file {\tt kgraph.h}: graph with mapping information +attached to it; +\item +{\tt Hgraph}, in file {\tt hgraph.h}: graph with halo information +attached to it, for computing graph orderings; +\item +{\tt Vgraph}, in file {\tt vgraph.h}: graph with vertex bipartition +information attached to it; +\item +{\tt Hmesh}, in file {\tt hmesh.h}: mesh with halo information +attached to it, for computing mesh orderings; +\item +{\tt Vmesh}, in file {\tt vmesh.h}: graph with vertex bipartition +information attached to it. +\end{itemize} +As version {\sc \scotchver} of the \libscotch\ does not provide mesh +mapping capabilities, neither {\tt Bmesh} nor {\tt Kmesh} structures +have been defined to date, but this work is in progress, and these +features should be available in the upcoming releases. + +All of the structures are in fact defined as {\tt typedef}ed types. + +\subsection{Methods and partition data} + +Methods are routines which take one of the above structures as input, +and update the fields of the given structure according to the +implemented algorithm. Initial methods will behave irrespective of the +former values of the structure (like graph growing methods, which +compute partitions from scratch), while refinement methods must be +provided an existing partition to improve. + +In addition to the topological description of the underlying graph, +the working graph and mesh structures comprise variables describing +the current state of the vertex or edge partition. In all cases is +provided a partition array called {\tt parttax}, of size equal to the +number of graph vertices, which tells which part every vertex is +assigned to. Other variables comprise the communication load and the +load imbalance of the current cut, that is, all of the data necessary +to measure the quality of a partition. Some other data are also often +provided, such as the number of vertices in each part and the list of +frontier vertices. They are not relevant to measure the quality of +the partition, but to improve the speed of computations. They are used +for instance in the multilevel algorithms to compute incremental +updates of the current partition state, without having to recompute +these values from scratch by considering all of the graph vertices. +Implementers of new methods are highly encouraged to use these +variables to speed-up their computations, taking examples on typical +algorithms such as the multilevel or Fiduccia-Mattheyses ones. + +\subsection{Adding a new method to \scotch} + +We will assume in this section that the new method to add is a graph +separation method. The procedure explained below is exactly the same +for graph bipartitioning, graph mapping, graph ordering, mesh +separation, or mesh ordering methods. + +Please proceed as explained below. +\begin{enumerate} +\item +Write the code of the method itself. First, choose a free two-letter +code to describe your method, say ``xy''. In the {\tt libscotch} +source directory, create files {\tt vgraph\_\lbt separate\_\lbt xy.c} +and {\tt vgraph\_\lbt separate\_\lbt xy.h}, basing on existing +files such as {\tt vgraph\_\lbt separate\_\lbt gg.c} and {\tt +vgraph\_\lbt separate\_\lbt gg.h}, for instance. + +If the method is complex, it can be split across several other files, +which will be named {\tt vgraph\_\lbt separate\_\lbt xy\_\lbt first\lbt +module\lbt name.c}, {\tt vgraph\_\lbt separate\_\lbt xy\_\lbt second\lbt +module\lbt name.c}, eventually with matching header files. + +If the method has parameters, create a structure called {\tt +Vgraph\lbt Separate\lbt Xy\lbt Param}, which contains fields of +types that can be handled by the strategy parser, such as the +{\tt INT} generic integer type (see below), or {\tt double}, for +instance. + +The execution of your method should result in the setting or in the +updating of the {\tt Vgraph} structure that is passed to it. See its +definition in {\tt vgraph.h} and read several simple graph separation +methods, such as {\tt vgraph\_\lbt separate\_\lbt zr.c}, to figure out +what all of its parameters mean. + +At the end of your method, always call, when the {\tt SCOTCH\_\lbt +DEBUG\_\lbt VGRAPH2} debug flag is set, the {\tt vgraph\lbt Check} +routine, to avoid the spreading of eventual bugs to other parts of +the \libscotch\ library. +\item +Add the method to the parser tables. The files to update are +{\tt vgraph\_\lbt separate\_\lbt st.c} and {\tt vgraph\_\lbt +separate\_\lbt st.h}, where ``{\tt st}'' stands for ``strategy''. + +First, edit {\tt vgraph\_\lbt separate\_\lbt st.h}. In the {\tt +Vgraph\lbt Separate\lbt St\lbt Method\lbt Type} enumeration, +add a line for your new method {\tt VGRAPH\lbt SEPA\lbt ST\lbt +METH\lbt XY}. Then, edit {\tt vgraph\_\lbt separate\_\lbt st.c}, +where all of the remaining actions take place. + +In the top of the file, add a {\tt \#include} directive to include +{\tt vgraph\_\lbt separate\_\lbt xy.h}. + +If the method has parameters, create a {\tt vgraph\lbt separate\lbt +default\lbt xy} C union, basing on an existing one, and fill it with +the default values of your method parameters. + +In the {\tt vgraph\lbt separate\lbt st\lbt meth\lbt tab} method array, +add a line for the new method. To do so, choose a free single-letter +code that will be used to designate the new method in strategy strings. +If the method has parameters, the last field should be a pointer to +the default structure, else it should be set to {\tt NULL}. + +If the method has parameters, update the {\tt vgraph\lbt separate\lbt +st\lbt para\lbt tab} parameter array. Add one data block per +parameter. The first field is the name of the method to which the +parameter applies, that is, {\tt VGRAPH\lbt SEPA\lbt ST\lbt +METH\lbt XY}. The second field is the type of the parameter, which can +be: +\begin{itemize} +\item +{\tt STRATPARAMCASE}: the support type is an {\tt int}. It receives +the index in the case string, which is provided as the last field of +the parameter line, of the given case character; +\item +{\tt STRATPARAMDOUBLE}: the support type is a {\tt double}; +\item +{\tt STRATPARAMINT}: the support type is an {\tt INT}, which +is the generic integer type handled internally by \scotch. This type +has variable extent, depending on compilation flags, +as described in Section~\ref{sec-lib-inttypesize}; +\item +{\tt STRATPARAMSTRING}: a (small) character string; +\item +{\tt STRATPARAMSTRAT}: strategy. For instance, the graph ordering +method by nested dissection takes a vertex partitioning strategy as +one of its parameters, to compute the vertex separators. +\end{itemize} +The fourth and fifth fields are the address of the location of the +default structure and the address of the parameter within this default +structure, respectively. From these two values can be computed at run +time the offset of the parameter within any instance of the parameter +structure, which is used to fill the actual structures in the parsed +strategy evaluation tree. +The value of the sixth parameter depends on the type of the +parameter. It should be {\tt NULL} for {\tt STRAT\lbt PARAM\lbt +DOUBLE} and {\tt STRAT\lbt PARAM\lbt INT} parameters, points to the +string of available case letters for {\tt STRAT\lbt PARAM\lbt CASE} +parameters, points to the target string buffer for {\tt STRAT\lbt +PARAM\lbt STRING} parameters, and points to the relevant method +parsing table for {\tt STRAT\lbt PARAM\lbt STRAT} parameters. +\item +Edit the makefile of the \libscotch\ source directory to enable the +compilation and linking of the method. Depending on \libscotch\ +versions, this makefile is either called {\tt Makefile} or {\tt +make\_\lbt gen}. +\item +Compile in debug mode and experiment with your routine, by creating +strategies that contain its single-letter code. +\item +To change the default strategy string used by the \libscotch\ library, +update file {\tt library\_\lbt graph\_\lbt order.c}, since it is +the graph ordering routine which makes use of graph vertex separation +methods to compute separators for the nested dissection ordering method. +\end{enumerate} + +\subsection{Licensing of new methods and of derived works} + +According to the terms of the CeCILL-C license~\cite{cecill} under +which the \scotch\ software package is distributed, the works that are +carried out to improve and extend the \libscotch\ library must be +licensed under the same terms. Basically, it means that you will have +to distribute the sources of your new methods, along with the sources +of \scotch, to any recipient of your modified version of the +\libscotch, and that you grant these recipients the same rights of +update and redistribution as the ones that are given to you under the +terms of CeCILL-C. Please read it carefully to know what you can do +and cannot do with the \scotch\ distribution. +\\ + +You should have received a copy of the CeCILL-C +license along with the \scotch\ distribution; if not, please +browse the CeCILL website at +\url{http://www.cecill.info/licenses.en.html}. diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s_p.tex scotch-6.0.6/doc/src/scotch/s_p.tex --- scotch-6.0.4.dfsg1/doc/src/scotch/s_p.tex 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s_p.tex 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,1245 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Titre : s_p.tex % +% Sujet : Manuel de l'utilisateur % +% du projet 'Scotch' % +% Programmes % +% Auteur : Francois Pellegrini % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Programs} +\label{sec-prog} + +The programs of the \scotch\ project belong to five distinct classes. +\begin{itemize} +\item +Graph handling programs, the names of which begin in ``\texttt{g}'', +that serve to build and test source graphs. +\item +Mesh handling programs, the names of which begin in ``\texttt{m}'', +that serve to build and test source meshes. +\item +Target architecture handling programs, the names of which begin +in ``\texttt{a}'', that allow the user to build and test decomposition-defined +target files, and especially to turn a source graph file into a target file. +\item +The mapping and ordering programs themselves. +\item +Output handling programs, which are +the mapping performance analyzer, the graph factorization program, +and the graph, matrix, and mapping visualization program. +\end{itemize} +The general architecture of the \scotch\ project is displayed in +Figure~\ref{fig-synp}. + +\begin{figure}[p] +\centering{\hspace*{-5em}\includegraphics[scale=0.56]{s_f_synp.eps}} +\caption{General architecture of the \scotch\ project. All of the +features offered by the stand-alone programs are also available in +the \libscotch\ library.} +\label{fig-synp} +\end{figure} + +\subsection{Invocation} + +The programs comprising the \scotch\ project have been designed to run in +command-line mode without any interactive prompting, +so that they can be called easily from other programs by means of +``\mbox{\texttt{system$\,$()}}'' or ``\mbox{\texttt{ popen$\,$()}}'' +system calls, or be piped together on a single shell command line. In +order to facilitate this, whenever a stream name is asked for (either +on input or output), the user may put a single ``\texttt{-}'' to +indicate standard input or output. Moreover, programs read their input +in the same order as stream names are given in the command line. It +allows them to read all their data from a single stream (usually the +standard input), provided that these data are ordered properly. + +A brief on-line help is provided with all the programs. To get this help, +use the ``\texttt{-h}'' option after the program name. +The case of option letters is not significant, except when +both the lower and upper cases of a letter have different meanings. +When passing parameters to the programs, only the order of file names is +significant; options can be put anywhere in the command line, in any order. +Examples of use of the different programs of the \scotch\ project are provided +in section~\ref{sec-examples}. + +Error messages are standardized, but may not be fully explanatory. +However, most of the errors you may run into should be related to file +formats, and located in ``\mbox{\texttt{ \ldots Load}}'' routines. +In this case, compare your data formats with the definitions +given in section~\ref{sec-file}, and use the \texttt{gtst} and \texttt{mtst} +programs to check the consistency of source graphs and meshes. + +\subsection{Using compressed files} +\label{sec-prog-compressed} + +Starting from version {\sc 5.0.6}, \scotch\ allows users to provide +and retrieve data in compressed form. Since this feature requires that +the compression and decompression tasks run in the same time as data +is read or written, it can only be done on systems which support +multi-threading (Posix threads) or multi-processing (by means of +\texttt{fork} system calls). + +To determine if a stream has to be handled in compressed form, +\scotch\ checks its extension. If it is ``\texttt{.gz}'' (\texttt{gzip} +format), ``\texttt{.bz2}'' (\texttt{bzip2} format) or ``\texttt{.lzma}'' +(\texttt{lzma} format), the stream is assumed to be compressed according +to the corresponding format. A filter task will then be used to process +it accordingly if the format is implemented in \scotch\ and enabled on +your system. + +To date, data can be read and written in \texttt{bzip2} and \texttt{gzip} +formats, and can also be read in the \texttt{lzma} format. Since the +compression ratio of \texttt{lzma} on \scotch\ graphs is $30\%$ better +than the one of \texttt{gzip} and \texttt{bzip2} (which are almost +equivalent in this case), the \texttt{lzma} format is a very good choice +for handling very large graphs. To see how to enable compressed data +handling in \scotch, please refer to Section~\ref{sec-install}. +\\ + +When the compressed format allows it, several files can be provided on +the same stream, and be uncompressed on the fly. For instance, the +command ``\texttt{cat brol.grf.gz brol.xyz.gz | gout -.gz -.gz -Mn - +brol.iv}'' concatenates the topology and geometry data of some graph +\texttt{brol} and feed them as a single compressed stream to the standard +input of program \texttt{gout}, hence the ''\texttt{-.gz}'' to indicate a +compressed standard stream. + +\subsection{Description} + +\subsubsection{\texttt{acpl}} + +\begin{itemize} +\progsyn +\texttt{acpl} [{\it input\_target\_file} [{\it output\_target\_file}]] {\it options} + +\progdes +The program \texttt{acpl} is the decomposition-defined architecture file compiler. +It processes architecture files of type ``\texttt{deco~0}'' built by hand or by +the \texttt{amk\_}* programs, to create a ``\texttt{deco~1}'' compiled +architecture file of about four times the size of the original one; +see section~\ref{sec-file-target-deco}, page~\pageref{sec-file-target-deco}, +for a detailed description of decomposition-defined target +architecture file formats. +\\ +The mapper can read both original and compiled architecture file formats. +However, compiled architecture files are read much more efficiently, as +they are directly loaded into memory without further processing. +Since the compilation time of a target architecture graph evolves +as the square of its number of vertices, precompiling with \texttt{acpl} can +save some time when many mappings are to be performed onto the same large +target architecture. + +\progopt +\begin{itemize} +\iteme[\texttt{-h}] +Display the program synopsis. +\iteme[\texttt{-V}] +Print the program version and copyright. +\end{itemize} +\end{itemize} + +\subsubsection{\texttt{amk\_}*} +\relax +\begin{itemize} +\progsyn +\texttt{amk\_ccc} {\it dim} [{\it output\_target\_file}] {\it options}\\ +~\\ +\texttt{amk\_fft2} {\it dim} [{\it output\_target\_file}] {\it options}\\ +~\\ +\texttt{amk\_hy} {\it dim} [{\it output\_target\_file}] {\it options}\\ +~\\ +\texttt{amk\_m2} {\it dimX} [{\it dimY} [{\it output\_target\_file}]] {\it options}\\ +~\\ +\texttt{amk\_p2} {\it weight0} [{\it weight1} [{\it output\_target\_file}]] {\it options}\\ + +\progdes +The \texttt{amk\_}* programs make target graphs. +Each of them is devoted to a specific topology, for which it builds target +graphs of any dimension. +\\ +These programs are an alternate way between algorithmically-coded +built-in target architectures and decompositions computed by mapping +with \texttt{amk\_grf}. +Like built-in target architectures, their decompositions are +algorithmically computed, and like \texttt{amk\_grf}, their output is +a decomposition-defined target architecture file. +These programs allow the definition and testing of new algorithmically-coded +target architectures without coding them in the core of the mapper. +\\ + +\noi +Program \texttt{amk\_ccc} outputs the target architecture file of a +Cube-Connected-Cycles graph of dimension {\it dim}. +Vertex $(l,m)$ of $\CCC(dim)$, with $0 \leq l < dim$ and $0 \leq m < 2^{dim}$, +is linked to vertices $((l-1) \bmod dim, m)$, $((l+1) \bmod dim,m)$, and +$(l, m \oplus 2^l)$, and is labeled $l\times 2^{dim} + m$. $\oplus$ denotes +the bitwise exclusive-or binary operator, and $a \bmod b$ the integer +remainder of the euclidian division of $a$ by $b$. +\\ + +\noi +Program \texttt{amk\_fft2} outputs the target architecture file of a +binary Fast-Fourier-Transform graph of dimension {\it dim}. +Vertex $(l,m)$ of $\FFT(dim)$, with $0 \leq l \leq dim$ and +$0 \leq m < 2^{dim}$, is linked to vertices +$(l-1, m)$, $(l-1, m \bmod 2^{l-1})$, $(l+1, m)$, and $(l+1, m \oplus 2^l)$, +if they exist, and is labeled $l\times 2^{dim} + m$. +\\ + +\noi +Program \texttt{amk\_hy} outputs the target architecture file of a hypercube graph +of dimension {\it dim}. Vertices are labeled according to the decimal value +of their binary representation. +The decomposition-defined target architectures computed by \texttt{amk\_hy} +do not exactly give the same results as the built-in hypercube targets +because distances are not computed in the same manner, although +the two recursive bipartitionings are identical. +To achieve best performance and save space, use the built-in architecture. +\\ + +\noi +Program \texttt{amk\_p2} outputs the target architecture file of a weighted path +graph with two vertices, the weights of which are given as parameters. +\\ +This simple target topology is used to bipartition a source graph into +two weighted parts with as few cut edges as possible. +In particular, it is used to compute independent partitions of the +processors of a multi-user parallel machine. As a matter of fact, +if the yet unallocated part of the machine is represented by a source +graph with $n$ vertices, and $n'$ processors are requested by a user +in order to run a job (with $n' \leq n$), +mapping the source graph onto the weighted path graph with two +vertices of weights $n'$ and $n-n'$ leads to a partition of the machine in +which the allocated $n'$ processors should be as densely connected as +possible (see Figure~\ref{fig-biparch}). +\begin{figure}[hbt] +\hfill +\parbox[t]{5.8cm}{ +\hfill +\includegraphics[scale=0.25]{s_f_do1.ps} +\hfill\ \\ +{\bf a.} Construction of a partition with $13$ vertices (in black) +on a $8\times 8$ bidimensional mesh architecture. +}\ \hfill\ +\parbox[t]{5.8cm}{ +\hfill +\includegraphics[scale=0.25]{s_f_do2.ps} +\hfill\ \\ +{\bf b.} Construction of a partition with $17$ vertices (in black) +on the remaining architecture. +}\hfill\ +\caption% +{Construction of partitions on a bidimensional $8\times 8$ mesh architecture + by weighted bipartitioning.} +\label{fig-biparch} +\end{figure} + +\progopt +\begin{itemize} +\iteme[\texttt{-h}] +Display the program synopsis. +\iteme[\texttt{-m}{\it method}] +Select the bipartitioning method (for \texttt{amk\_m2} only). +\begin{itemize} +\iteme[\texttt{n}] +Nested dissection. +\iteme[\texttt{o}] +Dimension-per-dimension one-way dissection. This is less efficient +than nested dissection, and this feature exists only for benchmarking +purposes. +\iteme[\texttt{-V}] +Print the program version and copyright. +\end{itemize} +\end{itemize} +\end{itemize} + +\subsubsection{\texttt{amk\_grf}} +\label{sec-prog-amkgrf} + +\begin{itemize} +\progsyn +\texttt{amk\_grf} [{\it input\_graph\_file} [{\it output\_target\_file}]] {\it options} + +\progdes +The program \texttt{amk\_grf} turns a source graph file into a +decomposition-defined target architecture file. + +The \texttt{-2} option creates a ``\texttt{deco~2}'' decomposition +rather than a ``\texttt{deco~0}'' one. See +Section~\ref{sec-file-target-deco}, +page~\pageref{sec-file-target-deco} for more information on the +different types of decomposition-defined target architectures. + +The \texttt{-l} option restricts the target architecture to the vertices indicated +in the given vertex list file. It is therefore possible +to build a target architecture made of several disconnected parts of a bigger +architecture. +Note that this is not equivalent to turning a disconnected source graph into +a target architecture, since doing so would lead to an architecture made of +several independent pieces at infinite distance one from another. +Considering the selected vertices within their original architecture makes +it possible to compute the distance between vertices belonging to distinct +connected components, and therefore to evaluate the cost of the mapping of +two neighbor processes onto disjoint areas of the architecture. +\\ +The restriction feature is very useful in the context of multi-user parallel +machines. On these machines, when users request processors in order to run +their jobs, the partitions allocated by the operating system may not be +regular nor connected, because of existing partitions already attributed +to other people. +By feeding \texttt{amk\_grf} with the source graph representing the +whole parallel machine, and the vertex list containing the labels of the +processors allocated by the operating system, it is possible to build a +target architecture corresponding to this partition, and therefore to map +processes on it, automatically, regardless of the partition shape. + +The \texttt{-b} option selects the recursive bipartitioning strategy used +to build the ``\texttt{deco~0}'' decomposition of the source +graph. For regular, unweighted, topologies, the \texttt{'-b(g|h)fx'} +recursive bipartitioning strategy should work best. For irregular or +weighted graphs, use the default strategy, which is more flexible. See +also the manual page of function \texttt{SCOTCH\_\lbt arch\lbo Build0}, +page~\pageref{sec-lib-arch-build}, for further information. + +\progopt +\begin{itemize} +\iteme[\texttt{-b}{\it strategy}] +Use recursive bipartitioning strategy {\it strategy\/} to build the +decomposition of the architecture graph. The format of bipartitioning +strategies is defined within section~\ref{sec-lib-format-map}, +at page~\pageref{sec-lib-format-bipart}. +\iteme[\texttt{-h}] +Display the program synopsis. +\iteme[\texttt{-l}{\it input\_vertex\_file}] +Load vertex list from {\it input\_vertex\_file}. As for all other file names, +``\texttt{-}'' may be used to indicate standard input. +\iteme[\texttt{-V}] +Print the program version and copyright. +\end{itemize} +\end{itemize} + +\subsubsection{\texttt{atst}} + +\begin{itemize} +\progsyn +\texttt{atst} [{\it input\_target\_file} [{\it output\_data\_file}]] {\it options} + +\progdes +The program \texttt{atst} is the architecture tester. It gives some statistics on +decomposition-defined target architectures, and in particular the +minimum, maximum, and average communication costs (that is, weighted distance) +between all pairs of processors. + +\progopt +\begin{itemize} +\iteme[\texttt{-h}] +Display the program synopsis. +\iteme[\texttt{-V}] +Print the program version and copyright. +\end{itemize} +\end{itemize} + +\subsubsection{\texttt{gcv}} +\label{sec-prog-gcv} + +\begin{itemize} +\progsyn +\texttt{gcv} [{\it input\_graph\_file} [{\it output\_graph\_file} [{\it output\_geometry\_file}]]] {\it options} + +\progdes +The program \texttt{gcv} is the source graph converter. It takes on input a graph +file of the format specified with the \texttt{-i} option, and outputs its +equivalent in the format specified with the \texttt{-o} option, along with its +associated geometry file whenever geometry data is available. +At the time being, it accepts four input formats: the Matrix Market +format~\cite{bopore96}, the Harwell-Boeing collection +format~\cite{dugrle92}, the {\sc Chaco}/\metis\ graph +format~\cite{hele93c}, and the \scotch\ format. Three output format +are available: the Matrix Market format, the {\sc Chaco}/\metis\ graph +format and the \scotch\ source graph and geometry data format. +\progopt +\begin{itemize} +\iteme[\texttt{-h}] +Display the program synopsis. +\iteme[\texttt{-i}{\it format}] +Specify the type of input graph. +The available input formats are listed below. +\begin{itemize} +\iteme[{\texttt{b}[{\it number}]}] +Harwell-Boeing graph collection format. Only symmetric assembled matrices +are currently supported. +Since files in this format can contain several graphs one after another, +the optional integer {\it number}, starting +from $0$, indicates which graph of the file is considered for conversion. +\iteme[\texttt{c}] +{\sc Chaco v1.0}/\metis\ format. +\iteme[\texttt{m}] +The Matrix Market format. +\iteme[\texttt{s}] +\scotch\ source graph format. +%% \iteme[\texttt{u}] +%% Universal Data Set 2412 format. On output, this node/element structure is +%% turned into a communication graph such that vertices represent elements and +%% there exists an edge between two vertices if the two end elements share a node +%% in the original UDS graph. +%% Since UDS format files are tag files, they do not have a well defined end. +%% Therefore, one cannot append data of different nature to the input stream +%% used to read this graph, since it will make the graph loading routine fail. +\end{itemize} +\iteme[\texttt{-o}{\it format}] +Specify the output graph format. The available output formats are listed below. +\begin{itemize} +\iteme[\texttt{c}] +{\sc Chaco v1.0}/\metis\ format. +\iteme[\texttt{m}] +The Matrix Market format. +\iteme[\texttt{s}] +\scotch\ source graph format. +\end{itemize} +\iteme[\texttt{-V}] +Print the program version and copyright. +\end{itemize} + +Default option set is ``\texttt{-Ib0 -Os}''. +\end{itemize} + +\subsubsection{\texttt{gmap} / \texttt{gpart}} +\label{sec-prog-gmap} + +\begin{itemize} +\progsyn +\texttt{gmap} [{\it input\_graph\_file} [{\it input\_target\_file} [{\it output\_mapping\_file} [{\it output\_log\_file}]]]] {\it options}\\ +~\\ +\texttt{gpart} {\it number\_\lbt of\_\lbt parts} [{\it input\_graph\_file} [{\it output\_mapping\_file} [{\it output\_log\_file}]]] {\it options} + +\progdes +The program \texttt{gmap} is the graph mapper. It uses a partitioning +strategy to map a source graph onto a target graph, so that the weight of +source graph vertices allocated to target vertices is balanced, and the +communication cost function $f_C$ is minimized. + +The program \texttt{gpart} is the graph partitioner. It uses a +partitioning strategy to split a source graph into the prescribed +number of parts, using vertex or edge separators, depending whether +the \texttt{-o} option is set or not. + +The implemented mapping methods mainly derive from graph theory. In +particular, graph geometry is never used, even if it is available; +only topological properties are taken into account. Mapping methods +are used to define mapping strategies by means of selection, +combination, grouping, and condition operators. +\\ + +Mapping methods implemented in version~{\sc 6.0} comprise direct k-way +methods, including a k-way multilevel framework and k-way local +refinement methods, as well as the Dual +Recursive Bipartitioning algorithm, which uses graph bipartitioning +methods. Available bipartitioning methods include a multilevel +framework that uses other bipartitioning methods to compute the +initial and refined bipartitions: an improved implementation of the +Fiduccia--Mattheyses heuristic designed to handle weighted graphs, +a diffusion-based algorithm, a greedy method derived from the Gibbs, +Poole, and Stockmeyer algorithm, a greedy graph growing heuristic, a +greedy ``exactifying'' refinement algorithm designed to balance vertex +loads as much as possible, etc. + +\texttt{gpart} is a simplified interface to \texttt{gmap}, which performs +graph partitioning instead of static mapping. Consequently, the +desired number of parts has to be provided, in lieu of the target +architecture. + +The \texttt{-b} and \texttt{-c} options allow the user to set preferences on +the behavior of the mapping strategy which is used by default. The +\texttt{-m} option allows the user to define a custom mapping strategy. + +Both programs can be used to perform clustering, by means of the +\texttt{-q} option. \texttt{gpart} will perform topology-independent +clustering, while \texttt{gmap} may compute locality-preserving clusters +when mapping onto variable-sized, non-complete, architectures (see +Section~\ref{sec-file-target-variable}). + +If mapping statistics are wanted rather than the mapping output itself, +mapping output can be set to \texttt{/dev/null}, with option \texttt{-vmt} +to get mapping statistics and timings. + +\progopt\\* +Since the program is devoted to experimental studies, it has many +optional parameters, used to test various execution modes. Values +set by default will give best results in most cases. +\begin{itemize} +\iteme[\texttt{-b}{\it rat}] +Set the maximum load imbalance ratio to \textit{rat}, which should +be a value comprised between $0$ and $1$. This option can be used in +conjunction with option \texttt{-c}, but is incompatible with option +\texttt{-m}. +\iteme[\texttt{-c}{\it flags}] +Tune the default mapping strategy according to the given preference +flags. Some of these flags are antagonistic, while others can be +combined. See Section~\ref{sec-lib-format-strat-default} for more +information. The currently available flags are the following. +\begin{itemize} +\iteme[\texttt{b}] +Enforce load balance as much as possible. +\iteme[\texttt{q}] +Privilege quality over speed. +\iteme[\texttt{r}] +Only use recursive bipartitioning methods. +\iteme[\texttt{s}] +Privilege speed over quality. +\iteme[\texttt{t}] +Use only safe methods in the strategy. +\end{itemize} +This option can be used in conjunction with option \texttt{-b}, but is +incompatible with option \texttt{-m}. +The resulting strategy string can be displayed by means +of the \texttt{-vs} option. +\iteme[\texttt{-h}] +Display the program synopsis. +\iteme[\texttt{-m}{\it strat\/}] +Apply mapping strategy {\it strat}. In the case of static mapping or +of edge-based graph partitioning, the format of mapping strategies +should comply with the format defined in +Section~\ref{sec-lib-format-map}. If the \texttt{-o} option is used (see +below), strategies must be vertex partitioning strategies, which are +described in Section~\ref{sec-lib-format-part-ovl}. +This option is incompatible with options \texttt{-b} and +\texttt{-c}. +\iteme[\texttt{-o}] +Compute vertex-based partitions rather than static mappings or +edge-based partitions. This option is only valid for \texttt{gpart}, or +when \texttt{gmap} is called with a target architecture which is an +unweighted complete graph. +\iteme[\texttt{-q}] (for \texttt{gpart}) +\iteme[\texttt{-q}{\it pwght}] (for \texttt{gmap}) +Perform clustering instead of partitioning or mapping. Clustering is +achieved by means of a specific strategy string that performs +recursive bipartitioning until the size of the parts is smaller than +some threshold value. For \texttt{gpart}, this value replaces the desired +number of parts as the first argument passed to the program. For +\texttt{gmap}, the threshold must be given just after the \texttt{-q} option. +\iteme[\texttt{-s}{\it obj}] +Mask source edge and vertex weights. This option allows the user to +``unweight'' weighted source graphs by removing weights from edges and +vertices at loading time. {\it obj\/} may contain several of the following +switches. +\begin{itemize} +\iteme[\texttt{e}] +Remove edge weights, if any. +\iteme[\texttt{v}] +Remove vertex weights, if any. +\end{itemize} +\iteme[\texttt{-V}] +Print the program version and copyright. +\iteme[\texttt{-v}{\it verb}] +Set verbose mode to {\it verb}, which may contain several of the following +switches. For a detailed description of the data displayed, please +refer to the manual page of \texttt{gmtst} below. +\begin{itemize} +\iteme[\texttt{m}] +Mapping or partitioning information, depending whether the \texttt{-o} +option has been set or not. +\iteme[\texttt{s}] +Strategy information. This parameter displays the mapping +strategy which will be used by \texttt{gmap} or \texttt{gpart}. +\iteme[\texttt{t}] +Timing information. +\end{itemize} +\iteme[\texttt{-V}] +Print the program version and copyright. +\end{itemize} +\end{itemize} + +\subsubsection{\texttt{gmk\_}*} + +\begin{itemize} +\progsyn +\texttt{gmk\_hy} {\it dim} [{\it output\_graph\_file}] {\it options}\\ +~\\ +\texttt{gmk\_m2} {\it dimX} [{\it dimY} [{\it output\_graph\_file}]] {\it options}\\ +~\\ +\texttt{gmk\_m3} {\it dimX} [{\it dimY} [{\it dimZ} [{\it output\_graph\_file}]]] {\it options}\\ +~\\ +\texttt{gmk\_ub2} {\it dim} [{\it output\_graph\_file}] {\it options} + +\progdes +The \texttt{gmk\_}* programs make source graphs. +Each of them is devoted to a specific topology, for which it builds target +graphs of any dimension. +\\ +The \texttt{gmk\_}* programs are mainly used in conjunction with \texttt{amk\_grf}. +Most \texttt{gmk\_}* programs build source graphs +describing parallel machines, which are used by \texttt{amk\_grf} to generate +corresponding target sub-architectures, by means of its \texttt{-l} +option. +Such a procedure is shown in section~\ref{sec-examples}, which builds a target +architecture from five vertices of a binary de~Bruijn graph of dimension~$3$. +\\ + +\noi +Program \texttt{gmk\_hy} outputs the source file of a hypercube graph of +dimension {\it dim}. Vertices are labeled according to the decimal value +of their binary representation. +\\ + +\noi +Program \texttt{gmk\_m2} outputs the source file of a bidimensional mesh +with {\it dimX\/} columns and {\it dimY\/} rows. If the \texttt{-t} +option is set, tori are built instead of meshes. The vertex of +coordinates $(\mbox{\it posX},\mbox{\it posY\/})$ is labeled +$\mbox{\it posY} \times \mbox{\it dimX} + \mbox{\it posX}$. +\\ + +\noi +Program \texttt{gmk\_m3} outputs the source file of a tridimensional mesh +with {\it dimZ} layers of {\it dimY\/} rows by {\it dimX\/} +columns. If the \texttt{-t} option is set, tori are built instead of +meshes. The vertex of coordinates $(\mbox{\it posX},\mbox{\it +posY\/})$ is labeled $(\mbox{\it posZ} \times \mbox{\it dimY} + +\mbox{\it posY}) \times \mbox{\it dimX} + \mbox{\it posX}$. +\\ + +\noi +Program \texttt{gmk\_ub2} outputs the source file of a binary unoriented +de~Bruijn graph of dimension {\it dim}. Vertices are labeled according to +the decimal value of their binary representation. + +\progopt +\begin{itemize} +\iteme[\texttt{-g}{\it output\_geometry\_file}] +Output graph geometry to file {\it output\_geometry\_file} +(for \texttt{gmk\_m2} only). +As for all other file names, ``\texttt{-}'' +may be used to indicate standard output. +\iteme[\texttt{-h}] +Display the program synopsis. +\iteme[\texttt{-t}] +Build a torus rather than a mesh (for \texttt{gmk\_m2} only). +\iteme[\texttt{-V}] +Print the program version and copyright. +\end{itemize} +\end{itemize} + +\subsubsection{\texttt{gmk\_msh}} +\label{sec-prog-gmkmsh} + +\begin{itemize} +\progsyn +\texttt{gmk\_msh} [{\it input\_mesh\_file} [{\it output\_graph\_file}]] {\it options}\\ + +\progdes +The \texttt{gmk\_msh} program builds a graph file from a mesh file. All +of the nodes of the mesh are turned into graph vertices, and edges +are created between all pairs of vertices that share an element (that +is, elements are turned into cliques). + +\progopt +\begin{itemize} +\iteme[\texttt{-h}] +Display the program synopsis. +\iteme[\texttt{-V}] +Print the program version and copyright. +\end{itemize} +\end{itemize} + +\subsubsection{\texttt{gmtst}} + +\begin{itemize} +\progsyn +\texttt{gmtst} [{\it input\_graph\_file} [{\it input\_\lbt target\_\lbt file} [{\it input\_\lbt mapping\_\lbt file} [{\it output\_\lbt data\_\lbt file}]]]] {\it options} + +\progdes +The program \texttt{gmtst} is the graph mapping tester. It outputs some +statistics on the given mapping, regarding load balance and inter-processor +communication. +\\ +The two first statistics lines deal with process mapping statistics, while +the following ones deal with communication statistics. +The first mapping line gives the number of processors used by +the mapping, followed by the number of processors available in the +architecture, and the ratio of these two numbers, written between parentheses. +The second mapping line gives the minimum, maximum, and average loads of the +processors, followed by the variance of the load distribution, and an imbalance +ratio equal to the maximum load over the average load. +The first communication line gives the minimum and maximum number of neighbors +over all blocks of the mapping, followed by the sum of the number of neighbors +over all blocks of the mapping, that is the total number of messages +that have to be sent to exchange data between all neighboring blocks. +The second communication line gives the average dilation of the edges, +followed by the sum of all edge dilations. +The third communication line gives the average expansion of the edges, +followed by the value of function $f_C$. +The fourth communication line gives the average cut of the edges, +followed by the number of cut edges. +The fifth communication line shows the ratio of the average expansion over +the average dilation; it is smaller than $1$ when the mapper succeeds in +putting heavily intercommunicating processes closer to each other than it +does for lightly communicating processes; it is equal to $1$ if all edges +have the same weight. +The remaining lines form a distance histogram, which shows the amount of +communication load that involves processors located at increasing distances. + +\texttt{gmtst} allows the testing of cross-architecture mappings. By inputing it +a target architecture different from the one that has been used to compute the +mapping, but with compatible vertex labels, one can see what the mapping +would yield on this new target architecture. + +\progopt +\begin{itemize} +\iteme[\texttt{-h}] +Display the program synopsis. +\iteme[\texttt{-V}] +Print the program version and copyright. +\end{itemize} +\end{itemize} + +\subsubsection{\texttt{gord}} + +\begin{itemize} +\progsyn +\texttt{gord} [{\it input\_graph\_file} [{\it output\_ordering\_file} [{\it output\_log\_file}]]] {\it options} + +\progdes +The \texttt{gord} program is the block sparse matrix graph orderer. It uses an +ordering strategy to compute block orderings of sparse matrices +represented as source graphs, whose vertex weights indicate the number +of DOFs per node (if this number is non homogeneous) and whose edges +are unweighted, in order to minimize fill-in and operation count. + +Since its main purpose is to provide orderings that exhibit high +concurrency for parallel block factorization, it comprises a nested +dissection method~\cite{geli81}, but classical~\cite{liu-85} and +state-of-the-art~\cite{amdadu96,peroam99} minimum degree algorithms +are implemented as well. +Ordering methods are used to define ordering strategies by means of +selection, grouping, and condition operators. + +For the nested dissection method, vertex separation methods comprise +algorithms that directly compute vertex separators, as well as methods +that build vertex separators from edge separators, \ie graph +bipartitions (all of the graph bipartitioning methods available in the +static mapper \texttt{gmap} can be used in this latter case). + +The \texttt{-o} option allows the user to define the ordering +strategy. The \texttt{-c} option allows the user to set preferences on +the behavior of the ordering strategy which is used by default. +\\ + +When the graphs to order are very large, the same results can +be obtained by using the \texttt{dgord} parallel program of the +\ptscotch\ distribution, which can read centralized graph +files too. + +\progopt\\* +Since the program is devoted to experimental studies, it has many +optional parameters, used to test various execution modes. Values +set by default will give best results in most cases. +\begin{itemize} +\iteme[\texttt{-c}{\it flags}] +Tune the default ordering strategy according to the given preference +flags. Some of these flags are antagonistic, while others can be +combined. See Section~\ref{sec-lib-format-strat-default} for more +information. The resulting strategy string can be displayed by means +of the \texttt{-vs} option. +\begin{itemize} +\iteme[\texttt{b}] +Enforce load balance as much as possible. +\iteme[\texttt{q}] +Privilege quality over speed. This is the default behavior. +\iteme[\texttt{s}] +Privilege speed over quality. +\iteme[\texttt{t}] +Use only safe methods in the strategy. +\end{itemize} +\iteme[\texttt{-h}] +Display the program synopsis. +\iteme[\texttt{-m}{\it output\_mapping\_file}] +Write to {\it output\_mapping\_file\/} the mapping of graph vertices to +column blocks. All of the separators and leaves produced by the nested +dissection method are considered as distinct column blocks, which may +be in turn split by the ordering methods that are applied to them. +Distinct integer numbers are associated with each of the column blocks, +such that the number of a block is always greater than the ones of its +predecessors in the elimination process, that is, its descendants in the +elimination tree. +The structure of mapping files is given in section~\ref{sec-file-map}. + +When the geometry of the graph is available, this mapping file may be +processed by program \texttt{gout} to display the vertex separators and +supervariable amalgamations that have been computed. +\iteme[{\texttt{-o}{\it strat}}] +Apply ordering strategy {\it strat}. The format of ordering +strategies is defined in section~\ref{sec-lib-format-ord}. +\iteme[\texttt{-t}{\it output\_tree\_file}] +Write to {\it output\_tree\_file\/} the structure of the separator +tree. The data that is written resembles much the one of a mapping +file: after a first line that contains the number of lines to follow, +there are that many lines of mapping pairs, which associate an integer +number with every graph vertex index. This integer number is the +number of the column block which is the parent of the column block to +which the vertex belongs, or $-1$ if the column block to which the +vertex belongs is a root of the separator tree (there can be several +roots, if the graph is disconnected). + +Combined to the column block mapping data produced by option \texttt{-m}, +the tree structure allows one to rebuild the separator tree. +\iteme[\texttt{-V}] +Print the program version and copyright. +\iteme[\texttt{-v}{\it verb}] +Set verbose mode to {\it verb}, which may contain several of the following +switches. +%For a detailed description of the data displayed, please +%refer to the manual page of \texttt{gotst}. +\begin{itemize} +\iteme[\texttt{s}] +Strategy information. This parameter displays the ordering +strategy which will be used by \texttt{gord}. +\iteme[\texttt{t}] +Timing information. +\end{itemize} +\end{itemize} +\end{itemize} + +\subsubsection{\texttt{gotst}} +\label{sec-prog-gotst} + +\begin{itemize} +\progsyn +\texttt{gotst} [{\it input\_graph\_file} [{\it input\_ordering\_file} [{\it output\_data\_file}]]] {\it options} + +\progdes +The program \texttt{gotst} is the ordering tester. It gives some +statistics on orderings, including the number of non-zeros and +the operation count of the factored matrix, as well as statistics +regarding the elimination tree. Since it performs the factorization +of the reordered matrix, it can take a very long time and consume +a large amount of memory when applied to large graphs. +\\ +The first two statistics lines deal with the elimination tree. The +first one displays the number of leaves, while the second shows +the minimum height of the tree (that is, the +length of the shortest path from any leaf to the --or a-- root node), +its maximum height, its average height, and the variance of the +heights with respect to the average. +The third line displays the number of non-zero terms in the factored +matrix, the amount of index data that is necessary to maintain the +block structure of the factored matrix, and the number of operations +required to factor the matrix by means of Cholesky factorization. + +\progopt +\begin{itemize} +\iteme[\texttt{-h}] +Display the program synopsis. +\iteme[\texttt{-V}] +Print the program version and copyright. +\end{itemize} +\end{itemize} + +\subsubsection{\texttt{gout}} +\label{sec-prog-gout} + +\begin{itemize} +\progsyn +\texttt{gout} [{\it input\_graph\_file} [{\it input\_geometry\_file} [{\it input\_\lbt mapping\_\lbt file} [{\it output\_\lbt visualization\_\lbt file}]]]] {\it options} + +\progdes +The \texttt{gout} program is the graph, matrix, and mapping viewer program. It +takes on input a source graph, its geometry file, and optionally a mapping +result file, and produces a file suitable for display. +At the time being, \texttt{gout} can generate plain and encapsulated PostScript +files for the display of adjacency matrix patterns and the +display of planar graphs (although tridimensional objects +can be displayed by means of isometric projection, the display of +tridimensional mappings is not efficient), and {\sc Open Inventor} +files~\cite{oinv} for the interactive visualization of +tridimensional graphs. +\\ +In the case of mapping display, +the number of mapping pairs contained in the input mapping file may +differ from the number of vertices of the input source graph; +only mapping pairs the source labels of which match labels of source graph +vertices will be taken into account for display. +This feature allows the user to show the result of the mapping of a subgraph +drawn on the whole graph, or else to outline the most important aspects +of a mapping by restricting the display to a limited portion of the graph. +For example, Figure~\ref{fig-out-ps}\@.b shows how the result of the mapping of +a subgraph of the bidimensional mesh $\MD(4,4)$ onto the complete graph +$\KP(2)$ can be displayed on the whole $\MD(4,4)$ graph, +and Figure~\ref{fig-out-ps}\@.c shows how the display of the same mapping +can be restricted to a subgraph of the original graph. +% gmk_m2 4 4 s_f_out1.src -gs_f_out.xyz +% map s_f_out2.src ../tgt/k2.tgt s_f_out2.map +% out s_f_out2.src s_f_out.xyz -m - s_f_out1.ps '-Op{e,g,l}' +% out s_f_out1.src s_f_out.xyz s_f_out2.map s_f_out2.ps '-Op{e,g,l}' +% out s_f_out3.src s_f_out.xyz s_f_out2.map s_f_out3.ps '-Op{e,g,l}' +\begin{figure}[hbt] +\hfill +\parbox[t]{4.5cm}{ +\hfill +\includegraphics[scale=0.25]{s_f_out1.ps} +\hfill\ \\ +{\bf a.} A subgraph of $\MD(4,4)$ to be mapped onto $\KP(2)$. +}\ \hfill\ +\parbox[t]{4.5cm}{ +\hfill +\includegraphics[scale=0.25]{s_f_out2.ps} +\hfill\ \\ +{\bf b.} Mapping result displayed on the full $\MD(4,4)$ graph. +}\ \hfill\ +\parbox[t]{4.5cm}{ +\hfill +\includegraphics[scale=0.25]{s_f_out3.ps} +\hfill\ \\ +{\bf c.} Mapping result displayed on another subgraph of $\MD(4,4)$. +}\hfill\ +\caption{PostScript diplay of a single mapping file with different + subgraphs of the same source graph. Vertices covered with disks + of the same color are mapped onto the same processor.} +\label{fig-out-ps} +\end{figure} + +\progopt +\begin{itemize} +\iteme[\texttt{-g}{\it parameters}] +Geometry parameters. +\begin{itemize} +\iteme[\texttt{n}] +Do not read geometry data. This option can be used in conjunction with +option \texttt{-om} to avoid reading the geometry file when displaying +the pattern of the adjacency matrix associated with the source graph, +since geometry data are not needed in this case. +If this option is set, the geometry file is not read. However, if an +{\it output\_\lbt visualization\_\lbt file} name is given in the +command line, dummy {\it input\_\lbt geometry\_\lbt file\/} and {\it +input\_\lbt mapping\_\lbt file\/} names must be specified so that the +file argument count is correct. In this case, use the ``\texttt{-}'' +parameter to take standard input as a dummy geometry input stream. In +practice, the \texttt{-om} and \texttt{-gn} options always imply the +\texttt{-mn} option. +\iteme[\texttt{r}] +For bidimensional geometry only, rotate geometry data by $90$ degrees, +counter-clockwise. +\end{itemize} +\iteme[\texttt{-h}] +Display the program synopsis. +\iteme[\texttt{-mn}] +Do not read mapping data, and display the graph without any mapping +information. If this option is set, the mapping file is not +read. However, if an {\it output\_\lbt visualization\_\lbt file\/} +name is given in the command line, a dummy {\it input\_\lbt +mapping\_\lbt file\/} name must be specified so that the file argument +count is correct. In this case, use the ``\texttt{-}'' parameter to take +standard input as a dummy mapping input stream. +\iteme[{\texttt{-o}{\it format}[\texttt{\{}{\it parameters}\texttt{\}}]}] +Specify the type of output, with optional parameters within curly braces +and separated by commas. The output formats are listed below. +\begin{itemize} +\iteme[\texttt{i}] +Output the graph in SGI's {\sc Open Inventor} format, in ASCII mode, +suitable for display by the \texttt{ivview} program~\cite{oinv}. The +optional parameters are given below. +\begin{itemize} +\iteme[\texttt{c}] +Color output, using $16$ different colors. Opposite of \texttt{g}. +\iteme[\texttt{g}] +Grey-level output, using $8$ different levels. Opposite of \texttt{c}. +\iteme[\texttt{r}] +Remove cut edges. Edges the ends of which are mapped onto different +processors are not displayed. Opposite of \texttt{v}. +\iteme[\texttt{v}] +View cut edges. All graph edges are displayed. +Opposite of \texttt{r}. +\end{itemize} +\iteme[\texttt{m}] +Output the pattern of the adjacency matrix associated with the source graph, +in Adobe's PostScript format. The optional parameters are given below. +\begin{itemize} +\iteme[\texttt{e}] +Encapsulated PostScript output, suitable for \LaTeX\ use with \texttt{epsf}. +Opposite of \texttt{f}. +\iteme[\texttt{f}] +Full-page PostScript output, suitable for direct printing. +Opposite of \texttt{e}. +\end{itemize} +\iteme[\texttt{p}] +Output the graph in Adobe's PostScript format. +The optional parameters are given below. +\begin{itemize} +\iteme[\texttt{a}] +Avoid displaying the mapping disks. Opposite of \texttt{d}. +\iteme[\texttt{c}] +Color PostScript output, using $16$ different colors. Opposite of \texttt{g}. +\iteme[\texttt{d}] +Display the mapping disks. Opposite of \texttt{a}. +\iteme[\texttt{e}] +Encapsulated PostScript output, suitable for \LaTeX\ use with \texttt{epsf}. +Opposite of \texttt{f}. +\iteme[\texttt{f}] +Full-page PostScript output, suitable for direct printing. +Opposite of \texttt{e}. +\iteme[\texttt{g}] +Grey-level PostScript output. Opposite of \texttt{c}. +\iteme[\texttt{l}] +Large clipping. Mapping disks are included in the clipping area computation. +Opposite of \texttt{s}. +\iteme[\texttt{r}] +Remove cut edges. Edges the ends of which are mapped onto different +processors are not displayed. +Opposite of \texttt{v}. +\iteme[\texttt{s}] +Small clipping. Mapping disks are excluded from the clipping area computation. +Opposite of \texttt{l}. +\iteme[\texttt{v}] +View cut edges. All graph edges are displayed. +Opposite of \texttt{r}. +\iteme[\texttt{x=}{\it val}] +Minimum X relative clipping position (in [0.0;1.0]). +\iteme[\texttt{X=}{\it val}] +Maximum X relative clipping position (in [0.0;1.0]). +\iteme[\texttt{y=}{\it val}] +Minimum Y relative clipping position (in [0.0;1.0]). +\iteme[\texttt{Y=}{\it val}] +Maximum Y relative clipping position (in [0.0;1.0]). +\end{itemize} +\iteme[\texttt{-V}] +Print the program version and copyright. +\end{itemize} +\end{itemize} + +Default option set is ``\texttt{-Oi\{v\}}''. +\end{itemize} + +\subsubsection{\texttt{gtst}} + +\begin{itemize} +\progsyn +\texttt{gtst} [{\it input\_graph\_file} [{\it output\_data\_file}]] {\it options} + +\progdes +The program \texttt{gtst} is the source graph tester. It checks the +consistency of the input source graph structure (matching of arcs, +number of vertices and edges, etc\@.), and gives some statistics +regarding edge weights, vertex weights, and vertex degrees. +\\ + +When the graphs to test are very large, the same results can +be obtained by using the \texttt{dgtst} parallel program of the +\ptscotch\ distribution, which can read centralized graph +files too. + +\progopt +\begin{itemize} +\iteme[\texttt{-h}] +Display the program synopsis. +\iteme[\texttt{-V}] +Print the program version and copyright. +\end{itemize} +\end{itemize} + +\subsubsection{\texttt{mcv}} +\label{sec-prog-mcv} + +\begin{itemize} +\progsyn +\texttt{mcv} [{\it input\_mesh\_file} [{\it output\_mesh\_file} [{\it output\_geometry\_file}]]] {\it options} + +\progdes +The program \texttt{mcv} is the source mesh converter. It takes on input a mesh +file of the format specified with the \texttt{-i} option, and outputs its +equivalent in the format specified with the \texttt{-o} option, along with its +associated geometry file whenever geometrical data is available. +At the time being, it only accepts one external input format: the +Harwell-Boeing format~\cite{dugrle92}, for square elemental matrices only. +The only output format to date is the \scotch\ source mesh and +geometry data format. + +\progopt +\begin{itemize} +\iteme[\texttt{-h}] +Display the program synopsis. +\iteme[\texttt{-i}{\it format}] +Specify the type of input mesh. +The available input formats are listed below. +\begin{itemize} +\iteme[{\texttt{b}[{\it number}]}] +Harwell-Boeing mesh collection format. Only symmetric elemental matrices +are currently supported. +Since files in this format can contain several meshes one after another, +the optional integer {\it number}, starting +from $0$, indicates which mesh of the file is considered for conversion. +\iteme[\texttt{s}] +\scotch\ source mesh format. +\end{itemize} +\iteme[\texttt{-o}{\it format}] +Specify the output graph format. The available output formats are listed below. +\begin{itemize} +\iteme[\texttt{s}] +\scotch\ source graph format. +\end{itemize} +\iteme[\texttt{-V}] +Print the program version and copyright. +\end{itemize} + +Default option set is ``\texttt{-Ib0 -Os}''. +\end{itemize} + +\subsubsection{\texttt{mmk\_}*} + +\begin{itemize} +\progsyn +\texttt{mmk\_m2} {\it dimX} [{\it dimY} [{\it output\_mesh\_file}]] {\it options}\\ +~\\ +\texttt{mmk\_m3} {\it dimX} [{\it dimY} [{\it dimZ} [{\it output\_mesh\_file}]]] {\it options}\\ + +\progdes +The \texttt{mmk\_}* programs make source meshes. +\\ + +\noi +Program \texttt{mmk\_m2} outputs the source file of a bidimensional mesh +with $\mbox{{\it dimX\/}} \times \mbox{{\it dimY\/}}$ elements and +$(\mbox{{\it dimX\/}}+1) \times (\mbox{{\it dimY\/}}+1)$ nodes. +The element of coordinates $(\mbox{\it posX},\mbox{\it posY\/})$ is +labeled $\mbox{\it posY} \times \mbox{\it dimX} + \mbox{\it posX}$. +\\ + +\noi +Program \texttt{mmk\_m3} outputs the source file of a tridimensional mesh +with $\mbox{{\it dimX\/}} \times \mbox{{\it dimY\/}} \times +\mbox{{\it dimZ\/}}$ elements and $(\mbox{{\it dimX\/}}+1) \times +(\mbox{{\it dimY\/}}+1) \times (\mbox{{\it dimZ\/}}+1)$ nodes. +\\ + +\progopt +\begin{itemize} +\iteme[\texttt{-g}{\it output\_geometry\_file}] +Output mesh geometry to file {\it output\_geometry\_file} +(for \texttt{mmk\_m2} only). +As for all other file names, ``\texttt{-}'' +may be used to indicate standard output. +\iteme[\texttt{-h}] +Display the program synopsis. +\iteme[\texttt{-V}] +Print the program version and copyright. +\end{itemize} +\end{itemize} + +\subsubsection{\texttt{mord}} + +\begin{itemize} +\progsyn +\texttt{mord} [{\it input\_mesh\_file} [{\it output\_ordering\_file} [{\it output\_log\_file}]]] {\it options} + +\progdes +The \texttt{mord} program is the block sparse matrix mesh orderer. It +uses an ordering strategy to compute block orderings of sparse matrices +represented as source meshes, whose node vertex weights indicate the +number of DOFs per node (if this number is non homogeneous), in order +to minimize fill-in and operation count. + +Since its main purpose is to provide orderings that exhibit high +concurrency for parallel block factorization, it comprises a nested +dissection method~\cite{geli81}, but classical~\cite{liu-85} and +state-of-the-art~\cite{amdadu96,peroam99} minimum degree algorithms +are implemented as well. +Ordering methods are used to define ordering strategies by means of +selection, grouping, and condition operators. + +The \texttt{-o} option allows the user to define the ordering +strategy. The \texttt{-c} option allows the user to set preferences on +the behavior of the ordering strategy which is used by default. + +\progopt\\* +Since the program is devoted to experimental studies, it has many +optional parameters, used to test various execution modes. Values +set by default will give best results in most cases. +\begin{itemize} +\iteme[\texttt{-c}{\it flags}] +Tune the default ordering strategy according to the given preference +flags. Some of these flags are antagonistic, while others can be +combined. See Section~\ref{sec-lib-format-strat-default} for more +information. The resulting strategy string can be displayed by means +of the \texttt{-vs} option. +\begin{itemize} +\iteme[\texttt{b}] +Enforce load balance as much as possible. +\iteme[\texttt{q}] +Privilege quality over speed. This is the default behavior. +\iteme[\texttt{s}] +Privilege speed over quality. +\iteme[\texttt{t}] +Use only safe methods in the strategy. +\end{itemize} +\iteme[\texttt{-h}] +Display the program synopsis. +\iteme[\texttt{-m}{\it output\_mapping\_file}] +Write to {\it output\_mapping\_file\/} the mapping of mesh node +vertices to column blocks. All of the separators and leaves produced +by the nested dissection method are considered as distinct column +blocks, which may be in turn split by the ordering methods that are +applied to them. Distinct integer numbers are associated with each +of the column blocks, such that the number of a block is always +greater than the ones of its predecessors in the elimination process, +that is, its leaves in the elimination tree. +The structure of mapping files is given in section~\ref{sec-file-map}. + +When the coordinates of the node vertices are available, the mapping +file may be processed by program \texttt{gout}, along with the graph +structure that can be created from the source mesh file by means of +the \texttt{gmk\_\lbt msh} program, to display the node vertex separators +and supervariable amalgamations that have been computed. +\iteme[{\texttt{-o}{\it strat}}] +Apply ordering strategy {\it strat}. The format of ordering +strategies is defined in section~\ref{sec-lib-format-ord}. +\iteme[\texttt{-t}{\it output\_tree\_file}] +Write to {\it output\_tree\_file\/} the structure of the separator +tree. The data that is written resembles much the one of a mapping +file: after a first line that contains the number of lines to follow, +there are that many lines of mapping pairs, which associate an integer +number with every node vertex index. This integer number is the +number of the column block which is the parent of the column block to +which the node vertex belongs, or $-1$ if the column block to which the +node vertex belongs is a root of the separator tree (there can be +several roots, if the mesh is disconnected). + +Combined to the column block mapping data produced by option \texttt{-m}, +the tree structure allows one to rebuild the separator tree. +\iteme[\texttt{-V}] +Print the program version and copyright. +\iteme[\texttt{-v}{\it verb}] +Set verbose mode to {\it verb}, which may contain several of the following +switches. +%For a detailed description of the data displayed, please +%refer to the manual page of \texttt{gotst}. +\begin{itemize} +\iteme[\texttt{s}] +Strategy information. This parameter displays the default ordering +strategy used by \texttt{mord}. +\iteme[\texttt{t}] +Timing information. +\end{itemize} +\end{itemize} +\end{itemize} + +\subsubsection{\texttt{mtst}} + +\begin{itemize} +\progsyn +\texttt{mtst} [{\it input\_mesh\_file} [{\it output\_data\_file}]] {\it options} + +\progdes +The program \texttt{mtst} is the source mesh tester. It checks the +consistency of the input source mesh structure (matching of arcs +that link elements to nodes and nodes to elements, number of elements, +nodes, and edges, etc\@.), and gives some statistics regarding element +and node weights, edge weights, and element and node degrees. + +\progopt +\begin{itemize} +\iteme[\texttt{-h}] +Display the program synopsis. +\iteme[\texttt{-V}] +Print the program version and copyright. +\end{itemize} +\end{itemize} diff -Nru scotch-6.0.4.dfsg1/doc/src/scotch/s.tex scotch-6.0.6/doc/src/scotch/s.tex --- scotch-6.0.4.dfsg1/doc/src/scotch/s.tex 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/doc/src/scotch/s.tex 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,263 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Titre : s.tex % +% Sujet : Manuel de l'utilisateur % +% de Scotch 6.0 % +% Corps du document % +% Auteur : Francois Pellegrini % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% Formatage et pagination. + +% pdflatex -sPAPERSIZE=a4 s.tex +% dvips -sPAPERSIZE=a4 s.dvi -o scotch_user6.0.ps +% ps2pdf -sPAPERSIZE=a4 scotch_user6.0.ps scotch_user6.0.pdf + +\documentclass{article} +\usepackage{a4} +\usepackage{url} +\usepackage[dvips]{graphicx} +%\documentstyle[11pt,a4,fullpage,epsf]{article} +%\textwidth 16.0cm +%\oddsidemargin -0.5cm +%\evensidemargin -0.5cm +%\marginparwidth 0.0cm +%\marginparsep 0.0cm +%\marginparpush 0.0cm +%\topmargin 0.5cm +%\headheight 0.0cm +%\headsep 0.0cm +%\textheight 25.0cm +%\footheight 0.0cm +%\footskip 0.0cm + +\sloppy % Gestion des overfull hbox +\renewcommand{\baselinestretch}{1.05} % Hauteur lignes x 1.05 + +\setcounter{secnumdepth}{3} % Sous-sous-sections numerotees +\setcounter{tocdepth}{3} % Sous-sous-sections dans la table + +%% Macros et commandes utiles. + +\makeatletter +\@definecounter{enumv} % 8 niveaux d'itemizations +\@definecounter{enumvi} +\@definecounter{enumvii} +\@definecounter{enumviii} +\def\itemize{\ifnum \@itemdepth >8 \@toodeep\else \advance\@itemdepth \@ne +\edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% +\list{\csname\@itemitem\endcsname}{\def\makelabel##1{\hss\llap{##1}}}\fi} +\let\enditemize =\endlist + +\def\@iteme[#1]{\if@noparitem \@donoparitem % Item long pour options + \else \if@inlabel \indent \par \fi + \ifhmode \unskip\unskip \par \fi + \if@newlist \if@nobreak \@nbitem \else + \addpenalty\@beginparpenalty + \addvspace\@topsep \addvspace{-\parskip}\fi + \else \addpenalty\@itempenalty \addvspace\itemsep + \fi + \global\@inlabeltrue +\fi +\everypar{\global\@minipagefalse\global\@newlistfalse + \if@inlabel\global\@inlabelfalse + \setbox\@tempboxa\hbox{#1}\relax + \hskip \itemindent \hskip -\parindent + \hskip -\labelwidth \hskip -\labelsep + \ifdim \wd\@tempboxa > \labelwidth + \box\@tempboxa\hfil\break + \else + \hbox to\labelwidth{\box\@tempboxa\hfil}\relax + \hskip \labelsep + \fi + \penalty\z@ \fi + \everypar{}}\global\@nobreakfalse +\if@noitemarg \@noitemargfalse \if@nmbrlist \refstepcounter{\@listctr}\fi \fi +\ignorespaces} +\def\iteme{\@ifnextchar [{\@iteme}{\@noitemargtrue \@iteme[\@itemlabel]}} + +\let\@Hxfloat\@xfloat +\def\@xfloat#1[{\@ifnextchar{H}{\@HHfloat{#1}[}{\@Hxfloat{#1}[}} +\def\@HHfloat#1[H]{% +\expandafter\let\csname end#1\endcsname\end@Hfloat +\vskip\intextsep\def\@captype{#1}\parindent\z@ +\ignorespaces} +\def\end@Hfloat{\vskip \intextsep} +\makeatother + +\def\progsyn{\item[{\makebox[1.5em][l]{\bf Synopsis}}]\ ~\linebreak[0]\\*[1em]} +\def\progdes{\item[{\makebox[1.5em][l]{\bf Description}}]\ ~\linebreak[0]\\*[1em]} +\def\progopt{\item[{\makebox[1.5em][l]{\bf Options}}]~\linebreak[0]} +\def\progret{\item[{\makebox[1.5em][l]{\bf Return values}}]~\linebreak[0]} + +\newcommand{\bn}{\begin{displaymath}} % Equations non-numerotees +\newcommand{\en}{\end{displaymath}} +\newcommand{\bq}{\begin{equation}} % Equations numerotees +\newcommand{\eq}{\end{equation}} + +\newcommand{\lbo}{\linebreak[0]} +\newcommand{\lbt}{\linebreak[2]} +\newcommand{\noi}{{\noindent}} % Pas d'indentation +\newcommand{\spa}{{\protect \vspace{\bigskipamount}}} % Espace vertical + +\newcommand{\eg}{{\it e\@.g\@.\/\ }} % e.g. +\newcommand{\ie}{{\it i\@.e\@.\/\ }} % i.e. + +\newcommand{\chaco}{{\sc Chaco}} % "chaco" +\newcommand{\scotch}{{\sc Scotch}} % "scotch" +\newcommand{\libscotch}{{\sc libScotch}} % "libscotch" +\newcommand{\ptscotch}{{\sc PT-Scotch}} % "PT-Scotch" +\newcommand{\metis}{\mbox{\sc Me$\!$T$\!$iS}} % "MeTiS" + +\newcommand{\eqdef}{\stackrel{\scriptscriptstyle \rm def}{=}} % = as definition +\newcommand{\isapprox}{\mathop{\approx}\limits} + +\newcommand{\lefta}{\longleftarrow} +\newcommand{\rghta}{\longrightarrow} +\newcommand{\botha}{\longleftrightarrow} +\newcommand{\Lefta}{\Longleftarrow} +\newcommand{\Rghta}{\Longrightarrow} +\newcommand{\Botha}{\Longleftrightarrow} + +\newcommand{\HY}{{\rm H}} % H +\newcommand{\KP}{{\rm K}} % K +\newcommand{\MK}[1]{{\rm M}_{#1}} % Mk +\newcommand{\MD}{\MK{2}} % M2 +\newcommand{\PA}{{\rm P}} % P +\newcommand{\UB}{{\rm UB}} % UB +\newcommand{\SE}{{\rm SE}} % SE +\newcommand{\FFT}{{\rm FFT}} % FFT +\newcommand{\BF}{{\rm BF}} % BF +\newcommand{\BFB}{{\overline{\rm BF}}} % BF bar +\newcommand{\CCC}{{\rm CCC}} % CCC +\newcommand{\CCCB}{{\overline{\rm CCC}}} % CCC bar + +\newcommand{\roo}[1]{{\rho_{\scriptscriptstyle {#1}}}} % Rho avec petit argument +\newcommand{\too}[1]{{\tau_{\scriptscriptstyle {#1}}}} % Tau avec petit argument +\newcommand{\xio}[1]{{\xi_{\scriptscriptstyle {#1}}}} % Xi avec petit argument + +\newcommand{\SB}[1]{{\cal C}'_S\left({#1}\right)} % Comportement en espace +\newcommand{\TB}[1]{{\cal C}'_T\left({#1}\right)} % Comportement en temps +\newcommand{\SC}[1]{{\cal C}_S\left({#1}\right)} % Complexite en espace +\newcommand{\TC}[1]{{\cal C}_T\left({#1}\right)} % Complexite en temps + +\newcommand{\dmap}{\mbox{$\delta_{map}$}} +\newcommand{\dexp}{\mbox{$\delta_{exp}$}} +\newcommand{\mmap}{\mbox{$\mu_{map}$}} +\newcommand{\mdil}{\mbox{$\mu_{dil}$}} +\newcommand{\mcom}{\mbox{$\mu_{com}$}} +\newcommand{\mexp}{\mbox{$\mu_{exp}$}} + +\newcommand{\NNZ}{\mbox{NNZ}} +\newcommand{\OPC}{\mbox{OPC}} +\newcommand{\hnbr}{\mbox{$h_{\rm nbr}$}} +\newcommand{\hmin}{\mbox{$h_{\rm min}$}} +\newcommand{\hmax}{\mbox{$h_{\rm max}$}} +\newcommand{\havg}{\mbox{$h_{\rm avg}$}} +\newcommand{\hdlt}{\mbox{$h_{\rm dlt}$}} + +%% Version du document. + +\newcommand{\scotchver}{6.0} +\newcommand{\scotchversub}{6.0.6} +\newcommand{\scotchcitepuser}{\protect\cite{pell08c}} +\newcommand{\scotchcitesuser}{\protect\cite{pell08b}} + +%% Page de garde. + +\begin{document} + +\date{\today} +%\date{Revision 0.4 $\beta$\\\today} + +\title{\includegraphics{s_f_logo.ps}\\[1em] + {\LARGE\bf \scotch\ and \libscotch\ {\sc \scotchver} User's Guide}\\[1em]% + {\normalsize (version \scotchversub)} +} + +\author{Fran\c cois Pellegrini\\ +Universit\'e de Bordeaux \& LaBRI, UMR CNRS 5800\\ +TadAAM team, INRIA Bordeaux Sud-Ouest\\ +351 cours de la Lib\'eration, 33405 TALENCE, FRANCE\\ +{\tt francois.pellegrini@labri.fr}} + +\maketitle + +\begin{abstract} +This document describes the capabilities and operations of +\scotch\ and \libscotch, a software package and a software library +devoted to static mapping, edge- and vertex-based graph partitioning, +and sparse matrix block ordering of graphs and meshes/hypergraphs. It +gives brief descriptions of the algorithms, details the input/output +formats, instructions for use, installation procedures, and provides a +number of examples. + +\scotch\ is distributed as free/libre software, and has been +designed such that new partitioning or ordering methods can be added +in a straightforward manner. It can therefore be used as a testbed for +the easy and quick coding and testing of such new methods, and may +also be redistributed, as a library, along with third-party software +that makes use of it, either in its original or in updated forms. +\end{abstract} + +\clearpage + +%% Table des matieres. + +\tableofcontents + +%% Corps du document. + +\input{s_i.tex} % Introduction +\input{s_c.tex} % Changes since previous versions +\input{s_f.tex} % Formats de fichiers +\input{s_p.tex} % Programmes +\input{s_l.tex} % Bibliotheque +\input{s_d.tex} % Distribution +\input{s_e.tex} % Relevant examples +\input{s_n.tex} % Addition of a new method + +%% Remerciements. + +\section*{Credits} + +I wish to thank all of the following people: +\begin{itemize} +\item +Patrick Amestoy collaborated to the design of the Halo Approximate +Minimum Degree algorithm~\cite{peroam99} that had been embedded into +\scotch\ {\sc 3.3}, and provided versions of his Approximate Minimum +Degree algorithm, available since version {\sc 3.2}, and of his +Halo Approximate Minimum Fill algorithm, available since version +{\sc 3.4}. He designed the mesh versions of the approximate +minimum degree and approximate minimum fill algorithms, which are +available since version {\sc 4.0}; +\item +S\'ebastien Fourestier coded the mapping with fixed vertices, +remapping, and remapping with fixed vertices sequential routines that +are available since version {\sc 6.0}; +\item +Jun-Ho Her coded the graph partitioning with overlap routines that +were introduced in the unpublished {\sc 5.2} release, and publicly +released in version {\sc 6.0}; +\item +Alex Pothen kindly provided a version of his Multiple Minimum Degree +algorithm, which was embedded into \scotch\ from version {\sc 3.2} to +version {\sc 3.4}; +\item +Luca Scarano, visiting Erasmus student from the {\it Universit\'a +degli Studi di Bologna}, coded the multilevel graph algorithm +in \scotch\ {\sc 3.1}; +\item +Yves Secretan contributed to the MinGW32 port; +\item +David Sherman proofread version {\sc 3.2} of this manual. +\end{itemize} + +%% Bibliographie. + +\bibliographystyle{plain} +\bibliography{s} + +\end{document} diff -Nru scotch-6.0.4.dfsg1/INSTALL.txt scotch-6.0.6/INSTALL.txt --- scotch-6.0.4.dfsg1/INSTALL.txt 2015-03-13 16:50:09.000000000 +0000 +++ scotch-6.0.6/INSTALL.txt 2018-07-14 15:24:49.000000000 +0000 @@ -7,12 +7,13 @@ In order for you to compile Scotch and/or PT-Scotch, you must have GNU Make installed on your system, as well as an implementation of the MPI -message-passing library in the case of PT-Scotch. Lex and Yacc are -optional. There is a possibility to install Scotch without having Lex -or Yacc, but it may require the tuning of sample Flex and Bison (i.e., -the GNU equivalents of Lex and Yacc) outputs created on a Linux -system, which may need some tricky work to compile on other systems, -because of different C library implementations. +message-passing library in the case of PT-Scotch. Flex and Bison are +optional. There is a possibility to install Scotch without having Flex +or Bison, but it may require the tuning of pre-compiled Flex and Bison +outputs created on a Linux system, which may need some tricky work to +compile on other systems, because of different C library +implementations. Therefore, it is much more secure to have them +installed. To check if GNU Make is installed and is found first, please type: @@ -30,12 +31,12 @@ %prompt% which make -If several occurences of make are found, one might be GNU Make, +If several occurrences of make are found, one might be GNU Make, so try to figure out which of them. -To see if lex and yacc are present, type -%prompt% which lex -%prompt% which yacc (or "bison", the GNU flavor of yacc) +To see if Flex and Bison are present, type +%prompt% which flex +%prompt% which bison If some of these are missing, please: - check your path variable (just in case they are located in @@ -48,8 +49,8 @@ available from the FSF website, at: http://www.gnu.org/software/make/ and http://ftp.gnu.org/pub/gnu/make/ . - A GNU version of lex and yacc is also available from the - very same FSF website, at: + Flex and Bison are also available from the very same FSF + website, at: http://www.gnu.org/software/flex/ http://ftp.gnu.org/non-gnu/flex/ http://www.gnu.org/software/bison/ @@ -67,8 +68,8 @@ compiles properly on your system. Else, you will have to dig in their code to have them compile properly... The Makefile of the libScotch library has been designed so as - to copy the last_resort/* files automatically when the lex or - yacc tools are not found. + to copy the last_resort/* files automatically when the Flex or + Bison tools are not found. In this case, depending on your platform, you may also have to set the "-DSCOTCH_RENAME_PARSER" flag in order for all symbols to be properly redefined (see Section 2.2). @@ -119,7 +120,7 @@ Since Scotch uses a parser to analyze its strategy strings, it may happen that the symbols of this parser conflict with those of another parser used in a third-party library. All "Makefile.inc.*" -platform configuration files which base on flex / bison are already +platform configuration files which base on Flex/Bison are already tailored so as to prevent such conflicts. If you use other parsing tools, you may have to provide other options. Another solution is to use the pre-processed parser files of the "src/libscotch/last_resort" @@ -173,57 +174,141 @@ memory overflow. -2.4) Compression libraries +2.2) (Re)naming of library objects +---------------------------------- + +In order to prevent conflicts with third-party software, the following +naming conventions have been defined : +- public C objects start with "SCOTCH_", and public Fortran objects + start with "SCOTCHF"; +- internal Scotch routines start with "_SCOTCH"; +- some internal routines start with "scotch", e.g. Flex/Bison + routines, see above. + +It is possible to make several Scotch versions coexist in the same +application. To do so, libraries must be compiled with adequate +function renaming, by adding an appropriate suffix. For instance, +a "_64" suffix can be appended to routines and data types of a +64-bit version of the library. + +To do so, the following actions must be performed : +- the variable "SCOTCH_NAME_SUFFIX" must be defined in Makefile.inc + (e.g., "SCOTCH_NAME_SUFFIX=_64"); +- the preprocessor variable definition + "-DSCOTCH_NAME_SUFFIX=$(SCOTCH_NAME_SUFFIX)" + must be added to the CFLAGS variable (with the double quotes + for increased safety). + +Note that, when libScotch data types are renamed, the programs of the +Scotch package can no longer be compiled. Hence, users can only +compile the libraries of the Scotch package, by running: + +%prompt% make libscotch + +and/or: + +%prompt% make libptscotch + +Since error handling routines are generic and belong to a separate +library, suffix transformation is never applied to them. Hence, +application programs that use multiple versions of Scotch can be +linked against a single instance of the error handling library. + +Once the library files with renamed objects have been compiled, it is +up to the packager to rename adequately the various files. For +instance, in the case of a 64-bit version, "scotch.h" can be renamed +into "scotch_64.h", etc. + +By default, objects such as function option flags are not renamed, +since they can be shared without harm by all library instances of the +same version of Scotch. However, this can pose a risk when two +different versions of Scotch are to be used concurrently. In this +case, it may be necessary to rename these objects as well. It +can be done by defining the "-DSCOTCH_RENAME_ALL" flag. + +When two different versions of the Scotch library are used without +any renaming of all of the external objects, the preprocessor symbol +"SCOTCH_WARNING_RENAME_UNSAFE" is defined by the include files +"scotch.h", to be taken into account by the application programmer. + + +2.5) Portability issues +----------------------- + +While most of the code of Scotch poses no compatibility issues, some +features are subject to many diverging implementations, such as +date/time management, pipes, process forking, etc. Some of them are +handled globally, thanks to system-specific flags. Others have to be +finely tuned, depending on your platform. + +Some common platform configurations are available in the +"src/Make.inc/" subdirectory. + +The compilation flags used to manage portability issues are the +following: + +"-DCOMMON_WINDOWS" tweaks some includes and definitions to resolve +most issues encountered on Windows platforms. + +"-DCOMMON_TIMING_OLD" selects the getrusage()-based timing routine, +when "-DCOMMON_WINDOWS" is not set. Else, either clock_gettime() or +gettimeofday() are selected, depending on POSIX compilation flags. + +"-DCOMMON_STUB_FORK" provides a stub for the fork() system call on +systems that do not allow process forking. + + +2.6) Compression libraries -------------------------- The binaries of the Scotch distribution can handle compressed graphs in input or output. Three compressed graph formats are -currently supported: bzip2, gzip and lzma. In order for them to be +currently supported: bzip2, gzip and xz/lzma. In order for them to be actually activated, the proper libraries must be available on your -system. On a Linux platform, they are called "zlib" for the gzip -format, "libbz2" for the bzip2 format, and "liblzma" for the lzma +system. On a Linux platform, they are called "libz" for the gzip +format, "libbzip2" for the bzip2 format, and "liblzma" for the lzma format. Note that it is the "development" version (also called -"devel", for short, within package names) of each of these libraries -which is required for the compilation to succeed. -According to the libraries installed on your system, you may set -flags "-DCOMMON_FILE_COMPRESS_BZ2", "-DCOMMON_FILE_COMPRESS_GZ" and/or -"-DCOMMON_FILE_COMPRESS_LZMA" in the CFLAGS variable of your +"-devel" or "-dev", for short, as a post-fix in package names) of +each of these libraries, which is required for the compilation to +succeed. According to the libraries installed on your system, you may +set flags "-DCOMMON_FILE_COMPRESS_BZ2", "-DCOMMON_FILE_COMPRESS_GZ" +and/or "-DCOMMON_FILE_COMPRESS_LZMA" in the CFLAGS variable of your Makefile.inc configuration file, to have these formats and their -respective extensions ".bz2", ".gz" and ".lzma", recognized and +respective extensions ".bz2", ".gz" and ".xz"/".lzma", recognized and handled by Scotch. Compression and decompression are handled either by extra threads -or by fork'ed child processes if threads are not available. On +or by fork()'ed child processes if threads are not available. On systems which do not provide a functional fork() system call, -compressed files cannot be handled when the "-DCOMMON_PTHREAD" flag -is not set (see below). +compressed files cannot be handled when the "-DCOMMON_PTHREAD_FILE" +flag is not set (see below). -2.5) Multi-threading +2.7) Multi-threading -------------------- Scotch can also take advantage of Posix threads when they are available. They are used in several places: -- to compress and uncompress file data. This can be done either +- to compress and decompress file data. This can be done either by launching a service thread, or else by creating a separate process by means of a Posix fork() system call. This choice is - controlled by the "-DCOMMON_PTHREAD" flag: if it is set, threads - will be used, else fork() calls will be performed. For systems - which do not support the fork() system call, such as the MinGW32 - platform, one can set the "-DCOMMON_STUB_FORK" flag, which creates - a stub fork() routine which always returns an error. Therefore, - without both fork() and threads, one must set the - "-DCOMMON_STUB_FORK" flag without setting "-DCOMMON_PTHREAD", so - that compilation will successfully complete; however, in this case, - compressed graphs shall not be handled in practice. + controlled by the "-DCOMMON_PTHREAD_FILE" flag: if it is set, + threads will be used, else fork() calls will be performed. For + systems which do not support the fork() system call, such as the + MinGW32 platform, you can set the "-DCOMMON_STUB_FORK" flag, which + creates a stub fork() routine which always returns an + error. Therefore, without both fork() and threads, you must set the + "-DCOMMON_STUB_FORK" flag without setting "-DCOMMON_PTHREAD_FILE", + so that compilation will successfully complete; however, in this + case, compressed graphs shall not be handled in practice. - to create distributed graphs in parallel. Since this task involves concurrent MPI communications, the MPI library must support the MPI_THREAD_MULTIPLE level. The use of threads within Scotch itself is controlled by the "-DSCOTCH_PTHREAD" flag, which is completely - independent from the "-DCOMMON_PTHREAD" flag. Any of them can be set - without setting the other. + independent from the "-DCOMMON_PTHREAD_FILE" flag. Any of them can + be set without setting the other. Note that if you compile Scotch with the "-DSCOTCH_PTHREAD" flag, you will have to initialize your communication subsystem by using @@ -253,35 +338,36 @@ the assignment of threads to cores is performed in increasing order, starting from 0, which may not always prove to be the most efficient mapping in terms of memory affinity. We plan to add a mechanism for -dynamic thread allocation in the near future, based upon the hwloc +dynamic thread allocation in the near future, based upon the Hwloc library. The compilation flags used to manage threads are the following: -"-DCOMMON_PTHREAD" enables threads for algorithms not related to -graph management, partitioning and/or ordering, e.g. compressed -file handling. +"-DCOMMON_PTHREAD_AFFINITY_LINUX" enables Linux extensions for +handling thread affinity. As said above, this may not prove +efficient in all cases. More options will be provided in the +near future. "-DCOMMON_PTHREAD_BARRIER" creates a replacement for missing pthread_barrier_t implementations, which unfortunately happens on some systems. +"-DCOMMON_PTHREAD_FILE" enables threads for handling compressed +files. This flag does not interfere with the use of threads by graph +algorithms, e.g. for graph partitioning and/or ordering, which depends +on other flags (see below). + "-DSCOTCH_PTHREAD" is necessary to enable multi-threaded algorithms in Scotch and/or PT-Scotch. -"-DSCOTCH_PTHREAD_AFFINITY_LINUX" enables Linux extensions for -handling thread affinity. As said above, this may not prove -efficient in all cases. More options will be provided in the -near future. - -"-DSCOTCH_PTHREAD_NUMBER=x" sets the overall number of threads to be -used by multi-threaded algorithms. This number may not necessary be a -power of two. Since some algorithms have had to be reformulated to -accomodate for multi-threading, some algorithms will most probably be -much more efficient than sequential processing only for a number of +"-DSCOTCH_PTHREAD_NUMBER=x" sets the maximum number of threads to be +used by multi-threaded algorithms. This number may not necessarily be +a power of two. Some algorithms have had to be reformulated to +accommodate for multi-threading, and will be most probably much more +efficient than sequential processing only for a number of threads strictly greater than 2. Setting "-DSCOTCH_PTHREAD_NUMBER=1" -allows one to run sequential algorithms instead of multi-threaded -ones, while benefitting from multi-threading for file compression and +allows you to run sequential algorithms instead of multi-threaded +ones, while benefiting from multi-threading for file compression and distributed graph handling. When compiling under mingw32 on Windows systems, it is possible to @@ -293,7 +379,7 @@ threads. -2.6) Monitoring memory allocation +2.8) Monitoring memory allocation --------------------------------- Some memory allocation information can be aggregated if PT-Scotch is @@ -314,7 +400,7 @@ mechanism is absolutely NOT thread-safe at the time being. -2.7) Randomness +2.9) Randomness --------------- Many algorithms in Scotch and PT-Scotch are based on the random @@ -343,11 +429,11 @@ want to go on using the operating system pseudo-random generator (e.g. for regression testing with respect to version 5.x) can still do so, by compiling with the "-DCOMMON_RANDOM_SYSTEM" flag set. In this -case, the "-DCOMMON_RANDOM_RAND" flag allows one to use the srand() +case, the "-DCOMMON_RANDOM_RAND" flag allows you to use the srand() routine instead of the default srandom() routine. -2.8) Deterministic behavior +2.10) Deterministic behavior --------------------------- When Scotch is compiled with the "-DCOMMON_RANDOM_FIXED_SEED" @@ -384,7 +470,7 @@ operating system pseudo-random generator. -2.9) Point-to-point or collective communications +2.11) Point-to-point or collective communications ------------------------------------------------ Since distributed graph vertices can have any initial distribution @@ -401,7 +487,7 @@ compile time. -2.10) MeTiS compatibility library +2.12) MeTiS compatibility library --------------------------------- In order to ease the adoption of Scotch/PT-Scotch by people who @@ -430,21 +516,44 @@ MeTiS/ParMeTiS V3 routines is that they can be available in a 64-bit version. In this case, all int's that were passed to MeTiS/ParMeTiS routines must be replaced by 64-bit integer values (even the option -configuration values). However, in this case, one will not be able to -link against the service routines of the genuine MeTiS/ParMeTiS V3 -library, as the latter is only available as a 32-bit implementation. +configuration values). However, in this case, users will not be able +to link against the service routines of the genuine MeTiS/ParMeTiS V3 +libraries, as the latter are only available as 32-bit implementations. 3) Compilation ============== Once you have performed the configuration of the "Makefile.inc" file, -compile the Scotch distribution by typing "make scotch", or just -"make", in the current "src/" working directory. To compile the -PT-Scotch distribution, type "make ptscotch" in the same "src/" -directory. This can be done in any order. Typing "make scotch -ptscotch" to compile both is equivalent to typing "make ptscotch" -alone, since PT-Scotch requires Scotch. +compile the Scotch distribution by typing: + +%prompt% make scotch + +or just: + +%prompt% make + +in the current "src/" working directory. To compile the +PT-Scotch distribution, type: + +%prompt% make ptscotch + +in the same "src/" directory. This can be done in any order. Typing: + +%prompt% ptscotch + +will in fact compile both Scotch and PT-Scotch, since PT-Scotch +requires Scotch. + +In some cases (e.g. when renaming library objects, see above), you +may only want/need to build the libraries and not the executables. +To do so, type: + +%prompt% make libscotch + +or: + +%prompt% make ptlibscotch The most common problem you may encounter when trying to compile PT-Scotch on a new platform relates to the "dummysizes" and @@ -464,7 +573,7 @@ parallel execution cannot be run interactively. Moreover, "ptdummysizes" itself does not contain any MPI calls, as it just wants to know the sizes of the data structures, and the communication -susbystem of the platform may not want to run it. In any of these +subsystem of the platform may not want to run it. In any of these cases, compilation will break. It is possible to solve this problem by specifying, in the CCD variable of "Makefile.inc", how to compile "ptdummysizes" sequentially but with knowledge of the location of the @@ -477,12 +586,23 @@ directory. Headers, libraries and binaries of Scotch and PT-Scotch can coexist in these directories without any interference. -Then, typing "make install" will perform a GNU-like installation, with -header, library, binary and man files copied to the "include", "lib", -"bin" and "man" subdirectories of the path specified in the "prefix" -variable, which is set by default to "/usr/local". For instance, -typing "make prefix=/home/myself/usr/ install" will install the -Scotch/PT-Scotch files in a subtree of directory "/home/myself/usr/". +Then, typing: + +%prompt% make install + +and/or + +%prompt% make ptinstall + +will perform a GNU-like installation, with header, library, binary and +man files copied to the "include", "lib", "bin" and "man" +subdirectories of the path specified in the "prefix" variable, which +is set by default to "/usr/local". For instance, typing: + +%prompt% make prefix=/home/myself/usr/ install + +will install the Scotch/PT-Scotch files in a subtree of directory +"/home/myself/usr/". 4) Checking @@ -490,21 +610,28 @@ A set of test programs is available in the "src/check" directory. They serve as non-regression checks for both sequential and parallel -features of Scotch and PT-Scotch. They can be launched by typing "make -check" and/or "make ptcheck" in the "src/" directory. +features of Scotch and PT-Scotch. They can be launched by typing: + +%prompt% make check + +and/or: + +%prompt% make ptcheck + +in the "src/" directory. In the case of "ptcheck", programs can be run in debug mode, by compiling with the "-DSCOTCH_CHECK_NOAUTO" flag set. In this case, -process numbers are printed, so that users can attach a debugger -to a given (set of) process(es), and user action is required for -launching the parallel programs, by typing ENTER whenever necessary. +process numbers are printed, so that users can attach a debugger to a +given (set of) process(es), and user action is required for launching +the parallel programs, by typing ENTER whenever necessary. One might look at these programs for examples of how to use the Scotch and PT-Scotch libraries. However, some of these programs test internal features, and interact with the library through non-standard and non-documented procedures. It is therefore recommended NOT to imitate -these calling practices and rather to follow the guidelines provided in -the Scotch and PT-Scotch user manuals. +these calling practices and rather to follow the guidelines provided +in the Scotch and PT-Scotch user manuals. 5) Use @@ -558,6 +685,6 @@ threads enabled or not and, additionally, with which number of threads it will run. Based on the current processor market, I recommend to compile with -DSCOTCH_PTHREAD_NUMBER=2 (and, of course, --DSCOTCH_PTHREAD_AFFINITY_LINUX whenever possible). The penalty for +-DCOMMON_PTHREAD_AFFINITY_LINUX whenever possible). The penalty for single-thread CPUs will not be too high, while hyper-threaded and many-core CPUs will benefit from the extra thread. diff -Nru scotch-6.0.4.dfsg1/README.md scotch-6.0.6/README.md --- scotch-6.0.4.dfsg1/README.md 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/README.md 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,92 @@ +Scotch : a software package for graph and mesh/hypergraph partitioning, graph clustering, and sparse matrix ordering +============================== + +The SCOTCH distribution is a set of programs and libraries which implement the static mapping and sparse matrix reordering algorithms developed within the SCOTCH project. + +SCOTCH has many interesting features: + +* Its capabilities can be used through a set of stand-alone programs as well as through the libSCOTCH library, which offers both C and Fortran interfaces. + +* It provides algorithms to partition graph structures, as well as mesh structures defined as node-element bipartite graphs and which can also represent hypergraphs. + +* It can map any weighted source graph onto any weighted target graph. The source and target graphs may have any topology, and their vertices and edges may be weighted. Moreover, both source and target graphs may be disconnected. This feature allows for the mapping of programs onto disconnected subparts of a parallel architecture made up of heterogeneous processors and communication links. + +* It computes amalgamated block orderings of sparse matrices, for efficient solving using BLAS routines. + +* Its running time is linear in the number of edges of the source graph, and logarithmic in the number of vertices of the target graph for mapping computations. + +* It can handle indifferently graph and mesh data structures created within C or Fortran programs, with array indices starting from 0 or 1. + +* It offers extended support for adaptive graphs and meshes through the handling of disjoint edge arrays. + +* It is dynamically parametrizable thanks to strategy strings that are interpreted at run-time. + +* It uses system memory efficiently, to process large graphs and meshes without incurring out-of-memory faults; + +* It is highly modular and documented. Since it has been released under the CeCILL-C free/libre software license, it can be used as a testbed for the easy and quick development and testing of new partitioning and ordering methods. + +* It can be easily interfaced to other programs. The programs comprising the SCOTCH project have been designed to run in command-line mode without any interactive prompting, so that they can be called easily from other programs by means of system() or popen() calls, or piped together on a single command line. Moreover, vertex labeling capabilities allow for easy renumbering of vertices. + +* It provides many tools to build, check, and display graphs, meshes and matrix patterns. + +* It is written in C and uses the POSIX interface, which makes it highly portable. PT-SCOTCH uses the MPI interface, and optionally the POSIX threads. + + +Get Scotch +---------- + +To use last development state of Scotch, please clone the master +branch. + + # if git version >= 1.9 + git clone --recursive git@gitlab.inria.fr:scotch/scotch.git + cd scotch + # else + git clone git@gitlab.inria.fr:scotch/scotch.git + cd scotch + git submodule init + git submodule update + +Last releases of Scotch are hosted on the +[gforge.inria.fr](https://gforge.inria.fr/frs/?group_id=248) for now. +Future releases will be available on this gitlab project. + +Documentation +------------- + +A temporary link to the User Guide [documentation](https://gforge.inria.fr/docman/view.php/248/8260/scotch_user6.0.pdf). (we are waiting for availability of pages functionality in gitlab...) + +Installation +------------ + +### Build and install with Makefile + +Get involved! +--------------------- + +### Reporting an issue + +We strongly recommend all users to use the issue tracker to report any problems with the software, or for any feature request. We will try our best to answer them in a short time frame. + +### Contributions + +https://gitlab.inria.fr/scotch/scotch/blob/master/CONTRIBUTING.md + +### Authors + +The following people contribute or contributed to the development of Scotch: + * François Pellegrini, PI + * ... + +If we forgot your name, please let us know that we can fix that mistake. + +### Citing Scotch + +Feel free to use the following publications to reference Scotch: + +* Original paper: + - HAL ... + +### Licence + +https://gitlab.inria.fr/solverstack/pastix/blob/master/LICENCE.txt diff -Nru scotch-6.0.4.dfsg1/src/check/data/m4x4_vertlist.txt scotch-6.0.6/src/check/data/m4x4_vertlist.txt --- scotch-6.0.4.dfsg1/src/check/data/m4x4_vertlist.txt 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/check/data/m4x4_vertlist.txt 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1 @@ +5 5 3 12 7 2 diff -Nru scotch-6.0.4.dfsg1/src/check/data/p2-p2.grf scotch-6.0.6/src/check/data/p2-p2.grf --- scotch-6.0.4.dfsg1/src/check/data/p2-p2.grf 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/check/data/p2-p2.grf 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,7 @@ +0 +4 4 +0 000 +1 1 +1 0 +1 3 +1 2 diff -Nru scotch-6.0.4.dfsg1/src/check/data/ship001.msh scotch-6.0.6/src/check/data/ship001.msh --- scotch-6.0.4.dfsg1/src/check/data/ship001.msh 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/check/data/ship001.msh 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,38354 @@ +1 +3431 34920 310212 +34921 1 000 +7 1 2 219 220 365 366 370 +7 1 2 219 220 365 366 370 +7 1 2 219 220 365 366 370 +7 1 2 219 220 365 366 370 +7 1 2 219 220 365 366 370 +7 1 2 219 220 365 366 370 +3 1 219 366 +3 1 219 366 +3 1 219 366 +3 1 219 366 +3 1 219 366 +3 1 219 366 +7 1 3 218 219 366 367 371 +7 1 3 218 219 366 367 371 +7 1 3 218 219 366 367 371 +7 1 3 218 219 366 367 371 +7 1 3 218 219 366 367 371 +7 1 3 218 219 366 367 371 +4 2 220 365 369 +4 2 220 365 369 +4 2 220 365 369 +4 2 220 365 369 +4 2 220 365 369 +4 2 220 365 369 +3 2 220 365 +3 2 220 365 +3 2 220 365 +3 2 220 365 +3 2 220 365 +3 2 220 365 +3 3 218 367 +3 3 218 367 +3 3 218 367 +3 3 218 367 +3 3 218 367 +3 3 218 367 +7 3 4 218 222 367 368 372 +7 3 4 218 222 367 368 372 +7 3 4 218 222 367 368 372 +7 3 4 218 222 367 368 372 +7 3 4 218 222 367 368 372 +7 3 4 218 222 367 368 372 +3 4 222 368 +3 4 222 368 +3 4 222 368 +3 4 222 368 +3 4 222 368 +3 4 222 368 +4 4 222 368 373 +4 4 222 368 373 +4 4 222 368 373 +4 4 222 368 373 +4 4 222 368 373 +4 4 222 368 373 +4 5 412 508 513 +4 5 412 508 513 +4 5 412 508 513 +4 5 412 508 513 +4 5 412 508 513 +4 5 412 508 513 +3 5 412 508 +3 5 412 508 +3 5 412 508 +3 5 412 508 +3 5 412 508 +3 5 412 508 +6 5 6 412 508 509 514 +6 5 6 412 508 509 514 +6 5 6 412 508 509 514 +6 5 6 412 508 509 514 +6 5 6 412 508 509 514 +6 5 6 412 508 509 514 +2 6 509 +2 6 509 +2 6 509 +2 6 509 +2 6 509 +2 6 509 +4 6 7 509 510 +4 6 7 509 510 +4 6 7 509 510 +4 6 7 509 510 +4 6 7 509 510 +4 6 7 509 510 +2 7 510 +2 7 510 +2 7 510 +2 7 510 +2 7 510 +2 7 510 +6 7 8 413 510 511 515 +6 7 8 413 510 511 515 +6 7 8 413 510 511 515 +6 7 8 413 510 511 515 +6 7 8 413 510 511 515 +6 7 8 413 510 511 515 +3 8 413 511 +3 8 413 511 +3 8 413 511 +3 8 413 511 +3 8 413 511 +3 8 413 511 +6 8 9 413 511 512 516 +6 8 9 413 511 512 516 +6 8 9 413 511 512 516 +6 8 9 413 511 512 516 +6 8 9 413 511 512 516 +6 8 9 413 511 512 516 +2 9 512 +2 9 512 +2 9 512 +2 9 512 +2 9 512 +2 9 512 +4 9 10 512 1716 +4 9 10 512 1716 +4 9 10 512 1716 +4 9 10 512 1716 +4 9 10 512 1716 +4 9 10 512 1716 +2 10 1716 +2 10 1716 +2 10 1716 +2 10 1716 +2 10 1716 +2 10 1716 +6 10 11 863 1716 1717 1759 +6 10 11 863 1716 1717 1759 +6 10 11 863 1716 1717 1759 +6 10 11 863 1716 1717 1759 +6 10 11 863 1716 1717 1759 +6 10 11 863 1716 1717 1759 +3 11 863 1717 +3 11 863 1717 +3 11 863 1717 +3 11 863 1717 +3 11 863 1717 +3 11 863 1717 +5 11 12 863 1717 1718 +5 11 12 863 1717 1718 +5 11 12 863 1717 1718 +5 11 12 863 1717 1718 +5 11 12 863 1717 1718 +5 11 12 863 1717 1718 +2 12 1718 +2 12 1718 +2 12 1718 +2 12 1718 +2 12 1718 +2 12 1718 +4 12 13 1718 1719 +4 12 13 1718 1719 +4 12 13 1718 1719 +4 12 13 1718 1719 +4 12 13 1718 1719 +4 12 13 1718 1719 +2 13 1719 +2 13 1719 +2 13 1719 +2 13 1719 +2 13 1719 +2 13 1719 +4 13 14 1719 1720 +4 13 14 1719 1720 +4 13 14 1719 1720 +4 13 14 1719 1720 +4 13 14 1719 1720 +4 13 14 1719 1720 +2 14 1720 +2 14 1720 +2 14 1720 +2 14 1720 +2 14 1720 +2 14 1720 +4 14 15 1720 1721 +4 14 15 1720 1721 +4 14 15 1720 1721 +4 14 15 1720 1721 +4 14 15 1720 1721 +4 14 15 1720 1721 +2 15 1721 +2 15 1721 +2 15 1721 +2 15 1721 +2 15 1721 +2 15 1721 +4 15 16 1721 1722 +4 15 16 1721 1722 +4 15 16 1721 1722 +4 15 16 1721 1722 +4 15 16 1721 1722 +4 15 16 1721 1722 +2 16 1722 +2 16 1722 +2 16 1722 +2 16 1722 +2 16 1722 +2 16 1722 +5 16 17 864 1722 1723 +5 16 17 864 1722 1723 +5 16 17 864 1722 1723 +5 16 17 864 1722 1723 +5 16 17 864 1722 1723 +5 16 17 864 1722 1723 +3 17 864 1723 +3 17 864 1723 +3 17 864 1723 +3 17 864 1723 +3 17 864 1723 +3 17 864 1723 +6 17 18 864 1723 1724 1760 +6 17 18 864 1723 1724 1760 +6 17 18 864 1723 1724 1760 +6 17 18 864 1723 1724 1760 +6 17 18 864 1723 1724 1760 +6 17 18 864 1723 1724 1760 +2 18 1724 +2 18 1724 +2 18 1724 +2 18 1724 +2 18 1724 +2 18 1724 +4 18 19 1724 1725 +4 18 19 1724 1725 +4 18 19 1724 1725 +4 18 19 1724 1725 +4 18 19 1724 1725 +4 18 19 1724 1725 +2 19 1725 +2 19 1725 +2 19 1725 +2 19 1725 +2 19 1725 +2 19 1725 +6 19 20 865 1725 1726 1761 +6 19 20 865 1725 1726 1761 +6 19 20 865 1725 1726 1761 +6 19 20 865 1725 1726 1761 +6 19 20 865 1725 1726 1761 +6 19 20 865 1725 1726 1761 +3 20 865 1726 +3 20 865 1726 +3 20 865 1726 +3 20 865 1726 +3 20 865 1726 +3 20 865 1726 +6 20 21 865 1726 1727 1762 +6 20 21 865 1726 1727 1762 +6 20 21 865 1726 1727 1762 +6 20 21 865 1726 1727 1762 +6 20 21 865 1726 1727 1762 +6 20 21 865 1726 1727 1762 +2 21 1727 +2 21 1727 +2 21 1727 +2 21 1727 +2 21 1727 +2 21 1727 +4 21 22 1727 1728 +4 21 22 1727 1728 +4 21 22 1727 1728 +4 21 22 1727 1728 +4 21 22 1727 1728 +4 21 22 1727 1728 +2 22 1728 +2 22 1728 +2 22 1728 +2 22 1728 +2 22 1728 +2 22 1728 +6 22 23 866 1728 1729 1763 +6 22 23 866 1728 1729 1763 +6 22 23 866 1728 1729 1763 +6 22 23 866 1728 1729 1763 +6 22 23 866 1728 1729 1763 +6 22 23 866 1728 1729 1763 +3 23 866 1729 +3 23 866 1729 +3 23 866 1729 +3 23 866 1729 +3 23 866 1729 +3 23 866 1729 +6 23 24 866 1729 1730 1764 +6 23 24 866 1729 1730 1764 +6 23 24 866 1729 1730 1764 +6 23 24 866 1729 1730 1764 +6 23 24 866 1729 1730 1764 +6 23 24 866 1729 1730 1764 +2 24 1730 +2 24 1730 +2 24 1730 +2 24 1730 +2 24 1730 +2 24 1730 +4 24 25 1730 1731 +4 24 25 1730 1731 +4 24 25 1730 1731 +4 24 25 1730 1731 +4 24 25 1730 1731 +4 24 25 1730 1731 +2 25 1731 +2 25 1731 +2 25 1731 +2 25 1731 +2 25 1731 +2 25 1731 +6 25 26 867 1731 1732 1765 +6 25 26 867 1731 1732 1765 +6 25 26 867 1731 1732 1765 +6 25 26 867 1731 1732 1765 +6 25 26 867 1731 1732 1765 +6 25 26 867 1731 1732 1765 +3 26 867 1732 +3 26 867 1732 +3 26 867 1732 +3 26 867 1732 +3 26 867 1732 +3 26 867 1732 +6 26 27 867 1732 1733 1766 +6 26 27 867 1732 1733 1766 +6 26 27 867 1732 1733 1766 +6 26 27 867 1732 1733 1766 +6 26 27 867 1732 1733 1766 +6 26 27 867 1732 1733 1766 +2 27 1733 +2 27 1733 +2 27 1733 +2 27 1733 +2 27 1733 +2 27 1733 +4 27 28 1733 1734 +4 27 28 1733 1734 +4 27 28 1733 1734 +4 27 28 1733 1734 +4 27 28 1733 1734 +4 27 28 1733 1734 +2 28 1734 +2 28 1734 +2 28 1734 +2 28 1734 +2 28 1734 +2 28 1734 +6 28 29 868 1734 1735 1767 +6 28 29 868 1734 1735 1767 +6 28 29 868 1734 1735 1767 +6 28 29 868 1734 1735 1767 +6 28 29 868 1734 1735 1767 +6 28 29 868 1734 1735 1767 +3 29 868 1735 +3 29 868 1735 +3 29 868 1735 +3 29 868 1735 +3 29 868 1735 +3 29 868 1735 +6 29 30 868 1735 1736 1768 +6 29 30 868 1735 1736 1768 +6 29 30 868 1735 1736 1768 +6 29 30 868 1735 1736 1768 +6 29 30 868 1735 1736 1768 +6 29 30 868 1735 1736 1768 +2 30 1736 +2 30 1736 +2 30 1736 +2 30 1736 +2 30 1736 +2 30 1736 +4 30 31 1736 1737 +4 30 31 1736 1737 +4 30 31 1736 1737 +4 30 31 1736 1737 +4 30 31 1736 1737 +4 30 31 1736 1737 +2 31 1737 +2 31 1737 +2 31 1737 +2 31 1737 +2 31 1737 +2 31 1737 +6 31 32 869 1737 1738 1769 +6 31 32 869 1737 1738 1769 +6 31 32 869 1737 1738 1769 +6 31 32 869 1737 1738 1769 +6 31 32 869 1737 1738 1769 +6 31 32 869 1737 1738 1769 +3 32 869 1738 +3 32 869 1738 +3 32 869 1738 +3 32 869 1738 +3 32 869 1738 +3 32 869 1738 +6 32 33 869 1738 1739 1770 +6 32 33 869 1738 1739 1770 +6 32 33 869 1738 1739 1770 +6 32 33 869 1738 1739 1770 +6 32 33 869 1738 1739 1770 +6 32 33 869 1738 1739 1770 +2 33 1739 +2 33 1739 +2 33 1739 +2 33 1739 +2 33 1739 +2 33 1739 +4 33 34 1739 1740 +4 33 34 1739 1740 +4 33 34 1739 1740 +4 33 34 1739 1740 +4 33 34 1739 1740 +4 33 34 1739 1740 +2 34 1740 +2 34 1740 +2 34 1740 +2 34 1740 +2 34 1740 +2 34 1740 +6 34 35 870 1740 1741 1771 +6 34 35 870 1740 1741 1771 +6 34 35 870 1740 1741 1771 +6 34 35 870 1740 1741 1771 +6 34 35 870 1740 1741 1771 +6 34 35 870 1740 1741 1771 +3 35 870 1741 +3 35 870 1741 +3 35 870 1741 +3 35 870 1741 +3 35 870 1741 +3 35 870 1741 +6 35 36 870 1741 1742 1772 +6 35 36 870 1741 1742 1772 +6 35 36 870 1741 1742 1772 +6 35 36 870 1741 1742 1772 +6 35 36 870 1741 1742 1772 +6 35 36 870 1741 1742 1772 +2 36 1742 +2 36 1742 +2 36 1742 +2 36 1742 +2 36 1742 +2 36 1742 +4 36 37 1742 1743 +4 36 37 1742 1743 +4 36 37 1742 1743 +4 36 37 1742 1743 +4 36 37 1742 1743 +4 36 37 1742 1743 +2 37 1743 +2 37 1743 +2 37 1743 +2 37 1743 +2 37 1743 +2 37 1743 +6 37 38 871 1743 1744 1773 +6 37 38 871 1743 1744 1773 +6 37 38 871 1743 1744 1773 +6 37 38 871 1743 1744 1773 +6 37 38 871 1743 1744 1773 +6 37 38 871 1743 1744 1773 +3 38 871 1744 +3 38 871 1744 +3 38 871 1744 +3 38 871 1744 +3 38 871 1744 +3 38 871 1744 +6 38 39 871 1744 1745 1774 +6 38 39 871 1744 1745 1774 +6 38 39 871 1744 1745 1774 +6 38 39 871 1744 1745 1774 +6 38 39 871 1744 1745 1774 +6 38 39 871 1744 1745 1774 +2 39 1745 +2 39 1745 +2 39 1745 +2 39 1745 +2 39 1745 +2 39 1745 +4 39 40 1745 1746 +4 39 40 1745 1746 +4 39 40 1745 1746 +4 39 40 1745 1746 +4 39 40 1745 1746 +4 39 40 1745 1746 +2 40 1746 +2 40 1746 +2 40 1746 +2 40 1746 +2 40 1746 +2 40 1746 +6 40 41 872 1746 1747 1775 +6 40 41 872 1746 1747 1775 +6 40 41 872 1746 1747 1775 +6 40 41 872 1746 1747 1775 +6 40 41 872 1746 1747 1775 +6 40 41 872 1746 1747 1775 +3 41 872 1747 +3 41 872 1747 +3 41 872 1747 +3 41 872 1747 +3 41 872 1747 +3 41 872 1747 +6 41 42 872 1747 1748 1776 +6 41 42 872 1747 1748 1776 +6 41 42 872 1747 1748 1776 +6 41 42 872 1747 1748 1776 +6 41 42 872 1747 1748 1776 +6 41 42 872 1747 1748 1776 +2 42 1748 +2 42 1748 +2 42 1748 +2 42 1748 +2 42 1748 +2 42 1748 +4 42 43 1748 1749 +4 42 43 1748 1749 +4 42 43 1748 1749 +4 42 43 1748 1749 +4 42 43 1748 1749 +4 42 43 1748 1749 +2 43 1749 +2 43 1749 +2 43 1749 +2 43 1749 +2 43 1749 +2 43 1749 +6 43 44 873 1749 1750 1777 +6 43 44 873 1749 1750 1777 +6 43 44 873 1749 1750 1777 +6 43 44 873 1749 1750 1777 +6 43 44 873 1749 1750 1777 +6 43 44 873 1749 1750 1777 +3 44 873 1750 +3 44 873 1750 +3 44 873 1750 +3 44 873 1750 +3 44 873 1750 +3 44 873 1750 +6 44 45 873 1750 1751 1778 +6 44 45 873 1750 1751 1778 +6 44 45 873 1750 1751 1778 +6 44 45 873 1750 1751 1778 +6 44 45 873 1750 1751 1778 +6 44 45 873 1750 1751 1778 +2 45 1751 +2 45 1751 +2 45 1751 +2 45 1751 +2 45 1751 +2 45 1751 +4 45 46 1751 1752 +4 45 46 1751 1752 +4 45 46 1751 1752 +4 45 46 1751 1752 +4 45 46 1751 1752 +4 45 46 1751 1752 +2 46 1752 +2 46 1752 +2 46 1752 +2 46 1752 +2 46 1752 +2 46 1752 +6 46 47 874 1752 1753 1779 +6 46 47 874 1752 1753 1779 +6 46 47 874 1752 1753 1779 +6 46 47 874 1752 1753 1779 +6 46 47 874 1752 1753 1779 +6 46 47 874 1752 1753 1779 +3 47 874 1753 +3 47 874 1753 +3 47 874 1753 +3 47 874 1753 +3 47 874 1753 +3 47 874 1753 +6 47 48 874 1753 1754 1780 +6 47 48 874 1753 1754 1780 +6 47 48 874 1753 1754 1780 +6 47 48 874 1753 1754 1780 +6 47 48 874 1753 1754 1780 +6 47 48 874 1753 1754 1780 +2 48 1754 +2 48 1754 +2 48 1754 +2 48 1754 +2 48 1754 +2 48 1754 +4 48 49 1754 1755 +4 48 49 1754 1755 +4 48 49 1754 1755 +4 48 49 1754 1755 +4 48 49 1754 1755 +4 48 49 1754 1755 +2 49 1755 +2 49 1755 +2 49 1755 +2 49 1755 +2 49 1755 +2 49 1755 +6 49 50 875 1755 1756 1781 +6 49 50 875 1755 1756 1781 +6 49 50 875 1755 1756 1781 +6 49 50 875 1755 1756 1781 +6 49 50 875 1755 1756 1781 +6 49 50 875 1755 1756 1781 +3 50 875 1756 +3 50 875 1756 +3 50 875 1756 +3 50 875 1756 +3 50 875 1756 +3 50 875 1756 +6 50 51 875 1756 1757 1782 +6 50 51 875 1756 1757 1782 +6 50 51 875 1756 1757 1782 +6 50 51 875 1756 1757 1782 +6 50 51 875 1756 1757 1782 +6 50 51 875 1756 1757 1782 +2 51 1757 +2 51 1757 +2 51 1757 +2 51 1757 +2 51 1757 +2 51 1757 +4 51 52 1757 1758 +4 51 52 1757 1758 +4 51 52 1757 1758 +4 51 52 1757 1758 +4 51 52 1757 1758 +4 51 52 1757 1758 +2 52 1758 +2 52 1758 +2 52 1758 +2 52 1758 +2 52 1758 +2 52 1758 +3 52 1758 1783 +3 52 1758 1783 +3 52 1758 1783 +3 52 1758 1783 +3 52 1758 1783 +3 52 1758 1783 +12 53 738 739 740 741 1099 1100 1142 1143 1408 1409 1410 +12 53 738 739 740 741 1099 1100 1142 1143 1408 1409 1410 +12 53 738 739 740 741 1099 1100 1142 1143 1408 1409 1410 +12 53 738 739 740 741 1099 1100 1142 1143 1408 1409 1410 +12 53 738 739 740 741 1099 1100 1142 1143 1408 1409 1410 +12 53 738 739 740 741 1099 1100 1142 1143 1408 1409 1410 +5 53 59 686 689 691 +5 53 59 686 689 691 +5 53 59 686 689 691 +5 53 59 686 689 691 +5 53 59 686 689 691 +5 53 59 686 689 691 +12 54 740 741 742 743 1100 1101 1143 1144 1414 1415 1416 +12 54 740 741 742 743 1100 1101 1143 1144 1414 1415 1416 +12 54 740 741 742 743 1100 1101 1143 1144 1414 1415 1416 +12 54 740 741 742 743 1100 1101 1143 1144 1414 1415 1416 +12 54 740 741 742 743 1100 1101 1143 1144 1414 1415 1416 +12 54 740 741 742 743 1100 1101 1143 1144 1414 1415 1416 +4 54 60 683 686 +4 54 60 683 686 +4 54 60 683 686 +4 54 60 683 686 +4 54 60 683 686 +4 54 60 683 686 +12 55 742 743 744 745 1101 1102 1144 1145 1420 1421 1422 +12 55 742 743 744 745 1101 1102 1144 1145 1420 1421 1422 +12 55 742 743 744 745 1101 1102 1144 1145 1420 1421 1422 +12 55 742 743 744 745 1101 1102 1144 1145 1420 1421 1422 +12 55 742 743 744 745 1101 1102 1144 1145 1420 1421 1422 +12 55 742 743 744 745 1101 1102 1144 1145 1420 1421 1422 +4 55 61 683 1848 +4 55 61 683 1848 +4 55 61 683 1848 +4 55 61 683 1848 +4 55 61 683 1848 +4 55 61 683 1848 +12 56 744 745 746 747 1102 1103 1145 1146 1426 1427 1428 +12 56 744 745 746 747 1102 1103 1145 1146 1426 1427 1428 +12 56 744 745 746 747 1102 1103 1145 1146 1426 1427 1428 +12 56 744 745 746 747 1102 1103 1145 1146 1426 1427 1428 +12 56 744 745 746 747 1102 1103 1145 1146 1426 1427 1428 +12 56 744 745 746 747 1102 1103 1145 1146 1426 1427 1428 +4 56 62 1848 1849 +4 56 62 1848 1849 +4 56 62 1848 1849 +4 56 62 1848 1849 +4 56 62 1848 1849 +4 56 62 1848 1849 +12 57 746 747 748 749 1103 1104 1146 1147 1432 1433 1434 +12 57 746 747 748 749 1103 1104 1146 1147 1432 1433 1434 +12 57 746 747 748 749 1103 1104 1146 1147 1432 1433 1434 +12 57 746 747 748 749 1103 1104 1146 1147 1432 1433 1434 +12 57 746 747 748 749 1103 1104 1146 1147 1432 1433 1434 +12 57 746 747 748 749 1103 1104 1146 1147 1432 1433 1434 +4 57 63 1849 1850 +4 57 63 1849 1850 +4 57 63 1849 1850 +4 57 63 1849 1850 +4 57 63 1849 1850 +4 57 63 1849 1850 +12 58 748 749 750 751 1104 1105 1147 1148 1438 1439 1440 +12 58 748 749 750 751 1104 1105 1147 1148 1438 1439 1440 +12 58 748 749 750 751 1104 1105 1147 1148 1438 1439 1440 +12 58 748 749 750 751 1104 1105 1147 1148 1438 1439 1440 +12 58 748 749 750 751 1104 1105 1147 1148 1438 1439 1440 +12 58 748 749 750 751 1104 1105 1147 1148 1438 1439 1440 +5 58 64 1850 1851 1852 +5 58 64 1850 1851 1852 +5 58 64 1850 1851 1852 +5 58 64 1850 1851 1852 +5 58 64 1850 1851 1852 +5 58 64 1850 1851 1852 +5 59 65 638 641 643 +5 59 65 638 641 643 +5 59 65 638 641 643 +5 59 65 638 641 643 +5 59 65 638 641 643 +5 59 65 638 641 643 +4 60 66 635 638 +4 60 66 635 638 +4 60 66 635 638 +4 60 66 635 638 +4 60 66 635 638 +4 60 66 635 638 +4 61 67 635 1853 +4 61 67 635 1853 +4 61 67 635 1853 +4 61 67 635 1853 +4 61 67 635 1853 +4 61 67 635 1853 +4 62 68 1853 1854 +4 62 68 1853 1854 +4 62 68 1853 1854 +4 62 68 1853 1854 +4 62 68 1853 1854 +4 62 68 1853 1854 +4 63 69 1854 1855 +4 63 69 1854 1855 +4 63 69 1854 1855 +4 63 69 1854 1855 +4 63 69 1854 1855 +4 63 69 1854 1855 +5 64 70 1855 1856 1857 +5 64 70 1855 1856 1857 +5 64 70 1855 1856 1857 +5 64 70 1855 1856 1857 +5 64 70 1855 1856 1857 +5 64 70 1855 1856 1857 +5 65 71 580 583 585 +5 65 71 580 583 585 +5 65 71 580 583 585 +5 65 71 580 583 585 +5 65 71 580 583 585 +5 65 71 580 583 585 +4 66 72 577 580 +4 66 72 577 580 +4 66 72 577 580 +4 66 72 577 580 +4 66 72 577 580 +4 66 72 577 580 +4 67 73 577 1858 +4 67 73 577 1858 +4 67 73 577 1858 +4 67 73 577 1858 +4 67 73 577 1858 +4 67 73 577 1858 +4 68 74 1858 1859 +4 68 74 1858 1859 +4 68 74 1858 1859 +4 68 74 1858 1859 +4 68 74 1858 1859 +4 68 74 1858 1859 +4 69 75 1859 1860 +4 69 75 1859 1860 +4 69 75 1859 1860 +4 69 75 1859 1860 +4 69 75 1859 1860 +4 69 75 1859 1860 +5 70 76 1860 1861 1862 +5 70 76 1860 1861 1862 +5 70 76 1860 1861 1862 +5 70 76 1860 1861 1862 +5 70 76 1860 1861 1862 +5 70 76 1860 1861 1862 +4 71 522 525 527 +4 71 522 525 527 +4 71 522 525 527 +4 71 522 525 527 +4 71 522 525 527 +4 71 522 525 527 +3 72 519 522 +3 72 519 522 +3 72 519 522 +3 72 519 522 +3 72 519 522 +3 72 519 522 +3 73 519 1863 +3 73 519 1863 +3 73 519 1863 +3 73 519 1863 +3 73 519 1863 +3 73 519 1863 +3 74 1863 1864 +3 74 1863 1864 +3 74 1863 1864 +3 74 1863 1864 +3 74 1863 1864 +3 74 1863 1864 +3 75 1864 1865 +3 75 1864 1865 +3 75 1864 1865 +3 75 1864 1865 +3 75 1864 1865 +3 75 1864 1865 +4 76 1865 1866 1867 +4 76 1865 1866 1867 +4 76 1865 1866 1867 +4 76 1865 1866 1867 +4 76 1865 1866 1867 +4 76 1865 1866 1867 +5 77 83 1873 1874 1875 +5 77 83 1873 1874 1875 +5 77 83 1873 1874 1875 +5 77 83 1873 1874 1875 +5 77 83 1873 1874 1875 +5 77 83 1873 1874 1875 +4 77 1868 1869 1870 +4 77 1868 1869 1870 +4 77 1868 1869 1870 +4 77 1868 1869 1870 +4 77 1868 1869 1870 +4 77 1868 1869 1870 +4 78 84 1875 1876 +4 78 84 1875 1876 +4 78 84 1875 1876 +4 78 84 1875 1876 +4 78 84 1875 1876 +4 78 84 1875 1876 +3 78 1870 1871 +3 78 1870 1871 +3 78 1870 1871 +3 78 1870 1871 +3 78 1870 1871 +3 78 1870 1871 +4 79 85 1876 1877 +4 79 85 1876 1877 +4 79 85 1876 1877 +4 79 85 1876 1877 +4 79 85 1876 1877 +4 79 85 1876 1877 +3 79 1871 1872 +3 79 1871 1872 +3 79 1871 1872 +3 79 1871 1872 +3 79 1871 1872 +3 79 1871 1872 +4 80 86 1877 3060 +4 80 86 1877 3060 +4 80 86 1877 3060 +4 80 86 1877 3060 +4 80 86 1877 3060 +4 80 86 1877 3060 +3 80 1872 3118 +3 80 1872 3118 +3 80 1872 3118 +3 80 1872 3118 +3 80 1872 3118 +3 80 1872 3118 +4 81 87 3057 3060 +4 81 87 3057 3060 +4 81 87 3057 3060 +4 81 87 3057 3060 +4 81 87 3057 3060 +4 81 87 3057 3060 +3 81 3115 3118 +3 81 3115 3118 +3 81 3115 3118 +3 81 3115 3118 +3 81 3115 3118 +3 81 3115 3118 +5 82 88 3052 3054 3057 +5 82 88 3052 3054 3057 +5 82 88 3052 3054 3057 +5 82 88 3052 3054 3057 +5 82 88 3052 3054 3057 +5 82 88 3052 3054 3057 +4 82 3110 3112 3115 +4 82 3110 3112 3115 +4 82 3110 3112 3115 +4 82 3110 3112 3115 +4 82 3110 3112 3115 +4 82 3110 3112 3115 +5 83 89 1878 1879 1880 +5 83 89 1878 1879 1880 +5 83 89 1878 1879 1880 +5 83 89 1878 1879 1880 +5 83 89 1878 1879 1880 +5 83 89 1878 1879 1880 +4 84 90 1880 1881 +4 84 90 1880 1881 +4 84 90 1880 1881 +4 84 90 1880 1881 +4 84 90 1880 1881 +4 84 90 1880 1881 +4 85 91 1881 1882 +4 85 91 1881 1882 +4 85 91 1881 1882 +4 85 91 1881 1882 +4 85 91 1881 1882 +4 85 91 1881 1882 +4 86 92 1882 3002 +4 86 92 1882 3002 +4 86 92 1882 3002 +4 86 92 1882 3002 +4 86 92 1882 3002 +4 86 92 1882 3002 +4 87 93 2999 3002 +4 87 93 2999 3002 +4 87 93 2999 3002 +4 87 93 2999 3002 +4 87 93 2999 3002 +4 87 93 2999 3002 +5 88 94 2994 2996 2999 +5 88 94 2994 2996 2999 +5 88 94 2994 2996 2999 +5 88 94 2994 2996 2999 +5 88 94 2994 2996 2999 +5 88 94 2994 2996 2999 +5 89 95 1883 1884 1885 +5 89 95 1883 1884 1885 +5 89 95 1883 1884 1885 +5 89 95 1883 1884 1885 +5 89 95 1883 1884 1885 +5 89 95 1883 1884 1885 +4 90 96 1885 1886 +4 90 96 1885 1886 +4 90 96 1885 1886 +4 90 96 1885 1886 +4 90 96 1885 1886 +4 90 96 1885 1886 +4 91 97 1886 1887 +4 91 97 1886 1887 +4 91 97 1886 1887 +4 91 97 1886 1887 +4 91 97 1886 1887 +4 91 97 1886 1887 +4 92 98 1887 2954 +4 92 98 1887 2954 +4 92 98 1887 2954 +4 92 98 1887 2954 +4 92 98 1887 2954 +4 92 98 1887 2954 +4 93 99 2951 2954 +4 93 99 2951 2954 +4 93 99 2951 2954 +4 93 99 2951 2954 +4 93 99 2951 2954 +4 93 99 2951 2954 +5 94 100 2946 2948 2951 +5 94 100 2946 2948 2951 +5 94 100 2946 2948 2951 +5 94 100 2946 2948 2951 +5 94 100 2946 2948 2951 +5 94 100 2946 2948 2951 +12 95 2284 2285 2286 2489 2490 2532 2533 2886 2887 2888 2889 +12 95 2284 2285 2286 2489 2490 2532 2533 2886 2887 2888 2889 +12 95 2284 2285 2286 2489 2490 2532 2533 2886 2887 2888 2889 +12 95 2284 2285 2286 2489 2490 2532 2533 2886 2887 2888 2889 +12 95 2284 2285 2286 2489 2490 2532 2533 2886 2887 2888 2889 +12 95 2284 2285 2286 2489 2490 2532 2533 2886 2887 2888 2889 +12 96 2290 2291 2292 2490 2491 2533 2534 2888 2889 2890 2891 +12 96 2290 2291 2292 2490 2491 2533 2534 2888 2889 2890 2891 +12 96 2290 2291 2292 2490 2491 2533 2534 2888 2889 2890 2891 +12 96 2290 2291 2292 2490 2491 2533 2534 2888 2889 2890 2891 +12 96 2290 2291 2292 2490 2491 2533 2534 2888 2889 2890 2891 +12 96 2290 2291 2292 2490 2491 2533 2534 2888 2889 2890 2891 +12 97 2296 2297 2298 2491 2492 2534 2535 2890 2891 2892 2893 +12 97 2296 2297 2298 2491 2492 2534 2535 2890 2891 2892 2893 +12 97 2296 2297 2298 2491 2492 2534 2535 2890 2891 2892 2893 +12 97 2296 2297 2298 2491 2492 2534 2535 2890 2891 2892 2893 +12 97 2296 2297 2298 2491 2492 2534 2535 2890 2891 2892 2893 +12 97 2296 2297 2298 2491 2492 2534 2535 2890 2891 2892 2893 +12 98 2302 2303 2304 2492 2493 2535 2536 2892 2893 2894 2895 +12 98 2302 2303 2304 2492 2493 2535 2536 2892 2893 2894 2895 +12 98 2302 2303 2304 2492 2493 2535 2536 2892 2893 2894 2895 +12 98 2302 2303 2304 2492 2493 2535 2536 2892 2893 2894 2895 +12 98 2302 2303 2304 2492 2493 2535 2536 2892 2893 2894 2895 +12 98 2302 2303 2304 2492 2493 2535 2536 2892 2893 2894 2895 +12 99 2308 2309 2310 2493 2494 2536 2537 2894 2895 2896 2897 +12 99 2308 2309 2310 2493 2494 2536 2537 2894 2895 2896 2897 +12 99 2308 2309 2310 2493 2494 2536 2537 2894 2895 2896 2897 +12 99 2308 2309 2310 2493 2494 2536 2537 2894 2895 2896 2897 +12 99 2308 2309 2310 2493 2494 2536 2537 2894 2895 2896 2897 +12 99 2308 2309 2310 2493 2494 2536 2537 2894 2895 2896 2897 +12 100 2314 2315 2316 2494 2495 2537 2538 2896 2897 2898 2899 +12 100 2314 2315 2316 2494 2495 2537 2538 2896 2897 2898 2899 +12 100 2314 2315 2316 2494 2495 2537 2538 2896 2897 2898 2899 +12 100 2314 2315 2316 2494 2495 2537 2538 2896 2897 2898 2899 +12 100 2314 2315 2316 2494 2495 2537 2538 2896 2897 2898 2899 +12 100 2314 2315 2316 2494 2495 2537 2538 2896 2897 2898 2899 +4 101 102 1966 1967 +4 101 102 1966 1967 +4 101 102 1966 1967 +4 101 102 1966 1967 +4 101 102 1966 1967 +4 101 102 1966 1967 +2 101 1966 +2 101 1966 +2 101 1966 +2 101 1966 +2 101 1966 +2 101 1966 +3 101 1941 1966 +3 101 1941 1966 +3 101 1941 1966 +3 101 1941 1966 +3 101 1941 1966 +3 101 1941 1966 +6 102 103 1942 1967 1968 2762 +6 102 103 1942 1967 1968 2762 +6 102 103 1942 1967 1968 2762 +6 102 103 1942 1967 1968 2762 +6 102 103 1942 1967 1968 2762 +6 102 103 1942 1967 1968 2762 +2 102 1967 +2 102 1967 +2 102 1967 +2 102 1967 +2 102 1967 +2 102 1967 +6 103 104 1943 1968 1969 2762 +6 103 104 1943 1968 1969 2762 +6 103 104 1943 1968 1969 2762 +6 103 104 1943 1968 1969 2762 +6 103 104 1943 1968 1969 2762 +6 103 104 1943 1968 1969 2762 +3 103 1968 2762 +3 103 1968 2762 +3 103 1968 2762 +3 103 1968 2762 +3 103 1968 2762 +3 103 1968 2762 +4 104 105 1969 1970 +4 104 105 1969 1970 +4 104 105 1969 1970 +4 104 105 1969 1970 +4 104 105 1969 1970 +4 104 105 1969 1970 +2 104 1969 +2 104 1969 +2 104 1969 +2 104 1969 +2 104 1969 +2 104 1969 +6 105 106 1944 1970 1971 2763 +6 105 106 1944 1970 1971 2763 +6 105 106 1944 1970 1971 2763 +6 105 106 1944 1970 1971 2763 +6 105 106 1944 1970 1971 2763 +6 105 106 1944 1970 1971 2763 +2 105 1970 +2 105 1970 +2 105 1970 +2 105 1970 +2 105 1970 +2 105 1970 +6 106 107 1945 1971 1972 2763 +6 106 107 1945 1971 1972 2763 +6 106 107 1945 1971 1972 2763 +6 106 107 1945 1971 1972 2763 +6 106 107 1945 1971 1972 2763 +6 106 107 1945 1971 1972 2763 +3 106 1971 2763 +3 106 1971 2763 +3 106 1971 2763 +3 106 1971 2763 +3 106 1971 2763 +3 106 1971 2763 +4 107 108 1972 1973 +4 107 108 1972 1973 +4 107 108 1972 1973 +4 107 108 1972 1973 +4 107 108 1972 1973 +4 107 108 1972 1973 +2 107 1972 +2 107 1972 +2 107 1972 +2 107 1972 +2 107 1972 +2 107 1972 +6 108 109 1946 1973 1974 2764 +6 108 109 1946 1973 1974 2764 +6 108 109 1946 1973 1974 2764 +6 108 109 1946 1973 1974 2764 +6 108 109 1946 1973 1974 2764 +6 108 109 1946 1973 1974 2764 +2 108 1973 +2 108 1973 +2 108 1973 +2 108 1973 +2 108 1973 +2 108 1973 +6 109 110 1947 1974 1975 2764 +6 109 110 1947 1974 1975 2764 +6 109 110 1947 1974 1975 2764 +6 109 110 1947 1974 1975 2764 +6 109 110 1947 1974 1975 2764 +6 109 110 1947 1974 1975 2764 +3 109 1974 2764 +3 109 1974 2764 +3 109 1974 2764 +3 109 1974 2764 +3 109 1974 2764 +3 109 1974 2764 +4 110 111 1975 1976 +4 110 111 1975 1976 +4 110 111 1975 1976 +4 110 111 1975 1976 +4 110 111 1975 1976 +4 110 111 1975 1976 +2 110 1975 +2 110 1975 +2 110 1975 +2 110 1975 +2 110 1975 +2 110 1975 +6 111 112 1948 1976 1977 2765 +6 111 112 1948 1976 1977 2765 +6 111 112 1948 1976 1977 2765 +6 111 112 1948 1976 1977 2765 +6 111 112 1948 1976 1977 2765 +6 111 112 1948 1976 1977 2765 +2 111 1976 +2 111 1976 +2 111 1976 +2 111 1976 +2 111 1976 +2 111 1976 +6 112 113 1949 1977 1978 2765 +6 112 113 1949 1977 1978 2765 +6 112 113 1949 1977 1978 2765 +6 112 113 1949 1977 1978 2765 +6 112 113 1949 1977 1978 2765 +6 112 113 1949 1977 1978 2765 +3 112 1977 2765 +3 112 1977 2765 +3 112 1977 2765 +3 112 1977 2765 +3 112 1977 2765 +3 112 1977 2765 +4 113 114 1978 1979 +4 113 114 1978 1979 +4 113 114 1978 1979 +4 113 114 1978 1979 +4 113 114 1978 1979 +4 113 114 1978 1979 +2 113 1978 +2 113 1978 +2 113 1978 +2 113 1978 +2 113 1978 +2 113 1978 +6 114 115 1950 1979 1980 2766 +6 114 115 1950 1979 1980 2766 +6 114 115 1950 1979 1980 2766 +6 114 115 1950 1979 1980 2766 +6 114 115 1950 1979 1980 2766 +6 114 115 1950 1979 1980 2766 +2 114 1979 +2 114 1979 +2 114 1979 +2 114 1979 +2 114 1979 +2 114 1979 +6 115 116 1951 1980 1981 2766 +6 115 116 1951 1980 1981 2766 +6 115 116 1951 1980 1981 2766 +6 115 116 1951 1980 1981 2766 +6 115 116 1951 1980 1981 2766 +6 115 116 1951 1980 1981 2766 +3 115 1980 2766 +3 115 1980 2766 +3 115 1980 2766 +3 115 1980 2766 +3 115 1980 2766 +3 115 1980 2766 +4 116 117 1981 1982 +4 116 117 1981 1982 +4 116 117 1981 1982 +4 116 117 1981 1982 +4 116 117 1981 1982 +4 116 117 1981 1982 +2 116 1981 +2 116 1981 +2 116 1981 +2 116 1981 +2 116 1981 +2 116 1981 +6 117 118 1952 1982 1983 2767 +6 117 118 1952 1982 1983 2767 +6 117 118 1952 1982 1983 2767 +6 117 118 1952 1982 1983 2767 +6 117 118 1952 1982 1983 2767 +6 117 118 1952 1982 1983 2767 +2 117 1982 +2 117 1982 +2 117 1982 +2 117 1982 +2 117 1982 +2 117 1982 +6 118 119 1953 1983 1984 2767 +6 118 119 1953 1983 1984 2767 +6 118 119 1953 1983 1984 2767 +6 118 119 1953 1983 1984 2767 +6 118 119 1953 1983 1984 2767 +6 118 119 1953 1983 1984 2767 +3 118 1983 2767 +3 118 1983 2767 +3 118 1983 2767 +3 118 1983 2767 +3 118 1983 2767 +3 118 1983 2767 +4 119 120 1984 1985 +4 119 120 1984 1985 +4 119 120 1984 1985 +4 119 120 1984 1985 +4 119 120 1984 1985 +4 119 120 1984 1985 +2 119 1984 +2 119 1984 +2 119 1984 +2 119 1984 +2 119 1984 +2 119 1984 +6 120 121 1954 1985 1986 2768 +6 120 121 1954 1985 1986 2768 +6 120 121 1954 1985 1986 2768 +6 120 121 1954 1985 1986 2768 +6 120 121 1954 1985 1986 2768 +6 120 121 1954 1985 1986 2768 +2 120 1985 +2 120 1985 +2 120 1985 +2 120 1985 +2 120 1985 +2 120 1985 +6 121 122 1955 1986 1987 2768 +6 121 122 1955 1986 1987 2768 +6 121 122 1955 1986 1987 2768 +6 121 122 1955 1986 1987 2768 +6 121 122 1955 1986 1987 2768 +6 121 122 1955 1986 1987 2768 +3 121 1986 2768 +3 121 1986 2768 +3 121 1986 2768 +3 121 1986 2768 +3 121 1986 2768 +3 121 1986 2768 +4 122 123 1987 1988 +4 122 123 1987 1988 +4 122 123 1987 1988 +4 122 123 1987 1988 +4 122 123 1987 1988 +4 122 123 1987 1988 +2 122 1987 +2 122 1987 +2 122 1987 +2 122 1987 +2 122 1987 +2 122 1987 +6 123 124 1956 1988 1989 2769 +6 123 124 1956 1988 1989 2769 +6 123 124 1956 1988 1989 2769 +6 123 124 1956 1988 1989 2769 +6 123 124 1956 1988 1989 2769 +6 123 124 1956 1988 1989 2769 +2 123 1988 +2 123 1988 +2 123 1988 +2 123 1988 +2 123 1988 +2 123 1988 +6 124 125 1957 1989 1990 2769 +6 124 125 1957 1989 1990 2769 +6 124 125 1957 1989 1990 2769 +6 124 125 1957 1989 1990 2769 +6 124 125 1957 1989 1990 2769 +6 124 125 1957 1989 1990 2769 +3 124 1989 2769 +3 124 1989 2769 +3 124 1989 2769 +3 124 1989 2769 +3 124 1989 2769 +3 124 1989 2769 +4 125 126 1990 1991 +4 125 126 1990 1991 +4 125 126 1990 1991 +4 125 126 1990 1991 +4 125 126 1990 1991 +4 125 126 1990 1991 +2 125 1990 +2 125 1990 +2 125 1990 +2 125 1990 +2 125 1990 +2 125 1990 +6 126 127 1958 1991 1992 2770 +6 126 127 1958 1991 1992 2770 +6 126 127 1958 1991 1992 2770 +6 126 127 1958 1991 1992 2770 +6 126 127 1958 1991 1992 2770 +6 126 127 1958 1991 1992 2770 +2 126 1991 +2 126 1991 +2 126 1991 +2 126 1991 +2 126 1991 +2 126 1991 +6 127 128 1959 1992 1993 2770 +6 127 128 1959 1992 1993 2770 +6 127 128 1959 1992 1993 2770 +6 127 128 1959 1992 1993 2770 +6 127 128 1959 1992 1993 2770 +6 127 128 1959 1992 1993 2770 +3 127 1992 2770 +3 127 1992 2770 +3 127 1992 2770 +3 127 1992 2770 +3 127 1992 2770 +3 127 1992 2770 +4 128 129 1993 1994 +4 128 129 1993 1994 +4 128 129 1993 1994 +4 128 129 1993 1994 +4 128 129 1993 1994 +4 128 129 1993 1994 +2 128 1993 +2 128 1993 +2 128 1993 +2 128 1993 +2 128 1993 +2 128 1993 +6 129 130 1960 1994 1995 2771 +6 129 130 1960 1994 1995 2771 +6 129 130 1960 1994 1995 2771 +6 129 130 1960 1994 1995 2771 +6 129 130 1960 1994 1995 2771 +6 129 130 1960 1994 1995 2771 +2 129 1994 +2 129 1994 +2 129 1994 +2 129 1994 +2 129 1994 +2 129 1994 +6 130 131 1961 1995 1996 2771 +6 130 131 1961 1995 1996 2771 +6 130 131 1961 1995 1996 2771 +6 130 131 1961 1995 1996 2771 +6 130 131 1961 1995 1996 2771 +6 130 131 1961 1995 1996 2771 +3 130 1995 2771 +3 130 1995 2771 +3 130 1995 2771 +3 130 1995 2771 +3 130 1995 2771 +3 130 1995 2771 +4 131 132 1996 1997 +4 131 132 1996 1997 +4 131 132 1996 1997 +4 131 132 1996 1997 +4 131 132 1996 1997 +4 131 132 1996 1997 +2 131 1996 +2 131 1996 +2 131 1996 +2 131 1996 +2 131 1996 +2 131 1996 +6 132 133 1962 1997 1998 2772 +6 132 133 1962 1997 1998 2772 +6 132 133 1962 1997 1998 2772 +6 132 133 1962 1997 1998 2772 +6 132 133 1962 1997 1998 2772 +6 132 133 1962 1997 1998 2772 +2 132 1997 +2 132 1997 +2 132 1997 +2 132 1997 +2 132 1997 +2 132 1997 +6 133 134 1963 1998 1999 2772 +6 133 134 1963 1998 1999 2772 +6 133 134 1963 1998 1999 2772 +6 133 134 1963 1998 1999 2772 +6 133 134 1963 1998 1999 2772 +6 133 134 1963 1998 1999 2772 +3 133 1998 2772 +3 133 1998 2772 +3 133 1998 2772 +3 133 1998 2772 +3 133 1998 2772 +3 133 1998 2772 +4 134 135 1999 2000 +4 134 135 1999 2000 +4 134 135 1999 2000 +4 134 135 1999 2000 +4 134 135 1999 2000 +4 134 135 1999 2000 +2 134 1999 +2 134 1999 +2 134 1999 +2 134 1999 +2 134 1999 +2 134 1999 +6 135 136 1964 2000 2001 2773 +6 135 136 1964 2000 2001 2773 +6 135 136 1964 2000 2001 2773 +6 135 136 1964 2000 2001 2773 +6 135 136 1964 2000 2001 2773 +6 135 136 1964 2000 2001 2773 +2 135 2000 +2 135 2000 +2 135 2000 +2 135 2000 +2 135 2000 +2 135 2000 +5 136 137 2001 2002 2773 +5 136 137 2001 2002 2773 +5 136 137 2001 2002 2773 +5 136 137 2001 2002 2773 +5 136 137 2001 2002 2773 +5 136 137 2001 2002 2773 +3 136 2001 2773 +3 136 2001 2773 +3 136 2001 2773 +3 136 2001 2773 +3 136 2001 2773 +3 136 2001 2773 +4 137 138 2002 2003 +4 137 138 2002 2003 +4 137 138 2002 2003 +4 137 138 2002 2003 +4 137 138 2002 2003 +4 137 138 2002 2003 +2 137 2002 +2 137 2002 +2 137 2002 +2 137 2002 +2 137 2002 +2 137 2002 +4 138 139 2003 2004 +4 138 139 2003 2004 +4 138 139 2003 2004 +4 138 139 2003 2004 +4 138 139 2003 2004 +4 138 139 2003 2004 +2 138 2003 +2 138 2003 +2 138 2003 +2 138 2003 +2 138 2003 +2 138 2003 +4 139 140 2004 2005 +4 139 140 2004 2005 +4 139 140 2004 2005 +4 139 140 2004 2005 +4 139 140 2004 2005 +4 139 140 2004 2005 +2 139 2004 +2 139 2004 +2 139 2004 +2 139 2004 +2 139 2004 +2 139 2004 +4 140 141 2005 2006 +4 140 141 2005 2006 +4 140 141 2005 2006 +4 140 141 2005 2006 +4 140 141 2005 2006 +4 140 141 2005 2006 +2 140 2005 +2 140 2005 +2 140 2005 +2 140 2005 +2 140 2005 +2 140 2005 +5 141 142 2006 2007 2774 +5 141 142 2006 2007 2774 +5 141 142 2006 2007 2774 +5 141 142 2006 2007 2774 +5 141 142 2006 2007 2774 +5 141 142 2006 2007 2774 +2 141 2006 +2 141 2006 +2 141 2006 +2 141 2006 +2 141 2006 +2 141 2006 +6 142 143 1965 2007 2008 2774 +6 142 143 1965 2007 2008 2774 +6 142 143 1965 2007 2008 2774 +6 142 143 1965 2007 2008 2774 +6 142 143 1965 2007 2008 2774 +6 142 143 1965 2007 2008 2774 +3 142 2007 2774 +3 142 2007 2774 +3 142 2007 2774 +3 142 2007 2774 +3 142 2007 2774 +3 142 2007 2774 +4 143 144 2008 3125 +4 143 144 2008 3125 +4 143 144 2008 3125 +4 143 144 2008 3125 +4 143 144 2008 3125 +4 143 144 2008 3125 +2 143 2008 +2 143 2008 +2 143 2008 +2 143 2008 +2 143 2008 +2 143 2008 +6 144 145 3121 3125 3126 3212 +6 144 145 3121 3125 3126 3212 +6 144 145 3121 3125 3126 3212 +6 144 145 3121 3125 3126 3212 +6 144 145 3121 3125 3126 3212 +6 144 145 3121 3125 3126 3212 +2 144 3125 +2 144 3125 +2 144 3125 +2 144 3125 +2 144 3125 +2 144 3125 +6 145 146 3122 3126 3127 3212 +6 145 146 3122 3126 3127 3212 +6 145 146 3122 3126 3127 3212 +6 145 146 3122 3126 3127 3212 +6 145 146 3122 3126 3127 3212 +6 145 146 3122 3126 3127 3212 +3 145 3126 3212 +3 145 3126 3212 +3 145 3126 3212 +3 145 3126 3212 +3 145 3126 3212 +3 145 3126 3212 +4 146 147 3127 3128 +4 146 147 3127 3128 +4 146 147 3127 3128 +4 146 147 3127 3128 +4 146 147 3127 3128 +4 146 147 3127 3128 +2 146 3127 +2 146 3127 +2 146 3127 +2 146 3127 +2 146 3127 +2 146 3127 +6 147 148 3123 3128 3129 3213 +6 147 148 3123 3128 3129 3213 +6 147 148 3123 3128 3129 3213 +6 147 148 3123 3128 3129 3213 +6 147 148 3123 3128 3129 3213 +6 147 148 3123 3128 3129 3213 +2 147 3128 +2 147 3128 +2 147 3128 +2 147 3128 +2 147 3128 +2 147 3128 +4 148 3124 3129 3213 +4 148 3124 3129 3213 +4 148 3124 3129 3213 +4 148 3124 3129 3213 +4 148 3124 3129 3213 +4 148 3124 3129 3213 +3 148 3129 3213 +3 148 3129 3213 +3 148 3129 3213 +3 148 3129 3213 +3 148 3129 3213 +3 148 3129 3213 +7 149 150 3253 3257 3258 3371 3375 +7 149 150 3253 3257 3258 3371 3375 +7 149 150 3253 3257 3258 3371 3375 +7 149 150 3253 3257 3258 3371 3375 +7 149 150 3253 3257 3258 3371 3375 +7 149 150 3253 3257 3258 3371 3375 +3 149 3257 3371 +3 149 3257 3371 +3 149 3257 3371 +3 149 3257 3371 +3 149 3257 3371 +3 149 3257 3371 +4 149 3252 3257 3371 +4 149 3252 3257 3371 +4 149 3252 3257 3371 +4 149 3252 3257 3371 +4 149 3252 3257 3371 +4 149 3252 3257 3371 +7 150 152 3254 3258 3259 3374 3375 +7 150 152 3254 3258 3259 3374 3375 +7 150 152 3254 3258 3259 3374 3375 +7 150 152 3254 3258 3259 3374 3375 +7 150 152 3254 3258 3259 3374 3375 +7 150 152 3254 3258 3259 3374 3375 +3 150 3258 3375 +3 150 3258 3375 +3 150 3258 3375 +3 150 3258 3375 +3 150 3258 3375 +3 150 3258 3375 +4 151 3256 3260 3373 +4 151 3256 3260 3373 +4 151 3256 3260 3373 +4 151 3256 3260 3373 +4 151 3256 3260 3373 +4 151 3256 3260 3373 +3 151 3260 3373 +3 151 3260 3373 +3 151 3260 3373 +3 151 3260 3373 +3 151 3260 3373 +3 151 3260 3373 +7 151 152 3255 3259 3260 3373 3374 +7 151 152 3255 3259 3260 3373 3374 +7 151 152 3255 3259 3260 3373 3374 +7 151 152 3255 3259 3260 3373 3374 +7 151 152 3255 3259 3260 3373 3374 +7 151 152 3255 3259 3260 3373 3374 +3 152 3259 3374 +3 152 3259 3374 +3 152 3259 3374 +3 152 3259 3374 +3 152 3259 3374 +3 152 3259 3374 +2 153 155 +2 153 155 +2 153 155 +2 153 155 +2 153 155 +2 153 155 +1 153 +1 153 +1 153 +1 153 +1 153 +1 153 +3 153 154 158 +3 153 154 158 +3 153 154 158 +3 153 154 158 +3 153 154 158 +3 153 154 158 +1 154 +1 154 +1 154 +1 154 +1 154 +1 154 +6 154 408 444 462 3181 3217 +6 154 408 444 462 3181 3217 +6 154 408 444 462 3181 3217 +6 154 408 444 462 3181 3217 +6 154 408 444 462 3181 3217 +6 154 408 444 462 3181 3217 +1 155 +1 155 +1 155 +1 155 +1 155 +1 155 +12 155 156 395 397 422 440 468 470 3185 3203 3228 3230 +12 155 156 395 397 422 440 468 470 3185 3203 3228 3230 +12 155 156 395 397 422 440 468 470 3185 3203 3228 3230 +12 155 156 395 397 422 440 468 470 3185 3203 3228 3230 +12 155 156 395 397 422 440 468 470 3185 3203 3228 3230 +12 155 156 395 397 422 440 468 470 3185 3203 3228 3230 +1 156 +1 156 +1 156 +1 156 +1 156 +1 156 +10 156 157 383 440 442 470 472 3183 3185 3242 +10 156 157 383 440 442 470 472 3183 3185 3242 +10 156 157 383 440 442 470 472 3183 3185 3242 +10 156 157 383 440 442 470 472 3183 3185 3242 +10 156 157 383 440 442 470 472 3183 3185 3242 +10 156 157 383 440 442 470 472 3183 3185 3242 +1 157 +1 157 +1 157 +1 157 +1 157 +1 157 +6 157 374 442 472 3183 3251 +6 157 374 442 472 3183 3251 +6 157 374 442 472 3183 3251 +6 157 374 442 472 3183 3251 +6 157 374 442 472 3183 3251 +6 157 374 442 472 3183 3251 +1 158 +1 158 +1 158 +1 158 +1 158 +1 158 +11 158 159 401 422 423 468 474 3163 3202 3203 3224 +11 158 159 401 422 423 468 474 3163 3202 3203 3224 +11 158 159 401 422 423 468 474 3163 3202 3203 3224 +11 158 159 401 422 423 468 474 3163 3202 3203 3224 +11 158 159 401 422 423 468 474 3163 3202 3203 3224 +11 158 159 401 422 423 468 474 3163 3202 3203 3224 +1 159 +1 159 +1 159 +1 159 +1 159 +1 159 +12 159 160 394 397 468 470 474 475 3162 3163 3228 3231 +12 159 160 394 397 468 470 474 475 3162 3163 3228 3231 +12 159 160 394 397 468 470 474 475 3162 3163 3228 3231 +12 159 160 394 397 468 470 474 475 3162 3163 3228 3231 +12 159 160 394 397 468 470 474 475 3162 3163 3228 3231 +12 159 160 394 397 468 470 474 475 3162 3163 3228 3231 +1 160 +1 160 +1 160 +1 160 +1 160 +1 160 +12 160 161 383 385 470 472 475 478 3159 3162 3240 3242 +12 160 161 383 385 470 472 475 478 3159 3162 3240 3242 +12 160 161 383 385 470 472 475 478 3159 3162 3240 3242 +12 160 161 383 385 470 472 475 478 3159 3162 3240 3242 +12 160 161 383 385 470 472 475 478 3159 3162 3240 3242 +12 160 161 383 385 470 472 475 478 3159 3162 3240 3242 +1 161 +1 161 +1 161 +1 161 +1 161 +1 161 +10 161 374 376 472 478 513 3124 3159 3249 3251 +10 161 374 376 472 478 513 3124 3159 3249 3251 +10 161 374 376 472 478 513 3124 3159 3249 3251 +10 161 374 376 472 478 513 3124 3159 3249 3251 +10 161 374 376 472 478 513 3124 3159 3249 3251 +10 161 374 376 472 478 513 3124 3159 3249 3251 +7 162 306 316 369 3256 3309 3431 +7 162 306 316 369 3256 3309 3431 +7 162 306 316 369 3256 3309 3431 +7 162 306 316 369 3256 3309 3431 +7 162 306 316 369 3256 3309 3431 +7 162 306 316 369 3256 3309 3431 +3 162 306 3431 +3 162 306 3431 +3 162 306 3431 +3 162 306 3431 +3 162 306 3431 +3 162 306 3431 +9 162 164 306 326 370 3255 3299 3429 3431 +9 162 164 306 326 370 3255 3299 3429 3431 +9 162 164 306 326 370 3255 3299 3429 3431 +9 162 164 306 326 370 3255 3299 3429 3431 +9 162 164 306 326 370 3255 3299 3429 3431 +9 162 164 306 326 370 3255 3299 3429 3431 +4 162 164 326 370 +4 162 164 326 370 +4 162 164 326 370 +4 162 164 326 370 +4 162 164 326 370 +4 162 164 326 370 +11 162 163 164 165 272 273 326 327 365 366 370 +11 162 163 164 165 272 273 326 327 365 366 370 +11 162 163 164 165 272 273 326 327 365 366 370 +11 162 163 164 165 272 273 326 327 365 366 370 +11 162 163 164 165 272 273 326 327 365 366 370 +11 162 163 164 165 272 273 326 327 365 366 370 +7 162 163 272 316 317 365 369 +7 162 163 272 316 317 365 369 +7 162 163 272 316 317 365 369 +7 162 163 272 316 317 365 369 +7 162 163 272 316 317 365 369 +7 162 163 272 316 317 365 369 +4 162 163 272 365 +4 162 163 272 365 +4 162 163 272 365 +4 162 163 272 365 +4 162 163 272 365 +4 162 163 272 365 +3 162 316 369 +3 162 316 369 +3 162 316 369 +3 162 316 369 +3 162 316 369 +3 162 316 369 +3 163 165 327 +3 163 165 327 +3 163 165 327 +3 163 165 327 +3 163 165 327 +3 163 165 327 +5 163 165 253 254 327 +5 163 165 253 254 327 +5 163 165 253 254 327 +5 163 165 253 254 327 +5 163 165 253 254 327 +5 163 165 253 254 327 +4 163 253 317 1097 +4 163 253 317 1097 +4 163 253 317 1097 +4 163 253 317 1097 +4 163 253 317 1097 +4 163 253 317 1097 +2 163 253 +2 163 253 +2 163 253 +2 163 253 +2 163 253 +2 163 253 +2 163 317 +2 163 317 +2 163 317 +2 163 317 +2 163 317 +2 163 317 +2 164 3429 +2 164 3429 +2 164 3429 +2 164 3429 +2 164 3429 +2 164 3429 +9 164 166 307 336 371 3254 3289 3427 3429 +9 164 166 307 336 371 3254 3289 3427 3429 +9 164 166 307 336 371 3254 3289 3427 3429 +9 164 166 307 336 371 3254 3289 3427 3429 +9 164 166 307 336 371 3254 3289 3427 3429 +9 164 166 307 336 371 3254 3289 3427 3429 +4 164 166 336 371 +4 164 166 336 371 +4 164 166 336 371 +4 164 166 336 371 +4 164 166 336 371 +4 164 166 336 371 +11 164 165 166 167 273 274 336 337 366 367 371 +11 164 165 166 167 273 274 336 337 366 367 371 +11 164 165 166 167 273 274 336 337 366 367 371 +11 164 165 166 167 273 274 336 337 366 367 371 +11 164 165 166 167 273 274 336 337 366 367 371 +11 164 165 166 167 273 274 336 337 366 367 371 +4 164 165 273 366 +4 164 165 273 366 +4 164 165 273 366 +4 164 165 273 366 +4 164 165 273 366 +4 164 165 273 366 +3 165 167 337 +3 165 167 337 +3 165 167 337 +3 165 167 337 +3 165 167 337 +3 165 167 337 +5 165 167 254 255 337 +5 165 167 254 255 337 +5 165 167 254 255 337 +5 165 167 254 255 337 +5 165 167 254 255 337 +5 165 167 254 255 337 +2 165 254 +2 165 254 +2 165 254 +2 165 254 +2 165 254 +2 165 254 +3 166 307 3427 +3 166 307 3427 +3 166 307 3427 +3 166 307 3427 +3 166 307 3427 +3 166 307 3427 +9 166 168 307 346 372 3253 3279 3425 3427 +9 166 168 307 346 372 3253 3279 3425 3427 +9 166 168 307 346 372 3253 3279 3425 3427 +9 166 168 307 346 372 3253 3279 3425 3427 +9 166 168 307 346 372 3253 3279 3425 3427 +9 166 168 307 346 372 3253 3279 3425 3427 +4 166 168 346 372 +4 166 168 346 372 +4 166 168 346 372 +4 166 168 346 372 +4 166 168 346 372 +4 166 168 346 372 +11 166 167 168 169 274 275 346 347 367 368 372 +11 166 167 168 169 274 275 346 347 367 368 372 +11 166 167 168 169 274 275 346 347 367 368 372 +11 166 167 168 169 274 275 346 347 367 368 372 +11 166 167 168 169 274 275 346 347 367 368 372 +11 166 167 168 169 274 275 346 347 367 368 372 +4 166 167 274 367 +4 166 167 274 367 +4 166 167 274 367 +4 166 167 274 367 +4 166 167 274 367 +4 166 167 274 367 +3 167 169 347 +3 167 169 347 +3 167 169 347 +3 167 169 347 +3 167 169 347 +3 167 169 347 +5 167 169 255 256 347 +5 167 169 255 256 347 +5 167 169 255 256 347 +5 167 169 255 256 347 +5 167 169 255 256 347 +5 167 169 255 256 347 +2 167 255 +2 167 255 +2 167 255 +2 167 255 +2 167 255 +2 167 255 +2 168 3425 +2 168 3425 +2 168 3425 +2 168 3425 +2 168 3425 +2 168 3425 +8 168 170 356 373 3252 3269 3423 3425 +8 168 170 356 373 3252 3269 3423 3425 +8 168 170 356 373 3252 3269 3423 3425 +8 168 170 356 373 3252 3269 3423 3425 +8 168 170 356 373 3252 3269 3423 3425 +8 168 170 356 373 3252 3269 3423 3425 +4 168 170 356 373 +4 168 170 356 373 +4 168 170 356 373 +4 168 170 356 373 +4 168 170 356 373 +4 168 170 356 373 +8 168 169 170 171 356 357 368 373 +8 168 169 170 171 356 357 368 373 +8 168 169 170 171 356 357 368 373 +8 168 169 170 171 356 357 368 373 +8 168 169 170 171 356 357 368 373 +8 168 169 170 171 356 357 368 373 +3 168 169 368 +3 168 169 368 +3 168 169 368 +3 168 169 368 +3 168 169 368 +3 168 169 368 +3 169 171 357 +3 169 171 357 +3 169 171 357 +3 169 171 357 +3 169 171 357 +3 169 171 357 +6 169 171 256 257 275 357 +6 169 171 256 257 275 357 +6 169 171 256 257 275 357 +6 169 171 256 257 275 357 +6 169 171 256 257 275 357 +6 169 171 256 257 275 357 +2 169 256 +2 169 256 +2 169 256 +2 169 256 +2 169 256 +2 169 256 +2 170 3423 +2 170 3423 +2 170 3423 +2 170 3423 +2 170 3423 +2 170 3423 +6 170 172 363 3262 3421 3423 +6 170 172 363 3262 3421 3423 +6 170 172 363 3262 3421 3423 +6 170 172 363 3262 3421 3423 +6 170 172 363 3262 3421 3423 +6 170 172 363 3262 3421 3423 +3 170 172 363 +3 170 172 363 +3 170 172 363 +3 170 172 363 +3 170 172 363 +3 170 172 363 +6 170 171 172 173 363 364 +6 170 171 172 173 363 364 +6 170 171 172 173 363 364 +6 170 171 172 173 363 364 +6 170 171 172 173 363 364 +6 170 171 172 173 363 364 +2 170 171 +2 170 171 +2 170 171 +2 170 171 +2 170 171 +2 170 171 +3 171 173 364 +3 171 173 364 +3 171 173 364 +3 171 173 364 +3 171 173 364 +3 171 173 364 +5 171 173 257 258 364 +5 171 173 257 258 364 +5 171 173 257 258 364 +5 171 173 257 258 364 +5 171 173 257 258 364 +5 171 173 257 258 364 +2 171 257 +2 171 257 +2 171 257 +2 171 257 +2 171 257 +2 171 257 +2 172 3421 +2 172 3421 +2 172 3421 +2 172 3421 +2 172 3421 +2 172 3421 +4 172 259 3334 3421 +4 172 259 3334 3421 +4 172 259 3334 3421 +4 172 259 3334 3421 +4 172 259 3334 3421 +4 172 259 3334 3421 +2 172 259 +2 172 259 +2 172 259 +2 172 259 +2 172 259 +2 172 259 +4 172 173 258 259 +4 172 173 258 259 +4 172 173 258 259 +4 172 173 258 259 +4 172 173 258 259 +4 172 173 258 259 +2 172 173 +2 172 173 +2 172 173 +2 172 173 +2 172 173 +2 172 173 +2 173 258 +2 173 258 +2 173 258 +2 173 258 +2 173 258 +2 173 258 +10 174 300 306 314 316 1783 1941 3309 3311 3419 +10 174 300 306 314 316 1783 1941 3309 3311 3419 +10 174 300 306 314 316 1783 1941 3309 3311 3419 +10 174 300 306 314 316 1783 1941 3309 3311 3419 +10 174 300 306 314 316 1783 1941 3309 3311 3419 +10 174 300 306 314 316 1783 1941 3309 3311 3419 +4 174 300 306 3419 +4 174 300 306 3419 +4 174 300 306 3419 +4 174 300 306 3419 +4 174 300 306 3419 +4 174 300 306 3419 +11 174 176 300 301 306 324 326 3299 3301 3417 3419 +11 174 176 300 301 306 324 326 3299 3301 3417 3419 +11 174 176 300 301 306 324 326 3299 3301 3417 3419 +11 174 176 300 301 306 324 326 3299 3301 3417 3419 +11 174 176 300 301 306 324 326 3299 3301 3417 3419 +11 174 176 300 301 306 324 326 3299 3301 3417 3419 +4 174 176 324 326 +4 174 176 324 326 +4 174 176 324 326 +4 174 176 324 326 +4 174 176 324 326 +4 174 176 324 326 +12 174 175 176 177 268 269 272 273 324 325 326 327 +12 174 175 176 177 268 269 272 273 324 325 326 327 +12 174 175 176 177 268 269 272 273 324 325 326 327 +12 174 175 176 177 268 269 272 273 324 325 326 327 +12 174 175 176 177 268 269 272 273 324 325 326 327 +12 174 175 176 177 268 269 272 273 324 325 326 327 +12 174 175 268 272 314 315 316 317 574 1312 1758 1783 +12 174 175 268 272 314 315 316 317 574 1312 1758 1783 +12 174 175 268 272 314 315 316 317 574 1312 1758 1783 +12 174 175 268 272 314 315 316 317 574 1312 1758 1783 +12 174 175 268 272 314 315 316 317 574 1312 1758 1783 +12 174 175 268 272 314 315 316 317 574 1312 1758 1783 +4 174 175 268 272 +4 174 175 268 272 +4 174 175 268 272 +4 174 175 268 272 +4 174 175 268 272 +4 174 175 268 272 +4 174 314 316 1783 +4 174 314 316 1783 +4 174 314 316 1783 +4 174 314 316 1783 +4 174 314 316 1783 +4 174 314 316 1783 +4 175 177 325 327 +4 175 177 325 327 +4 175 177 325 327 +4 175 177 325 327 +4 175 177 325 327 +4 175 177 325 327 +8 175 177 247 248 253 254 325 327 +8 175 177 247 248 253 254 325 327 +8 175 177 247 248 253 254 325 327 +8 175 177 247 248 253 254 325 327 +8 175 177 247 248 253 254 325 327 +8 175 177 247 248 253 254 325 327 +8 175 247 253 315 317 574 1096 1097 +8 175 247 253 315 317 574 1096 1097 +8 175 247 253 315 317 574 1096 1097 +8 175 247 253 315 317 574 1096 1097 +8 175 247 253 315 317 574 1096 1097 +8 175 247 253 315 317 574 1096 1097 +3 175 247 253 +3 175 247 253 +3 175 247 253 +3 175 247 253 +3 175 247 253 +3 175 247 253 +4 175 315 317 574 +4 175 315 317 574 +4 175 315 317 574 +4 175 315 317 574 +4 175 315 317 574 +4 175 315 317 574 +3 176 301 3417 +3 176 301 3417 +3 176 301 3417 +3 176 301 3417 +3 176 301 3417 +3 176 301 3417 +11 176 178 301 302 307 334 336 3289 3291 3415 3417 +11 176 178 301 302 307 334 336 3289 3291 3415 3417 +11 176 178 301 302 307 334 336 3289 3291 3415 3417 +11 176 178 301 302 307 334 336 3289 3291 3415 3417 +11 176 178 301 302 307 334 336 3289 3291 3415 3417 +11 176 178 301 302 307 334 336 3289 3291 3415 3417 +4 176 178 334 336 +4 176 178 334 336 +4 176 178 334 336 +4 176 178 334 336 +4 176 178 334 336 +4 176 178 334 336 +12 176 177 178 179 269 270 273 274 334 335 336 337 +12 176 177 178 179 269 270 273 274 334 335 336 337 +12 176 177 178 179 269 270 273 274 334 335 336 337 +12 176 177 178 179 269 270 273 274 334 335 336 337 +12 176 177 178 179 269 270 273 274 334 335 336 337 +12 176 177 178 179 269 270 273 274 334 335 336 337 +4 176 177 269 273 +4 176 177 269 273 +4 176 177 269 273 +4 176 177 269 273 +4 176 177 269 273 +4 176 177 269 273 +4 177 179 335 337 +4 177 179 335 337 +4 177 179 335 337 +4 177 179 335 337 +4 177 179 335 337 +4 177 179 335 337 +8 177 179 248 249 254 255 335 337 +8 177 179 248 249 254 255 335 337 +8 177 179 248 249 254 255 335 337 +8 177 179 248 249 254 255 335 337 +8 177 179 248 249 254 255 335 337 +8 177 179 248 249 254 255 335 337 +3 177 248 254 +3 177 248 254 +3 177 248 254 +3 177 248 254 +3 177 248 254 +3 177 248 254 +4 178 302 307 3415 +4 178 302 307 3415 +4 178 302 307 3415 +4 178 302 307 3415 +4 178 302 307 3415 +4 178 302 307 3415 +11 178 180 302 303 307 344 346 3279 3281 3413 3415 +11 178 180 302 303 307 344 346 3279 3281 3413 3415 +11 178 180 302 303 307 344 346 3279 3281 3413 3415 +11 178 180 302 303 307 344 346 3279 3281 3413 3415 +11 178 180 302 303 307 344 346 3279 3281 3413 3415 +11 178 180 302 303 307 344 346 3279 3281 3413 3415 +4 178 180 344 346 +4 178 180 344 346 +4 178 180 344 346 +4 178 180 344 346 +4 178 180 344 346 +4 178 180 344 346 +12 178 179 180 181 270 271 274 275 344 345 346 347 +12 178 179 180 181 270 271 274 275 344 345 346 347 +12 178 179 180 181 270 271 274 275 344 345 346 347 +12 178 179 180 181 270 271 274 275 344 345 346 347 +12 178 179 180 181 270 271 274 275 344 345 346 347 +12 178 179 180 181 270 271 274 275 344 345 346 347 +4 178 179 270 274 +4 178 179 270 274 +4 178 179 270 274 +4 178 179 270 274 +4 178 179 270 274 +4 178 179 270 274 +4 179 181 345 347 +4 179 181 345 347 +4 179 181 345 347 +4 179 181 345 347 +4 179 181 345 347 +4 179 181 345 347 +8 179 181 249 250 255 256 345 347 +8 179 181 249 250 255 256 345 347 +8 179 181 249 250 255 256 345 347 +8 179 181 249 250 255 256 345 347 +8 179 181 249 250 255 256 345 347 +8 179 181 249 250 255 256 345 347 +3 179 249 255 +3 179 249 255 +3 179 249 255 +3 179 249 255 +3 179 249 255 +3 179 249 255 +3 180 303 3413 +3 180 303 3413 +3 180 303 3413 +3 180 303 3413 +3 180 303 3413 +3 180 303 3413 +10 180 185 303 304 354 356 3269 3271 3408 3413 +10 180 185 303 304 354 356 3269 3271 3408 3413 +10 180 185 303 304 354 356 3269 3271 3408 3413 +10 180 185 303 304 354 356 3269 3271 3408 3413 +10 180 185 303 304 354 356 3269 3271 3408 3413 +10 180 185 303 304 354 356 3269 3271 3408 3413 +4 180 185 354 356 +4 180 185 354 356 +4 180 185 354 356 +4 180 185 354 356 +4 180 185 354 356 +4 180 185 354 356 +8 180 181 184 185 354 355 356 357 +8 180 181 184 185 354 355 356 357 +8 180 181 184 185 354 355 356 357 +8 180 181 184 185 354 355 356 357 +8 180 181 184 185 354 355 356 357 +8 180 181 184 185 354 355 356 357 +2 180 181 +2 180 181 +2 180 181 +2 180 181 +2 180 181 +2 180 181 +4 181 184 355 357 +4 181 184 355 357 +4 181 184 355 357 +4 181 184 355 357 +4 181 184 355 357 +4 181 184 355 357 +10 181 184 250 251 256 257 271 275 355 357 +10 181 184 250 251 256 257 271 275 355 357 +10 181 184 250 251 256 257 271 275 355 357 +10 181 184 250 251 256 257 271 275 355 357 +10 181 184 250 251 256 257 271 275 355 357 +10 181 184 250 251 256 257 271 275 355 357 +3 181 250 256 +3 181 250 256 +3 181 250 256 +3 181 250 256 +3 181 250 256 +3 181 250 256 +8 182 294 300 312 314 3311 3313 3411 +8 182 294 300 312 314 3311 3313 3411 +8 182 294 300 312 314 3311 3313 3411 +8 182 294 300 312 314 3311 3313 3411 +8 182 294 300 312 314 3311 3313 3411 +8 182 294 300 312 314 3311 3313 3411 +4 182 294 300 3411 +4 182 294 300 3411 +4 182 294 300 3411 +4 182 294 300 3411 +4 182 294 300 3411 +4 182 294 300 3411 +12 182 187 294 295 300 301 322 324 3301 3303 3406 3411 +12 182 187 294 295 300 301 322 324 3301 3303 3406 3411 +12 182 187 294 295 300 301 322 324 3301 3303 3406 3411 +12 182 187 294 295 300 301 322 324 3301 3303 3406 3411 +12 182 187 294 295 300 301 322 324 3301 3303 3406 3411 +12 182 187 294 295 300 301 322 324 3301 3303 3406 3411 +4 182 187 322 324 +4 182 187 322 324 +4 182 187 322 324 +4 182 187 322 324 +4 182 187 322 324 +4 182 187 322 324 +12 182 186 187 188 264 265 268 269 322 323 324 325 +12 182 186 187 188 264 265 268 269 322 323 324 325 +12 182 186 187 188 264 265 268 269 322 323 324 325 +12 182 186 187 188 264 265 268 269 322 323 324 325 +12 182 186 187 188 264 265 268 269 322 323 324 325 +12 182 186 187 188 264 265 268 269 322 323 324 325 +11 182 186 264 268 312 313 314 315 632 1269 1312 +11 182 186 264 268 312 313 314 315 632 1269 1312 +11 182 186 264 268 312 313 314 315 632 1269 1312 +11 182 186 264 268 312 313 314 315 632 1269 1312 +11 182 186 264 268 312 313 314 315 632 1269 1312 +11 182 186 264 268 312 313 314 315 632 1269 1312 +4 182 186 264 268 +4 182 186 264 268 +4 182 186 264 268 +4 182 186 264 268 +4 182 186 264 268 +4 182 186 264 268 +3 182 312 314 +3 182 312 314 +3 182 312 314 +3 182 312 314 +3 182 312 314 +3 182 312 314 +10 183 185 304 305 362 363 3262 3263 3408 3410 +10 183 185 304 305 362 363 3262 3263 3408 3410 +10 183 185 304 305 362 363 3262 3263 3408 3410 +10 183 185 304 305 362 363 3262 3263 3408 3410 +10 183 185 304 305 362 363 3262 3263 3408 3410 +10 183 185 304 305 362 363 3262 3263 3408 3410 +4 183 185 362 363 +4 183 185 362 363 +4 183 185 362 363 +4 183 185 362 363 +4 183 185 362 363 +4 183 185 362 363 +10 183 184 185 251 252 257 258 362 363 364 +10 183 184 185 251 252 257 258 362 363 364 +10 183 184 185 251 252 257 258 362 363 364 +10 183 184 185 251 252 257 258 362 363 364 +10 183 184 185 251 252 257 258 362 363 364 +10 183 184 185 251 252 257 258 362 363 364 +3 183 252 258 +3 183 252 258 +3 183 252 258 +3 183 252 258 +3 183 252 258 +3 183 252 258 +9 183 252 258 259 305 3334 3335 3341 3410 +9 183 252 258 259 305 3334 3335 3341 3410 +9 183 252 258 259 305 3334 3335 3341 3410 +9 183 252 258 259 305 3334 3335 3341 3410 +3 183 305 3410 +3 183 305 3410 +3 183 305 3410 +3 183 305 3410 +3 183 305 3410 +3 183 305 3410 +3 184 251 257 +3 184 251 257 +3 184 251 257 +3 184 251 257 +3 184 251 257 +3 184 251 257 +2 184 185 +2 184 185 +2 184 185 +2 184 185 +2 184 185 +2 184 185 +3 185 304 3408 +3 185 304 3408 +3 185 304 3408 +3 185 304 3408 +3 185 304 3408 +3 185 304 3408 +4 186 188 323 325 +4 186 188 323 325 +4 186 188 323 325 +4 186 188 323 325 +4 186 188 323 325 +4 186 188 323 325 +8 186 188 241 242 247 248 323 325 +8 186 188 241 242 247 248 323 325 +8 186 188 241 242 247 248 323 325 +8 186 188 241 242 247 248 323 325 +8 186 188 241 242 247 248 323 325 +8 186 188 241 242 247 248 323 325 +8 186 241 247 313 315 632 1053 1096 +8 186 241 247 313 315 632 1053 1096 +8 186 241 247 313 315 632 1053 1096 +8 186 241 247 313 315 632 1053 1096 +8 186 241 247 313 315 632 1053 1096 +8 186 241 247 313 315 632 1053 1096 +3 186 241 247 +3 186 241 247 +3 186 241 247 +3 186 241 247 +3 186 241 247 +3 186 241 247 +4 186 313 315 632 +4 186 313 315 632 +4 186 313 315 632 +4 186 313 315 632 +4 186 313 315 632 +4 186 313 315 632 +4 187 295 301 3406 +4 187 295 301 3406 +4 187 295 301 3406 +4 187 295 301 3406 +4 187 295 301 3406 +4 187 295 301 3406 +12 187 189 295 296 301 302 332 334 3291 3293 3404 3406 +12 187 189 295 296 301 302 332 334 3291 3293 3404 3406 +12 187 189 295 296 301 302 332 334 3291 3293 3404 3406 +12 187 189 295 296 301 302 332 334 3291 3293 3404 3406 +12 187 189 295 296 301 302 332 334 3291 3293 3404 3406 +12 187 189 295 296 301 302 332 334 3291 3293 3404 3406 +4 187 189 332 334 +4 187 189 332 334 +4 187 189 332 334 +4 187 189 332 334 +4 187 189 332 334 +4 187 189 332 334 +12 187 188 189 190 265 266 269 270 332 333 334 335 +12 187 188 189 190 265 266 269 270 332 333 334 335 +12 187 188 189 190 265 266 269 270 332 333 334 335 +12 187 188 189 190 265 266 269 270 332 333 334 335 +12 187 188 189 190 265 266 269 270 332 333 334 335 +12 187 188 189 190 265 266 269 270 332 333 334 335 +4 187 188 265 269 +4 187 188 265 269 +4 187 188 265 269 +4 187 188 265 269 +4 187 188 265 269 +4 187 188 265 269 +4 188 190 333 335 +4 188 190 333 335 +4 188 190 333 335 +4 188 190 333 335 +4 188 190 333 335 +4 188 190 333 335 +8 188 190 242 243 248 249 333 335 +8 188 190 242 243 248 249 333 335 +8 188 190 242 243 248 249 333 335 +8 188 190 242 243 248 249 333 335 +8 188 190 242 243 248 249 333 335 +8 188 190 242 243 248 249 333 335 +3 188 242 248 +3 188 242 248 +3 188 242 248 +3 188 242 248 +3 188 242 248 +3 188 242 248 +4 189 296 302 3404 +4 189 296 302 3404 +4 189 296 302 3404 +4 189 296 302 3404 +4 189 296 302 3404 +4 189 296 302 3404 +12 189 191 296 297 302 303 342 344 3281 3283 3402 3404 +12 189 191 296 297 302 303 342 344 3281 3283 3402 3404 +12 189 191 296 297 302 303 342 344 3281 3283 3402 3404 +12 189 191 296 297 302 303 342 344 3281 3283 3402 3404 +12 189 191 296 297 302 303 342 344 3281 3283 3402 3404 +12 189 191 296 297 302 303 342 344 3281 3283 3402 3404 +4 189 191 342 344 +4 189 191 342 344 +4 189 191 342 344 +4 189 191 342 344 +4 189 191 342 344 +4 189 191 342 344 +12 189 190 191 192 266 267 270 271 342 343 344 345 +12 189 190 191 192 266 267 270 271 342 343 344 345 +12 189 190 191 192 266 267 270 271 342 343 344 345 +12 189 190 191 192 266 267 270 271 342 343 344 345 +12 189 190 191 192 266 267 270 271 342 343 344 345 +12 189 190 191 192 266 267 270 271 342 343 344 345 +4 189 190 266 270 +4 189 190 266 270 +4 189 190 266 270 +4 189 190 266 270 +4 189 190 266 270 +4 189 190 266 270 +4 190 192 343 345 +4 190 192 343 345 +4 190 192 343 345 +4 190 192 343 345 +4 190 192 343 345 +4 190 192 343 345 +8 190 192 243 244 249 250 343 345 +8 190 192 243 244 249 250 343 345 +8 190 192 243 244 249 250 343 345 +8 190 192 243 244 249 250 343 345 +8 190 192 243 244 249 250 343 345 +8 190 192 243 244 249 250 343 345 +3 190 243 249 +3 190 243 249 +3 190 243 249 +3 190 243 249 +3 190 243 249 +3 190 243 249 +4 191 297 303 3402 +4 191 297 303 3402 +4 191 297 303 3402 +4 191 297 303 3402 +4 191 297 303 3402 +4 191 297 303 3402 +12 191 196 297 298 303 304 352 354 3271 3273 3397 3402 +12 191 196 297 298 303 304 352 354 3271 3273 3397 3402 +12 191 196 297 298 303 304 352 354 3271 3273 3397 3402 +12 191 196 297 298 303 304 352 354 3271 3273 3397 3402 +12 191 196 297 298 303 304 352 354 3271 3273 3397 3402 +12 191 196 297 298 303 304 352 354 3271 3273 3397 3402 +4 191 196 352 354 +4 191 196 352 354 +4 191 196 352 354 +4 191 196 352 354 +4 191 196 352 354 +4 191 196 352 354 +8 191 192 195 196 352 353 354 355 +8 191 192 195 196 352 353 354 355 +8 191 192 195 196 352 353 354 355 +8 191 192 195 196 352 353 354 355 +8 191 192 195 196 352 353 354 355 +8 191 192 195 196 352 353 354 355 +2 191 192 +2 191 192 +2 191 192 +2 191 192 +2 191 192 +2 191 192 +4 192 195 353 355 +4 192 195 353 355 +4 192 195 353 355 +4 192 195 353 355 +4 192 195 353 355 +4 192 195 353 355 +10 192 195 244 245 250 251 267 271 353 355 +10 192 195 244 245 250 251 267 271 353 355 +10 192 195 244 245 250 251 267 271 353 355 +10 192 195 244 245 250 251 267 271 353 355 +10 192 195 244 245 250 251 267 271 353 355 +10 192 195 244 245 250 251 267 271 353 355 +3 192 244 250 +3 192 244 250 +3 192 244 250 +3 192 244 250 +3 192 244 250 +3 192 244 250 +8 193 288 294 310 312 3313 3315 3400 +8 193 288 294 310 312 3313 3315 3400 +8 193 288 294 310 312 3313 3315 3400 +8 193 288 294 310 312 3313 3315 3400 +8 193 288 294 310 312 3313 3315 3400 +8 193 288 294 310 312 3313 3315 3400 +4 193 288 294 3400 +4 193 288 294 3400 +4 193 288 294 3400 +4 193 288 294 3400 +4 193 288 294 3400 +4 193 288 294 3400 +12 193 198 288 289 294 295 320 322 3303 3305 3395 3400 +12 193 198 288 289 294 295 320 322 3303 3305 3395 3400 +12 193 198 288 289 294 295 320 322 3303 3305 3395 3400 +12 193 198 288 289 294 295 320 322 3303 3305 3395 3400 +12 193 198 288 289 294 295 320 322 3303 3305 3395 3400 +12 193 198 288 289 294 295 320 322 3303 3305 3395 3400 +4 193 198 320 322 +4 193 198 320 322 +4 193 198 320 322 +4 193 198 320 322 +4 193 198 320 322 +4 193 198 320 322 +12 193 197 198 199 260 261 264 265 320 321 322 323 +12 193 197 198 199 260 261 264 265 320 321 322 323 +12 193 197 198 199 260 261 264 265 320 321 322 323 +12 193 197 198 199 260 261 264 265 320 321 322 323 +12 193 197 198 199 260 261 264 265 320 321 322 323 +12 193 197 198 199 260 261 264 265 320 321 322 323 +11 193 197 260 264 310 311 312 313 681 1226 1269 +11 193 197 260 264 310 311 312 313 681 1226 1269 +11 193 197 260 264 310 311 312 313 681 1226 1269 +11 193 197 260 264 310 311 312 313 681 1226 1269 +11 193 197 260 264 310 311 312 313 681 1226 1269 +11 193 197 260 264 310 311 312 313 681 1226 1269 +4 193 197 260 264 +4 193 197 260 264 +4 193 197 260 264 +4 193 197 260 264 +4 193 197 260 264 +4 193 197 260 264 +3 193 310 312 +3 193 310 312 +3 193 310 312 +3 193 310 312 +3 193 310 312 +3 193 310 312 +9 194 195 196 245 246 251 252 361 362 +9 194 195 196 245 246 251 252 361 362 +9 194 195 196 245 246 251 252 361 362 +9 194 195 196 245 246 251 252 361 362 +9 194 195 196 245 246 251 252 361 362 +9 194 195 196 245 246 251 252 361 362 +4 194 196 361 362 +4 194 196 361 362 +4 194 196 361 362 +4 194 196 361 362 +4 194 196 361 362 +4 194 196 361 362 +12 194 196 298 299 304 305 361 362 3263 3264 3397 3399 +12 194 196 298 299 304 305 361 362 3263 3264 3397 3399 +12 194 196 298 299 304 305 361 362 3263 3264 3397 3399 +12 194 196 298 299 304 305 361 362 3263 3264 3397 3399 +12 194 196 298 299 304 305 361 362 3263 3264 3397 3399 +12 194 196 298 299 304 305 361 362 3263 3264 3397 3399 +3 194 246 252 +3 194 246 252 +3 194 246 252 +3 194 246 252 +3 194 246 252 +3 194 246 252 +8 194 246 252 299 305 3341 3347 3399 +8 194 246 252 299 305 3341 3347 3399 +8 194 246 252 299 305 3341 3347 3399 +8 194 246 252 299 305 3341 3347 3399 +8 194 246 252 299 305 3341 3347 3399 +8 194 246 252 299 305 3341 3347 3399 +4 194 299 305 3399 +4 194 299 305 3399 +4 194 299 305 3399 +4 194 299 305 3399 +4 194 299 305 3399 +4 194 299 305 3399 +3 195 245 251 +3 195 245 251 +3 195 245 251 +3 195 245 251 +3 195 245 251 +3 195 245 251 +2 195 196 +2 195 196 +2 195 196 +2 195 196 +2 195 196 +2 195 196 +4 196 298 304 3397 +4 196 298 304 3397 +4 196 298 304 3397 +4 196 298 304 3397 +4 196 298 304 3397 +4 196 298 304 3397 +4 197 199 321 323 +4 197 199 321 323 +4 197 199 321 323 +4 197 199 321 323 +4 197 199 321 323 +4 197 199 321 323 +8 197 199 235 236 241 242 321 323 +8 197 199 235 236 241 242 321 323 +8 197 199 235 236 241 242 321 323 +8 197 199 235 236 241 242 321 323 +8 197 199 235 236 241 242 321 323 +8 197 199 235 236 241 242 321 323 +8 197 235 241 311 313 681 1010 1053 +8 197 235 241 311 313 681 1010 1053 +8 197 235 241 311 313 681 1010 1053 +8 197 235 241 311 313 681 1010 1053 +8 197 235 241 311 313 681 1010 1053 +8 197 235 241 311 313 681 1010 1053 +3 197 235 241 +3 197 235 241 +3 197 235 241 +3 197 235 241 +3 197 235 241 +3 197 235 241 +4 197 311 313 681 +4 197 311 313 681 +4 197 311 313 681 +4 197 311 313 681 +4 197 311 313 681 +4 197 311 313 681 +4 198 289 295 3395 +4 198 289 295 3395 +4 198 289 295 3395 +4 198 289 295 3395 +4 198 289 295 3395 +4 198 289 295 3395 +12 198 200 289 290 295 296 330 332 3293 3295 3393 3395 +12 198 200 289 290 295 296 330 332 3293 3295 3393 3395 +12 198 200 289 290 295 296 330 332 3293 3295 3393 3395 +12 198 200 289 290 295 296 330 332 3293 3295 3393 3395 +12 198 200 289 290 295 296 330 332 3293 3295 3393 3395 +12 198 200 289 290 295 296 330 332 3293 3295 3393 3395 +4 198 200 330 332 +4 198 200 330 332 +4 198 200 330 332 +4 198 200 330 332 +4 198 200 330 332 +4 198 200 330 332 +12 198 199 200 201 261 262 265 266 330 331 332 333 +12 198 199 200 201 261 262 265 266 330 331 332 333 +12 198 199 200 201 261 262 265 266 330 331 332 333 +12 198 199 200 201 261 262 265 266 330 331 332 333 +12 198 199 200 201 261 262 265 266 330 331 332 333 +12 198 199 200 201 261 262 265 266 330 331 332 333 +4 198 199 261 265 +4 198 199 261 265 +4 198 199 261 265 +4 198 199 261 265 +4 198 199 261 265 +4 198 199 261 265 +4 199 201 331 333 +4 199 201 331 333 +4 199 201 331 333 +4 199 201 331 333 +4 199 201 331 333 +4 199 201 331 333 +8 199 201 236 237 242 243 331 333 +8 199 201 236 237 242 243 331 333 +8 199 201 236 237 242 243 331 333 +8 199 201 236 237 242 243 331 333 +8 199 201 236 237 242 243 331 333 +8 199 201 236 237 242 243 331 333 +3 199 236 242 +3 199 236 242 +3 199 236 242 +3 199 236 242 +3 199 236 242 +3 199 236 242 +4 200 290 296 3393 +4 200 290 296 3393 +4 200 290 296 3393 +4 200 290 296 3393 +4 200 290 296 3393 +4 200 290 296 3393 +12 200 205 290 291 296 297 340 342 3283 3285 3388 3393 +12 200 205 290 291 296 297 340 342 3283 3285 3388 3393 +12 200 205 290 291 296 297 340 342 3283 3285 3388 3393 +12 200 205 290 291 296 297 340 342 3283 3285 3388 3393 +12 200 205 290 291 296 297 340 342 3283 3285 3388 3393 +12 200 205 290 291 296 297 340 342 3283 3285 3388 3393 +4 200 205 340 342 +4 200 205 340 342 +4 200 205 340 342 +4 200 205 340 342 +4 200 205 340 342 +4 200 205 340 342 +12 200 201 204 205 262 263 266 267 340 341 342 343 +12 200 201 204 205 262 263 266 267 340 341 342 343 +12 200 201 204 205 262 263 266 267 340 341 342 343 +12 200 201 204 205 262 263 266 267 340 341 342 343 +12 200 201 204 205 262 263 266 267 340 341 342 343 +12 200 201 204 205 262 263 266 267 340 341 342 343 +4 200 201 262 266 +4 200 201 262 266 +4 200 201 262 266 +4 200 201 262 266 +4 200 201 262 266 +4 200 201 262 266 +4 201 204 341 343 +4 201 204 341 343 +4 201 204 341 343 +4 201 204 341 343 +4 201 204 341 343 +4 201 204 341 343 +8 201 204 237 238 243 244 341 343 +8 201 204 237 238 243 244 341 343 +8 201 204 237 238 243 244 341 343 +8 201 204 237 238 243 244 341 343 +8 201 204 237 238 243 244 341 343 +8 201 204 237 238 243 244 341 343 +3 201 237 243 +3 201 237 243 +3 201 237 243 +3 201 237 243 +3 201 237 243 +3 201 237 243 +8 202 282 288 309 310 3315 3316 3391 +8 202 282 288 309 310 3315 3316 3391 +8 202 282 288 309 310 3315 3316 3391 +8 202 282 288 309 310 3315 3316 3391 +8 202 282 288 309 310 3315 3316 3391 +8 202 282 288 309 310 3315 3316 3391 +4 202 282 288 3391 +4 202 282 288 3391 +4 202 282 288 3391 +4 202 282 288 3391 +4 202 282 288 3391 +4 202 282 288 3391 +12 202 206 282 283 288 289 319 320 3305 3306 3387 3391 +12 202 206 282 283 288 289 319 320 3305 3306 3387 3391 +12 202 206 282 283 288 289 319 320 3305 3306 3387 3391 +12 202 206 282 283 288 289 319 320 3305 3306 3387 3391 +12 202 206 282 283 288 289 319 320 3305 3306 3387 3391 +12 202 206 282 283 288 289 319 320 3305 3306 3387 3391 +4 202 206 319 320 +4 202 206 319 320 +4 202 206 319 320 +4 202 206 319 320 +4 202 206 319 320 +4 202 206 319 320 +11 202 206 229 230 235 236 260 261 319 320 321 +11 202 206 229 230 235 236 260 261 319 320 321 +11 202 206 229 230 235 236 260 261 319 320 321 +11 202 206 229 230 235 236 260 261 319 320 321 +11 202 206 229 230 235 236 260 261 319 320 321 +11 202 206 229 230 235 236 260 261 319 320 321 +12 202 229 235 260 309 310 311 881 967 1010 1183 1226 +12 202 229 235 260 309 310 311 881 967 1010 1183 1226 +12 202 229 235 260 309 310 311 881 967 1010 1183 1226 +12 202 229 235 260 309 310 311 881 967 1010 1183 1226 +12 202 229 235 260 309 310 311 881 967 1010 1183 1226 +12 202 229 235 260 309 310 311 881 967 1010 1183 1226 +4 202 229 235 260 +4 202 229 235 260 +4 202 229 235 260 +4 202 229 235 260 +4 202 229 235 260 +4 202 229 235 260 +3 202 309 310 +3 202 309 310 +3 202 309 310 +3 202 309 310 +3 202 309 310 +3 202 309 310 +22 203 204 205 263 267 291 292 297 298 350 351 352 353 3272 3273 3274 3275 3326 3330 3388 3389 3390 +22 203 204 205 263 267 291 292 297 298 350 351 352 353 3272 3273 3274 3275 3326 3330 3388 3389 3390 +22 203 204 205 263 267 291 292 297 298 350 351 352 353 3272 3273 3274 3275 3326 3330 3388 3389 3390 +22 203 204 205 263 267 291 292 297 298 350 351 352 353 3272 3273 3274 3275 3326 3330 3388 3389 3390 +22 203 204 205 263 267 291 292 297 298 350 351 352 353 3272 3273 3274 3275 3326 3330 3388 3389 3390 +22 203 204 205 263 267 291 292 297 298 350 351 352 353 3272 3273 3274 3275 3326 3330 3388 3389 3390 +4 203 204 351 353 +4 203 204 351 353 +4 203 204 351 353 +4 203 204 351 353 +4 203 204 351 353 +4 203 204 351 353 +8 203 204 238 239 244 245 351 353 +8 203 204 238 239 244 245 351 353 +8 203 204 238 239 244 245 351 353 +8 203 204 238 239 244 245 351 353 +8 203 204 238 239 244 245 351 353 +8 203 204 238 239 244 245 351 353 +3 203 239 245 +3 203 239 245 +3 203 239 245 +3 203 239 245 +3 203 239 245 +3 203 239 245 +18 203 239 240 245 246 292 293 298 299 360 361 3264 3265 3347 3348 3353 3354 3390 +18 203 239 240 245 246 292 293 298 299 360 361 3264 3265 3347 3348 3353 3354 3390 +18 203 239 240 245 246 292 293 298 299 360 361 3264 3265 3347 3348 3353 3354 3390 +18 203 239 240 245 246 292 293 298 299 360 361 3264 3265 3347 3348 3353 3354 3390 +18 203 239 240 245 246 292 293 298 299 360 361 3264 3265 3347 3348 3353 3354 3390 +18 203 239 240 245 246 292 293 298 299 360 361 3264 3265 3347 3348 3353 3354 3390 +4 203 292 298 3390 +4 203 292 298 3390 +4 203 292 298 3390 +4 203 292 298 3390 +4 203 292 298 3390 +4 203 292 298 3390 +3 204 238 244 +3 204 238 244 +3 204 238 244 +3 204 238 244 +3 204 238 244 +3 204 238 244 +4 204 205 263 267 +4 204 205 263 267 +4 204 205 263 267 +4 204 205 263 267 +4 204 205 263 267 +4 204 205 263 267 +4 205 291 297 3388 +4 205 291 297 3388 +4 205 291 297 3388 +4 205 291 297 3388 +4 205 291 297 3388 +4 205 291 297 3388 +4 206 283 289 3387 +4 206 283 289 3387 +4 206 283 289 3387 +4 206 283 289 3387 +4 206 283 289 3387 +4 206 283 289 3387 +12 206 207 283 284 289 290 329 330 3295 3296 3386 3387 +12 206 207 283 284 289 290 329 330 3295 3296 3386 3387 +12 206 207 283 284 289 290 329 330 3295 3296 3386 3387 +12 206 207 283 284 289 290 329 330 3295 3296 3386 3387 +12 206 207 283 284 289 290 329 330 3295 3296 3386 3387 +12 206 207 283 284 289 290 329 330 3295 3296 3386 3387 +4 206 207 329 330 +4 206 207 329 330 +4 206 207 329 330 +4 206 207 329 330 +4 206 207 329 330 +4 206 207 329 330 +11 206 207 230 231 236 237 261 262 329 330 331 +11 206 207 230 231 236 237 261 262 329 330 331 +11 206 207 230 231 236 237 261 262 329 330 331 +11 206 207 230 231 236 237 261 262 329 330 331 +11 206 207 230 231 236 237 261 262 329 330 331 +11 206 207 230 231 236 237 261 262 329 330 331 +4 206 230 236 261 +4 206 230 236 261 +4 206 230 236 261 +4 206 230 236 261 +4 206 230 236 261 +4 206 230 236 261 +4 207 284 290 3386 +4 207 284 290 3386 +4 207 284 290 3386 +4 207 284 290 3386 +4 207 284 290 3386 +4 207 284 290 3386 +12 207 208 284 285 290 291 339 340 3285 3286 3385 3386 +12 207 208 284 285 290 291 339 340 3285 3286 3385 3386 +12 207 208 284 285 290 291 339 340 3285 3286 3385 3386 +12 207 208 284 285 290 291 339 340 3285 3286 3385 3386 +12 207 208 284 285 290 291 339 340 3285 3286 3385 3386 +12 207 208 284 285 290 291 339 340 3285 3286 3385 3386 +4 207 208 339 340 +4 207 208 339 340 +4 207 208 339 340 +4 207 208 339 340 +4 207 208 339 340 +4 207 208 339 340 +11 207 208 231 232 237 238 262 263 339 340 341 +11 207 208 231 232 237 238 262 263 339 340 341 +11 207 208 231 232 237 238 262 263 339 340 341 +11 207 208 231 232 237 238 262 263 339 340 341 +11 207 208 231 232 237 238 262 263 339 340 341 +11 207 208 231 232 237 238 262 263 339 340 341 +4 207 231 237 262 +4 207 231 237 262 +4 207 231 237 262 +4 207 231 237 262 +4 207 231 237 262 +4 207 231 237 262 +4 208 285 291 3385 +4 208 285 291 3385 +4 208 285 291 3385 +4 208 285 291 3385 +4 208 285 291 3385 +4 208 285 291 3385 +12 208 209 285 286 291 292 349 350 3275 3276 3384 3385 +12 208 209 285 286 291 292 349 350 3275 3276 3384 3385 +12 208 209 285 286 291 292 349 350 3275 3276 3384 3385 +12 208 209 285 286 291 292 349 350 3275 3276 3384 3385 +12 208 209 285 286 291 292 349 350 3275 3276 3384 3385 +12 208 209 285 286 291 292 349 350 3275 3276 3384 3385 +4 208 209 349 350 +4 208 209 349 350 +4 208 209 349 350 +4 208 209 349 350 +4 208 209 349 350 +4 208 209 349 350 +10 208 209 232 233 238 239 263 349 350 351 +10 208 209 232 233 238 239 263 349 350 351 +10 208 209 232 233 238 239 263 349 350 351 +10 208 209 232 233 238 239 263 349 350 351 +10 208 209 232 233 238 239 263 349 350 351 +10 208 209 232 233 238 239 263 349 350 351 +4 208 232 238 263 +4 208 232 238 263 +4 208 232 238 263 +4 208 232 238 263 +4 208 232 238 263 +4 208 232 238 263 +4 209 286 292 3384 +4 209 286 292 3384 +4 209 286 292 3384 +4 209 286 292 3384 +4 209 286 292 3384 +4 209 286 292 3384 +12 209 210 286 287 292 293 359 360 3265 3266 3383 3384 +12 209 210 286 287 292 293 359 360 3265 3266 3383 3384 +12 209 210 286 287 292 293 359 360 3265 3266 3383 3384 +12 209 210 286 287 292 293 359 360 3265 3266 3383 3384 +12 209 210 286 287 292 293 359 360 3265 3266 3383 3384 +12 209 210 286 287 292 293 359 360 3265 3266 3383 3384 +4 209 210 359 360 +4 209 210 359 360 +4 209 210 359 360 +4 209 210 359 360 +4 209 210 359 360 +4 209 210 359 360 +8 209 210 233 234 239 240 359 360 +8 209 210 233 234 239 240 359 360 +8 209 210 233 234 239 240 359 360 +8 209 210 233 234 239 240 359 360 +8 209 210 233 234 239 240 359 360 +8 209 210 233 234 239 240 359 360 +3 209 233 239 +3 209 233 239 +3 209 233 239 +3 209 233 239 +3 209 233 239 +3 209 233 239 +3 210 234 240 +3 210 234 240 +3 210 234 240 +3 210 234 240 +3 210 234 240 +3 210 234 240 +8 210 234 240 287 293 3353 3359 3383 +8 210 234 240 287 293 3353 3359 3383 +8 210 234 240 287 293 3353 3359 3383 +8 210 234 240 287 293 3353 3359 3383 +8 210 234 240 287 293 3353 3359 3383 +8 210 234 240 287 293 3353 3359 3383 +4 210 287 293 3383 +4 210 287 293 3383 +4 210 287 293 3383 +4 210 287 293 3383 +4 210 287 293 3383 +4 210 287 293 3383 +11 211 276 282 308 309 879 1355 2758 3316 3317 3382 +11 211 276 282 308 309 879 1355 2758 3316 3317 3382 +11 211 276 282 308 309 879 1355 2758 3316 3317 3382 +11 211 276 282 308 309 879 1355 2758 3316 3317 3382 +11 211 276 282 308 309 879 1355 2758 3316 3317 3382 +11 211 276 282 308 309 879 1355 2758 3316 3317 3382 +4 211 276 282 3382 +4 211 276 282 3382 +4 211 276 282 3382 +4 211 276 282 3382 +4 211 276 282 3382 +4 211 276 282 3382 +12 211 212 276 277 282 283 318 319 3306 3307 3381 3382 +12 211 212 276 277 282 283 318 319 3306 3307 3381 3382 +12 211 212 276 277 282 283 318 319 3306 3307 3381 3382 +12 211 212 276 277 282 283 318 319 3306 3307 3381 3382 +12 211 212 276 277 282 283 318 319 3306 3307 3381 3382 +12 211 212 276 277 282 283 318 319 3306 3307 3381 3382 +4 211 212 318 319 +4 211 212 318 319 +4 211 212 318 319 +4 211 212 318 319 +4 211 212 318 319 +4 211 212 318 319 +8 211 212 223 224 229 230 318 319 +8 211 212 223 224 229 230 318 319 +8 211 212 223 224 229 230 318 319 +8 211 212 223 224 229 230 318 319 +8 211 212 223 224 229 230 318 319 +8 211 212 223 224 229 230 318 319 +11 211 223 229 308 309 879 880 924 967 1140 1183 +11 211 223 229 308 309 879 880 924 967 1140 1183 +11 211 223 229 308 309 879 880 924 967 1140 1183 +11 211 223 229 308 309 879 880 924 967 1140 1183 +11 211 223 229 308 309 879 880 924 967 1140 1183 +11 211 223 229 308 309 879 880 924 967 1140 1183 +3 211 223 229 +3 211 223 229 +3 211 223 229 +3 211 223 229 +3 211 223 229 +3 211 223 229 +4 211 308 309 879 +4 211 308 309 879 +4 211 308 309 879 +4 211 308 309 879 +4 211 308 309 879 +4 211 308 309 879 +4 212 277 283 3381 +4 212 277 283 3381 +4 212 277 283 3381 +4 212 277 283 3381 +4 212 277 283 3381 +4 212 277 283 3381 +12 212 213 277 278 283 284 328 329 3296 3297 3380 3381 +12 212 213 277 278 283 284 328 329 3296 3297 3380 3381 +12 212 213 277 278 283 284 328 329 3296 3297 3380 3381 +12 212 213 277 278 283 284 328 329 3296 3297 3380 3381 +12 212 213 277 278 283 284 328 329 3296 3297 3380 3381 +12 212 213 277 278 283 284 328 329 3296 3297 3380 3381 +4 212 213 328 329 +4 212 213 328 329 +4 212 213 328 329 +4 212 213 328 329 +4 212 213 328 329 +4 212 213 328 329 +8 212 213 224 225 230 231 328 329 +8 212 213 224 225 230 231 328 329 +8 212 213 224 225 230 231 328 329 +8 212 213 224 225 230 231 328 329 +8 212 213 224 225 230 231 328 329 +8 212 213 224 225 230 231 328 329 +3 212 224 230 +3 212 224 230 +3 212 224 230 +3 212 224 230 +3 212 224 230 +3 212 224 230 +4 213 278 284 3380 +4 213 278 284 3380 +4 213 278 284 3380 +4 213 278 284 3380 +4 213 278 284 3380 +4 213 278 284 3380 +12 213 214 278 279 284 285 338 339 3286 3287 3379 3380 +12 213 214 278 279 284 285 338 339 3286 3287 3379 3380 +12 213 214 278 279 284 285 338 339 3286 3287 3379 3380 +12 213 214 278 279 284 285 338 339 3286 3287 3379 3380 +12 213 214 278 279 284 285 338 339 3286 3287 3379 3380 +12 213 214 278 279 284 285 338 339 3286 3287 3379 3380 +4 213 214 338 339 +4 213 214 338 339 +4 213 214 338 339 +4 213 214 338 339 +4 213 214 338 339 +4 213 214 338 339 +8 213 214 225 226 231 232 338 339 +8 213 214 225 226 231 232 338 339 +8 213 214 225 226 231 232 338 339 +8 213 214 225 226 231 232 338 339 +8 213 214 225 226 231 232 338 339 +8 213 214 225 226 231 232 338 339 +3 213 225 231 +3 213 225 231 +3 213 225 231 +3 213 225 231 +3 213 225 231 +3 213 225 231 +4 214 279 285 3379 +4 214 279 285 3379 +4 214 279 285 3379 +4 214 279 285 3379 +4 214 279 285 3379 +4 214 279 285 3379 +12 214 215 279 280 285 286 348 349 3276 3277 3378 3379 +12 214 215 279 280 285 286 348 349 3276 3277 3378 3379 +12 214 215 279 280 285 286 348 349 3276 3277 3378 3379 +12 214 215 279 280 285 286 348 349 3276 3277 3378 3379 +12 214 215 279 280 285 286 348 349 3276 3277 3378 3379 +12 214 215 279 280 285 286 348 349 3276 3277 3378 3379 +4 214 215 348 349 +4 214 215 348 349 +4 214 215 348 349 +4 214 215 348 349 +4 214 215 348 349 +4 214 215 348 349 +8 214 215 226 227 232 233 348 349 +8 214 215 226 227 232 233 348 349 +8 214 215 226 227 232 233 348 349 +8 214 215 226 227 232 233 348 349 +8 214 215 226 227 232 233 348 349 +8 214 215 226 227 232 233 348 349 +3 214 226 232 +3 214 226 232 +3 214 226 232 +3 214 226 232 +3 214 226 232 +3 214 226 232 +4 215 280 286 3378 +4 215 280 286 3378 +4 215 280 286 3378 +4 215 280 286 3378 +4 215 280 286 3378 +4 215 280 286 3378 +12 215 216 280 281 286 287 358 359 3266 3267 3377 3378 +12 215 216 280 281 286 287 358 359 3266 3267 3377 3378 +12 215 216 280 281 286 287 358 359 3266 3267 3377 3378 +12 215 216 280 281 286 287 358 359 3266 3267 3377 3378 +12 215 216 280 281 286 287 358 359 3266 3267 3377 3378 +12 215 216 280 281 286 287 358 359 3266 3267 3377 3378 +4 215 216 358 359 +4 215 216 358 359 +4 215 216 358 359 +4 215 216 358 359 +4 215 216 358 359 +4 215 216 358 359 +8 215 216 227 228 233 234 358 359 +8 215 216 227 228 233 234 358 359 +8 215 216 227 228 233 234 358 359 +8 215 216 227 228 233 234 358 359 +8 215 216 227 228 233 234 358 359 +8 215 216 227 228 233 234 358 359 +3 215 227 233 +3 215 227 233 +3 215 227 233 +3 215 227 233 +3 215 227 233 +3 215 227 233 +3 216 228 234 +3 216 228 234 +3 216 228 234 +3 216 228 234 +3 216 228 234 +3 216 228 234 +8 216 228 234 281 287 3359 3365 3377 +8 216 228 234 281 287 3359 3365 3377 +8 216 228 234 281 287 3359 3365 3377 +8 216 228 234 281 287 3359 3365 3377 +8 216 228 234 281 287 3359 3365 3377 +8 216 228 234 281 287 3359 3365 3377 +4 216 281 287 3377 +4 216 281 287 3377 +4 216 281 287 3377 +4 216 281 287 3377 +4 216 281 287 3377 +4 216 281 287 3377 +8 217 276 308 862 1355 2775 3317 3376 +8 217 276 308 862 1355 2775 3317 3376 +8 217 276 308 862 1355 2775 3317 3376 +8 217 276 308 862 1355 2775 3317 3376 +8 217 276 308 862 1355 2775 3317 3376 +8 217 276 308 862 1355 2775 3317 3376 +3 217 276 3376 +3 217 276 3376 +3 217 276 3376 +3 217 276 3376 +3 217 276 3376 +3 217 276 3376 +8 217 221 276 277 318 3307 3372 3376 +8 217 221 276 277 318 3307 3372 3376 +8 217 221 276 277 318 3307 3372 3376 +8 217 221 276 277 318 3307 3372 3376 +8 217 221 276 277 318 3307 3372 3376 +8 217 221 276 277 318 3307 3372 3376 +3 217 221 318 +3 217 221 318 +3 217 221 318 +3 217 221 318 +3 217 221 318 +3 217 221 318 +5 217 221 223 224 318 +5 217 221 223 224 318 +5 217 221 223 224 318 +5 217 221 223 224 318 +5 217 221 223 224 318 +5 217 221 223 224 318 +6 217 223 308 862 924 1140 +6 217 223 308 862 924 1140 +6 217 223 308 862 924 1140 +6 217 223 308 862 924 1140 +6 217 223 308 862 924 1140 +6 217 223 308 862 924 1140 +2 217 223 +2 217 223 +2 217 223 +2 217 223 +2 217 223 +2 217 223 +3 217 308 862 +3 217 308 862 +3 217 308 862 +3 217 308 862 +3 217 308 862 +3 217 308 862 +6 218 219 371 3254 3374 3375 +6 218 219 371 3254 3374 3375 +6 218 219 371 3254 3374 3375 +6 218 219 371 3254 3374 3375 +6 218 219 371 3254 3374 3375 +6 218 219 371 3254 3374 3375 +2 218 3375 +2 218 3375 +2 218 3375 +2 218 3375 +2 218 3375 +2 218 3375 +6 218 222 372 3253 3371 3375 +6 218 222 372 3253 3371 3375 +6 218 222 372 3253 3371 3375 +6 218 222 372 3253 3371 3375 +6 218 222 372 3253 3371 3375 +6 218 222 372 3253 3371 3375 +3 218 222 372 +3 218 222 372 +3 218 222 372 +3 218 222 372 +3 218 222 372 +3 218 222 372 +3 218 219 371 +3 218 219 371 +3 218 219 371 +3 218 219 371 +3 218 219 371 +3 218 219 371 +6 219 220 370 3255 3373 3374 +6 219 220 370 3255 3373 3374 +6 219 220 370 3255 3373 3374 +6 219 220 370 3255 3373 3374 +6 219 220 370 3255 3373 3374 +6 219 220 370 3255 3373 3374 +2 219 3374 +2 219 3374 +2 219 3374 +2 219 3374 +2 219 3374 +2 219 3374 +3 219 220 370 +3 219 220 370 +3 219 220 370 +3 219 220 370 +3 219 220 370 +3 219 220 370 +4 220 369 3256 3373 +4 220 369 3256 3373 +4 220 369 3256 3373 +4 220 369 3256 3373 +4 220 369 3256 3373 +4 220 369 3256 3373 +2 220 3373 +2 220 3373 +2 220 3373 +2 220 3373 +2 220 3373 +2 220 3373 +2 220 369 +2 220 369 +2 220 369 +2 220 369 +2 220 369 +2 220 369 +2 221 224 +2 221 224 +2 221 224 +2 221 224 +2 221 224 +2 221 224 +10 221 224 225 277 278 328 3297 3368 3369 3372 +10 221 224 225 277 278 328 3297 3368 3369 3372 +10 221 224 225 277 278 328 3297 3368 3369 3372 +10 221 224 225 277 278 328 3297 3368 3369 3372 +10 221 224 225 277 278 328 3297 3368 3369 3372 +10 221 224 225 277 278 328 3297 3368 3369 3372 +3 221 277 3372 +3 221 277 3372 +3 221 277 3372 +3 221 277 3372 +3 221 277 3372 +3 221 277 3372 +2 222 3371 +2 222 3371 +2 222 3371 +2 222 3371 +2 222 3371 +2 222 3371 +4 222 373 3252 3371 +4 222 373 3252 3371 +4 222 373 3252 3371 +4 222 373 3252 3371 +4 222 373 3252 3371 +4 222 373 3252 3371 +2 222 373 +2 222 373 +2 222 373 +2 222 373 +2 222 373 +2 222 373 +3 223 224 318 +3 223 224 318 +3 223 224 318 +3 223 224 318 +3 223 224 318 +3 223 224 318 +4 223 308 924 1140 +4 223 308 924 1140 +4 223 308 924 1140 +4 223 308 924 1140 +4 223 308 924 1140 +4 223 308 924 1140 +3 224 225 328 +3 224 225 328 +3 224 225 328 +3 224 225 328 +3 224 225 328 +3 224 225 328 +3 225 278 3368 +3 225 278 3368 +3 225 278 3368 +3 225 278 3368 +3 225 278 3368 +3 225 278 3368 +8 225 226 278 279 338 3287 3367 3368 +8 225 226 278 279 338 3287 3367 3368 +8 225 226 278 279 338 3287 3367 3368 +8 225 226 278 279 338 3287 3367 3368 +8 225 226 278 279 338 3287 3367 3368 +8 225 226 278 279 338 3287 3367 3368 +3 225 226 338 +3 225 226 338 +3 225 226 338 +3 225 226 338 +3 225 226 338 +3 225 226 338 +3 226 279 3367 +3 226 279 3367 +3 226 279 3367 +3 226 279 3367 +3 226 279 3367 +3 226 279 3367 +8 226 227 279 280 348 3277 3366 3367 +8 226 227 279 280 348 3277 3366 3367 +8 226 227 279 280 348 3277 3366 3367 +8 226 227 279 280 348 3277 3366 3367 +8 226 227 279 280 348 3277 3366 3367 +8 226 227 279 280 348 3277 3366 3367 +3 226 227 348 +3 226 227 348 +3 226 227 348 +3 226 227 348 +3 226 227 348 +3 226 227 348 +3 227 280 3366 +3 227 280 3366 +3 227 280 3366 +3 227 280 3366 +3 227 280 3366 +3 227 280 3366 +8 227 228 280 281 358 3267 3365 3366 +8 227 228 280 281 358 3267 3365 3366 +8 227 228 280 281 358 3267 3365 3366 +8 227 228 280 281 358 3267 3365 3366 +8 227 228 280 281 358 3267 3365 3366 +8 227 228 280 281 358 3267 3365 3366 +3 227 228 358 +3 227 228 358 +3 227 228 358 +3 227 228 358 +3 227 228 358 +3 227 228 358 +3 228 281 3365 +3 228 281 3365 +3 228 281 3365 +3 228 281 3365 +3 228 281 3365 +3 228 281 3365 +3 229 230 319 +3 229 230 319 +3 229 230 319 +3 229 230 319 +3 229 230 319 +3 229 230 319 +4 229 309 967 1183 +4 229 309 967 1183 +4 229 309 967 1183 +4 229 309 967 1183 +4 229 309 967 1183 +4 229 309 967 1183 +3 230 231 329 +3 230 231 329 +3 230 231 329 +3 230 231 329 +3 230 231 329 +3 230 231 329 +3 231 232 339 +3 231 232 339 +3 231 232 339 +3 231 232 339 +3 231 232 339 +3 231 232 339 +3 232 233 349 +3 232 233 349 +3 232 233 349 +3 232 233 349 +3 232 233 349 +3 232 233 349 +3 233 234 359 +3 233 234 359 +3 233 234 359 +3 233 234 359 +3 233 234 359 +3 233 234 359 +3 234 287 3359 +3 234 287 3359 +3 234 287 3359 +3 234 287 3359 +3 234 287 3359 +3 234 287 3359 +3 235 236 321 +3 235 236 321 +3 235 236 321 +3 235 236 321 +3 235 236 321 +3 235 236 321 +3 235 311 1010 +3 235 311 1010 +3 235 311 1010 +3 235 311 1010 +3 235 311 1010 +3 235 311 1010 +3 236 237 331 +3 236 237 331 +3 236 237 331 +3 236 237 331 +3 236 237 331 +3 236 237 331 +3 237 238 341 +3 237 238 341 +3 237 238 341 +3 237 238 341 +3 237 238 341 +3 237 238 341 +3 238 239 351 +3 238 239 351 +3 238 239 351 +3 238 239 351 +3 238 239 351 +3 238 239 351 +3 239 240 360 +3 239 240 360 +3 239 240 360 +3 239 240 360 +3 239 240 360 +3 239 240 360 +3 240 293 3353 +3 240 293 3353 +3 240 293 3353 +3 240 293 3353 +3 240 293 3353 +3 240 293 3353 +3 241 242 323 +3 241 242 323 +3 241 242 323 +3 241 242 323 +3 241 242 323 +3 241 242 323 +3 241 313 1053 +3 241 313 1053 +3 241 313 1053 +3 241 313 1053 +3 241 313 1053 +3 241 313 1053 +3 242 243 333 +3 242 243 333 +3 242 243 333 +3 242 243 333 +3 242 243 333 +3 242 243 333 +3 243 244 343 +3 243 244 343 +3 243 244 343 +3 243 244 343 +3 243 244 343 +3 243 244 343 +3 244 245 353 +3 244 245 353 +3 244 245 353 +3 244 245 353 +3 244 245 353 +3 244 245 353 +3 245 246 361 +3 245 246 361 +3 245 246 361 +3 245 246 361 +3 245 246 361 +3 245 246 361 +3 246 299 3347 +3 246 299 3347 +3 246 299 3347 +3 246 299 3347 +3 246 299 3347 +3 246 299 3347 +3 247 248 325 +3 247 248 325 +3 247 248 325 +3 247 248 325 +3 247 248 325 +3 247 248 325 +3 247 315 1096 +3 247 315 1096 +3 247 315 1096 +3 247 315 1096 +3 247 315 1096 +3 247 315 1096 +3 248 249 335 +3 248 249 335 +3 248 249 335 +3 248 249 335 +3 248 249 335 +3 248 249 335 +3 249 250 345 +3 249 250 345 +3 249 250 345 +3 249 250 345 +3 249 250 345 +3 249 250 345 +4 250 251 271 355 +4 250 251 271 355 +4 250 251 271 355 +4 250 251 271 355 +4 250 251 271 355 +4 250 251 271 355 +3 251 252 362 +3 251 252 362 +3 251 252 362 +3 251 252 362 +3 251 252 362 +3 251 252 362 +3 252 305 3341 +3 252 305 3341 +3 252 305 3341 +3 252 305 3341 +3 252 305 3341 +3 252 305 3341 +3 253 254 327 +3 253 254 327 +3 253 254 327 +3 253 254 327 +3 253 254 327 +3 253 254 327 +3 253 317 1097 +3 253 317 1097 +3 253 317 1097 +3 253 317 1097 +3 253 317 1097 +3 253 317 1097 +3 254 255 337 +3 254 255 337 +3 254 255 337 +3 254 255 337 +3 254 255 337 +3 254 255 337 +3 255 256 347 +3 255 256 347 +3 255 256 347 +3 255 256 347 +3 255 256 347 +3 255 256 347 +4 256 257 275 357 +4 256 257 275 357 +4 256 257 275 357 +4 256 257 275 357 +4 256 257 275 357 +4 256 257 275 357 +3 257 258 364 +3 257 258 364 +3 257 258 364 +3 257 258 364 +3 257 258 364 +3 257 258 364 +2 258 259 +2 258 259 +2 258 259 +2 258 259 +2 258 259 +2 258 259 +2 259 3334 +2 259 3334 +2 259 3334 +2 259 3334 +2 259 3334 +2 259 3334 +4 260 261 320 321 +4 260 261 320 321 +4 260 261 320 321 +4 260 261 320 321 +4 260 261 320 321 +4 260 261 320 321 +4 260 310 311 1226 +4 260 310 311 1226 +4 260 310 311 1226 +4 260 310 311 1226 +4 260 310 311 1226 +4 260 310 311 1226 +4 261 262 330 331 +4 261 262 330 331 +4 261 262 330 331 +4 261 262 330 331 +4 261 262 330 331 +4 261 262 330 331 +4 262 263 340 341 +4 262 263 340 341 +4 262 263 340 341 +4 262 263 340 341 +4 262 263 340 341 +4 262 263 340 341 +3 263 350 351 +3 263 350 351 +3 263 350 351 +3 263 350 351 +3 263 350 351 +3 263 350 351 +4 264 265 322 323 +4 264 265 322 323 +4 264 265 322 323 +4 264 265 322 323 +4 264 265 322 323 +4 264 265 322 323 +4 264 312 313 1269 +4 264 312 313 1269 +4 264 312 313 1269 +4 264 312 313 1269 +4 264 312 313 1269 +4 264 312 313 1269 +4 265 266 332 333 +4 265 266 332 333 +4 265 266 332 333 +4 265 266 332 333 +4 265 266 332 333 +4 265 266 332 333 +4 266 267 342 343 +4 266 267 342 343 +4 266 267 342 343 +4 266 267 342 343 +4 266 267 342 343 +4 266 267 342 343 +1 267 +1 267 +1 267 +1 267 +1 267 +1 267 +2 267 271 +2 267 271 +2 267 271 +2 267 271 +2 267 271 +2 267 271 +4 268 269 324 325 +4 268 269 324 325 +4 268 269 324 325 +4 268 269 324 325 +4 268 269 324 325 +4 268 269 324 325 +4 268 314 315 1312 +4 268 314 315 1312 +4 268 314 315 1312 +4 268 314 315 1312 +4 268 314 315 1312 +4 268 314 315 1312 +4 269 270 334 335 +4 269 270 334 335 +4 269 270 334 335 +4 269 270 334 335 +4 269 270 334 335 +4 269 270 334 335 +4 270 271 344 345 +4 270 271 344 345 +4 270 271 344 345 +4 270 271 344 345 +4 270 271 344 345 +4 270 271 344 345 +2 271 275 +2 271 275 +2 271 275 +2 271 275 +2 271 275 +2 271 275 +4 272 273 326 327 +4 272 273 326 327 +4 272 273 326 327 +4 272 273 326 327 +4 272 273 326 327 +4 272 273 326 327 +3 272 316 317 +3 272 316 317 +3 272 316 317 +3 272 316 317 +3 272 316 317 +3 272 316 317 +4 273 274 336 337 +4 273 274 336 337 +4 273 274 336 337 +4 273 274 336 337 +4 273 274 336 337 +4 273 274 336 337 +4 274 275 346 347 +4 274 275 346 347 +4 274 275 346 347 +4 274 275 346 347 +4 274 275 346 347 +4 274 275 346 347 +1 275 +1 275 +1 275 +1 275 +1 275 +1 275 +4 276 277 318 3307 +4 276 277 318 3307 +4 276 277 318 3307 +4 276 277 318 3307 +4 276 277 318 3307 +4 276 277 318 3307 +4 276 308 1355 3317 +4 276 308 1355 3317 +4 276 308 1355 3317 +4 276 308 1355 3317 +4 276 308 1355 3317 +4 276 308 1355 3317 +4 277 278 328 3297 +4 277 278 328 3297 +4 277 278 328 3297 +4 277 278 328 3297 +4 277 278 328 3297 +4 277 278 328 3297 +4 278 279 338 3287 +4 278 279 338 3287 +4 278 279 338 3287 +4 278 279 338 3287 +4 278 279 338 3287 +4 278 279 338 3287 +4 279 280 348 3277 +4 279 280 348 3277 +4 279 280 348 3277 +4 279 280 348 3277 +4 279 280 348 3277 +4 279 280 348 3277 +4 280 281 358 3267 +4 280 281 358 3267 +4 280 281 358 3267 +4 280 281 358 3267 +4 280 281 358 3267 +4 280 281 358 3267 +4 282 283 319 3306 +4 282 283 319 3306 +4 282 283 319 3306 +4 282 283 319 3306 +4 282 283 319 3306 +4 282 283 319 3306 +3 282 309 3316 +3 282 309 3316 +3 282 309 3316 +3 282 309 3316 +3 282 309 3316 +3 282 309 3316 +4 283 284 329 3296 +4 283 284 329 3296 +4 283 284 329 3296 +4 283 284 329 3296 +4 283 284 329 3296 +4 283 284 329 3296 +4 284 285 339 3286 +4 284 285 339 3286 +4 284 285 339 3286 +4 284 285 339 3286 +4 284 285 339 3286 +4 284 285 339 3286 +4 285 286 349 3276 +4 285 286 349 3276 +4 285 286 349 3276 +4 285 286 349 3276 +4 285 286 349 3276 +4 285 286 349 3276 +4 286 287 359 3266 +4 286 287 359 3266 +4 286 287 359 3266 +4 286 287 359 3266 +4 286 287 359 3266 +4 286 287 359 3266 +4 288 289 320 3305 +4 288 289 320 3305 +4 288 289 320 3305 +4 288 289 320 3305 +4 288 289 320 3305 +4 288 289 320 3305 +3 288 310 3315 +3 288 310 3315 +3 288 310 3315 +3 288 310 3315 +3 288 310 3315 +3 288 310 3315 +4 289 290 330 3295 +4 289 290 330 3295 +4 289 290 330 3295 +4 289 290 330 3295 +4 289 290 330 3295 +4 289 290 330 3295 +4 290 291 340 3285 +4 290 291 340 3285 +4 290 291 340 3285 +4 290 291 340 3285 +4 290 291 340 3285 +4 290 291 340 3285 +4 291 292 350 3275 +4 291 292 350 3275 +4 291 292 350 3275 +4 291 292 350 3275 +4 291 292 350 3275 +4 291 292 350 3275 +4 292 293 360 3265 +4 292 293 360 3265 +4 292 293 360 3265 +4 292 293 360 3265 +4 292 293 360 3265 +4 292 293 360 3265 +4 294 295 322 3303 +4 294 295 322 3303 +4 294 295 322 3303 +4 294 295 322 3303 +4 294 295 322 3303 +4 294 295 322 3303 +3 294 312 3313 +3 294 312 3313 +3 294 312 3313 +3 294 312 3313 +3 294 312 3313 +3 294 312 3313 +4 295 296 332 3293 +4 295 296 332 3293 +4 295 296 332 3293 +4 295 296 332 3293 +4 295 296 332 3293 +4 295 296 332 3293 +4 296 297 342 3283 +4 296 297 342 3283 +4 296 297 342 3283 +4 296 297 342 3283 +4 296 297 342 3283 +4 296 297 342 3283 +4 297 298 352 3273 +4 297 298 352 3273 +4 297 298 352 3273 +4 297 298 352 3273 +4 297 298 352 3273 +4 297 298 352 3273 +4 298 299 361 3264 +4 298 299 361 3264 +4 298 299 361 3264 +4 298 299 361 3264 +4 298 299 361 3264 +4 298 299 361 3264 +4 300 301 324 3301 +4 300 301 324 3301 +4 300 301 324 3301 +4 300 301 324 3301 +4 300 301 324 3301 +4 300 301 324 3301 +3 300 314 3311 +3 300 314 3311 +3 300 314 3311 +3 300 314 3311 +3 300 314 3311 +3 300 314 3311 +4 301 302 334 3291 +4 301 302 334 3291 +4 301 302 334 3291 +4 301 302 334 3291 +4 301 302 334 3291 +4 301 302 334 3291 +4 302 303 344 3281 +4 302 303 344 3281 +4 302 303 344 3281 +4 302 303 344 3281 +4 302 303 344 3281 +4 302 303 344 3281 +4 303 304 354 3271 +4 303 304 354 3271 +4 303 304 354 3271 +4 303 304 354 3271 +4 303 304 354 3271 +4 303 304 354 3271 +4 304 305 362 3263 +4 304 305 362 3263 +4 304 305 362 3263 +4 304 305 362 3263 +4 304 305 362 3263 +4 304 305 362 3263 +3 306 326 3299 +3 306 326 3299 +3 306 326 3299 +3 306 326 3299 +3 306 326 3299 +3 306 326 3299 +3 306 316 3309 +3 306 316 3309 +3 306 316 3309 +3 306 316 3309 +3 306 316 3309 +3 306 316 3309 +3 307 346 3279 +3 307 346 3279 +3 307 346 3279 +3 307 346 3279 +3 307 346 3279 +3 307 346 3279 +3 307 336 3289 +3 307 336 3289 +3 307 336 3289 +3 307 336 3289 +3 307 336 3289 +3 307 336 3289 +2 352 353 +2 352 353 +2 352 353 +2 352 353 +2 352 353 +2 352 353 +2 354 355 +2 354 355 +2 354 355 +2 354 355 +2 354 355 +2 354 355 +2 356 357 +2 356 357 +2 356 357 +2 356 357 +2 356 357 +2 356 357 +2 356 3269 +2 356 3269 +2 356 3269 +2 356 3269 +2 356 3269 +2 356 3269 +2 363 364 +2 363 364 +2 363 364 +2 363 364 +2 363 364 +2 363 364 +2 363 3262 +2 363 3262 +2 363 3262 +2 363 3262 +2 363 3262 +2 363 3262 +3 365 366 370 +3 365 366 370 +3 365 366 370 +3 365 366 370 +3 365 366 370 +3 365 366 370 +2 365 369 +2 365 369 +2 365 369 +2 365 369 +2 365 369 +2 365 369 +3 366 367 371 +3 366 367 371 +3 366 367 371 +3 366 367 371 +3 366 367 371 +3 366 367 371 +3 367 368 372 +3 367 368 372 +3 367 368 372 +3 367 368 372 +3 367 368 372 +3 367 368 372 +2 368 373 +2 368 373 +2 368 373 +2 368 373 +2 368 373 +2 368 373 +2 369 3256 +2 369 3256 +2 369 3256 +2 369 3256 +2 369 3256 +2 369 3256 +2 370 3255 +2 370 3255 +2 370 3255 +2 370 3255 +2 370 3255 +2 370 3255 +2 371 3254 +2 371 3254 +2 371 3254 +2 371 3254 +2 371 3254 +2 371 3254 +2 372 3253 +2 372 3253 +2 372 3253 +2 372 3253 +2 372 3253 +2 372 3253 +2 373 3252 +2 373 3252 +2 373 3252 +2 373 3252 +2 373 3252 +2 373 3252 +3 374 472 3251 +3 374 472 3251 +3 374 472 3251 +3 374 472 3251 +3 374 472 3251 +3 374 472 3251 +4 374 376 478 513 +4 374 376 478 513 +4 374 376 478 513 +4 374 376 478 513 +4 374 376 478 513 +4 374 376 478 513 +10 374 375 376 377 456 457 478 479 508 513 +10 374 375 376 377 456 457 478 479 508 513 +10 374 375 376 377 456 457 478 479 508 513 +10 374 375 376 377 456 457 478 479 508 513 +10 374 375 376 377 456 457 478 479 508 513 +10 374 375 376 377 456 457 478 479 508 513 +5 374 375 442 443 456 +5 374 375 442 443 456 +5 374 375 442 443 456 +5 374 375 442 443 456 +5 374 375 442 443 456 +5 374 375 442 443 456 +3 374 375 456 +3 374 375 456 +3 374 375 456 +3 374 375 456 +3 374 375 456 +3 374 375 456 +2 374 442 +2 374 442 +2 374 442 +2 374 442 +2 374 442 +2 374 442 +3 375 377 479 +3 375 377 479 +3 375 377 479 +3 375 377 479 +3 375 377 479 +3 375 377 479 +5 375 377 434 435 479 +5 375 377 434 435 479 +5 375 377 434 435 479 +5 375 377 434 435 479 +5 375 377 434 435 479 +5 375 377 434 435 479 +3 375 434 443 +3 375 434 443 +3 375 434 443 +2 375 434 +2 375 434 +2 375 434 +2 375 434 +2 375 434 +2 375 434 +2 375 443 +2 375 443 +2 375 443 +2 375 443 +2 375 443 +2 375 443 +2 376 3249 +2 376 3249 +2 376 3249 +2 376 3249 +2 376 3249 +2 376 3249 +6 376 484 514 3123 3153 3249 +6 376 484 514 3123 3153 3249 +6 376 484 514 3123 3153 3249 +6 376 484 514 3123 3153 3249 +6 376 484 514 3123 3153 3249 +6 376 484 514 3123 3153 3249 +3 376 484 514 +3 376 484 514 +3 376 484 514 +3 376 484 514 +3 376 484 514 +3 376 484 514 +10 376 377 378 457 458 484 485 508 509 514 +10 376 377 378 457 458 484 485 508 509 514 +10 376 377 378 457 458 484 485 508 509 514 +10 376 377 378 457 458 484 485 508 509 514 +10 376 377 378 457 458 484 485 508 509 514 +10 376 377 378 457 458 484 485 508 509 514 +4 376 377 457 508 +4 376 377 457 508 +4 376 377 457 508 +4 376 377 457 508 +4 376 377 457 508 +4 376 377 457 508 +3 377 378 485 +3 377 378 485 +3 377 378 485 +3 377 378 485 +3 377 378 485 +3 377 378 485 +5 377 378 435 436 485 +5 377 378 435 436 485 +5 377 378 435 436 485 +5 377 378 435 436 485 +5 377 378 435 436 485 +5 377 378 435 436 485 +2 377 435 +2 377 435 +2 377 435 +2 377 435 +2 377 435 +2 377 435 +3 378 458 509 +3 378 458 509 +3 378 458 509 +3 378 458 509 +3 378 458 509 +3 378 458 509 +7 378 379 458 459 489 509 510 +7 378 379 458 459 489 509 510 +7 378 379 458 459 489 509 510 +7 378 379 458 459 489 509 510 +7 378 379 458 459 489 509 510 +7 378 379 458 459 489 509 510 +3 378 379 489 +3 378 379 489 +3 378 379 489 +3 378 379 489 +3 378 379 489 +3 378 379 489 +5 378 379 436 437 489 +5 378 379 436 437 489 +5 378 379 436 437 489 +5 378 379 436 437 489 +5 378 379 436 437 489 +5 378 379 436 437 489 +2 378 436 +2 378 436 +2 378 436 +2 378 436 +2 378 436 +2 378 436 +3 379 459 510 +3 379 459 510 +3 379 459 510 +3 379 459 510 +3 379 459 510 +3 379 459 510 +10 379 380 381 459 460 494 495 510 511 515 +10 379 380 381 459 460 494 495 510 511 515 +10 379 380 381 459 460 494 495 510 511 515 +10 379 380 381 459 460 494 495 510 511 515 +10 379 380 381 459 460 494 495 510 511 515 +10 379 380 381 459 460 494 495 510 511 515 +3 379 381 495 +3 379 381 495 +3 379 381 495 +3 379 381 495 +3 379 381 495 +3 379 381 495 +5 379 381 437 438 495 +5 379 381 437 438 495 +5 379 381 437 438 495 +5 379 381 437 438 495 +5 379 381 437 438 495 +5 379 381 437 438 495 +2 379 437 +2 379 437 +2 379 437 +2 379 437 +2 379 437 +2 379 437 +7 380 473 494 515 3122 3143 3245 +7 380 473 494 515 3122 3143 3245 +7 380 473 494 515 3122 3143 3245 +7 380 473 494 515 3122 3143 3245 +7 380 473 494 515 3122 3143 3245 +7 380 473 494 515 3122 3143 3245 +3 380 473 3245 +3 380 473 3245 +3 380 473 3245 +3 380 473 3245 +3 380 473 3245 +3 380 473 3245 +7 380 473 502 516 3121 3135 3245 +7 380 473 502 516 3121 3135 3245 +7 380 473 502 516 3121 3135 3245 +7 380 473 502 516 3121 3135 3245 +7 380 473 502 516 3121 3135 3245 +7 380 473 502 516 3121 3135 3245 +3 380 502 516 +3 380 502 516 +3 380 502 516 +3 380 502 516 +3 380 502 516 +3 380 502 516 +10 380 381 382 460 461 502 503 511 512 516 +10 380 381 382 460 461 502 503 511 512 516 +10 380 381 382 460 461 502 503 511 512 516 +10 380 381 382 460 461 502 503 511 512 516 +10 380 381 382 460 461 502 503 511 512 516 +10 380 381 382 460 461 502 503 511 512 516 +4 380 381 460 511 +4 380 381 460 511 +4 380 381 460 511 +4 380 381 460 511 +4 380 381 460 511 +4 380 381 460 511 +3 380 494 515 +3 380 494 515 +3 380 494 515 +3 380 494 515 +3 380 494 515 +3 380 494 515 +3 381 382 503 +3 381 382 503 +3 381 382 503 +3 381 382 503 +3 381 382 503 +3 381 382 503 +5 381 382 438 439 503 +5 381 382 438 439 503 +5 381 382 438 439 503 +5 381 382 438 439 503 +5 381 382 438 439 503 +5 381 382 438 439 503 +2 381 438 +2 381 438 +2 381 438 +2 381 438 +2 381 438 +2 381 438 +3 382 461 512 +3 382 461 512 +3 382 461 512 +3 382 461 512 +3 382 461 512 +3 382 461 512 +7 382 461 507 512 517 1270 1716 +7 382 461 507 512 517 1270 1716 +7 382 461 507 512 517 1270 1716 +7 382 461 507 512 517 1270 1716 +7 382 461 507 512 517 1270 1716 +7 382 461 507 512 517 1270 1716 +3 382 507 517 +3 382 507 517 +3 382 507 517 +3 382 507 517 +3 382 507 517 +3 382 507 517 +5 382 439 507 517 1054 +5 382 439 507 517 1054 +5 382 439 507 517 1054 +5 382 439 507 517 1054 +5 382 439 507 517 1054 +5 382 439 507 517 1054 +2 382 439 +2 382 439 +2 382 439 +2 382 439 +2 382 439 +2 382 439 +4 383 470 472 3242 +4 383 470 472 3242 +4 383 470 472 3242 +4 383 470 472 3242 +4 383 470 472 3242 +4 383 470 472 3242 +4 383 385 475 478 +4 383 385 475 478 +4 383 385 475 478 +4 383 385 475 478 +4 383 385 475 478 +4 383 385 475 478 +13 383 384 385 386 450 451 456 457 475 476 477 478 479 +13 383 384 385 386 450 451 456 457 475 476 477 478 479 +13 383 384 385 386 450 451 456 457 475 476 477 478 479 +13 383 384 385 386 450 451 456 457 475 476 477 478 479 +13 383 384 385 386 450 451 456 457 475 476 477 478 479 +13 383 384 385 386 450 451 456 457 475 476 477 478 479 +8 383 384 440 441 442 443 450 456 +8 383 384 440 441 442 443 450 456 +8 383 384 440 441 442 443 450 456 +8 383 384 440 441 442 443 450 456 +8 383 384 440 441 442 443 450 456 +8 383 384 440 441 442 443 450 456 +4 383 384 450 456 +4 383 384 450 456 +4 383 384 450 456 +4 383 384 450 456 +4 383 384 450 456 +4 383 384 450 456 +3 383 440 442 +3 383 440 442 +3 383 440 442 +3 383 440 442 +3 383 440 442 +3 383 440 442 +4 384 386 477 479 +4 384 386 477 479 +4 384 386 477 479 +4 384 386 477 479 +4 384 386 477 479 +4 384 386 477 479 +8 384 386 428 429 434 435 477 479 +8 384 386 428 429 434 435 477 479 +8 384 386 428 429 434 435 477 479 +8 384 386 428 429 434 435 477 479 +8 384 386 428 429 434 435 477 479 +8 384 386 428 429 434 435 477 479 +5 384 428 434 441 443 +5 384 428 434 441 443 +5 384 428 434 441 443 +5 384 428 434 441 443 +5 384 428 434 441 443 +5 384 428 434 441 443 +3 384 428 434 +3 384 428 434 +3 384 428 434 +3 384 428 434 +3 384 428 434 +3 384 428 434 +3 384 441 443 +3 384 441 443 +3 384 441 443 +3 384 441 443 +3 384 441 443 +3 384 441 443 +2 385 3240 +2 385 3240 +2 385 3240 +2 385 3240 +2 385 3240 +2 385 3240 +6 385 482 484 3153 3155 3240 +6 385 482 484 3153 3155 3240 +6 385 482 484 3153 3155 3240 +6 385 482 484 3153 3155 3240 +6 385 482 484 3153 3155 3240 +6 385 482 484 3153 3155 3240 +3 385 482 484 +3 385 482 484 +3 385 482 484 +3 385 482 484 +3 385 482 484 +3 385 482 484 +11 385 386 387 451 452 457 458 482 483 484 485 +11 385 386 387 451 452 457 458 482 483 484 485 +11 385 386 387 451 452 457 458 482 483 484 485 +11 385 386 387 451 452 457 458 482 483 484 485 +11 385 386 387 451 452 457 458 482 483 484 485 +11 385 386 387 451 452 457 458 482 483 484 485 +4 385 386 451 457 +4 385 386 451 457 +4 385 386 451 457 +4 385 386 451 457 +4 385 386 451 457 +4 385 386 451 457 +4 386 387 483 485 +4 386 387 483 485 +4 386 387 483 485 +4 386 387 483 485 +4 386 387 483 485 +4 386 387 483 485 +8 386 387 429 430 435 436 483 485 +8 386 387 429 430 435 436 483 485 +8 386 387 429 430 435 436 483 485 +8 386 387 429 430 435 436 483 485 +8 386 387 429 430 435 436 483 485 +8 386 387 429 430 435 436 483 485 +3 386 429 435 +3 386 429 435 +3 386 429 435 +3 386 429 435 +3 386 429 435 +3 386 429 435 +3 387 452 458 +3 387 452 458 +3 387 452 458 +3 387 452 458 +3 387 452 458 +3 387 452 458 +8 387 388 452 453 458 459 488 489 +8 387 388 452 453 458 459 488 489 +8 387 388 452 453 458 459 488 489 +8 387 388 452 453 458 459 488 489 +8 387 388 452 453 458 459 488 489 +8 387 388 452 453 458 459 488 489 +4 387 388 488 489 +4 387 388 488 489 +4 387 388 488 489 +4 387 388 488 489 +4 387 388 488 489 +4 387 388 488 489 +8 387 388 430 431 436 437 488 489 +8 387 388 430 431 436 437 488 489 +8 387 388 430 431 436 437 488 489 +8 387 388 430 431 436 437 488 489 +8 387 388 430 431 436 437 488 489 +8 387 388 430 431 436 437 488 489 +3 387 430 436 +3 387 430 436 +3 387 430 436 +3 387 430 436 +3 387 430 436 +3 387 430 436 +3 388 453 459 +3 388 453 459 +3 388 453 459 +3 388 453 459 +3 388 453 459 +3 388 453 459 +10 388 389 390 453 454 459 460 493 494 495 +10 388 389 390 453 454 459 460 493 494 495 +10 388 389 390 453 454 459 460 493 494 495 +10 388 389 390 453 454 459 460 493 494 495 +10 388 389 390 453 454 459 460 493 494 495 +10 388 389 390 453 454 459 460 493 494 495 +4 388 390 493 495 +4 388 390 493 495 +4 388 390 493 495 +4 388 390 493 495 +4 388 390 493 495 +4 388 390 493 495 +8 388 390 431 432 437 438 493 495 +8 388 390 431 432 437 438 493 495 +8 388 390 431 432 437 438 493 495 +8 388 390 431 432 437 438 493 495 +8 388 390 431 432 437 438 493 495 +8 388 390 431 432 437 438 493 495 +3 388 431 437 +3 388 431 437 +3 388 431 437 +3 388 431 437 +3 388 431 437 +3 388 431 437 +6 389 471 473 494 3143 3236 +6 389 471 473 494 3143 3236 +6 389 471 473 494 3143 3236 +6 389 471 473 494 3143 3236 +6 389 471 473 494 3143 3236 +6 389 471 473 494 3143 3236 +4 389 471 473 3236 +4 389 471 473 3236 +4 389 471 473 3236 +4 389 471 473 3236 +4 389 471 473 3236 +4 389 471 473 3236 +8 389 471 473 500 502 3135 3137 3236 +8 389 471 473 500 502 3135 3137 3236 +8 389 471 473 500 502 3135 3137 3236 +8 389 471 473 500 502 3135 3137 3236 +8 389 471 473 500 502 3135 3137 3236 +8 389 471 473 500 502 3135 3137 3236 +3 389 500 502 +3 389 500 502 +3 389 500 502 +3 389 500 502 +3 389 500 502 +3 389 500 502 +11 389 390 391 454 455 460 461 500 501 502 503 +11 389 390 391 454 455 460 461 500 501 502 503 +11 389 390 391 454 455 460 461 500 501 502 503 +11 389 390 391 454 455 460 461 500 501 502 503 +11 389 390 391 454 455 460 461 500 501 502 503 +11 389 390 391 454 455 460 461 500 501 502 503 +4 389 390 454 460 +4 389 390 454 460 +4 389 390 454 460 +4 389 390 454 460 +4 389 390 454 460 +4 389 390 454 460 +2 389 494 +2 389 494 +2 389 494 +2 389 494 +2 389 494 +2 389 494 +4 390 391 501 503 +4 390 391 501 503 +4 390 391 501 503 +4 390 391 501 503 +4 390 391 501 503 +4 390 391 501 503 +8 390 391 432 433 438 439 501 503 +8 390 391 432 433 438 439 501 503 +8 390 391 432 433 438 439 501 503 +8 390 391 432 433 438 439 501 503 +8 390 391 432 433 438 439 501 503 +8 390 391 432 433 438 439 501 503 +3 390 432 438 +3 390 432 438 +3 390 432 438 +3 390 432 438 +3 390 432 438 +3 390 432 438 +3 391 455 461 +3 391 455 461 +3 391 455 461 +3 391 455 461 +3 391 455 461 +3 391 455 461 +8 391 455 461 506 507 575 1227 1270 +8 391 455 461 506 507 575 1227 1270 +8 391 455 461 506 507 575 1227 1270 +8 391 455 461 506 507 575 1227 1270 +8 391 455 461 506 507 575 1227 1270 +8 391 455 461 506 507 575 1227 1270 +4 391 506 507 575 +4 391 506 507 575 +4 391 506 507 575 +4 391 506 507 575 +4 391 506 507 575 +4 391 506 507 575 +8 391 433 439 506 507 575 1011 1054 +8 391 433 439 506 507 575 1011 1054 +8 391 433 439 506 507 575 1011 1054 +8 391 433 439 506 507 575 1011 1054 +8 391 433 439 506 507 575 1011 1054 +8 391 433 439 506 507 575 1011 1054 +3 391 433 439 +3 391 433 439 +3 391 433 439 +3 391 433 439 +3 391 433 439 +3 391 433 439 +14 392 393 394 396 423 424 429 430 446 451 452 481 482 483 +14 392 393 394 396 423 424 429 430 446 451 452 481 482 483 +14 392 393 394 396 423 424 429 430 446 451 452 481 482 483 +14 392 393 394 396 423 424 429 430 446 451 452 481 482 483 +14 392 393 394 396 423 424 429 430 446 451 452 481 482 483 +14 392 393 394 396 423 424 429 430 446 451 452 481 482 483 +3 392 424 430 +3 392 424 430 +3 392 424 430 +3 392 424 430 +3 392 424 430 +3 392 424 430 +8 392 398 424 425 430 431 487 488 +8 392 398 424 425 430 431 487 488 +8 392 398 424 425 430 431 487 488 +8 392 398 424 425 430 431 487 488 +8 392 398 424 425 430 431 487 488 +8 392 398 424 425 430 431 487 488 +9 392 396 398 446 447 452 453 487 488 +9 392 396 398 446 447 452 453 487 488 +9 392 396 398 446 447 452 453 487 488 +9 392 396 398 446 447 452 453 487 488 +9 392 396 398 446 447 452 453 487 488 +9 392 396 398 446 447 452 453 487 488 +4 392 398 487 488 +4 392 398 487 488 +4 392 398 487 488 +4 392 398 487 488 +4 392 398 487 488 +4 392 398 487 488 +4 392 396 446 452 +4 392 396 446 452 +4 392 396 446 452 +4 392 396 446 452 +4 392 396 446 452 +4 392 396 446 452 +9 393 394 395 397 422 423 474 475 476 +9 393 394 395 397 422 423 474 475 476 +9 393 394 395 397 422 423 474 475 476 +9 393 394 395 397 422 423 474 475 476 +9 393 394 395 397 422 423 474 475 476 +9 393 394 395 397 422 423 474 475 476 +3 393 395 476 +3 393 395 476 +3 393 395 476 +3 393 395 476 +3 393 395 476 +3 393 395 476 +8 393 395 428 429 450 451 476 477 +8 393 395 428 429 450 451 476 477 +8 393 395 428 429 450 451 476 477 +8 393 395 428 429 450 451 476 477 +8 393 395 428 429 450 451 476 477 +8 393 395 428 429 450 451 476 477 +3 393 429 451 +3 393 429 451 +3 393 429 451 +3 393 429 451 +3 393 429 451 +3 393 429 451 +3 393 394 423 +3 393 394 423 +3 393 394 423 +3 393 394 423 +3 393 394 423 +3 393 394 423 +4 394 397 474 475 +4 394 397 474 475 +4 394 397 474 475 +4 394 397 474 475 +4 394 397 474 475 +4 394 397 474 475 +10 394 396 480 481 482 3155 3156 3157 3229 3231 +10 394 396 480 481 482 3155 3156 3157 3229 3231 +10 394 396 480 481 482 3155 3156 3157 3229 3231 +10 394 396 480 481 482 3155 3156 3157 3229 3231 +10 394 396 480 481 482 3155 3156 3157 3229 3231 +10 394 396 480 481 482 3155 3156 3157 3229 3231 +4 394 396 481 482 +4 394 396 481 482 +4 394 396 481 482 +4 394 396 481 482 +4 394 396 481 482 +4 394 396 481 482 +2 394 3231 +2 394 3231 +2 394 3231 +2 394 3231 +2 394 3231 +2 394 3231 +2 395 440 +2 395 440 +2 395 440 +2 395 440 +2 395 440 +2 395 440 +5 395 428 440 441 450 +5 395 428 440 441 450 +5 395 428 440 441 450 +5 395 428 440 441 450 +5 395 428 440 441 450 +5 395 428 440 441 450 +3 395 428 450 +3 395 428 450 +3 395 428 450 +3 395 428 450 +3 395 428 450 +3 395 428 450 +3 395 397 422 +3 395 397 422 +3 395 397 422 +3 395 397 422 +3 395 397 422 +3 395 397 422 +2 396 3229 +2 396 3229 +2 396 3229 +2 396 3229 +2 396 3229 +2 396 3229 +2 396 3229 +2 396 3229 +2 396 3229 +2 396 3229 +2 396 3229 +2 396 3229 +1 396 +1 396 +1 396 +1 396 +1 396 +1 396 +4 397 468 470 3228 +4 397 468 470 3228 +4 397 468 470 3228 +4 397 468 470 3228 +4 397 468 470 3228 +4 397 468 470 3228 +3 398 447 453 +3 398 447 453 +3 398 447 453 +3 398 447 453 +3 398 447 453 +3 398 447 453 +8 398 399 447 448 453 454 492 493 +8 398 399 447 448 453 454 492 493 +8 398 399 447 448 453 454 492 493 +8 398 399 447 448 453 454 492 493 +8 398 399 447 448 453 454 492 493 +8 398 399 447 448 453 454 492 493 +4 398 399 492 493 +4 398 399 492 493 +4 398 399 492 493 +4 398 399 492 493 +4 398 399 492 493 +4 398 399 492 493 +8 398 399 425 426 431 432 492 493 +8 398 399 425 426 431 432 492 493 +8 398 399 425 426 431 432 492 493 +8 398 399 425 426 431 432 492 493 +8 398 399 425 426 431 432 492 493 +8 398 399 425 426 431 432 492 493 +3 398 425 431 +3 398 425 431 +3 398 425 431 +3 398 425 431 +3 398 425 431 +3 398 425 431 +3 399 448 454 +3 399 448 454 +3 399 448 454 +3 399 448 454 +3 399 448 454 +3 399 448 454 +10 399 400 448 449 454 455 498 499 500 501 +10 399 400 448 449 454 455 498 499 500 501 +10 399 400 448 449 454 455 498 499 500 501 +10 399 400 448 449 454 455 498 499 500 501 +10 399 400 448 449 454 455 498 499 500 501 +10 399 400 448 449 454 455 498 499 500 501 +4 399 400 499 501 +4 399 400 499 501 +4 399 400 499 501 +4 399 400 499 501 +4 399 400 499 501 +4 399 400 499 501 +8 399 400 426 427 432 433 499 501 +8 399 400 426 427 432 433 499 501 +8 399 400 426 427 432 433 499 501 +8 399 400 426 427 432 433 499 501 +8 399 400 426 427 432 433 499 501 +8 399 400 426 427 432 433 499 501 +3 399 426 432 +3 399 426 432 +3 399 426 432 +3 399 426 432 +3 399 426 432 +3 399 426 432 +3 400 449 455 +3 400 449 455 +3 400 449 455 +3 400 449 455 +3 400 449 455 +3 400 449 455 +8 400 449 455 505 506 633 1184 1227 +8 400 449 455 505 506 633 1184 1227 +8 400 449 455 505 506 633 1184 1227 +8 400 449 455 505 506 633 1184 1227 +8 400 449 455 505 506 633 1184 1227 +8 400 449 455 505 506 633 1184 1227 +4 400 505 506 633 +4 400 505 506 633 +4 400 505 506 633 +4 400 505 506 633 +4 400 505 506 633 +4 400 505 506 633 +8 400 427 433 505 506 633 968 1011 +8 400 427 433 505 506 633 968 1011 +8 400 427 433 505 506 633 968 1011 +8 400 427 433 505 506 633 968 1011 +8 400 427 433 505 506 633 968 1011 +8 400 427 433 505 506 633 968 1011 +3 400 427 433 +3 400 427 433 +3 400 427 433 +3 400 427 433 +3 400 427 433 +3 400 427 433 +2 401 423 +2 401 423 +2 401 423 +2 401 423 +2 401 423 +2 401 423 +9 401 402 418 423 424 445 446 480 481 +9 401 402 418 423 424 445 446 480 481 +9 401 402 418 423 424 445 446 480 481 +9 401 402 418 423 424 445 446 480 481 +9 401 402 418 423 424 445 446 480 481 +9 401 402 418 423 424 445 446 480 481 +9 401 402 445 466 480 3157 3180 3223 3224 +9 401 402 445 466 480 3157 3180 3223 3224 +9 401 402 445 466 480 3157 3180 3223 3224 +9 401 402 445 466 480 3157 3180 3223 3224 +9 401 402 445 466 480 3157 3180 3223 3224 +9 401 402 445 466 480 3157 3180 3223 3224 +4 401 402 445 480 +4 401 402 445 480 +4 401 402 445 480 +4 401 402 445 480 +4 401 402 445 480 +4 401 402 445 480 +2 401 3224 +2 401 3224 +2 401 3224 +2 401 3224 +2 401 3224 +2 401 3224 +3 402 466 3223 +3 402 466 3223 +3 402 466 3223 +3 402 466 3223 +3 402 466 3223 +3 402 466 3223 +3 402 466 3223 +3 402 466 3223 +3 402 466 3223 +3 402 466 3223 +3 402 466 3223 +3 402 466 3223 +1 402 +1 402 +1 402 +1 402 +1 402 +1 402 +8 402 418 419 424 425 446 447 487 +8 402 418 419 424 425 446 447 487 +8 402 418 419 424 425 446 447 487 +8 402 418 419 424 425 446 447 487 +8 402 418 419 424 425 446 447 487 +8 402 418 419 424 425 446 447 487 +4 402 418 424 446 +4 402 418 424 446 +4 402 418 424 446 +4 402 418 424 446 +4 402 418 424 446 +4 402 418 424 446 +6 403 467 469 491 3146 3222 +6 403 467 469 491 3146 3222 +6 403 467 469 491 3146 3222 +6 403 467 469 491 3146 3222 +6 403 467 469 491 3146 3222 +6 403 467 469 491 3146 3222 +4 403 467 469 3222 +4 403 467 469 3222 +4 403 467 469 3222 +4 403 467 469 3222 +4 403 467 469 3222 +4 403 467 469 3222 +8 403 467 469 497 498 3139 3140 3222 +8 403 467 469 497 498 3139 3140 3222 +8 403 467 469 497 498 3139 3140 3222 +8 403 467 469 497 498 3139 3140 3222 +8 403 467 469 497 498 3139 3140 3222 +8 403 467 469 497 498 3139 3140 3222 +3 403 497 498 +3 403 497 498 +3 403 497 498 +3 403 497 498 +3 403 497 498 +3 403 497 498 +10 403 420 421 426 427 448 449 497 498 499 +10 403 420 421 426 427 448 449 497 498 499 +10 403 420 421 426 427 448 449 497 498 499 +10 403 420 421 426 427 448 449 497 498 499 +10 403 420 421 426 427 448 449 497 498 499 +10 403 420 421 426 427 448 449 497 498 499 +9 403 419 420 425 426 447 448 491 492 +9 403 419 420 425 426 447 448 491 492 +9 403 419 420 425 426 447 448 491 492 +9 403 419 420 425 426 447 448 491 492 +9 403 419 420 425 426 447 448 491 492 +9 403 419 420 425 426 447 448 491 492 +4 403 420 426 448 +4 403 420 426 448 +4 403 420 426 448 +4 403 420 426 448 +4 403 420 426 448 +4 403 420 426 448 +2 403 491 +2 403 491 +2 403 491 +2 403 491 +2 403 491 +2 403 491 +8 404 444 445 462 466 3180 3181 3221 +8 404 444 445 462 466 3180 3181 3221 +8 404 444 445 462 466 3180 3181 3221 +8 404 444 445 462 466 3180 3181 3221 +8 404 444 445 462 466 3180 3181 3221 +8 404 444 445 462 466 3180 3181 3221 +4 404 462 466 3221 +4 404 462 466 3221 +4 404 462 466 3221 +4 404 462 466 3221 +4 404 462 466 3221 +4 404 462 466 3221 +9 404 405 462 463 466 486 3151 3220 3221 +9 404 405 462 463 466 486 3151 3220 3221 +9 404 405 462 463 466 486 3151 3220 3221 +9 404 405 462 463 466 486 3151 3220 3221 +9 404 405 462 463 466 486 3151 3220 3221 +9 404 405 462 463 466 486 3151 3220 3221 +3 404 405 486 +3 404 405 486 +3 404 405 486 +3 404 405 486 +3 404 405 486 +3 404 405 486 +7 404 405 414 415 418 419 486 +7 404 405 414 415 418 419 486 +7 404 405 414 415 418 419 486 +7 404 405 414 415 418 419 486 +7 404 405 414 415 418 419 486 +7 404 405 414 415 418 419 486 +5 404 414 418 444 445 +5 404 414 418 444 445 +5 404 414 418 444 445 +5 404 414 418 444 445 +5 404 414 418 444 445 +5 404 414 418 444 445 +3 404 414 418 +3 404 414 418 +3 404 414 418 +3 404 414 418 +3 404 414 418 +3 404 414 418 +3 404 444 445 +3 404 444 445 +3 404 444 445 +3 404 444 445 +3 404 444 445 +3 404 444 445 +3 405 463 3220 +3 405 463 3220 +3 405 463 3220 +3 405 463 3220 +3 405 463 3220 +3 405 463 3220 +11 405 406 463 464 467 490 491 3146 3147 3219 3220 +11 405 406 463 464 467 490 491 3146 3147 3219 3220 +11 405 406 463 464 467 490 491 3146 3147 3219 3220 +11 405 406 463 464 467 490 491 3146 3147 3219 3220 +11 405 406 463 464 467 490 491 3146 3147 3219 3220 +11 405 406 463 464 467 490 491 3146 3147 3219 3220 +4 405 406 490 491 +4 405 406 490 491 +4 405 406 490 491 +4 405 406 490 491 +4 405 406 490 491 +4 405 406 490 491 +8 405 406 415 416 419 420 490 491 +8 405 406 415 416 419 420 490 491 +8 405 406 415 416 419 420 490 491 +8 405 406 415 416 419 420 490 491 +8 405 406 415 416 419 420 490 491 +8 405 406 415 416 419 420 490 491 +3 405 415 419 +3 405 415 419 +3 405 415 419 +3 405 415 419 +3 405 415 419 +3 405 415 419 +4 406 464 467 3219 +4 406 464 467 3219 +4 406 464 467 3219 +4 406 464 467 3219 +4 406 464 467 3219 +4 406 464 467 3219 +11 406 407 464 465 467 496 497 3140 3141 3218 3219 +11 406 407 464 465 467 496 497 3140 3141 3218 3219 +11 406 407 464 465 467 496 497 3140 3141 3218 3219 +11 406 407 464 465 467 496 497 3140 3141 3218 3219 +11 406 407 464 465 467 496 497 3140 3141 3218 3219 +11 406 407 464 465 467 496 497 3140 3141 3218 3219 +4 406 407 496 497 +4 406 407 496 497 +4 406 407 496 497 +4 406 407 496 497 +4 406 407 496 497 +4 406 407 496 497 +8 406 407 416 417 420 421 496 497 +8 406 407 416 417 420 421 496 497 +8 406 407 416 417 420 421 496 497 +8 406 407 416 417 420 421 496 497 +8 406 407 416 417 420 421 496 497 +8 406 407 416 417 420 421 496 497 +3 406 416 420 +3 406 416 420 +3 406 416 420 +3 406 416 420 +3 406 416 420 +3 406 416 420 +3 407 465 3218 +3 407 465 3218 +3 407 465 3218 +3 407 465 3218 +3 407 465 3218 +3 407 465 3218 +8 407 465 504 876 1313 2761 3133 3218 +8 407 465 504 876 1313 2761 3133 3218 +8 407 465 504 876 1313 2761 3133 3218 +8 407 465 504 876 1313 2761 3133 3218 +8 407 465 504 876 1313 2761 3133 3218 +8 407 465 504 876 1313 2761 3133 3218 +3 407 504 876 +3 407 504 876 +3 407 504 876 +3 407 504 876 +3 407 504 876 +3 407 504 876 +10 407 417 421 504 876 877 882 925 1098 1141 +10 407 417 421 504 876 877 882 925 1098 1141 +10 407 417 421 504 876 877 882 925 1098 1141 +10 407 417 421 504 876 877 882 925 1098 1141 +10 407 417 421 504 876 877 882 925 1098 1141 +10 407 417 421 504 876 877 882 925 1098 1141 +3 407 417 421 +3 407 417 421 +3 407 417 421 +3 407 417 421 +3 407 417 421 +3 407 417 421 +3 408 462 3217 +3 408 462 3217 +3 408 462 3217 +3 408 462 3217 +3 408 462 3217 +3 408 462 3217 +8 408 409 462 463 486 3151 3216 3217 +8 408 409 462 463 486 3151 3216 3217 +8 408 409 462 463 486 3151 3216 3217 +8 408 409 462 463 486 3151 3216 3217 +8 408 409 462 463 486 3151 3216 3217 +8 408 409 462 463 486 3151 3216 3217 +3 408 409 486 +3 408 409 486 +3 408 409 486 +3 408 409 486 +3 408 409 486 +3 408 409 486 +5 408 409 414 415 486 +5 408 409 414 415 486 +5 408 409 414 415 486 +5 408 409 414 415 486 +5 408 409 414 415 486 +5 408 409 414 415 486 +3 408 414 444 +3 408 414 444 +3 408 414 444 +3 408 414 444 +3 408 414 444 +3 408 414 444 +2 408 414 +2 408 414 +2 408 414 +2 408 414 +2 408 414 +2 408 414 +2 408 444 +2 408 444 +2 408 444 +2 408 444 +2 408 444 +2 408 444 +3 409 463 3216 +3 409 463 3216 +3 409 463 3216 +3 409 463 3216 +3 409 463 3216 +3 409 463 3216 +8 409 410 463 464 490 3147 3215 3216 +8 409 410 463 464 490 3147 3215 3216 +8 409 410 463 464 490 3147 3215 3216 +8 409 410 463 464 490 3147 3215 3216 +8 409 410 463 464 490 3147 3215 3216 +8 409 410 463 464 490 3147 3215 3216 +3 409 410 490 +3 409 410 490 +3 409 410 490 +3 409 410 490 +3 409 410 490 +3 409 410 490 +5 409 410 415 416 490 +5 409 410 415 416 490 +5 409 410 415 416 490 +5 409 410 415 416 490 +5 409 410 415 416 490 +5 409 410 415 416 490 +2 409 415 +2 409 415 +2 409 415 +2 409 415 +2 409 415 +2 409 415 +3 410 464 3215 +3 410 464 3215 +3 410 464 3215 +3 410 464 3215 +3 410 464 3215 +3 410 464 3215 +8 410 411 464 465 496 3141 3214 3215 +8 410 411 464 465 496 3141 3214 3215 +8 410 411 464 465 496 3141 3214 3215 +8 410 411 464 465 496 3141 3214 3215 +8 410 411 464 465 496 3141 3214 3215 +8 410 411 464 465 496 3141 3214 3215 +3 410 411 496 +3 410 411 496 +3 410 411 496 +3 410 411 496 +3 410 411 496 +3 410 411 496 +5 410 411 416 417 496 +5 410 411 416 417 496 +5 410 411 416 417 496 +5 410 411 416 417 496 +5 410 411 416 417 496 +5 410 411 416 417 496 +2 410 416 +2 410 416 +2 410 416 +2 410 416 +2 410 416 +2 410 416 +3 411 465 3214 +3 411 465 3214 +3 411 465 3214 +3 411 465 3214 +3 411 465 3214 +3 411 465 3214 +8 411 465 504 820 1313 2817 3133 3214 +8 411 465 504 820 1313 2817 3133 3214 +8 411 465 504 820 1313 2817 3133 3214 +8 411 465 504 820 1313 2817 3133 3214 +8 411 465 504 820 1313 2817 3133 3214 +8 411 465 504 820 1313 2817 3133 3214 +3 411 504 820 +3 411 504 820 +3 411 504 820 +3 411 504 820 +3 411 504 820 +3 411 504 820 +6 411 417 504 820 882 1098 +6 411 417 504 820 882 1098 +6 411 417 504 820 882 1098 +6 411 417 504 820 882 1098 +6 411 417 504 820 882 1098 +6 411 417 504 820 882 1098 +2 411 417 +2 411 417 +2 411 417 +2 411 417 +2 411 417 +2 411 417 +4 412 513 3124 3213 +4 412 513 3124 3213 +4 412 513 3124 3213 +4 412 513 3124 3213 +4 412 513 3124 3213 +4 412 513 3124 3213 +2 412 3213 +2 412 3213 +2 412 3213 +2 412 3213 +2 412 3213 +2 412 3213 +4 412 514 3123 3213 +4 412 514 3123 3213 +4 412 514 3123 3213 +4 412 514 3123 3213 +4 412 514 3123 3213 +4 412 514 3123 3213 +2 412 514 +2 412 514 +2 412 514 +2 412 514 +2 412 514 +2 412 514 +2 412 513 +2 412 513 +2 412 513 +2 412 513 +2 412 513 +2 412 513 +4 413 515 3122 3212 +4 413 515 3122 3212 +4 413 515 3122 3212 +4 413 515 3122 3212 +4 413 515 3122 3212 +4 413 515 3122 3212 +2 413 3212 +2 413 3212 +2 413 3212 +2 413 3212 +2 413 3212 +2 413 3212 +4 413 516 3121 3212 +4 413 516 3121 3212 +4 413 516 3121 3212 +4 413 516 3121 3212 +4 413 516 3121 3212 +4 413 516 3121 3212 +2 413 516 +2 413 516 +2 413 516 +2 413 516 +2 413 516 +2 413 516 +2 413 515 +2 413 515 +2 413 515 +2 413 515 +2 413 515 +2 413 515 +2 414 444 +2 414 444 +2 414 444 +2 414 444 +2 414 444 +2 414 444 +3 414 415 486 +3 414 415 486 +3 414 415 486 +3 414 415 486 +3 414 415 486 +3 414 415 486 +3 415 416 490 +3 415 416 490 +3 415 416 490 +3 415 416 490 +3 415 416 490 +3 415 416 490 +3 416 417 496 +3 416 417 496 +3 416 417 496 +3 416 417 496 +3 416 417 496 +3 416 417 496 +4 417 504 882 1098 +4 417 504 882 1098 +4 417 504 882 1098 +4 417 504 882 1098 +4 417 504 882 1098 +4 417 504 882 1098 +2 418 445 +2 418 445 +2 418 445 +2 418 445 +2 418 445 +2 418 445 +2 418 419 +2 418 419 +2 418 419 +2 418 419 +2 418 419 +2 418 419 +3 419 425 447 +3 419 425 447 +3 419 425 447 +3 419 425 447 +3 419 425 447 +3 419 425 447 +3 419 420 491 +3 419 420 491 +3 419 420 491 +3 419 420 491 +3 419 420 491 +3 419 420 491 +3 420 421 497 +3 420 421 497 +3 420 421 497 +3 420 421 497 +3 420 421 497 +3 420 421 497 +3 421 427 449 +3 421 427 449 +3 421 427 449 +3 421 427 449 +3 421 427 449 +3 421 427 449 +9 421 427 449 505 878 925 968 1141 1184 +9 421 427 449 505 878 925 968 1141 1184 +9 421 427 449 505 878 925 968 1141 1184 +9 421 427 449 505 878 925 968 1141 1184 +9 421 427 449 505 878 925 968 1141 1184 +9 421 427 449 505 878 925 968 1141 1184 +3 421 925 1141 +3 421 925 1141 +3 421 925 1141 +3 421 925 1141 +3 421 925 1141 +3 421 925 1141 +3 422 468 3203 +3 422 468 3203 +3 422 468 3203 +3 422 468 3203 +3 422 468 3203 +3 422 468 3203 +3 422 423 474 +3 422 423 474 +3 422 423 474 +3 422 423 474 +3 422 423 474 +3 422 423 474 +4 423 424 446 481 +4 423 424 446 481 +4 423 424 446 481 +4 423 424 446 481 +4 423 424 446 481 +4 423 424 446 481 +3 424 425 487 +3 424 425 487 +3 424 425 487 +3 424 425 487 +3 424 425 487 +3 424 425 487 +3 425 426 492 +3 425 426 492 +3 425 426 492 +3 425 426 492 +3 425 426 492 +3 425 426 492 +3 426 427 499 +3 426 427 499 +3 426 427 499 +3 426 427 499 +3 426 427 499 +3 426 427 499 +3 427 505 968 +3 427 505 968 +3 427 505 968 +3 427 505 968 +3 427 505 968 +3 427 505 968 +2 428 441 +2 428 441 +2 428 441 +2 428 441 +2 428 441 +2 428 441 +3 428 429 477 +3 428 429 477 +3 428 429 477 +3 428 429 477 +3 428 429 477 +3 428 429 477 +3 429 430 483 +3 429 430 483 +3 429 430 483 +3 429 430 483 +3 429 430 483 +3 429 430 483 +3 430 431 488 +3 430 431 488 +3 430 431 488 +3 430 431 488 +3 430 431 488 +3 430 431 488 +3 431 432 493 +3 431 432 493 +3 431 432 493 +3 431 432 493 +3 431 432 493 +3 431 432 493 +3 432 433 501 +3 432 433 501 +3 432 433 501 +3 432 433 501 +3 432 433 501 +3 432 433 501 +3 433 506 1011 +3 433 506 1011 +3 433 506 1011 +3 433 506 1011 +3 433 506 1011 +3 433 506 1011 +2 434 443 +2 434 443 +2 434 443 +2 434 443 +2 434 443 +2 434 443 +3 434 435 479 +3 434 435 479 +3 434 435 479 +3 434 435 479 +3 434 435 479 +3 434 435 479 +3 435 436 485 +3 435 436 485 +3 435 436 485 +3 435 436 485 +3 435 436 485 +3 435 436 485 +3 436 437 489 +3 436 437 489 +3 436 437 489 +3 436 437 489 +3 436 437 489 +3 436 437 489 +3 437 438 495 +3 437 438 495 +3 437 438 495 +3 437 438 495 +3 437 438 495 +3 437 438 495 +3 438 439 503 +3 438 439 503 +3 438 439 503 +3 438 439 503 +3 438 439 503 +3 438 439 503 +3 439 507 1054 +3 439 507 1054 +3 439 507 1054 +3 439 507 1054 +3 439 507 1054 +3 439 507 1054 +3 440 441 450 +3 440 441 450 +3 440 441 450 +3 440 441 450 +3 440 441 450 +3 440 441 450 +3 440 470 3185 +3 440 470 3185 +3 440 470 3185 +3 440 470 3185 +3 440 470 3185 +3 440 470 3185 +3 442 443 456 +3 442 443 456 +3 442 443 456 +3 442 443 456 +3 442 443 456 +3 442 443 456 +3 442 472 3183 +3 442 472 3183 +3 442 472 3183 +3 442 472 3183 +3 442 472 3183 +3 442 472 3183 +3 444 462 3181 +3 444 462 3181 +3 444 462 3181 +3 444 462 3181 +3 444 462 3181 +3 444 462 3181 +3 445 466 3180 +3 445 466 3180 +3 445 466 3180 +3 445 466 3180 +3 445 466 3180 +3 445 466 3180 +3 446 447 487 +3 446 447 487 +3 446 447 487 +3 446 447 487 +3 446 447 487 +3 446 447 487 +3 447 448 492 +3 447 448 492 +3 447 448 492 +3 447 448 492 +3 447 448 492 +3 447 448 492 +4 448 449 498 499 +4 448 449 498 499 +4 448 449 498 499 +4 448 449 498 499 +4 448 449 498 499 +4 448 449 498 499 +3 449 505 1184 +3 449 505 1184 +3 449 505 1184 +3 449 505 1184 +3 449 505 1184 +3 449 505 1184 +4 450 451 476 477 +4 450 451 476 477 +4 450 451 476 477 +4 450 451 476 477 +4 450 451 476 477 +4 450 451 476 477 +4 451 452 482 483 +4 451 452 482 483 +4 451 452 482 483 +4 451 452 482 483 +4 451 452 482 483 +4 451 452 482 483 +3 452 453 488 +3 452 453 488 +3 452 453 488 +3 452 453 488 +3 452 453 488 +3 452 453 488 +3 453 454 493 +3 453 454 493 +3 453 454 493 +3 453 454 493 +3 453 454 493 +3 453 454 493 +4 454 455 500 501 +4 454 455 500 501 +4 454 455 500 501 +4 454 455 500 501 +4 454 455 500 501 +4 454 455 500 501 +3 455 506 1227 +3 455 506 1227 +3 455 506 1227 +3 455 506 1227 +3 455 506 1227 +3 455 506 1227 +4 456 457 478 479 +4 456 457 478 479 +4 456 457 478 479 +4 456 457 478 479 +4 456 457 478 479 +4 456 457 478 479 +4 457 458 484 485 +4 457 458 484 485 +4 457 458 484 485 +4 457 458 484 485 +4 457 458 484 485 +4 457 458 484 485 +3 458 459 489 +3 458 459 489 +3 458 459 489 +3 458 459 489 +3 458 459 489 +3 458 459 489 +4 459 460 494 495 +4 459 460 494 495 +4 459 460 494 495 +4 459 460 494 495 +4 459 460 494 495 +4 459 460 494 495 +4 460 461 502 503 +4 460 461 502 503 +4 460 461 502 503 +4 460 461 502 503 +4 460 461 502 503 +4 460 461 502 503 +3 461 507 1270 +3 461 507 1270 +3 461 507 1270 +3 461 507 1270 +3 461 507 1270 +3 461 507 1270 +4 462 463 486 3151 +4 462 463 486 3151 +4 462 463 486 3151 +4 462 463 486 3151 +4 462 463 486 3151 +4 462 463 486 3151 +4 463 464 490 3147 +4 463 464 490 3147 +4 463 464 490 3147 +4 463 464 490 3147 +4 463 464 490 3147 +4 463 464 490 3147 +4 464 465 496 3141 +4 464 465 496 3141 +4 464 465 496 3141 +4 464 465 496 3141 +4 464 465 496 3141 +4 464 465 496 3141 +4 465 504 1313 3133 +4 465 504 1313 3133 +4 465 504 1313 3133 +4 465 504 1313 3133 +4 465 504 1313 3133 +4 465 504 1313 3133 +1 466 +1 466 +1 466 +1 466 +1 466 +1 466 +3 467 491 3146 +3 467 491 3146 +3 467 491 3146 +3 467 491 3146 +3 467 491 3146 +3 467 491 3146 +3 467 497 3140 +3 467 497 3140 +3 467 497 3140 +3 467 497 3140 +3 467 497 3140 +3 467 497 3140 +3 468 474 3163 +3 468 474 3163 +3 468 474 3163 +3 468 474 3163 +3 468 474 3163 +3 468 474 3163 +2 469 471 +2 469 471 +2 469 471 +2 469 471 +2 469 471 +2 469 471 +1 469 +1 469 +1 469 +1 469 +1 469 +1 469 +2 469 471 +2 469 471 +2 469 471 +2 469 471 +2 469 471 +2 469 471 +6 469 471 498 500 3137 3139 +6 469 471 498 500 3137 3139 +6 469 471 498 500 3137 3139 +6 469 471 498 500 3137 3139 +6 469 471 498 500 3137 3139 +6 469 471 498 500 3137 3139 +3 469 498 3139 +3 469 498 3139 +3 469 498 3139 +3 469 498 3139 +3 469 498 3139 +3 469 498 3139 +3 470 475 3162 +3 470 475 3162 +3 470 475 3162 +3 470 475 3162 +3 470 475 3162 +3 470 475 3162 +1 471 +1 471 +1 471 +1 471 +1 471 +1 471 +3 471 500 3137 +3 471 500 3137 +3 471 500 3137 +3 471 500 3137 +3 471 500 3137 +3 471 500 3137 +3 472 478 3159 +3 472 478 3159 +3 472 478 3159 +3 472 478 3159 +3 472 478 3159 +3 472 478 3159 +3 473 494 3143 +3 473 494 3143 +3 473 494 3143 +3 473 494 3143 +3 473 494 3143 +3 473 494 3143 +3 473 502 3135 +3 473 502 3135 +3 473 502 3135 +3 473 502 3135 +3 473 502 3135 +3 473 502 3135 +2 475 476 +2 475 476 +2 475 476 +2 475 476 +2 475 476 +2 475 476 +2 480 481 +2 480 481 +2 480 481 +2 480 481 +2 480 481 +2 480 481 +2 480 3157 +2 480 3157 +2 480 3157 +2 480 3157 +2 480 3157 +2 480 3157 +2 482 3155 +2 482 3155 +2 482 3155 +2 482 3155 +2 482 3155 +2 482 3155 +2 484 3153 +2 484 3153 +2 484 3153 +2 484 3153 +2 484 3153 +2 484 3153 +2 498 500 +2 498 500 +2 498 500 +2 498 500 +2 498 500 +2 498 500 +2 508 513 +2 508 513 +2 508 513 +2 508 513 +2 508 513 +2 508 513 +3 508 509 514 +3 508 509 514 +3 508 509 514 +3 508 509 514 +3 508 509 514 +3 508 509 514 +2 509 510 +2 509 510 +2 509 510 +2 509 510 +2 509 510 +2 509 510 +3 510 511 515 +3 510 511 515 +3 510 511 515 +3 510 511 515 +3 510 511 515 +3 510 511 515 +3 511 512 516 +3 511 512 516 +3 511 512 516 +3 511 512 516 +3 511 512 516 +3 511 512 516 +2 512 1716 +2 512 1716 +2 512 1716 +2 512 1716 +2 512 1716 +2 512 1716 +2 513 3124 +2 513 3124 +2 513 3124 +2 513 3124 +2 513 3124 +2 513 3124 +2 514 3123 +2 514 3123 +2 514 3123 +2 514 3123 +2 514 3123 +2 514 3123 +2 515 3122 +2 515 3122 +2 515 3122 +2 515 3122 +2 515 3122 +2 515 3122 +2 516 3121 +2 516 3121 +2 516 3121 +2 516 3121 +2 516 3121 +2 516 3121 +3 517 1270 1716 +3 517 1270 1716 +3 517 1270 1716 +3 517 1270 1716 +3 517 1270 1716 +3 517 1270 1716 +11 517 518 525 527 1270 1271 1406 1407 1716 1717 1759 +11 517 518 525 527 1270 1271 1406 1407 1716 1717 1759 +11 517 518 525 527 1270 1271 1406 1407 1716 1717 1759 +11 517 518 525 527 1270 1271 1406 1407 1716 1717 1759 +11 517 518 525 527 1270 1271 1406 1407 1716 1717 1759 +11 517 518 525 527 1270 1271 1406 1407 1716 1717 1759 +3 517 518 1407 +3 517 518 1407 +3 517 518 1407 +3 517 518 1407 +3 517 518 1407 +3 517 518 1407 +5 517 518 1054 1055 1407 +5 517 518 1054 1055 1407 +5 517 518 1054 1055 1407 +5 517 518 1054 1055 1407 +5 517 518 1054 1055 1407 +5 517 518 1054 1055 1407 +2 517 1054 +2 517 1054 +2 517 1054 +2 517 1054 +2 517 1054 +2 517 1054 +4 518 525 1271 1717 +4 518 525 1271 1717 +4 518 525 1271 1717 +4 518 525 1271 1717 +4 518 525 1271 1717 +4 518 525 1271 1717 +9 518 520 522 525 1271 1272 1413 1717 1718 +9 518 520 522 525 1271 1272 1413 1717 1718 +9 518 520 522 525 1271 1272 1413 1717 1718 +9 518 520 522 525 1271 1272 1413 1717 1718 +9 518 520 522 525 1271 1272 1413 1717 1718 +9 518 520 522 525 1271 1272 1413 1717 1718 +3 518 520 1413 +3 518 520 1413 +3 518 520 1413 +3 518 520 1413 +3 518 520 1413 +3 518 520 1413 +5 518 520 1055 1056 1413 +5 518 520 1055 1056 1413 +5 518 520 1055 1056 1413 +5 518 520 1055 1056 1413 +5 518 520 1055 1056 1413 +5 518 520 1055 1056 1413 +2 518 1055 +2 518 1055 +2 518 1055 +2 518 1055 +2 518 1055 +2 518 1055 +9 519 520 521 522 1272 1273 1419 1718 1719 +9 519 520 521 522 1272 1273 1419 1718 1719 +9 519 520 521 522 1272 1273 1419 1718 1719 +9 519 520 521 522 1272 1273 1419 1718 1719 +9 519 520 521 522 1272 1273 1419 1718 1719 +9 519 520 521 522 1272 1273 1419 1718 1719 +4 519 521 1273 1719 +4 519 521 1273 1719 +4 519 521 1273 1719 +4 519 521 1273 1719 +4 519 521 1273 1719 +4 519 521 1273 1719 +9 519 521 523 1273 1274 1425 1719 1720 1863 +9 519 521 523 1273 1274 1425 1719 1720 1863 +9 519 521 523 1273 1274 1425 1719 1720 1863 +9 519 521 523 1273 1274 1425 1719 1720 1863 +9 519 521 523 1273 1274 1425 1719 1720 1863 +9 519 521 523 1273 1274 1425 1719 1720 1863 +2 519 522 +2 519 522 +2 519 522 +2 519 522 +2 519 522 +2 519 522 +1 519 +1 519 +1 519 +1 519 +1 519 +1 519 +2 519 1863 +2 519 1863 +2 519 1863 +2 519 1863 +2 519 1863 +2 519 1863 +4 520 522 1272 1718 +4 520 522 1272 1718 +4 520 522 1272 1718 +4 520 522 1272 1718 +4 520 522 1272 1718 +4 520 522 1272 1718 +3 520 521 1419 +3 520 521 1419 +3 520 521 1419 +3 520 521 1419 +3 520 521 1419 +3 520 521 1419 +5 520 521 1056 1057 1419 +5 520 521 1056 1057 1419 +5 520 521 1056 1057 1419 +5 520 521 1056 1057 1419 +5 520 521 1056 1057 1419 +5 520 521 1056 1057 1419 +2 520 1056 +2 520 1056 +2 520 1056 +2 520 1056 +2 520 1056 +2 520 1056 +3 521 523 1425 +3 521 523 1425 +3 521 523 1425 +3 521 523 1425 +3 521 523 1425 +3 521 523 1425 +5 521 523 1057 1058 1425 +5 521 523 1057 1058 1425 +5 521 523 1057 1058 1425 +5 521 523 1057 1058 1425 +5 521 523 1057 1058 1425 +5 521 523 1057 1058 1425 +2 521 1057 +2 521 1057 +2 521 1057 +2 521 1057 +2 521 1057 +2 521 1057 +2 522 525 +2 522 525 +2 522 525 +2 522 525 +2 522 525 +2 522 525 +1 522 +1 522 +1 522 +1 522 +1 522 +1 522 +4 523 1274 1720 1863 +4 523 1274 1720 1863 +4 523 1274 1720 1863 +4 523 1274 1720 1863 +4 523 1274 1720 1863 +4 523 1274 1720 1863 +12 523 524 1274 1275 1431 1720 1721 1797 1800 1834 1863 1864 +12 523 524 1274 1275 1431 1720 1721 1797 1800 1834 1863 1864 +12 523 524 1274 1275 1431 1720 1721 1797 1800 1834 1863 1864 +12 523 524 1274 1275 1431 1720 1721 1797 1800 1834 1863 1864 +12 523 524 1274 1275 1431 1720 1721 1797 1800 1834 1863 1864 +12 523 524 1274 1275 1431 1720 1721 1797 1800 1834 1863 1864 +4 523 524 1431 1797 +4 523 524 1431 1797 +4 523 524 1431 1797 +4 523 524 1431 1797 +4 523 524 1431 1797 +4 523 524 1431 1797 +7 523 524 1058 1059 1431 1797 1845 +7 523 524 1058 1059 1431 1797 1845 +7 523 524 1058 1059 1431 1797 1845 +7 523 524 1058 1059 1431 1797 1845 +7 523 524 1058 1059 1431 1797 1845 +7 523 524 1058 1059 1431 1797 1845 +2 523 1058 +2 523 1058 +2 523 1058 +2 523 1058 +2 523 1058 +2 523 1058 +5 524 1275 1721 1834 1864 +5 524 1275 1721 1834 1864 +5 524 1275 1721 1834 1864 +5 524 1275 1721 1834 1864 +5 524 1275 1721 1834 1864 +5 524 1275 1721 1834 1864 +13 524 526 1275 1276 1437 1721 1722 1808 1809 1834 1835 1864 1865 +13 524 526 1275 1276 1437 1721 1722 1808 1809 1834 1835 1864 1865 +13 524 526 1275 1276 1437 1721 1722 1808 1809 1834 1835 1864 1865 +13 524 526 1275 1276 1437 1721 1722 1808 1809 1834 1835 1864 1865 +13 524 526 1275 1276 1437 1721 1722 1808 1809 1834 1835 1864 1865 +13 524 526 1275 1276 1437 1721 1722 1808 1809 1834 1835 1864 1865 +4 524 526 1437 1809 +4 524 526 1437 1809 +4 524 526 1437 1809 +4 524 526 1437 1809 +4 524 526 1437 1809 +4 524 526 1437 1809 +8 524 526 1059 1060 1437 1809 1845 1846 +8 524 526 1059 1060 1437 1809 1845 1846 +8 524 526 1059 1060 1437 1809 1845 1846 +8 524 526 1059 1060 1437 1809 1845 1846 +8 524 526 1059 1060 1437 1809 1845 1846 +8 524 526 1059 1060 1437 1809 1845 1846 +3 524 1059 1845 +3 524 1059 1845 +3 524 1059 1845 +3 524 1059 1845 +3 524 1059 1845 +3 524 1059 1845 +2 525 527 +2 525 527 +2 525 527 +2 525 527 +2 525 527 +2 525 527 +5 526 1276 1722 1835 1865 +5 526 1276 1722 1835 1865 +5 526 1276 1722 1835 1865 +5 526 1276 1722 1835 1865 +5 526 1276 1722 1835 1865 +5 526 1276 1722 1835 1865 +12 526 528 1276 1277 1443 1722 1723 1816 1817 1835 1865 1867 +12 526 528 1276 1277 1443 1722 1723 1816 1817 1835 1865 1867 +12 526 528 1276 1277 1443 1722 1723 1816 1817 1835 1865 1867 +12 526 528 1276 1277 1443 1722 1723 1816 1817 1835 1865 1867 +12 526 528 1276 1277 1443 1722 1723 1816 1817 1835 1865 1867 +12 526 528 1276 1277 1443 1722 1723 1816 1817 1835 1865 1867 +4 526 528 1443 1817 +4 526 528 1443 1817 +4 526 528 1443 1817 +4 526 528 1443 1817 +4 526 528 1443 1817 +4 526 528 1443 1817 +7 526 528 1060 1061 1443 1817 1846 +7 526 528 1060 1061 1443 1817 1846 +7 526 528 1060 1061 1443 1817 1846 +7 526 528 1060 1061 1443 1817 1846 +7 526 528 1060 1061 1443 1817 1846 +7 526 528 1060 1061 1443 1817 1846 +3 526 1060 1846 +3 526 1060 1846 +3 526 1060 1846 +3 526 1060 1846 +3 526 1060 1846 +3 526 1060 1846 +6 527 1406 1759 1965 2318 3110 +6 527 1406 1759 1965 2318 3110 +6 527 1406 1759 1965 2318 3110 +6 527 1406 1759 1965 2318 3110 +6 527 1406 1759 1965 2318 3110 +6 527 1406 1759 1965 2318 3110 +3 527 1406 1759 +3 527 1406 1759 +3 527 1406 1759 +3 527 1406 1759 +3 527 1406 1759 +3 527 1406 1759 +2 527 3110 +2 527 3110 +2 527 3110 +2 527 3110 +2 527 3110 +2 527 3110 +2 527 3110 +2 527 3110 +2 527 3110 +2 527 3110 +2 527 3110 +2 527 3110 +1 527 +1 527 +1 527 +1 527 +1 527 +1 527 +4 528 1277 1723 1867 +4 528 1277 1723 1867 +4 528 1277 1723 1867 +4 528 1277 1723 1867 +4 528 1277 1723 1867 +4 528 1277 1723 1867 +11 528 529 1277 1278 1450 1451 1723 1724 1760 1866 1867 +11 528 529 1277 1278 1450 1451 1723 1724 1760 1866 1867 +11 528 529 1277 1278 1450 1451 1723 1724 1760 1866 1867 +11 528 529 1277 1278 1450 1451 1723 1724 1760 1866 1867 +11 528 529 1277 1278 1450 1451 1723 1724 1760 1866 1867 +11 528 529 1277 1278 1450 1451 1723 1724 1760 1866 1867 +3 528 529 1451 +3 528 529 1451 +3 528 529 1451 +3 528 529 1451 +3 528 529 1451 +3 528 529 1451 +5 528 529 1061 1062 1451 +5 528 529 1061 1062 1451 +5 528 529 1061 1062 1451 +5 528 529 1061 1062 1451 +5 528 529 1061 1062 1451 +5 528 529 1061 1062 1451 +2 528 1061 +2 528 1061 +2 528 1061 +2 528 1061 +2 528 1061 +2 528 1061 +3 529 1278 1724 +3 529 1278 1724 +3 529 1278 1724 +3 529 1278 1724 +3 529 1278 1724 +3 529 1278 1724 +7 529 530 1278 1279 1457 1724 1725 +7 529 530 1278 1279 1457 1724 1725 +7 529 530 1278 1279 1457 1724 1725 +7 529 530 1278 1279 1457 1724 1725 +7 529 530 1278 1279 1457 1724 1725 +7 529 530 1278 1279 1457 1724 1725 +3 529 530 1457 +3 529 530 1457 +3 529 530 1457 +3 529 530 1457 +3 529 530 1457 +3 529 530 1457 +5 529 530 1062 1063 1457 +5 529 530 1062 1063 1457 +5 529 530 1062 1063 1457 +5 529 530 1062 1063 1457 +5 529 530 1062 1063 1457 +5 529 530 1062 1063 1457 +2 529 1062 +2 529 1062 +2 529 1062 +2 529 1062 +2 529 1062 +2 529 1062 +3 530 1279 1725 +3 530 1279 1725 +3 530 1279 1725 +3 530 1279 1725 +3 530 1279 1725 +3 530 1279 1725 +10 530 531 532 1279 1280 1464 1465 1725 1726 1761 +10 530 531 532 1279 1280 1464 1465 1725 1726 1761 +10 530 531 532 1279 1280 1464 1465 1725 1726 1761 +10 530 531 532 1279 1280 1464 1465 1725 1726 1761 +10 530 531 532 1279 1280 1464 1465 1725 1726 1761 +10 530 531 532 1279 1280 1464 1465 1725 1726 1761 +3 530 532 1465 +3 530 532 1465 +3 530 532 1465 +3 530 532 1465 +3 530 532 1465 +3 530 532 1465 +5 530 532 1063 1064 1465 +5 530 532 1063 1064 1465 +5 530 532 1063 1064 1465 +5 530 532 1063 1064 1465 +5 530 532 1063 1064 1465 +5 530 532 1063 1064 1465 +2 530 1063 +2 530 1063 +2 530 1063 +2 530 1063 +2 530 1063 +2 530 1063 +7 531 1389 1464 1761 1963 2260 3106 +7 531 1389 1464 1761 1963 2260 3106 +7 531 1389 1464 1761 1963 2260 3106 +7 531 1389 1464 1761 1963 2260 3106 +7 531 1389 1464 1761 1963 2260 3106 +7 531 1389 1464 1761 1963 2260 3106 +3 531 1389 3106 +3 531 1389 3106 +3 531 1389 3106 +3 531 1389 3106 +3 531 1389 3106 +3 531 1389 3106 +7 531 1389 1472 1762 1962 2252 3106 +7 531 1389 1472 1762 1962 2252 3106 +7 531 1389 1472 1762 1962 2252 3106 +7 531 1389 1472 1762 1962 2252 3106 +7 531 1389 1472 1762 1962 2252 3106 +7 531 1389 1472 1762 1962 2252 3106 +3 531 1472 1762 +3 531 1472 1762 +3 531 1472 1762 +3 531 1472 1762 +3 531 1472 1762 +3 531 1472 1762 +10 531 532 533 1280 1281 1472 1473 1726 1727 1762 +10 531 532 533 1280 1281 1472 1473 1726 1727 1762 +10 531 532 533 1280 1281 1472 1473 1726 1727 1762 +10 531 532 533 1280 1281 1472 1473 1726 1727 1762 +10 531 532 533 1280 1281 1472 1473 1726 1727 1762 +10 531 532 533 1280 1281 1472 1473 1726 1727 1762 +4 531 532 1280 1726 +4 531 532 1280 1726 +4 531 532 1280 1726 +4 531 532 1280 1726 +4 531 532 1280 1726 +4 531 532 1280 1726 +3 531 1464 1761 +3 531 1464 1761 +3 531 1464 1761 +3 531 1464 1761 +3 531 1464 1761 +3 531 1464 1761 +3 532 533 1473 +3 532 533 1473 +3 532 533 1473 +3 532 533 1473 +3 532 533 1473 +3 532 533 1473 +5 532 533 1064 1065 1473 +5 532 533 1064 1065 1473 +5 532 533 1064 1065 1473 +5 532 533 1064 1065 1473 +5 532 533 1064 1065 1473 +5 532 533 1064 1065 1473 +2 532 1064 +2 532 1064 +2 532 1064 +2 532 1064 +2 532 1064 +2 532 1064 +3 533 1281 1727 +3 533 1281 1727 +3 533 1281 1727 +3 533 1281 1727 +3 533 1281 1727 +3 533 1281 1727 +7 533 534 1281 1282 1479 1727 1728 +7 533 534 1281 1282 1479 1727 1728 +7 533 534 1281 1282 1479 1727 1728 +7 533 534 1281 1282 1479 1727 1728 +7 533 534 1281 1282 1479 1727 1728 +7 533 534 1281 1282 1479 1727 1728 +3 533 534 1479 +3 533 534 1479 +3 533 534 1479 +3 533 534 1479 +3 533 534 1479 +3 533 534 1479 +5 533 534 1065 1066 1479 +5 533 534 1065 1066 1479 +5 533 534 1065 1066 1479 +5 533 534 1065 1066 1479 +5 533 534 1065 1066 1479 +5 533 534 1065 1066 1479 +2 533 1065 +2 533 1065 +2 533 1065 +2 533 1065 +2 533 1065 +2 533 1065 +3 534 1282 1728 +3 534 1282 1728 +3 534 1282 1728 +3 534 1282 1728 +3 534 1282 1728 +3 534 1282 1728 +10 534 535 536 1282 1283 1488 1489 1728 1729 1763 +10 534 535 536 1282 1283 1488 1489 1728 1729 1763 +10 534 535 536 1282 1283 1488 1489 1728 1729 1763 +10 534 535 536 1282 1283 1488 1489 1728 1729 1763 +10 534 535 536 1282 1283 1488 1489 1728 1729 1763 +10 534 535 536 1282 1283 1488 1489 1728 1729 1763 +3 534 536 1489 +3 534 536 1489 +3 534 536 1489 +3 534 536 1489 +3 534 536 1489 +3 534 536 1489 +5 534 536 1066 1067 1489 +5 534 536 1066 1067 1489 +5 534 536 1066 1067 1489 +5 534 536 1066 1067 1489 +5 534 536 1066 1067 1489 +5 534 536 1066 1067 1489 +2 534 1066 +2 534 1066 +2 534 1066 +2 534 1066 +2 534 1066 +2 534 1066 +7 535 1390 1488 1763 1961 2236 3102 +7 535 1390 1488 1763 1961 2236 3102 +7 535 1390 1488 1763 1961 2236 3102 +7 535 1390 1488 1763 1961 2236 3102 +7 535 1390 1488 1763 1961 2236 3102 +7 535 1390 1488 1763 1961 2236 3102 +3 535 1390 3102 +3 535 1390 3102 +3 535 1390 3102 +3 535 1390 3102 +3 535 1390 3102 +3 535 1390 3102 +7 535 1390 1498 1764 1960 2226 3102 +7 535 1390 1498 1764 1960 2226 3102 +7 535 1390 1498 1764 1960 2226 3102 +7 535 1390 1498 1764 1960 2226 3102 +7 535 1390 1498 1764 1960 2226 3102 +7 535 1390 1498 1764 1960 2226 3102 +3 535 1498 1764 +3 535 1498 1764 +3 535 1498 1764 +3 535 1498 1764 +3 535 1498 1764 +3 535 1498 1764 +10 535 536 537 1283 1284 1498 1499 1729 1730 1764 +10 535 536 537 1283 1284 1498 1499 1729 1730 1764 +10 535 536 537 1283 1284 1498 1499 1729 1730 1764 +10 535 536 537 1283 1284 1498 1499 1729 1730 1764 +10 535 536 537 1283 1284 1498 1499 1729 1730 1764 +10 535 536 537 1283 1284 1498 1499 1729 1730 1764 +4 535 536 1283 1729 +4 535 536 1283 1729 +4 535 536 1283 1729 +4 535 536 1283 1729 +4 535 536 1283 1729 +4 535 536 1283 1729 +3 535 1488 1763 +3 535 1488 1763 +3 535 1488 1763 +3 535 1488 1763 +3 535 1488 1763 +3 535 1488 1763 +3 536 537 1499 +3 536 537 1499 +3 536 537 1499 +3 536 537 1499 +3 536 537 1499 +3 536 537 1499 +5 536 537 1067 1068 1499 +5 536 537 1067 1068 1499 +5 536 537 1067 1068 1499 +5 536 537 1067 1068 1499 +5 536 537 1067 1068 1499 +5 536 537 1067 1068 1499 +2 536 1067 +2 536 1067 +2 536 1067 +2 536 1067 +2 536 1067 +2 536 1067 +3 537 1284 1730 +3 537 1284 1730 +3 537 1284 1730 +3 537 1284 1730 +3 537 1284 1730 +3 537 1284 1730 +7 537 538 1284 1285 1505 1730 1731 +7 537 538 1284 1285 1505 1730 1731 +7 537 538 1284 1285 1505 1730 1731 +7 537 538 1284 1285 1505 1730 1731 +7 537 538 1284 1285 1505 1730 1731 +7 537 538 1284 1285 1505 1730 1731 +3 537 538 1505 +3 537 538 1505 +3 537 538 1505 +3 537 538 1505 +3 537 538 1505 +3 537 538 1505 +5 537 538 1068 1069 1505 +5 537 538 1068 1069 1505 +5 537 538 1068 1069 1505 +5 537 538 1068 1069 1505 +5 537 538 1068 1069 1505 +5 537 538 1068 1069 1505 +2 537 1068 +2 537 1068 +2 537 1068 +2 537 1068 +2 537 1068 +2 537 1068 +3 538 1285 1731 +3 538 1285 1731 +3 538 1285 1731 +3 538 1285 1731 +3 538 1285 1731 +3 538 1285 1731 +10 538 539 540 1285 1286 1512 1513 1731 1732 1765 +10 538 539 540 1285 1286 1512 1513 1731 1732 1765 +10 538 539 540 1285 1286 1512 1513 1731 1732 1765 +10 538 539 540 1285 1286 1512 1513 1731 1732 1765 +10 538 539 540 1285 1286 1512 1513 1731 1732 1765 +10 538 539 540 1285 1286 1512 1513 1731 1732 1765 +3 538 540 1513 +3 538 540 1513 +3 538 540 1513 +3 538 540 1513 +3 538 540 1513 +3 538 540 1513 +5 538 540 1069 1070 1513 +5 538 540 1069 1070 1513 +5 538 540 1069 1070 1513 +5 538 540 1069 1070 1513 +5 538 540 1069 1070 1513 +5 538 540 1069 1070 1513 +2 538 1069 +2 538 1069 +2 538 1069 +2 538 1069 +2 538 1069 +2 538 1069 +7 539 1391 1512 1765 1959 2212 3098 +7 539 1391 1512 1765 1959 2212 3098 +7 539 1391 1512 1765 1959 2212 3098 +7 539 1391 1512 1765 1959 2212 3098 +7 539 1391 1512 1765 1959 2212 3098 +7 539 1391 1512 1765 1959 2212 3098 +3 539 1391 3098 +3 539 1391 3098 +3 539 1391 3098 +3 539 1391 3098 +3 539 1391 3098 +3 539 1391 3098 +7 539 1391 1520 1766 1958 2204 3098 +7 539 1391 1520 1766 1958 2204 3098 +7 539 1391 1520 1766 1958 2204 3098 +7 539 1391 1520 1766 1958 2204 3098 +7 539 1391 1520 1766 1958 2204 3098 +7 539 1391 1520 1766 1958 2204 3098 +3 539 1520 1766 +3 539 1520 1766 +3 539 1520 1766 +3 539 1520 1766 +3 539 1520 1766 +3 539 1520 1766 +10 539 540 541 1286 1287 1520 1521 1732 1733 1766 +10 539 540 541 1286 1287 1520 1521 1732 1733 1766 +10 539 540 541 1286 1287 1520 1521 1732 1733 1766 +10 539 540 541 1286 1287 1520 1521 1732 1733 1766 +10 539 540 541 1286 1287 1520 1521 1732 1733 1766 +10 539 540 541 1286 1287 1520 1521 1732 1733 1766 +4 539 540 1286 1732 +4 539 540 1286 1732 +4 539 540 1286 1732 +4 539 540 1286 1732 +4 539 540 1286 1732 +4 539 540 1286 1732 +3 539 1512 1765 +3 539 1512 1765 +3 539 1512 1765 +3 539 1512 1765 +3 539 1512 1765 +3 539 1512 1765 +3 540 541 1521 +3 540 541 1521 +3 540 541 1521 +3 540 541 1521 +3 540 541 1521 +3 540 541 1521 +5 540 541 1070 1071 1521 +5 540 541 1070 1071 1521 +5 540 541 1070 1071 1521 +5 540 541 1070 1071 1521 +5 540 541 1070 1071 1521 +5 540 541 1070 1071 1521 +2 540 1070 +2 540 1070 +2 540 1070 +2 540 1070 +2 540 1070 +2 540 1070 +3 541 1287 1733 +3 541 1287 1733 +3 541 1287 1733 +3 541 1287 1733 +3 541 1287 1733 +3 541 1287 1733 +7 541 542 1287 1288 1527 1733 1734 +7 541 542 1287 1288 1527 1733 1734 +7 541 542 1287 1288 1527 1733 1734 +7 541 542 1287 1288 1527 1733 1734 +7 541 542 1287 1288 1527 1733 1734 +7 541 542 1287 1288 1527 1733 1734 +3 541 542 1527 +3 541 542 1527 +3 541 542 1527 +3 541 542 1527 +3 541 542 1527 +3 541 542 1527 +5 541 542 1071 1072 1527 +5 541 542 1071 1072 1527 +5 541 542 1071 1072 1527 +5 541 542 1071 1072 1527 +5 541 542 1071 1072 1527 +5 541 542 1071 1072 1527 +2 541 1071 +2 541 1071 +2 541 1071 +2 541 1071 +2 541 1071 +2 541 1071 +3 542 1288 1734 +3 542 1288 1734 +3 542 1288 1734 +3 542 1288 1734 +3 542 1288 1734 +3 542 1288 1734 +10 542 543 544 1288 1289 1536 1537 1734 1735 1767 +10 542 543 544 1288 1289 1536 1537 1734 1735 1767 +10 542 543 544 1288 1289 1536 1537 1734 1735 1767 +10 542 543 544 1288 1289 1536 1537 1734 1735 1767 +10 542 543 544 1288 1289 1536 1537 1734 1735 1767 +10 542 543 544 1288 1289 1536 1537 1734 1735 1767 +3 542 544 1537 +3 542 544 1537 +3 542 544 1537 +3 542 544 1537 +3 542 544 1537 +3 542 544 1537 +5 542 544 1072 1073 1537 +5 542 544 1072 1073 1537 +5 542 544 1072 1073 1537 +5 542 544 1072 1073 1537 +5 542 544 1072 1073 1537 +5 542 544 1072 1073 1537 +2 542 1072 +2 542 1072 +2 542 1072 +2 542 1072 +2 542 1072 +2 542 1072 +7 543 1392 1536 1767 1957 2188 3094 +7 543 1392 1536 1767 1957 2188 3094 +7 543 1392 1536 1767 1957 2188 3094 +7 543 1392 1536 1767 1957 2188 3094 +7 543 1392 1536 1767 1957 2188 3094 +7 543 1392 1536 1767 1957 2188 3094 +3 543 1392 3094 +3 543 1392 3094 +3 543 1392 3094 +3 543 1392 3094 +3 543 1392 3094 +3 543 1392 3094 +7 543 1392 1544 1768 1956 2180 3094 +7 543 1392 1544 1768 1956 2180 3094 +7 543 1392 1544 1768 1956 2180 3094 +7 543 1392 1544 1768 1956 2180 3094 +7 543 1392 1544 1768 1956 2180 3094 +7 543 1392 1544 1768 1956 2180 3094 +3 543 1544 1768 +3 543 1544 1768 +3 543 1544 1768 +3 543 1544 1768 +3 543 1544 1768 +3 543 1544 1768 +10 543 544 545 1289 1290 1544 1545 1735 1736 1768 +10 543 544 545 1289 1290 1544 1545 1735 1736 1768 +10 543 544 545 1289 1290 1544 1545 1735 1736 1768 +10 543 544 545 1289 1290 1544 1545 1735 1736 1768 +10 543 544 545 1289 1290 1544 1545 1735 1736 1768 +10 543 544 545 1289 1290 1544 1545 1735 1736 1768 +4 543 544 1289 1735 +4 543 544 1289 1735 +4 543 544 1289 1735 +4 543 544 1289 1735 +4 543 544 1289 1735 +4 543 544 1289 1735 +3 543 1536 1767 +3 543 1536 1767 +3 543 1536 1767 +3 543 1536 1767 +3 543 1536 1767 +3 543 1536 1767 +3 544 545 1545 +3 544 545 1545 +3 544 545 1545 +3 544 545 1545 +3 544 545 1545 +3 544 545 1545 +5 544 545 1073 1074 1545 +5 544 545 1073 1074 1545 +5 544 545 1073 1074 1545 +5 544 545 1073 1074 1545 +5 544 545 1073 1074 1545 +5 544 545 1073 1074 1545 +2 544 1073 +2 544 1073 +2 544 1073 +2 544 1073 +2 544 1073 +2 544 1073 +3 545 1290 1736 +3 545 1290 1736 +3 545 1290 1736 +3 545 1290 1736 +3 545 1290 1736 +3 545 1290 1736 +7 545 546 1290 1291 1551 1736 1737 +7 545 546 1290 1291 1551 1736 1737 +7 545 546 1290 1291 1551 1736 1737 +7 545 546 1290 1291 1551 1736 1737 +7 545 546 1290 1291 1551 1736 1737 +7 545 546 1290 1291 1551 1736 1737 +3 545 546 1551 +3 545 546 1551 +3 545 546 1551 +3 545 546 1551 +3 545 546 1551 +3 545 546 1551 +5 545 546 1074 1075 1551 +5 545 546 1074 1075 1551 +5 545 546 1074 1075 1551 +5 545 546 1074 1075 1551 +5 545 546 1074 1075 1551 +5 545 546 1074 1075 1551 +2 545 1074 +2 545 1074 +2 545 1074 +2 545 1074 +2 545 1074 +2 545 1074 +3 546 1291 1737 +3 546 1291 1737 +3 546 1291 1737 +3 546 1291 1737 +3 546 1291 1737 +3 546 1291 1737 +10 546 547 548 1291 1292 1558 1559 1737 1738 1769 +10 546 547 548 1291 1292 1558 1559 1737 1738 1769 +10 546 547 548 1291 1292 1558 1559 1737 1738 1769 +10 546 547 548 1291 1292 1558 1559 1737 1738 1769 +10 546 547 548 1291 1292 1558 1559 1737 1738 1769 +10 546 547 548 1291 1292 1558 1559 1737 1738 1769 +3 546 548 1559 +3 546 548 1559 +3 546 548 1559 +3 546 548 1559 +3 546 548 1559 +3 546 548 1559 +5 546 548 1075 1076 1559 +5 546 548 1075 1076 1559 +5 546 548 1075 1076 1559 +5 546 548 1075 1076 1559 +5 546 548 1075 1076 1559 +5 546 548 1075 1076 1559 +2 546 1075 +2 546 1075 +2 546 1075 +2 546 1075 +2 546 1075 +2 546 1075 +7 547 1393 1558 1769 1955 2166 3090 +7 547 1393 1558 1769 1955 2166 3090 +7 547 1393 1558 1769 1955 2166 3090 +7 547 1393 1558 1769 1955 2166 3090 +7 547 1393 1558 1769 1955 2166 3090 +7 547 1393 1558 1769 1955 2166 3090 +3 547 1393 3090 +3 547 1393 3090 +3 547 1393 3090 +3 547 1393 3090 +3 547 1393 3090 +3 547 1393 3090 +7 547 1393 1566 1770 1954 2158 3090 +7 547 1393 1566 1770 1954 2158 3090 +7 547 1393 1566 1770 1954 2158 3090 +7 547 1393 1566 1770 1954 2158 3090 +7 547 1393 1566 1770 1954 2158 3090 +7 547 1393 1566 1770 1954 2158 3090 +3 547 1566 1770 +3 547 1566 1770 +3 547 1566 1770 +3 547 1566 1770 +3 547 1566 1770 +3 547 1566 1770 +10 547 548 549 1292 1293 1566 1567 1738 1739 1770 +10 547 548 549 1292 1293 1566 1567 1738 1739 1770 +10 547 548 549 1292 1293 1566 1567 1738 1739 1770 +10 547 548 549 1292 1293 1566 1567 1738 1739 1770 +10 547 548 549 1292 1293 1566 1567 1738 1739 1770 +10 547 548 549 1292 1293 1566 1567 1738 1739 1770 +4 547 548 1292 1738 +4 547 548 1292 1738 +4 547 548 1292 1738 +4 547 548 1292 1738 +4 547 548 1292 1738 +4 547 548 1292 1738 +3 547 1558 1769 +3 547 1558 1769 +3 547 1558 1769 +3 547 1558 1769 +3 547 1558 1769 +3 547 1558 1769 +3 548 549 1567 +3 548 549 1567 +3 548 549 1567 +3 548 549 1567 +3 548 549 1567 +3 548 549 1567 +5 548 549 1076 1077 1567 +5 548 549 1076 1077 1567 +5 548 549 1076 1077 1567 +5 548 549 1076 1077 1567 +5 548 549 1076 1077 1567 +5 548 549 1076 1077 1567 +2 548 1076 +2 548 1076 +2 548 1076 +2 548 1076 +2 548 1076 +2 548 1076 +3 549 1293 1739 +3 549 1293 1739 +3 549 1293 1739 +3 549 1293 1739 +3 549 1293 1739 +3 549 1293 1739 +7 549 550 1293 1294 1573 1739 1740 +7 549 550 1293 1294 1573 1739 1740 +7 549 550 1293 1294 1573 1739 1740 +7 549 550 1293 1294 1573 1739 1740 +7 549 550 1293 1294 1573 1739 1740 +7 549 550 1293 1294 1573 1739 1740 +3 549 550 1573 +3 549 550 1573 +3 549 550 1573 +3 549 550 1573 +3 549 550 1573 +3 549 550 1573 +5 549 550 1077 1078 1573 +5 549 550 1077 1078 1573 +5 549 550 1077 1078 1573 +5 549 550 1077 1078 1573 +5 549 550 1077 1078 1573 +5 549 550 1077 1078 1573 +2 549 1077 +2 549 1077 +2 549 1077 +2 549 1077 +2 549 1077 +2 549 1077 +3 550 1294 1740 +3 550 1294 1740 +3 550 1294 1740 +3 550 1294 1740 +3 550 1294 1740 +3 550 1294 1740 +10 550 551 552 1294 1295 1582 1583 1740 1741 1771 +10 550 551 552 1294 1295 1582 1583 1740 1741 1771 +10 550 551 552 1294 1295 1582 1583 1740 1741 1771 +10 550 551 552 1294 1295 1582 1583 1740 1741 1771 +10 550 551 552 1294 1295 1582 1583 1740 1741 1771 +10 550 551 552 1294 1295 1582 1583 1740 1741 1771 +3 550 552 1583 +3 550 552 1583 +3 550 552 1583 +3 550 552 1583 +3 550 552 1583 +3 550 552 1583 +5 550 552 1078 1079 1583 +5 550 552 1078 1079 1583 +5 550 552 1078 1079 1583 +5 550 552 1078 1079 1583 +5 550 552 1078 1079 1583 +5 550 552 1078 1079 1583 +2 550 1078 +2 550 1078 +2 550 1078 +2 550 1078 +2 550 1078 +2 550 1078 +7 551 1394 1582 1771 1953 2142 3086 +7 551 1394 1582 1771 1953 2142 3086 +7 551 1394 1582 1771 1953 2142 3086 +7 551 1394 1582 1771 1953 2142 3086 +7 551 1394 1582 1771 1953 2142 3086 +7 551 1394 1582 1771 1953 2142 3086 +3 551 1394 3086 +3 551 1394 3086 +3 551 1394 3086 +3 551 1394 3086 +3 551 1394 3086 +3 551 1394 3086 +7 551 1394 1590 1772 1952 2134 3086 +7 551 1394 1590 1772 1952 2134 3086 +7 551 1394 1590 1772 1952 2134 3086 +7 551 1394 1590 1772 1952 2134 3086 +7 551 1394 1590 1772 1952 2134 3086 +7 551 1394 1590 1772 1952 2134 3086 +3 551 1590 1772 +3 551 1590 1772 +3 551 1590 1772 +3 551 1590 1772 +3 551 1590 1772 +3 551 1590 1772 +10 551 552 553 1295 1296 1590 1591 1741 1742 1772 +10 551 552 553 1295 1296 1590 1591 1741 1742 1772 +10 551 552 553 1295 1296 1590 1591 1741 1742 1772 +10 551 552 553 1295 1296 1590 1591 1741 1742 1772 +10 551 552 553 1295 1296 1590 1591 1741 1742 1772 +10 551 552 553 1295 1296 1590 1591 1741 1742 1772 +4 551 552 1295 1741 +4 551 552 1295 1741 +4 551 552 1295 1741 +4 551 552 1295 1741 +4 551 552 1295 1741 +4 551 552 1295 1741 +3 551 1582 1771 +3 551 1582 1771 +3 551 1582 1771 +3 551 1582 1771 +3 551 1582 1771 +3 551 1582 1771 +3 552 553 1591 +3 552 553 1591 +3 552 553 1591 +3 552 553 1591 +3 552 553 1591 +3 552 553 1591 +5 552 553 1079 1080 1591 +5 552 553 1079 1080 1591 +5 552 553 1079 1080 1591 +5 552 553 1079 1080 1591 +5 552 553 1079 1080 1591 +5 552 553 1079 1080 1591 +2 552 1079 +2 552 1079 +2 552 1079 +2 552 1079 +2 552 1079 +2 552 1079 +3 553 1296 1742 +3 553 1296 1742 +3 553 1296 1742 +3 553 1296 1742 +3 553 1296 1742 +3 553 1296 1742 +7 553 554 1296 1297 1597 1742 1743 +7 553 554 1296 1297 1597 1742 1743 +7 553 554 1296 1297 1597 1742 1743 +7 553 554 1296 1297 1597 1742 1743 +7 553 554 1296 1297 1597 1742 1743 +7 553 554 1296 1297 1597 1742 1743 +3 553 554 1597 +3 553 554 1597 +3 553 554 1597 +3 553 554 1597 +3 553 554 1597 +3 553 554 1597 +5 553 554 1080 1081 1597 +5 553 554 1080 1081 1597 +5 553 554 1080 1081 1597 +5 553 554 1080 1081 1597 +5 553 554 1080 1081 1597 +5 553 554 1080 1081 1597 +2 553 1080 +2 553 1080 +2 553 1080 +2 553 1080 +2 553 1080 +2 553 1080 +3 554 1297 1743 +3 554 1297 1743 +3 554 1297 1743 +3 554 1297 1743 +3 554 1297 1743 +3 554 1297 1743 +10 554 555 556 1297 1298 1604 1605 1743 1744 1773 +10 554 555 556 1297 1298 1604 1605 1743 1744 1773 +10 554 555 556 1297 1298 1604 1605 1743 1744 1773 +10 554 555 556 1297 1298 1604 1605 1743 1744 1773 +10 554 555 556 1297 1298 1604 1605 1743 1744 1773 +10 554 555 556 1297 1298 1604 1605 1743 1744 1773 +3 554 556 1605 +3 554 556 1605 +3 554 556 1605 +3 554 556 1605 +3 554 556 1605 +3 554 556 1605 +5 554 556 1081 1082 1605 +5 554 556 1081 1082 1605 +5 554 556 1081 1082 1605 +5 554 556 1081 1082 1605 +5 554 556 1081 1082 1605 +5 554 556 1081 1082 1605 +2 554 1081 +2 554 1081 +2 554 1081 +2 554 1081 +2 554 1081 +2 554 1081 +7 555 1395 1604 1773 1951 2120 3082 +7 555 1395 1604 1773 1951 2120 3082 +7 555 1395 1604 1773 1951 2120 3082 +7 555 1395 1604 1773 1951 2120 3082 +7 555 1395 1604 1773 1951 2120 3082 +7 555 1395 1604 1773 1951 2120 3082 +3 555 1395 3082 +3 555 1395 3082 +3 555 1395 3082 +3 555 1395 3082 +3 555 1395 3082 +3 555 1395 3082 +7 555 1395 1612 1774 1950 2112 3082 +7 555 1395 1612 1774 1950 2112 3082 +7 555 1395 1612 1774 1950 2112 3082 +7 555 1395 1612 1774 1950 2112 3082 +7 555 1395 1612 1774 1950 2112 3082 +7 555 1395 1612 1774 1950 2112 3082 +3 555 1612 1774 +3 555 1612 1774 +3 555 1612 1774 +3 555 1612 1774 +3 555 1612 1774 +3 555 1612 1774 +10 555 556 557 1298 1299 1612 1613 1744 1745 1774 +10 555 556 557 1298 1299 1612 1613 1744 1745 1774 +10 555 556 557 1298 1299 1612 1613 1744 1745 1774 +10 555 556 557 1298 1299 1612 1613 1744 1745 1774 +10 555 556 557 1298 1299 1612 1613 1744 1745 1774 +10 555 556 557 1298 1299 1612 1613 1744 1745 1774 +4 555 556 1298 1744 +4 555 556 1298 1744 +4 555 556 1298 1744 +4 555 556 1298 1744 +4 555 556 1298 1744 +4 555 556 1298 1744 +3 555 1604 1773 +3 555 1604 1773 +3 555 1604 1773 +3 555 1604 1773 +3 555 1604 1773 +3 555 1604 1773 +3 556 557 1613 +3 556 557 1613 +3 556 557 1613 +3 556 557 1613 +3 556 557 1613 +3 556 557 1613 +5 556 557 1082 1083 1613 +5 556 557 1082 1083 1613 +5 556 557 1082 1083 1613 +5 556 557 1082 1083 1613 +5 556 557 1082 1083 1613 +5 556 557 1082 1083 1613 +2 556 1082 +2 556 1082 +2 556 1082 +2 556 1082 +2 556 1082 +2 556 1082 +3 557 1299 1745 +3 557 1299 1745 +3 557 1299 1745 +3 557 1299 1745 +3 557 1299 1745 +3 557 1299 1745 +7 557 558 1299 1300 1619 1745 1746 +7 557 558 1299 1300 1619 1745 1746 +7 557 558 1299 1300 1619 1745 1746 +7 557 558 1299 1300 1619 1745 1746 +7 557 558 1299 1300 1619 1745 1746 +7 557 558 1299 1300 1619 1745 1746 +3 557 558 1619 +3 557 558 1619 +3 557 558 1619 +3 557 558 1619 +3 557 558 1619 +3 557 558 1619 +5 557 558 1083 1084 1619 +5 557 558 1083 1084 1619 +5 557 558 1083 1084 1619 +5 557 558 1083 1084 1619 +5 557 558 1083 1084 1619 +5 557 558 1083 1084 1619 +2 557 1083 +2 557 1083 +2 557 1083 +2 557 1083 +2 557 1083 +2 557 1083 +3 558 1300 1746 +3 558 1300 1746 +3 558 1300 1746 +3 558 1300 1746 +3 558 1300 1746 +3 558 1300 1746 +10 558 559 560 1300 1301 1628 1629 1746 1747 1775 +10 558 559 560 1300 1301 1628 1629 1746 1747 1775 +10 558 559 560 1300 1301 1628 1629 1746 1747 1775 +10 558 559 560 1300 1301 1628 1629 1746 1747 1775 +10 558 559 560 1300 1301 1628 1629 1746 1747 1775 +10 558 559 560 1300 1301 1628 1629 1746 1747 1775 +3 558 560 1629 +3 558 560 1629 +3 558 560 1629 +3 558 560 1629 +3 558 560 1629 +3 558 560 1629 +5 558 560 1084 1085 1629 +5 558 560 1084 1085 1629 +5 558 560 1084 1085 1629 +5 558 560 1084 1085 1629 +5 558 560 1084 1085 1629 +5 558 560 1084 1085 1629 +2 558 1084 +2 558 1084 +2 558 1084 +2 558 1084 +2 558 1084 +2 558 1084 +7 559 1396 1628 1775 1949 2096 3078 +7 559 1396 1628 1775 1949 2096 3078 +7 559 1396 1628 1775 1949 2096 3078 +7 559 1396 1628 1775 1949 2096 3078 +7 559 1396 1628 1775 1949 2096 3078 +7 559 1396 1628 1775 1949 2096 3078 +3 559 1396 3078 +3 559 1396 3078 +3 559 1396 3078 +3 559 1396 3078 +3 559 1396 3078 +3 559 1396 3078 +7 559 1396 1636 1776 1948 2088 3078 +7 559 1396 1636 1776 1948 2088 3078 +7 559 1396 1636 1776 1948 2088 3078 +7 559 1396 1636 1776 1948 2088 3078 +7 559 1396 1636 1776 1948 2088 3078 +7 559 1396 1636 1776 1948 2088 3078 +3 559 1636 1776 +3 559 1636 1776 +3 559 1636 1776 +3 559 1636 1776 +3 559 1636 1776 +3 559 1636 1776 +10 559 560 561 1301 1302 1636 1637 1747 1748 1776 +10 559 560 561 1301 1302 1636 1637 1747 1748 1776 +10 559 560 561 1301 1302 1636 1637 1747 1748 1776 +10 559 560 561 1301 1302 1636 1637 1747 1748 1776 +10 559 560 561 1301 1302 1636 1637 1747 1748 1776 +10 559 560 561 1301 1302 1636 1637 1747 1748 1776 +4 559 560 1301 1747 +4 559 560 1301 1747 +4 559 560 1301 1747 +4 559 560 1301 1747 +4 559 560 1301 1747 +4 559 560 1301 1747 +3 559 1628 1775 +3 559 1628 1775 +3 559 1628 1775 +3 559 1628 1775 +3 559 1628 1775 +3 559 1628 1775 +3 560 561 1637 +3 560 561 1637 +3 560 561 1637 +3 560 561 1637 +3 560 561 1637 +3 560 561 1637 +5 560 561 1085 1086 1637 +5 560 561 1085 1086 1637 +5 560 561 1085 1086 1637 +5 560 561 1085 1086 1637 +5 560 561 1085 1086 1637 +5 560 561 1085 1086 1637 +2 560 1085 +2 560 1085 +2 560 1085 +2 560 1085 +2 560 1085 +2 560 1085 +3 561 1302 1748 +3 561 1302 1748 +3 561 1302 1748 +3 561 1302 1748 +3 561 1302 1748 +3 561 1302 1748 +7 561 562 1302 1303 1643 1748 1749 +7 561 562 1302 1303 1643 1748 1749 +7 561 562 1302 1303 1643 1748 1749 +7 561 562 1302 1303 1643 1748 1749 +7 561 562 1302 1303 1643 1748 1749 +7 561 562 1302 1303 1643 1748 1749 +3 561 562 1643 +3 561 562 1643 +3 561 562 1643 +3 561 562 1643 +3 561 562 1643 +3 561 562 1643 +5 561 562 1086 1087 1643 +5 561 562 1086 1087 1643 +5 561 562 1086 1087 1643 +5 561 562 1086 1087 1643 +5 561 562 1086 1087 1643 +5 561 562 1086 1087 1643 +2 561 1086 +2 561 1086 +2 561 1086 +2 561 1086 +2 561 1086 +2 561 1086 +3 562 1303 1749 +3 562 1303 1749 +3 562 1303 1749 +3 562 1303 1749 +3 562 1303 1749 +3 562 1303 1749 +10 562 563 564 1303 1304 1650 1651 1749 1750 1777 +10 562 563 564 1303 1304 1650 1651 1749 1750 1777 +10 562 563 564 1303 1304 1650 1651 1749 1750 1777 +10 562 563 564 1303 1304 1650 1651 1749 1750 1777 +10 562 563 564 1303 1304 1650 1651 1749 1750 1777 +10 562 563 564 1303 1304 1650 1651 1749 1750 1777 +3 562 564 1651 +3 562 564 1651 +3 562 564 1651 +3 562 564 1651 +3 562 564 1651 +3 562 564 1651 +5 562 564 1087 1088 1651 +5 562 564 1087 1088 1651 +5 562 564 1087 1088 1651 +5 562 564 1087 1088 1651 +5 562 564 1087 1088 1651 +5 562 564 1087 1088 1651 +2 562 1087 +2 562 1087 +2 562 1087 +2 562 1087 +2 562 1087 +2 562 1087 +7 563 1397 1650 1777 1947 2074 3074 +7 563 1397 1650 1777 1947 2074 3074 +7 563 1397 1650 1777 1947 2074 3074 +7 563 1397 1650 1777 1947 2074 3074 +7 563 1397 1650 1777 1947 2074 3074 +7 563 1397 1650 1777 1947 2074 3074 +3 563 1397 3074 +3 563 1397 3074 +3 563 1397 3074 +3 563 1397 3074 +3 563 1397 3074 +3 563 1397 3074 +7 563 1397 1658 1778 1946 2066 3074 +7 563 1397 1658 1778 1946 2066 3074 +7 563 1397 1658 1778 1946 2066 3074 +7 563 1397 1658 1778 1946 2066 3074 +7 563 1397 1658 1778 1946 2066 3074 +7 563 1397 1658 1778 1946 2066 3074 +3 563 1658 1778 +3 563 1658 1778 +3 563 1658 1778 +3 563 1658 1778 +3 563 1658 1778 +3 563 1658 1778 +10 563 564 565 1304 1305 1658 1659 1750 1751 1778 +10 563 564 565 1304 1305 1658 1659 1750 1751 1778 +10 563 564 565 1304 1305 1658 1659 1750 1751 1778 +10 563 564 565 1304 1305 1658 1659 1750 1751 1778 +10 563 564 565 1304 1305 1658 1659 1750 1751 1778 +10 563 564 565 1304 1305 1658 1659 1750 1751 1778 +4 563 564 1304 1750 +4 563 564 1304 1750 +4 563 564 1304 1750 +4 563 564 1304 1750 +4 563 564 1304 1750 +4 563 564 1304 1750 +3 563 1650 1777 +3 563 1650 1777 +3 563 1650 1777 +3 563 1650 1777 +3 563 1650 1777 +3 563 1650 1777 +3 564 565 1659 +3 564 565 1659 +3 564 565 1659 +3 564 565 1659 +3 564 565 1659 +3 564 565 1659 +5 564 565 1088 1089 1659 +5 564 565 1088 1089 1659 +5 564 565 1088 1089 1659 +5 564 565 1088 1089 1659 +5 564 565 1088 1089 1659 +5 564 565 1088 1089 1659 +2 564 1088 +2 564 1088 +2 564 1088 +2 564 1088 +2 564 1088 +2 564 1088 +3 565 1305 1751 +3 565 1305 1751 +3 565 1305 1751 +3 565 1305 1751 +3 565 1305 1751 +3 565 1305 1751 +7 565 566 1305 1306 1665 1751 1752 +7 565 566 1305 1306 1665 1751 1752 +7 565 566 1305 1306 1665 1751 1752 +7 565 566 1305 1306 1665 1751 1752 +7 565 566 1305 1306 1665 1751 1752 +7 565 566 1305 1306 1665 1751 1752 +3 565 566 1665 +3 565 566 1665 +3 565 566 1665 +3 565 566 1665 +3 565 566 1665 +3 565 566 1665 +5 565 566 1089 1090 1665 +5 565 566 1089 1090 1665 +5 565 566 1089 1090 1665 +5 565 566 1089 1090 1665 +5 565 566 1089 1090 1665 +5 565 566 1089 1090 1665 +2 565 1089 +2 565 1089 +2 565 1089 +2 565 1089 +2 565 1089 +2 565 1089 +3 566 1306 1752 +3 566 1306 1752 +3 566 1306 1752 +3 566 1306 1752 +3 566 1306 1752 +3 566 1306 1752 +10 566 567 568 1306 1307 1674 1675 1752 1753 1779 +10 566 567 568 1306 1307 1674 1675 1752 1753 1779 +10 566 567 568 1306 1307 1674 1675 1752 1753 1779 +10 566 567 568 1306 1307 1674 1675 1752 1753 1779 +10 566 567 568 1306 1307 1674 1675 1752 1753 1779 +10 566 567 568 1306 1307 1674 1675 1752 1753 1779 +3 566 568 1675 +3 566 568 1675 +3 566 568 1675 +3 566 568 1675 +3 566 568 1675 +3 566 568 1675 +5 566 568 1090 1091 1675 +5 566 568 1090 1091 1675 +5 566 568 1090 1091 1675 +5 566 568 1090 1091 1675 +5 566 568 1090 1091 1675 +5 566 568 1090 1091 1675 +2 566 1090 +2 566 1090 +2 566 1090 +2 566 1090 +2 566 1090 +2 566 1090 +7 567 1398 1674 1779 1945 2050 3070 +7 567 1398 1674 1779 1945 2050 3070 +7 567 1398 1674 1779 1945 2050 3070 +7 567 1398 1674 1779 1945 2050 3070 +7 567 1398 1674 1779 1945 2050 3070 +7 567 1398 1674 1779 1945 2050 3070 +3 567 1398 3070 +3 567 1398 3070 +3 567 1398 3070 +3 567 1398 3070 +3 567 1398 3070 +3 567 1398 3070 +7 567 1398 1682 1780 1944 2042 3070 +7 567 1398 1682 1780 1944 2042 3070 +7 567 1398 1682 1780 1944 2042 3070 +7 567 1398 1682 1780 1944 2042 3070 +7 567 1398 1682 1780 1944 2042 3070 +7 567 1398 1682 1780 1944 2042 3070 +3 567 1682 1780 +3 567 1682 1780 +3 567 1682 1780 +3 567 1682 1780 +3 567 1682 1780 +3 567 1682 1780 +10 567 568 569 1307 1308 1682 1683 1753 1754 1780 +10 567 568 569 1307 1308 1682 1683 1753 1754 1780 +10 567 568 569 1307 1308 1682 1683 1753 1754 1780 +10 567 568 569 1307 1308 1682 1683 1753 1754 1780 +10 567 568 569 1307 1308 1682 1683 1753 1754 1780 +10 567 568 569 1307 1308 1682 1683 1753 1754 1780 +4 567 568 1307 1753 +4 567 568 1307 1753 +4 567 568 1307 1753 +4 567 568 1307 1753 +4 567 568 1307 1753 +4 567 568 1307 1753 +3 567 1674 1779 +3 567 1674 1779 +3 567 1674 1779 +3 567 1674 1779 +3 567 1674 1779 +3 567 1674 1779 +3 568 569 1683 +3 568 569 1683 +3 568 569 1683 +3 568 569 1683 +3 568 569 1683 +3 568 569 1683 +5 568 569 1091 1092 1683 +5 568 569 1091 1092 1683 +5 568 569 1091 1092 1683 +5 568 569 1091 1092 1683 +5 568 569 1091 1092 1683 +5 568 569 1091 1092 1683 +2 568 1091 +2 568 1091 +2 568 1091 +2 568 1091 +2 568 1091 +2 568 1091 +3 569 1308 1754 +3 569 1308 1754 +3 569 1308 1754 +3 569 1308 1754 +3 569 1308 1754 +3 569 1308 1754 +7 569 570 1308 1309 1689 1754 1755 +7 569 570 1308 1309 1689 1754 1755 +7 569 570 1308 1309 1689 1754 1755 +7 569 570 1308 1309 1689 1754 1755 +7 569 570 1308 1309 1689 1754 1755 +7 569 570 1308 1309 1689 1754 1755 +3 569 570 1689 +3 569 570 1689 +3 569 570 1689 +3 569 570 1689 +3 569 570 1689 +3 569 570 1689 +5 569 570 1092 1093 1689 +5 569 570 1092 1093 1689 +5 569 570 1092 1093 1689 +5 569 570 1092 1093 1689 +5 569 570 1092 1093 1689 +5 569 570 1092 1093 1689 +2 569 1092 +2 569 1092 +2 569 1092 +2 569 1092 +2 569 1092 +2 569 1092 +3 570 1309 1755 +3 570 1309 1755 +3 570 1309 1755 +3 570 1309 1755 +3 570 1309 1755 +3 570 1309 1755 +10 570 571 572 1309 1310 1698 1699 1755 1756 1781 +10 570 571 572 1309 1310 1698 1699 1755 1756 1781 +10 570 571 572 1309 1310 1698 1699 1755 1756 1781 +10 570 571 572 1309 1310 1698 1699 1755 1756 1781 +10 570 571 572 1309 1310 1698 1699 1755 1756 1781 +10 570 571 572 1309 1310 1698 1699 1755 1756 1781 +3 570 572 1699 +3 570 572 1699 +3 570 572 1699 +3 570 572 1699 +3 570 572 1699 +3 570 572 1699 +5 570 572 1093 1094 1699 +5 570 572 1093 1094 1699 +5 570 572 1093 1094 1699 +5 570 572 1093 1094 1699 +5 570 572 1093 1094 1699 +5 570 572 1093 1094 1699 +2 570 1093 +2 570 1093 +2 570 1093 +2 570 1093 +2 570 1093 +2 570 1093 +7 571 1399 1698 1781 1943 2026 3066 +7 571 1399 1698 1781 1943 2026 3066 +7 571 1399 1698 1781 1943 2026 3066 +7 571 1399 1698 1781 1943 2026 3066 +7 571 1399 1698 1781 1943 2026 3066 +7 571 1399 1698 1781 1943 2026 3066 +3 571 1399 3066 +3 571 1399 3066 +3 571 1399 3066 +3 571 1399 3066 +3 571 1399 3066 +3 571 1399 3066 +7 571 1399 1708 1782 1942 2016 3066 +7 571 1399 1708 1782 1942 2016 3066 +7 571 1399 1708 1782 1942 2016 3066 +7 571 1399 1708 1782 1942 2016 3066 +7 571 1399 1708 1782 1942 2016 3066 +7 571 1399 1708 1782 1942 2016 3066 +3 571 1708 1782 +3 571 1708 1782 +3 571 1708 1782 +3 571 1708 1782 +3 571 1708 1782 +3 571 1708 1782 +10 571 572 573 1310 1311 1708 1709 1756 1757 1782 +10 571 572 573 1310 1311 1708 1709 1756 1757 1782 +10 571 572 573 1310 1311 1708 1709 1756 1757 1782 +10 571 572 573 1310 1311 1708 1709 1756 1757 1782 +10 571 572 573 1310 1311 1708 1709 1756 1757 1782 +10 571 572 573 1310 1311 1708 1709 1756 1757 1782 +4 571 572 1310 1756 +4 571 572 1310 1756 +4 571 572 1310 1756 +4 571 572 1310 1756 +4 571 572 1310 1756 +4 571 572 1310 1756 +3 571 1698 1781 +3 571 1698 1781 +3 571 1698 1781 +3 571 1698 1781 +3 571 1698 1781 +3 571 1698 1781 +3 572 573 1709 +3 572 573 1709 +3 572 573 1709 +3 572 573 1709 +3 572 573 1709 +3 572 573 1709 +5 572 573 1094 1095 1709 +5 572 573 1094 1095 1709 +5 572 573 1094 1095 1709 +5 572 573 1094 1095 1709 +5 572 573 1094 1095 1709 +5 572 573 1094 1095 1709 +2 572 1094 +2 572 1094 +2 572 1094 +2 572 1094 +2 572 1094 +2 572 1094 +3 573 1311 1757 +3 573 1311 1757 +3 573 1311 1757 +3 573 1311 1757 +3 573 1311 1757 +3 573 1311 1757 +7 573 574 1311 1312 1715 1757 1758 +7 573 574 1311 1312 1715 1757 1758 +7 573 574 1311 1312 1715 1757 1758 +7 573 574 1311 1312 1715 1757 1758 +7 573 574 1311 1312 1715 1757 1758 +7 573 574 1311 1312 1715 1757 1758 +3 573 574 1715 +3 573 574 1715 +3 573 574 1715 +3 573 574 1715 +3 573 574 1715 +3 573 574 1715 +6 573 574 1095 1096 1097 1715 +6 573 574 1095 1096 1097 1715 +6 573 574 1095 1096 1097 1715 +6 573 574 1095 1096 1097 1715 +6 573 574 1095 1096 1097 1715 +6 573 574 1095 1096 1097 1715 +2 573 1095 +2 573 1095 +2 573 1095 +2 573 1095 +2 573 1095 +2 573 1095 +3 574 1312 1758 +3 574 1312 1758 +3 574 1312 1758 +3 574 1312 1758 +3 574 1312 1758 +3 574 1312 1758 +3 574 1096 1097 +3 574 1096 1097 +3 574 1096 1097 +3 574 1096 1097 +3 574 1096 1097 +3 574 1096 1097 +3 575 1227 1270 +3 575 1227 1270 +3 575 1227 1270 +3 575 1227 1270 +3 575 1227 1270 +3 575 1227 1270 +11 575 576 583 585 1227 1228 1270 1271 1405 1406 1407 +11 575 576 583 585 1227 1228 1270 1271 1405 1406 1407 +11 575 576 583 585 1227 1228 1270 1271 1405 1406 1407 +11 575 576 583 585 1227 1228 1270 1271 1405 1406 1407 +11 575 576 583 585 1227 1228 1270 1271 1405 1406 1407 +11 575 576 583 585 1227 1228 1270 1271 1405 1406 1407 +4 575 576 1405 1407 +4 575 576 1405 1407 +4 575 576 1405 1407 +4 575 576 1405 1407 +4 575 576 1405 1407 +4 575 576 1405 1407 +8 575 576 1011 1012 1054 1055 1405 1407 +8 575 576 1011 1012 1054 1055 1405 1407 +8 575 576 1011 1012 1054 1055 1405 1407 +8 575 576 1011 1012 1054 1055 1405 1407 +8 575 576 1011 1012 1054 1055 1405 1407 +8 575 576 1011 1012 1054 1055 1405 1407 +3 575 1011 1054 +3 575 1011 1054 +3 575 1011 1054 +3 575 1011 1054 +3 575 1011 1054 +3 575 1011 1054 +4 576 583 1228 1271 +4 576 583 1228 1271 +4 576 583 1228 1271 +4 576 583 1228 1271 +4 576 583 1228 1271 +4 576 583 1228 1271 +10 576 578 580 583 1228 1229 1271 1272 1412 1413 +10 576 578 580 583 1228 1229 1271 1272 1412 1413 +10 576 578 580 583 1228 1229 1271 1272 1412 1413 +10 576 578 580 583 1228 1229 1271 1272 1412 1413 +10 576 578 580 583 1228 1229 1271 1272 1412 1413 +10 576 578 580 583 1228 1229 1271 1272 1412 1413 +4 576 578 1412 1413 +4 576 578 1412 1413 +4 576 578 1412 1413 +4 576 578 1412 1413 +4 576 578 1412 1413 +4 576 578 1412 1413 +8 576 578 1012 1013 1055 1056 1412 1413 +8 576 578 1012 1013 1055 1056 1412 1413 +8 576 578 1012 1013 1055 1056 1412 1413 +8 576 578 1012 1013 1055 1056 1412 1413 +8 576 578 1012 1013 1055 1056 1412 1413 +8 576 578 1012 1013 1055 1056 1412 1413 +3 576 1012 1055 +3 576 1012 1055 +3 576 1012 1055 +3 576 1012 1055 +3 576 1012 1055 +3 576 1012 1055 +10 577 578 579 580 1229 1230 1272 1273 1418 1419 +10 577 578 579 580 1229 1230 1272 1273 1418 1419 +10 577 578 579 580 1229 1230 1272 1273 1418 1419 +10 577 578 579 580 1229 1230 1272 1273 1418 1419 +10 577 578 579 580 1229 1230 1272 1273 1418 1419 +10 577 578 579 580 1229 1230 1272 1273 1418 1419 +4 577 579 1230 1273 +4 577 579 1230 1273 +4 577 579 1230 1273 +4 577 579 1230 1273 +4 577 579 1230 1273 +4 577 579 1230 1273 +10 577 579 581 1230 1231 1273 1274 1424 1425 1858 +10 577 579 581 1230 1231 1273 1274 1424 1425 1858 +10 577 579 581 1230 1231 1273 1274 1424 1425 1858 +10 577 579 581 1230 1231 1273 1274 1424 1425 1858 +10 577 579 581 1230 1231 1273 1274 1424 1425 1858 +10 577 579 581 1230 1231 1273 1274 1424 1425 1858 +2 577 580 +2 577 580 +2 577 580 +2 577 580 +2 577 580 +2 577 580 +1 577 +1 577 +1 577 +1 577 +1 577 +1 577 +2 577 1858 +2 577 1858 +2 577 1858 +2 577 1858 +2 577 1858 +2 577 1858 +4 578 580 1229 1272 +4 578 580 1229 1272 +4 578 580 1229 1272 +4 578 580 1229 1272 +4 578 580 1229 1272 +4 578 580 1229 1272 +4 578 579 1418 1419 +4 578 579 1418 1419 +4 578 579 1418 1419 +4 578 579 1418 1419 +4 578 579 1418 1419 +4 578 579 1418 1419 +8 578 579 1013 1014 1056 1057 1418 1419 +8 578 579 1013 1014 1056 1057 1418 1419 +8 578 579 1013 1014 1056 1057 1418 1419 +8 578 579 1013 1014 1056 1057 1418 1419 +8 578 579 1013 1014 1056 1057 1418 1419 +8 578 579 1013 1014 1056 1057 1418 1419 +3 578 1013 1056 +3 578 1013 1056 +3 578 1013 1056 +3 578 1013 1056 +3 578 1013 1056 +3 578 1013 1056 +4 579 581 1424 1425 +4 579 581 1424 1425 +4 579 581 1424 1425 +4 579 581 1424 1425 +4 579 581 1424 1425 +4 579 581 1424 1425 +8 579 581 1014 1015 1057 1058 1424 1425 +8 579 581 1014 1015 1057 1058 1424 1425 +8 579 581 1014 1015 1057 1058 1424 1425 +8 579 581 1014 1015 1057 1058 1424 1425 +8 579 581 1014 1015 1057 1058 1424 1425 +8 579 581 1014 1015 1057 1058 1424 1425 +3 579 1014 1057 +3 579 1014 1057 +3 579 1014 1057 +3 579 1014 1057 +3 579 1014 1057 +3 579 1014 1057 +2 580 583 +2 580 583 +2 580 583 +2 580 583 +2 580 583 +2 580 583 +1 580 +1 580 +1 580 +1 580 +1 580 +1 580 +4 581 1231 1274 1858 +4 581 1231 1274 1858 +4 581 1231 1274 1858 +4 581 1231 1274 1858 +4 581 1231 1274 1858 +4 581 1231 1274 1858 +10 581 582 1231 1232 1274 1275 1430 1431 1858 1859 +10 581 582 1231 1232 1274 1275 1430 1431 1858 1859 +10 581 582 1231 1232 1274 1275 1430 1431 1858 1859 +10 581 582 1231 1232 1274 1275 1430 1431 1858 1859 +10 581 582 1231 1232 1274 1275 1430 1431 1858 1859 +10 581 582 1231 1232 1274 1275 1430 1431 1858 1859 +4 581 582 1430 1431 +4 581 582 1430 1431 +4 581 582 1430 1431 +4 581 582 1430 1431 +4 581 582 1430 1431 +4 581 582 1430 1431 +8 581 582 1015 1016 1058 1059 1430 1431 +8 581 582 1015 1016 1058 1059 1430 1431 +8 581 582 1015 1016 1058 1059 1430 1431 +8 581 582 1015 1016 1058 1059 1430 1431 +8 581 582 1015 1016 1058 1059 1430 1431 +8 581 582 1015 1016 1058 1059 1430 1431 +3 581 1015 1058 +3 581 1015 1058 +3 581 1015 1058 +3 581 1015 1058 +3 581 1015 1058 +3 581 1015 1058 +4 582 1232 1275 1859 +4 582 1232 1275 1859 +4 582 1232 1275 1859 +4 582 1232 1275 1859 +4 582 1232 1275 1859 +4 582 1232 1275 1859 +10 582 584 1232 1233 1275 1276 1436 1437 1859 1860 +10 582 584 1232 1233 1275 1276 1436 1437 1859 1860 +10 582 584 1232 1233 1275 1276 1436 1437 1859 1860 +10 582 584 1232 1233 1275 1276 1436 1437 1859 1860 +10 582 584 1232 1233 1275 1276 1436 1437 1859 1860 +10 582 584 1232 1233 1275 1276 1436 1437 1859 1860 +4 582 584 1436 1437 +4 582 584 1436 1437 +4 582 584 1436 1437 +4 582 584 1436 1437 +4 582 584 1436 1437 +4 582 584 1436 1437 +8 582 584 1016 1017 1059 1060 1436 1437 +8 582 584 1016 1017 1059 1060 1436 1437 +8 582 584 1016 1017 1059 1060 1436 1437 +8 582 584 1016 1017 1059 1060 1436 1437 +8 582 584 1016 1017 1059 1060 1436 1437 +8 582 584 1016 1017 1059 1060 1436 1437 +3 582 1016 1059 +3 582 1016 1059 +3 582 1016 1059 +3 582 1016 1059 +3 582 1016 1059 +3 582 1016 1059 +2 583 585 +2 583 585 +2 583 585 +2 583 585 +2 583 585 +2 583 585 +4 584 1233 1276 1860 +4 584 1233 1276 1860 +4 584 1233 1276 1860 +4 584 1233 1276 1860 +4 584 1233 1276 1860 +4 584 1233 1276 1860 +10 584 586 1233 1234 1276 1277 1442 1443 1860 1862 +10 584 586 1233 1234 1276 1277 1442 1443 1860 1862 +10 584 586 1233 1234 1276 1277 1442 1443 1860 1862 +10 584 586 1233 1234 1276 1277 1442 1443 1860 1862 +10 584 586 1233 1234 1276 1277 1442 1443 1860 1862 +10 584 586 1233 1234 1276 1277 1442 1443 1860 1862 +4 584 586 1442 1443 +4 584 586 1442 1443 +4 584 586 1442 1443 +4 584 586 1442 1443 +4 584 586 1442 1443 +4 584 586 1442 1443 +8 584 586 1017 1018 1060 1061 1442 1443 +8 584 586 1017 1018 1060 1061 1442 1443 +8 584 586 1017 1018 1060 1061 1442 1443 +8 584 586 1017 1018 1060 1061 1442 1443 +8 584 586 1017 1018 1060 1061 1442 1443 +8 584 586 1017 1018 1060 1061 1442 1443 +3 584 1017 1060 +3 584 1017 1060 +3 584 1017 1060 +3 584 1017 1060 +3 584 1017 1060 +3 584 1017 1060 +4 585 1406 2318 3052 +4 585 1406 2318 3052 +4 585 1406 2318 3052 +4 585 1406 2318 3052 +4 585 1406 2318 3052 +4 585 1406 2318 3052 +2 585 1406 +2 585 1406 +2 585 1406 +2 585 1406 +2 585 1406 +2 585 1406 +2 585 3052 +2 585 3052 +2 585 3052 +2 585 3052 +2 585 3052 +2 585 3052 +2 585 3052 +2 585 3052 +2 585 3052 +2 585 3052 +2 585 3052 +2 585 3052 +1 585 +1 585 +1 585 +1 585 +1 585 +1 585 +4 586 1234 1277 1862 +4 586 1234 1277 1862 +4 586 1234 1277 1862 +4 586 1234 1277 1862 +4 586 1234 1277 1862 +4 586 1234 1277 1862 +11 586 587 1234 1235 1277 1278 1449 1450 1451 1861 1862 +11 586 587 1234 1235 1277 1278 1449 1450 1451 1861 1862 +11 586 587 1234 1235 1277 1278 1449 1450 1451 1861 1862 +11 586 587 1234 1235 1277 1278 1449 1450 1451 1861 1862 +11 586 587 1234 1235 1277 1278 1449 1450 1451 1861 1862 +11 586 587 1234 1235 1277 1278 1449 1450 1451 1861 1862 +4 586 587 1449 1451 +4 586 587 1449 1451 +4 586 587 1449 1451 +4 586 587 1449 1451 +4 586 587 1449 1451 +4 586 587 1449 1451 +8 586 587 1018 1019 1061 1062 1449 1451 +8 586 587 1018 1019 1061 1062 1449 1451 +8 586 587 1018 1019 1061 1062 1449 1451 +8 586 587 1018 1019 1061 1062 1449 1451 +8 586 587 1018 1019 1061 1062 1449 1451 +8 586 587 1018 1019 1061 1062 1449 1451 +3 586 1018 1061 +3 586 1018 1061 +3 586 1018 1061 +3 586 1018 1061 +3 586 1018 1061 +3 586 1018 1061 +3 587 1235 1278 +3 587 1235 1278 +3 587 1235 1278 +3 587 1235 1278 +3 587 1235 1278 +3 587 1235 1278 +8 587 588 1235 1236 1278 1279 1456 1457 +8 587 588 1235 1236 1278 1279 1456 1457 +8 587 588 1235 1236 1278 1279 1456 1457 +8 587 588 1235 1236 1278 1279 1456 1457 +8 587 588 1235 1236 1278 1279 1456 1457 +8 587 588 1235 1236 1278 1279 1456 1457 +4 587 588 1456 1457 +4 587 588 1456 1457 +4 587 588 1456 1457 +4 587 588 1456 1457 +4 587 588 1456 1457 +4 587 588 1456 1457 +8 587 588 1019 1020 1062 1063 1456 1457 +8 587 588 1019 1020 1062 1063 1456 1457 +8 587 588 1019 1020 1062 1063 1456 1457 +8 587 588 1019 1020 1062 1063 1456 1457 +8 587 588 1019 1020 1062 1063 1456 1457 +8 587 588 1019 1020 1062 1063 1456 1457 +3 587 1019 1062 +3 587 1019 1062 +3 587 1019 1062 +3 587 1019 1062 +3 587 1019 1062 +3 587 1019 1062 +3 588 1236 1279 +3 588 1236 1279 +3 588 1236 1279 +3 588 1236 1279 +3 588 1236 1279 +3 588 1236 1279 +10 588 589 590 1236 1237 1279 1280 1463 1464 1465 +10 588 589 590 1236 1237 1279 1280 1463 1464 1465 +10 588 589 590 1236 1237 1279 1280 1463 1464 1465 +10 588 589 590 1236 1237 1279 1280 1463 1464 1465 +10 588 589 590 1236 1237 1279 1280 1463 1464 1465 +10 588 589 590 1236 1237 1279 1280 1463 1464 1465 +4 588 590 1463 1465 +4 588 590 1463 1465 +4 588 590 1463 1465 +4 588 590 1463 1465 +4 588 590 1463 1465 +4 588 590 1463 1465 +8 588 590 1020 1021 1063 1064 1463 1465 +8 588 590 1020 1021 1063 1064 1463 1465 +8 588 590 1020 1021 1063 1064 1463 1465 +8 588 590 1020 1021 1063 1064 1463 1465 +8 588 590 1020 1021 1063 1064 1463 1465 +8 588 590 1020 1021 1063 1064 1463 1465 +3 588 1020 1063 +3 588 1020 1063 +3 588 1020 1063 +3 588 1020 1063 +3 588 1020 1063 +3 588 1020 1063 +6 589 1378 1389 1464 2260 3048 +6 589 1378 1389 1464 2260 3048 +6 589 1378 1389 1464 2260 3048 +6 589 1378 1389 1464 2260 3048 +6 589 1378 1389 1464 2260 3048 +6 589 1378 1389 1464 2260 3048 +4 589 1378 1389 3048 +4 589 1378 1389 3048 +4 589 1378 1389 3048 +4 589 1378 1389 3048 +4 589 1378 1389 3048 +4 589 1378 1389 3048 +6 589 1378 1389 1472 2252 3048 +6 589 1378 1389 1472 2252 3048 +6 589 1378 1389 1472 2252 3048 +6 589 1378 1389 1472 2252 3048 +6 589 1378 1389 1472 2252 3048 +6 589 1378 1389 1472 2252 3048 +2 589 1472 +2 589 1472 +2 589 1472 +2 589 1472 +2 589 1472 +2 589 1472 +10 589 590 591 1237 1238 1280 1281 1471 1472 1473 +10 589 590 591 1237 1238 1280 1281 1471 1472 1473 +10 589 590 591 1237 1238 1280 1281 1471 1472 1473 +10 589 590 591 1237 1238 1280 1281 1471 1472 1473 +10 589 590 591 1237 1238 1280 1281 1471 1472 1473 +10 589 590 591 1237 1238 1280 1281 1471 1472 1473 +4 589 590 1237 1280 +4 589 590 1237 1280 +4 589 590 1237 1280 +4 589 590 1237 1280 +4 589 590 1237 1280 +4 589 590 1237 1280 +2 589 1464 +2 589 1464 +2 589 1464 +2 589 1464 +2 589 1464 +2 589 1464 +4 590 591 1471 1473 +4 590 591 1471 1473 +4 590 591 1471 1473 +4 590 591 1471 1473 +4 590 591 1471 1473 +4 590 591 1471 1473 +8 590 591 1021 1022 1064 1065 1471 1473 +8 590 591 1021 1022 1064 1065 1471 1473 +8 590 591 1021 1022 1064 1065 1471 1473 +8 590 591 1021 1022 1064 1065 1471 1473 +8 590 591 1021 1022 1064 1065 1471 1473 +8 590 591 1021 1022 1064 1065 1471 1473 +3 590 1021 1064 +3 590 1021 1064 +3 590 1021 1064 +3 590 1021 1064 +3 590 1021 1064 +3 590 1021 1064 +3 591 1238 1281 +3 591 1238 1281 +3 591 1238 1281 +3 591 1238 1281 +3 591 1238 1281 +3 591 1238 1281 +8 591 592 1238 1239 1281 1282 1478 1479 +8 591 592 1238 1239 1281 1282 1478 1479 +8 591 592 1238 1239 1281 1282 1478 1479 +8 591 592 1238 1239 1281 1282 1478 1479 +8 591 592 1238 1239 1281 1282 1478 1479 +8 591 592 1238 1239 1281 1282 1478 1479 +4 591 592 1478 1479 +4 591 592 1478 1479 +4 591 592 1478 1479 +4 591 592 1478 1479 +4 591 592 1478 1479 +4 591 592 1478 1479 +8 591 592 1022 1023 1065 1066 1478 1479 +8 591 592 1022 1023 1065 1066 1478 1479 +8 591 592 1022 1023 1065 1066 1478 1479 +8 591 592 1022 1023 1065 1066 1478 1479 +8 591 592 1022 1023 1065 1066 1478 1479 +8 591 592 1022 1023 1065 1066 1478 1479 +3 591 1022 1065 +3 591 1022 1065 +3 591 1022 1065 +3 591 1022 1065 +3 591 1022 1065 +3 591 1022 1065 +3 592 1239 1282 +3 592 1239 1282 +3 592 1239 1282 +3 592 1239 1282 +3 592 1239 1282 +3 592 1239 1282 +11 592 593 594 1239 1240 1282 1283 1486 1487 1488 1489 +11 592 593 594 1239 1240 1282 1283 1486 1487 1488 1489 +11 592 593 594 1239 1240 1282 1283 1486 1487 1488 1489 +11 592 593 594 1239 1240 1282 1283 1486 1487 1488 1489 +11 592 593 594 1239 1240 1282 1283 1486 1487 1488 1489 +11 592 593 594 1239 1240 1282 1283 1486 1487 1488 1489 +4 592 594 1487 1489 +4 592 594 1487 1489 +4 592 594 1487 1489 +4 592 594 1487 1489 +4 592 594 1487 1489 +4 592 594 1487 1489 +8 592 594 1023 1024 1066 1067 1487 1489 +8 592 594 1023 1024 1066 1067 1487 1489 +8 592 594 1023 1024 1066 1067 1487 1489 +8 592 594 1023 1024 1066 1067 1487 1489 +8 592 594 1023 1024 1066 1067 1487 1489 +8 592 594 1023 1024 1066 1067 1487 1489 +3 592 1023 1066 +3 592 1023 1066 +3 592 1023 1066 +3 592 1023 1066 +3 592 1023 1066 +3 592 1023 1066 +8 593 1379 1390 1486 1488 2236 2238 3044 +8 593 1379 1390 1486 1488 2236 2238 3044 +8 593 1379 1390 1486 1488 2236 2238 3044 +8 593 1379 1390 1486 1488 2236 2238 3044 +8 593 1379 1390 1486 1488 2236 2238 3044 +8 593 1379 1390 1486 1488 2236 2238 3044 +4 593 1379 1390 3044 +4 593 1379 1390 3044 +4 593 1379 1390 3044 +4 593 1379 1390 3044 +4 593 1379 1390 3044 +4 593 1379 1390 3044 +8 593 1379 1390 1496 1498 2226 2228 3044 +8 593 1379 1390 1496 1498 2226 2228 3044 +8 593 1379 1390 1496 1498 2226 2228 3044 +8 593 1379 1390 1496 1498 2226 2228 3044 +8 593 1379 1390 1496 1498 2226 2228 3044 +8 593 1379 1390 1496 1498 2226 2228 3044 +3 593 1496 1498 +3 593 1496 1498 +3 593 1496 1498 +3 593 1496 1498 +3 593 1496 1498 +3 593 1496 1498 +11 593 594 595 1240 1241 1283 1284 1496 1497 1498 1499 +11 593 594 595 1240 1241 1283 1284 1496 1497 1498 1499 +11 593 594 595 1240 1241 1283 1284 1496 1497 1498 1499 +11 593 594 595 1240 1241 1283 1284 1496 1497 1498 1499 +11 593 594 595 1240 1241 1283 1284 1496 1497 1498 1499 +11 593 594 595 1240 1241 1283 1284 1496 1497 1498 1499 +4 593 594 1240 1283 +4 593 594 1240 1283 +4 593 594 1240 1283 +4 593 594 1240 1283 +4 593 594 1240 1283 +4 593 594 1240 1283 +3 593 1486 1488 +3 593 1486 1488 +3 593 1486 1488 +3 593 1486 1488 +3 593 1486 1488 +3 593 1486 1488 +4 594 595 1497 1499 +4 594 595 1497 1499 +4 594 595 1497 1499 +4 594 595 1497 1499 +4 594 595 1497 1499 +4 594 595 1497 1499 +8 594 595 1024 1025 1067 1068 1497 1499 +8 594 595 1024 1025 1067 1068 1497 1499 +8 594 595 1024 1025 1067 1068 1497 1499 +8 594 595 1024 1025 1067 1068 1497 1499 +8 594 595 1024 1025 1067 1068 1497 1499 +8 594 595 1024 1025 1067 1068 1497 1499 +3 594 1024 1067 +3 594 1024 1067 +3 594 1024 1067 +3 594 1024 1067 +3 594 1024 1067 +3 594 1024 1067 +3 595 1241 1284 +3 595 1241 1284 +3 595 1241 1284 +3 595 1241 1284 +3 595 1241 1284 +3 595 1241 1284 +8 595 596 1241 1242 1284 1285 1504 1505 +8 595 596 1241 1242 1284 1285 1504 1505 +8 595 596 1241 1242 1284 1285 1504 1505 +8 595 596 1241 1242 1284 1285 1504 1505 +8 595 596 1241 1242 1284 1285 1504 1505 +8 595 596 1241 1242 1284 1285 1504 1505 +4 595 596 1504 1505 +4 595 596 1504 1505 +4 595 596 1504 1505 +4 595 596 1504 1505 +4 595 596 1504 1505 +4 595 596 1504 1505 +8 595 596 1025 1026 1068 1069 1504 1505 +8 595 596 1025 1026 1068 1069 1504 1505 +8 595 596 1025 1026 1068 1069 1504 1505 +8 595 596 1025 1026 1068 1069 1504 1505 +8 595 596 1025 1026 1068 1069 1504 1505 +8 595 596 1025 1026 1068 1069 1504 1505 +3 595 1025 1068 +3 595 1025 1068 +3 595 1025 1068 +3 595 1025 1068 +3 595 1025 1068 +3 595 1025 1068 +3 596 1242 1285 +3 596 1242 1285 +3 596 1242 1285 +3 596 1242 1285 +3 596 1242 1285 +3 596 1242 1285 +10 596 597 598 1242 1243 1285 1286 1511 1512 1513 +10 596 597 598 1242 1243 1285 1286 1511 1512 1513 +10 596 597 598 1242 1243 1285 1286 1511 1512 1513 +10 596 597 598 1242 1243 1285 1286 1511 1512 1513 +10 596 597 598 1242 1243 1285 1286 1511 1512 1513 +10 596 597 598 1242 1243 1285 1286 1511 1512 1513 +4 596 598 1511 1513 +4 596 598 1511 1513 +4 596 598 1511 1513 +4 596 598 1511 1513 +4 596 598 1511 1513 +4 596 598 1511 1513 +8 596 598 1026 1027 1069 1070 1511 1513 +8 596 598 1026 1027 1069 1070 1511 1513 +8 596 598 1026 1027 1069 1070 1511 1513 +8 596 598 1026 1027 1069 1070 1511 1513 +8 596 598 1026 1027 1069 1070 1511 1513 +8 596 598 1026 1027 1069 1070 1511 1513 +3 596 1026 1069 +3 596 1026 1069 +3 596 1026 1069 +3 596 1026 1069 +3 596 1026 1069 +3 596 1026 1069 +6 597 1380 1391 1512 2212 3040 +6 597 1380 1391 1512 2212 3040 +6 597 1380 1391 1512 2212 3040 +6 597 1380 1391 1512 2212 3040 +6 597 1380 1391 1512 2212 3040 +6 597 1380 1391 1512 2212 3040 +4 597 1380 1391 3040 +4 597 1380 1391 3040 +4 597 1380 1391 3040 +4 597 1380 1391 3040 +4 597 1380 1391 3040 +4 597 1380 1391 3040 +6 597 1380 1391 1520 2204 3040 +6 597 1380 1391 1520 2204 3040 +6 597 1380 1391 1520 2204 3040 +6 597 1380 1391 1520 2204 3040 +6 597 1380 1391 1520 2204 3040 +6 597 1380 1391 1520 2204 3040 +2 597 1520 +2 597 1520 +2 597 1520 +2 597 1520 +2 597 1520 +2 597 1520 +10 597 598 599 1243 1244 1286 1287 1519 1520 1521 +10 597 598 599 1243 1244 1286 1287 1519 1520 1521 +10 597 598 599 1243 1244 1286 1287 1519 1520 1521 +10 597 598 599 1243 1244 1286 1287 1519 1520 1521 +10 597 598 599 1243 1244 1286 1287 1519 1520 1521 +10 597 598 599 1243 1244 1286 1287 1519 1520 1521 +4 597 598 1243 1286 +4 597 598 1243 1286 +4 597 598 1243 1286 +4 597 598 1243 1286 +4 597 598 1243 1286 +4 597 598 1243 1286 +2 597 1512 +2 597 1512 +2 597 1512 +2 597 1512 +2 597 1512 +2 597 1512 +4 598 599 1519 1521 +4 598 599 1519 1521 +4 598 599 1519 1521 +4 598 599 1519 1521 +4 598 599 1519 1521 +4 598 599 1519 1521 +8 598 599 1027 1028 1070 1071 1519 1521 +8 598 599 1027 1028 1070 1071 1519 1521 +8 598 599 1027 1028 1070 1071 1519 1521 +8 598 599 1027 1028 1070 1071 1519 1521 +8 598 599 1027 1028 1070 1071 1519 1521 +8 598 599 1027 1028 1070 1071 1519 1521 +3 598 1027 1070 +3 598 1027 1070 +3 598 1027 1070 +3 598 1027 1070 +3 598 1027 1070 +3 598 1027 1070 +3 599 1244 1287 +3 599 1244 1287 +3 599 1244 1287 +3 599 1244 1287 +3 599 1244 1287 +3 599 1244 1287 +8 599 600 1244 1245 1287 1288 1526 1527 +8 599 600 1244 1245 1287 1288 1526 1527 +8 599 600 1244 1245 1287 1288 1526 1527 +8 599 600 1244 1245 1287 1288 1526 1527 +8 599 600 1244 1245 1287 1288 1526 1527 +8 599 600 1244 1245 1287 1288 1526 1527 +4 599 600 1526 1527 +4 599 600 1526 1527 +4 599 600 1526 1527 +4 599 600 1526 1527 +4 599 600 1526 1527 +4 599 600 1526 1527 +8 599 600 1028 1029 1071 1072 1526 1527 +8 599 600 1028 1029 1071 1072 1526 1527 +8 599 600 1028 1029 1071 1072 1526 1527 +8 599 600 1028 1029 1071 1072 1526 1527 +8 599 600 1028 1029 1071 1072 1526 1527 +8 599 600 1028 1029 1071 1072 1526 1527 +3 599 1028 1071 +3 599 1028 1071 +3 599 1028 1071 +3 599 1028 1071 +3 599 1028 1071 +3 599 1028 1071 +3 600 1245 1288 +3 600 1245 1288 +3 600 1245 1288 +3 600 1245 1288 +3 600 1245 1288 +3 600 1245 1288 +11 600 601 602 1245 1246 1288 1289 1534 1535 1536 1537 +11 600 601 602 1245 1246 1288 1289 1534 1535 1536 1537 +11 600 601 602 1245 1246 1288 1289 1534 1535 1536 1537 +11 600 601 602 1245 1246 1288 1289 1534 1535 1536 1537 +11 600 601 602 1245 1246 1288 1289 1534 1535 1536 1537 +11 600 601 602 1245 1246 1288 1289 1534 1535 1536 1537 +4 600 602 1535 1537 +4 600 602 1535 1537 +4 600 602 1535 1537 +4 600 602 1535 1537 +4 600 602 1535 1537 +4 600 602 1535 1537 +8 600 602 1029 1030 1072 1073 1535 1537 +8 600 602 1029 1030 1072 1073 1535 1537 +8 600 602 1029 1030 1072 1073 1535 1537 +8 600 602 1029 1030 1072 1073 1535 1537 +8 600 602 1029 1030 1072 1073 1535 1537 +8 600 602 1029 1030 1072 1073 1535 1537 +3 600 1029 1072 +3 600 1029 1072 +3 600 1029 1072 +3 600 1029 1072 +3 600 1029 1072 +3 600 1029 1072 +8 601 1381 1392 1534 1536 2188 2190 3036 +8 601 1381 1392 1534 1536 2188 2190 3036 +8 601 1381 1392 1534 1536 2188 2190 3036 +8 601 1381 1392 1534 1536 2188 2190 3036 +8 601 1381 1392 1534 1536 2188 2190 3036 +8 601 1381 1392 1534 1536 2188 2190 3036 +4 601 1381 1392 3036 +4 601 1381 1392 3036 +4 601 1381 1392 3036 +4 601 1381 1392 3036 +4 601 1381 1392 3036 +4 601 1381 1392 3036 +6 601 1381 1392 1544 2180 3036 +6 601 1381 1392 1544 2180 3036 +6 601 1381 1392 1544 2180 3036 +6 601 1381 1392 1544 2180 3036 +6 601 1381 1392 1544 2180 3036 +6 601 1381 1392 1544 2180 3036 +2 601 1544 +2 601 1544 +2 601 1544 +2 601 1544 +2 601 1544 +2 601 1544 +10 601 602 603 1246 1247 1289 1290 1543 1544 1545 +10 601 602 603 1246 1247 1289 1290 1543 1544 1545 +10 601 602 603 1246 1247 1289 1290 1543 1544 1545 +10 601 602 603 1246 1247 1289 1290 1543 1544 1545 +10 601 602 603 1246 1247 1289 1290 1543 1544 1545 +10 601 602 603 1246 1247 1289 1290 1543 1544 1545 +4 601 602 1246 1289 +4 601 602 1246 1289 +4 601 602 1246 1289 +4 601 602 1246 1289 +4 601 602 1246 1289 +4 601 602 1246 1289 +3 601 1534 1536 +3 601 1534 1536 +3 601 1534 1536 +3 601 1534 1536 +3 601 1534 1536 +3 601 1534 1536 +4 602 603 1543 1545 +4 602 603 1543 1545 +4 602 603 1543 1545 +4 602 603 1543 1545 +4 602 603 1543 1545 +4 602 603 1543 1545 +8 602 603 1030 1031 1073 1074 1543 1545 +8 602 603 1030 1031 1073 1074 1543 1545 +8 602 603 1030 1031 1073 1074 1543 1545 +8 602 603 1030 1031 1073 1074 1543 1545 +8 602 603 1030 1031 1073 1074 1543 1545 +8 602 603 1030 1031 1073 1074 1543 1545 +3 602 1030 1073 +3 602 1030 1073 +3 602 1030 1073 +3 602 1030 1073 +3 602 1030 1073 +3 602 1030 1073 +3 603 1247 1290 +3 603 1247 1290 +3 603 1247 1290 +3 603 1247 1290 +3 603 1247 1290 +3 603 1247 1290 +8 603 604 1247 1248 1290 1291 1550 1551 +8 603 604 1247 1248 1290 1291 1550 1551 +8 603 604 1247 1248 1290 1291 1550 1551 +8 603 604 1247 1248 1290 1291 1550 1551 +8 603 604 1247 1248 1290 1291 1550 1551 +8 603 604 1247 1248 1290 1291 1550 1551 +4 603 604 1550 1551 +4 603 604 1550 1551 +4 603 604 1550 1551 +4 603 604 1550 1551 +4 603 604 1550 1551 +4 603 604 1550 1551 +8 603 604 1031 1032 1074 1075 1550 1551 +8 603 604 1031 1032 1074 1075 1550 1551 +8 603 604 1031 1032 1074 1075 1550 1551 +8 603 604 1031 1032 1074 1075 1550 1551 +8 603 604 1031 1032 1074 1075 1550 1551 +8 603 604 1031 1032 1074 1075 1550 1551 +3 603 1031 1074 +3 603 1031 1074 +3 603 1031 1074 +3 603 1031 1074 +3 603 1031 1074 +3 603 1031 1074 +3 604 1248 1291 +3 604 1248 1291 +3 604 1248 1291 +3 604 1248 1291 +3 604 1248 1291 +3 604 1248 1291 +10 604 605 606 1248 1249 1291 1292 1557 1558 1559 +10 604 605 606 1248 1249 1291 1292 1557 1558 1559 +10 604 605 606 1248 1249 1291 1292 1557 1558 1559 +10 604 605 606 1248 1249 1291 1292 1557 1558 1559 +10 604 605 606 1248 1249 1291 1292 1557 1558 1559 +10 604 605 606 1248 1249 1291 1292 1557 1558 1559 +4 604 606 1557 1559 +4 604 606 1557 1559 +4 604 606 1557 1559 +4 604 606 1557 1559 +4 604 606 1557 1559 +4 604 606 1557 1559 +8 604 606 1032 1033 1075 1076 1557 1559 +8 604 606 1032 1033 1075 1076 1557 1559 +8 604 606 1032 1033 1075 1076 1557 1559 +8 604 606 1032 1033 1075 1076 1557 1559 +8 604 606 1032 1033 1075 1076 1557 1559 +8 604 606 1032 1033 1075 1076 1557 1559 +3 604 1032 1075 +3 604 1032 1075 +3 604 1032 1075 +3 604 1032 1075 +3 604 1032 1075 +3 604 1032 1075 +6 605 1382 1393 1558 2166 3032 +6 605 1382 1393 1558 2166 3032 +6 605 1382 1393 1558 2166 3032 +6 605 1382 1393 1558 2166 3032 +6 605 1382 1393 1558 2166 3032 +6 605 1382 1393 1558 2166 3032 +4 605 1382 1393 3032 +4 605 1382 1393 3032 +4 605 1382 1393 3032 +4 605 1382 1393 3032 +4 605 1382 1393 3032 +4 605 1382 1393 3032 +6 605 1382 1393 1566 2158 3032 +6 605 1382 1393 1566 2158 3032 +6 605 1382 1393 1566 2158 3032 +6 605 1382 1393 1566 2158 3032 +6 605 1382 1393 1566 2158 3032 +6 605 1382 1393 1566 2158 3032 +2 605 1566 +2 605 1566 +2 605 1566 +2 605 1566 +2 605 1566 +2 605 1566 +10 605 606 607 1249 1250 1292 1293 1565 1566 1567 +10 605 606 607 1249 1250 1292 1293 1565 1566 1567 +10 605 606 607 1249 1250 1292 1293 1565 1566 1567 +10 605 606 607 1249 1250 1292 1293 1565 1566 1567 +10 605 606 607 1249 1250 1292 1293 1565 1566 1567 +10 605 606 607 1249 1250 1292 1293 1565 1566 1567 +4 605 606 1249 1292 +4 605 606 1249 1292 +4 605 606 1249 1292 +4 605 606 1249 1292 +4 605 606 1249 1292 +4 605 606 1249 1292 +2 605 1558 +2 605 1558 +2 605 1558 +2 605 1558 +2 605 1558 +2 605 1558 +4 606 607 1565 1567 +4 606 607 1565 1567 +4 606 607 1565 1567 +4 606 607 1565 1567 +4 606 607 1565 1567 +4 606 607 1565 1567 +8 606 607 1033 1034 1076 1077 1565 1567 +8 606 607 1033 1034 1076 1077 1565 1567 +8 606 607 1033 1034 1076 1077 1565 1567 +8 606 607 1033 1034 1076 1077 1565 1567 +8 606 607 1033 1034 1076 1077 1565 1567 +8 606 607 1033 1034 1076 1077 1565 1567 +3 606 1033 1076 +3 606 1033 1076 +3 606 1033 1076 +3 606 1033 1076 +3 606 1033 1076 +3 606 1033 1076 +3 607 1250 1293 +3 607 1250 1293 +3 607 1250 1293 +3 607 1250 1293 +3 607 1250 1293 +3 607 1250 1293 +8 607 608 1250 1251 1293 1294 1572 1573 +8 607 608 1250 1251 1293 1294 1572 1573 +8 607 608 1250 1251 1293 1294 1572 1573 +8 607 608 1250 1251 1293 1294 1572 1573 +8 607 608 1250 1251 1293 1294 1572 1573 +8 607 608 1250 1251 1293 1294 1572 1573 +4 607 608 1572 1573 +4 607 608 1572 1573 +4 607 608 1572 1573 +4 607 608 1572 1573 +4 607 608 1572 1573 +4 607 608 1572 1573 +8 607 608 1034 1035 1077 1078 1572 1573 +8 607 608 1034 1035 1077 1078 1572 1573 +8 607 608 1034 1035 1077 1078 1572 1573 +8 607 608 1034 1035 1077 1078 1572 1573 +8 607 608 1034 1035 1077 1078 1572 1573 +8 607 608 1034 1035 1077 1078 1572 1573 +3 607 1034 1077 +3 607 1034 1077 +3 607 1034 1077 +3 607 1034 1077 +3 607 1034 1077 +3 607 1034 1077 +3 608 1251 1294 +3 608 1251 1294 +3 608 1251 1294 +3 608 1251 1294 +3 608 1251 1294 +3 608 1251 1294 +11 608 609 610 1251 1252 1294 1295 1580 1581 1582 1583 +11 608 609 610 1251 1252 1294 1295 1580 1581 1582 1583 +11 608 609 610 1251 1252 1294 1295 1580 1581 1582 1583 +11 608 609 610 1251 1252 1294 1295 1580 1581 1582 1583 +11 608 609 610 1251 1252 1294 1295 1580 1581 1582 1583 +11 608 609 610 1251 1252 1294 1295 1580 1581 1582 1583 +4 608 610 1581 1583 +4 608 610 1581 1583 +4 608 610 1581 1583 +4 608 610 1581 1583 +4 608 610 1581 1583 +4 608 610 1581 1583 +8 608 610 1035 1036 1078 1079 1581 1583 +8 608 610 1035 1036 1078 1079 1581 1583 +8 608 610 1035 1036 1078 1079 1581 1583 +8 608 610 1035 1036 1078 1079 1581 1583 +8 608 610 1035 1036 1078 1079 1581 1583 +8 608 610 1035 1036 1078 1079 1581 1583 +3 608 1035 1078 +3 608 1035 1078 +3 608 1035 1078 +3 608 1035 1078 +3 608 1035 1078 +3 608 1035 1078 +8 609 1383 1394 1580 1582 2142 2144 3028 +8 609 1383 1394 1580 1582 2142 2144 3028 +8 609 1383 1394 1580 1582 2142 2144 3028 +8 609 1383 1394 1580 1582 2142 2144 3028 +8 609 1383 1394 1580 1582 2142 2144 3028 +8 609 1383 1394 1580 1582 2142 2144 3028 +4 609 1383 1394 3028 +4 609 1383 1394 3028 +4 609 1383 1394 3028 +4 609 1383 1394 3028 +4 609 1383 1394 3028 +4 609 1383 1394 3028 +6 609 1383 1394 1590 2134 3028 +6 609 1383 1394 1590 2134 3028 +6 609 1383 1394 1590 2134 3028 +6 609 1383 1394 1590 2134 3028 +6 609 1383 1394 1590 2134 3028 +6 609 1383 1394 1590 2134 3028 +2 609 1590 +2 609 1590 +2 609 1590 +2 609 1590 +2 609 1590 +2 609 1590 +10 609 610 611 1252 1253 1295 1296 1589 1590 1591 +10 609 610 611 1252 1253 1295 1296 1589 1590 1591 +10 609 610 611 1252 1253 1295 1296 1589 1590 1591 +10 609 610 611 1252 1253 1295 1296 1589 1590 1591 +10 609 610 611 1252 1253 1295 1296 1589 1590 1591 +10 609 610 611 1252 1253 1295 1296 1589 1590 1591 +4 609 610 1252 1295 +4 609 610 1252 1295 +4 609 610 1252 1295 +4 609 610 1252 1295 +4 609 610 1252 1295 +4 609 610 1252 1295 +3 609 1580 1582 +3 609 1580 1582 +3 609 1580 1582 +3 609 1580 1582 +3 609 1580 1582 +3 609 1580 1582 +4 610 611 1589 1591 +4 610 611 1589 1591 +4 610 611 1589 1591 +4 610 611 1589 1591 +4 610 611 1589 1591 +4 610 611 1589 1591 +8 610 611 1036 1037 1079 1080 1589 1591 +8 610 611 1036 1037 1079 1080 1589 1591 +8 610 611 1036 1037 1079 1080 1589 1591 +8 610 611 1036 1037 1079 1080 1589 1591 +8 610 611 1036 1037 1079 1080 1589 1591 +8 610 611 1036 1037 1079 1080 1589 1591 +3 610 1036 1079 +3 610 1036 1079 +3 610 1036 1079 +3 610 1036 1079 +3 610 1036 1079 +3 610 1036 1079 +3 611 1253 1296 +3 611 1253 1296 +3 611 1253 1296 +3 611 1253 1296 +3 611 1253 1296 +3 611 1253 1296 +8 611 612 1253 1254 1296 1297 1596 1597 +8 611 612 1253 1254 1296 1297 1596 1597 +8 611 612 1253 1254 1296 1297 1596 1597 +8 611 612 1253 1254 1296 1297 1596 1597 +8 611 612 1253 1254 1296 1297 1596 1597 +8 611 612 1253 1254 1296 1297 1596 1597 +4 611 612 1596 1597 +4 611 612 1596 1597 +4 611 612 1596 1597 +4 611 612 1596 1597 +4 611 612 1596 1597 +4 611 612 1596 1597 +8 611 612 1037 1038 1080 1081 1596 1597 +8 611 612 1037 1038 1080 1081 1596 1597 +8 611 612 1037 1038 1080 1081 1596 1597 +8 611 612 1037 1038 1080 1081 1596 1597 +8 611 612 1037 1038 1080 1081 1596 1597 +8 611 612 1037 1038 1080 1081 1596 1597 +3 611 1037 1080 +3 611 1037 1080 +3 611 1037 1080 +3 611 1037 1080 +3 611 1037 1080 +3 611 1037 1080 +3 612 1254 1297 +3 612 1254 1297 +3 612 1254 1297 +3 612 1254 1297 +3 612 1254 1297 +3 612 1254 1297 +10 612 613 614 1254 1255 1297 1298 1603 1604 1605 +10 612 613 614 1254 1255 1297 1298 1603 1604 1605 +10 612 613 614 1254 1255 1297 1298 1603 1604 1605 +10 612 613 614 1254 1255 1297 1298 1603 1604 1605 +10 612 613 614 1254 1255 1297 1298 1603 1604 1605 +10 612 613 614 1254 1255 1297 1298 1603 1604 1605 +4 612 614 1603 1605 +4 612 614 1603 1605 +4 612 614 1603 1605 +4 612 614 1603 1605 +4 612 614 1603 1605 +4 612 614 1603 1605 +8 612 614 1038 1039 1081 1082 1603 1605 +8 612 614 1038 1039 1081 1082 1603 1605 +8 612 614 1038 1039 1081 1082 1603 1605 +8 612 614 1038 1039 1081 1082 1603 1605 +8 612 614 1038 1039 1081 1082 1603 1605 +8 612 614 1038 1039 1081 1082 1603 1605 +3 612 1038 1081 +3 612 1038 1081 +3 612 1038 1081 +3 612 1038 1081 +3 612 1038 1081 +3 612 1038 1081 +6 613 1384 1395 1604 2120 3024 +6 613 1384 1395 1604 2120 3024 +6 613 1384 1395 1604 2120 3024 +6 613 1384 1395 1604 2120 3024 +6 613 1384 1395 1604 2120 3024 +6 613 1384 1395 1604 2120 3024 +4 613 1384 1395 3024 +4 613 1384 1395 3024 +4 613 1384 1395 3024 +4 613 1384 1395 3024 +4 613 1384 1395 3024 +4 613 1384 1395 3024 +6 613 1384 1395 1612 2112 3024 +6 613 1384 1395 1612 2112 3024 +6 613 1384 1395 1612 2112 3024 +6 613 1384 1395 1612 2112 3024 +6 613 1384 1395 1612 2112 3024 +6 613 1384 1395 1612 2112 3024 +2 613 1612 +2 613 1612 +2 613 1612 +2 613 1612 +2 613 1612 +2 613 1612 +10 613 614 615 1255 1256 1298 1299 1611 1612 1613 +10 613 614 615 1255 1256 1298 1299 1611 1612 1613 +10 613 614 615 1255 1256 1298 1299 1611 1612 1613 +10 613 614 615 1255 1256 1298 1299 1611 1612 1613 +10 613 614 615 1255 1256 1298 1299 1611 1612 1613 +10 613 614 615 1255 1256 1298 1299 1611 1612 1613 +4 613 614 1255 1298 +4 613 614 1255 1298 +4 613 614 1255 1298 +4 613 614 1255 1298 +4 613 614 1255 1298 +4 613 614 1255 1298 +2 613 1604 +2 613 1604 +2 613 1604 +2 613 1604 +2 613 1604 +2 613 1604 +4 614 615 1611 1613 +4 614 615 1611 1613 +4 614 615 1611 1613 +4 614 615 1611 1613 +4 614 615 1611 1613 +4 614 615 1611 1613 +8 614 615 1039 1040 1082 1083 1611 1613 +8 614 615 1039 1040 1082 1083 1611 1613 +8 614 615 1039 1040 1082 1083 1611 1613 +8 614 615 1039 1040 1082 1083 1611 1613 +8 614 615 1039 1040 1082 1083 1611 1613 +8 614 615 1039 1040 1082 1083 1611 1613 +3 614 1039 1082 +3 614 1039 1082 +3 614 1039 1082 +3 614 1039 1082 +3 614 1039 1082 +3 614 1039 1082 +3 615 1256 1299 +3 615 1256 1299 +3 615 1256 1299 +3 615 1256 1299 +3 615 1256 1299 +3 615 1256 1299 +8 615 616 1256 1257 1299 1300 1618 1619 +8 615 616 1256 1257 1299 1300 1618 1619 +8 615 616 1256 1257 1299 1300 1618 1619 +8 615 616 1256 1257 1299 1300 1618 1619 +8 615 616 1256 1257 1299 1300 1618 1619 +8 615 616 1256 1257 1299 1300 1618 1619 +4 615 616 1618 1619 +4 615 616 1618 1619 +4 615 616 1618 1619 +4 615 616 1618 1619 +4 615 616 1618 1619 +4 615 616 1618 1619 +8 615 616 1040 1041 1083 1084 1618 1619 +8 615 616 1040 1041 1083 1084 1618 1619 +8 615 616 1040 1041 1083 1084 1618 1619 +8 615 616 1040 1041 1083 1084 1618 1619 +8 615 616 1040 1041 1083 1084 1618 1619 +8 615 616 1040 1041 1083 1084 1618 1619 +3 615 1040 1083 +3 615 1040 1083 +3 615 1040 1083 +3 615 1040 1083 +3 615 1040 1083 +3 615 1040 1083 +3 616 1257 1300 +3 616 1257 1300 +3 616 1257 1300 +3 616 1257 1300 +3 616 1257 1300 +3 616 1257 1300 +11 616 617 618 1257 1258 1300 1301 1626 1627 1628 1629 +11 616 617 618 1257 1258 1300 1301 1626 1627 1628 1629 +11 616 617 618 1257 1258 1300 1301 1626 1627 1628 1629 +11 616 617 618 1257 1258 1300 1301 1626 1627 1628 1629 +11 616 617 618 1257 1258 1300 1301 1626 1627 1628 1629 +11 616 617 618 1257 1258 1300 1301 1626 1627 1628 1629 +4 616 618 1627 1629 +4 616 618 1627 1629 +4 616 618 1627 1629 +4 616 618 1627 1629 +4 616 618 1627 1629 +4 616 618 1627 1629 +8 616 618 1041 1042 1084 1085 1627 1629 +8 616 618 1041 1042 1084 1085 1627 1629 +8 616 618 1041 1042 1084 1085 1627 1629 +8 616 618 1041 1042 1084 1085 1627 1629 +8 616 618 1041 1042 1084 1085 1627 1629 +8 616 618 1041 1042 1084 1085 1627 1629 +3 616 1041 1084 +3 616 1041 1084 +3 616 1041 1084 +3 616 1041 1084 +3 616 1041 1084 +3 616 1041 1084 +8 617 1385 1396 1626 1628 2096 2098 3020 +8 617 1385 1396 1626 1628 2096 2098 3020 +8 617 1385 1396 1626 1628 2096 2098 3020 +8 617 1385 1396 1626 1628 2096 2098 3020 +8 617 1385 1396 1626 1628 2096 2098 3020 +8 617 1385 1396 1626 1628 2096 2098 3020 +4 617 1385 1396 3020 +4 617 1385 1396 3020 +4 617 1385 1396 3020 +4 617 1385 1396 3020 +4 617 1385 1396 3020 +4 617 1385 1396 3020 +6 617 1385 1396 1636 2088 3020 +6 617 1385 1396 1636 2088 3020 +6 617 1385 1396 1636 2088 3020 +6 617 1385 1396 1636 2088 3020 +6 617 1385 1396 1636 2088 3020 +6 617 1385 1396 1636 2088 3020 +2 617 1636 +2 617 1636 +2 617 1636 +2 617 1636 +2 617 1636 +2 617 1636 +10 617 618 619 1258 1259 1301 1302 1635 1636 1637 +10 617 618 619 1258 1259 1301 1302 1635 1636 1637 +10 617 618 619 1258 1259 1301 1302 1635 1636 1637 +10 617 618 619 1258 1259 1301 1302 1635 1636 1637 +10 617 618 619 1258 1259 1301 1302 1635 1636 1637 +10 617 618 619 1258 1259 1301 1302 1635 1636 1637 +4 617 618 1258 1301 +4 617 618 1258 1301 +4 617 618 1258 1301 +4 617 618 1258 1301 +4 617 618 1258 1301 +4 617 618 1258 1301 +3 617 1626 1628 +3 617 1626 1628 +3 617 1626 1628 +3 617 1626 1628 +3 617 1626 1628 +3 617 1626 1628 +4 618 619 1635 1637 +4 618 619 1635 1637 +4 618 619 1635 1637 +4 618 619 1635 1637 +4 618 619 1635 1637 +4 618 619 1635 1637 +8 618 619 1042 1043 1085 1086 1635 1637 +8 618 619 1042 1043 1085 1086 1635 1637 +8 618 619 1042 1043 1085 1086 1635 1637 +8 618 619 1042 1043 1085 1086 1635 1637 +8 618 619 1042 1043 1085 1086 1635 1637 +8 618 619 1042 1043 1085 1086 1635 1637 +3 618 1042 1085 +3 618 1042 1085 +3 618 1042 1085 +3 618 1042 1085 +3 618 1042 1085 +3 618 1042 1085 +3 619 1259 1302 +3 619 1259 1302 +3 619 1259 1302 +3 619 1259 1302 +3 619 1259 1302 +3 619 1259 1302 +8 619 620 1259 1260 1302 1303 1642 1643 +8 619 620 1259 1260 1302 1303 1642 1643 +8 619 620 1259 1260 1302 1303 1642 1643 +8 619 620 1259 1260 1302 1303 1642 1643 +8 619 620 1259 1260 1302 1303 1642 1643 +8 619 620 1259 1260 1302 1303 1642 1643 +4 619 620 1642 1643 +4 619 620 1642 1643 +4 619 620 1642 1643 +4 619 620 1642 1643 +4 619 620 1642 1643 +4 619 620 1642 1643 +8 619 620 1043 1044 1086 1087 1642 1643 +8 619 620 1043 1044 1086 1087 1642 1643 +8 619 620 1043 1044 1086 1087 1642 1643 +8 619 620 1043 1044 1086 1087 1642 1643 +8 619 620 1043 1044 1086 1087 1642 1643 +8 619 620 1043 1044 1086 1087 1642 1643 +3 619 1043 1086 +3 619 1043 1086 +3 619 1043 1086 +3 619 1043 1086 +3 619 1043 1086 +3 619 1043 1086 +3 620 1260 1303 +3 620 1260 1303 +3 620 1260 1303 +3 620 1260 1303 +3 620 1260 1303 +3 620 1260 1303 +10 620 621 622 1260 1261 1303 1304 1649 1650 1651 +10 620 621 622 1260 1261 1303 1304 1649 1650 1651 +10 620 621 622 1260 1261 1303 1304 1649 1650 1651 +10 620 621 622 1260 1261 1303 1304 1649 1650 1651 +10 620 621 622 1260 1261 1303 1304 1649 1650 1651 +10 620 621 622 1260 1261 1303 1304 1649 1650 1651 +4 620 622 1649 1651 +4 620 622 1649 1651 +4 620 622 1649 1651 +4 620 622 1649 1651 +4 620 622 1649 1651 +4 620 622 1649 1651 +8 620 622 1044 1045 1087 1088 1649 1651 +8 620 622 1044 1045 1087 1088 1649 1651 +8 620 622 1044 1045 1087 1088 1649 1651 +8 620 622 1044 1045 1087 1088 1649 1651 +8 620 622 1044 1045 1087 1088 1649 1651 +8 620 622 1044 1045 1087 1088 1649 1651 +3 620 1044 1087 +3 620 1044 1087 +3 620 1044 1087 +3 620 1044 1087 +3 620 1044 1087 +3 620 1044 1087 +6 621 1386 1397 1650 2074 3016 +6 621 1386 1397 1650 2074 3016 +6 621 1386 1397 1650 2074 3016 +6 621 1386 1397 1650 2074 3016 +6 621 1386 1397 1650 2074 3016 +6 621 1386 1397 1650 2074 3016 +4 621 1386 1397 3016 +4 621 1386 1397 3016 +4 621 1386 1397 3016 +4 621 1386 1397 3016 +4 621 1386 1397 3016 +4 621 1386 1397 3016 +6 621 1386 1397 1658 2066 3016 +6 621 1386 1397 1658 2066 3016 +6 621 1386 1397 1658 2066 3016 +6 621 1386 1397 1658 2066 3016 +6 621 1386 1397 1658 2066 3016 +6 621 1386 1397 1658 2066 3016 +2 621 1658 +2 621 1658 +2 621 1658 +2 621 1658 +2 621 1658 +2 621 1658 +10 621 622 623 1261 1262 1304 1305 1657 1658 1659 +10 621 622 623 1261 1262 1304 1305 1657 1658 1659 +10 621 622 623 1261 1262 1304 1305 1657 1658 1659 +10 621 622 623 1261 1262 1304 1305 1657 1658 1659 +10 621 622 623 1261 1262 1304 1305 1657 1658 1659 +10 621 622 623 1261 1262 1304 1305 1657 1658 1659 +4 621 622 1261 1304 +4 621 622 1261 1304 +4 621 622 1261 1304 +4 621 622 1261 1304 +4 621 622 1261 1304 +4 621 622 1261 1304 +2 621 1650 +2 621 1650 +2 621 1650 +2 621 1650 +2 621 1650 +2 621 1650 +4 622 623 1657 1659 +4 622 623 1657 1659 +4 622 623 1657 1659 +4 622 623 1657 1659 +4 622 623 1657 1659 +4 622 623 1657 1659 +8 622 623 1045 1046 1088 1089 1657 1659 +8 622 623 1045 1046 1088 1089 1657 1659 +8 622 623 1045 1046 1088 1089 1657 1659 +8 622 623 1045 1046 1088 1089 1657 1659 +8 622 623 1045 1046 1088 1089 1657 1659 +8 622 623 1045 1046 1088 1089 1657 1659 +3 622 1045 1088 +3 622 1045 1088 +3 622 1045 1088 +3 622 1045 1088 +3 622 1045 1088 +3 622 1045 1088 +3 623 1262 1305 +3 623 1262 1305 +3 623 1262 1305 +3 623 1262 1305 +3 623 1262 1305 +3 623 1262 1305 +8 623 624 1262 1263 1305 1306 1664 1665 +8 623 624 1262 1263 1305 1306 1664 1665 +8 623 624 1262 1263 1305 1306 1664 1665 +8 623 624 1262 1263 1305 1306 1664 1665 +8 623 624 1262 1263 1305 1306 1664 1665 +8 623 624 1262 1263 1305 1306 1664 1665 +4 623 624 1664 1665 +4 623 624 1664 1665 +4 623 624 1664 1665 +4 623 624 1664 1665 +4 623 624 1664 1665 +4 623 624 1664 1665 +8 623 624 1046 1047 1089 1090 1664 1665 +8 623 624 1046 1047 1089 1090 1664 1665 +8 623 624 1046 1047 1089 1090 1664 1665 +8 623 624 1046 1047 1089 1090 1664 1665 +8 623 624 1046 1047 1089 1090 1664 1665 +8 623 624 1046 1047 1089 1090 1664 1665 +3 623 1046 1089 +3 623 1046 1089 +3 623 1046 1089 +3 623 1046 1089 +3 623 1046 1089 +3 623 1046 1089 +3 624 1263 1306 +3 624 1263 1306 +3 624 1263 1306 +3 624 1263 1306 +3 624 1263 1306 +3 624 1263 1306 +11 624 625 626 1263 1264 1306 1307 1672 1673 1674 1675 +11 624 625 626 1263 1264 1306 1307 1672 1673 1674 1675 +11 624 625 626 1263 1264 1306 1307 1672 1673 1674 1675 +11 624 625 626 1263 1264 1306 1307 1672 1673 1674 1675 +11 624 625 626 1263 1264 1306 1307 1672 1673 1674 1675 +11 624 625 626 1263 1264 1306 1307 1672 1673 1674 1675 +4 624 626 1673 1675 +4 624 626 1673 1675 +4 624 626 1673 1675 +4 624 626 1673 1675 +4 624 626 1673 1675 +4 624 626 1673 1675 +8 624 626 1047 1048 1090 1091 1673 1675 +8 624 626 1047 1048 1090 1091 1673 1675 +8 624 626 1047 1048 1090 1091 1673 1675 +8 624 626 1047 1048 1090 1091 1673 1675 +8 624 626 1047 1048 1090 1091 1673 1675 +8 624 626 1047 1048 1090 1091 1673 1675 +3 624 1047 1090 +3 624 1047 1090 +3 624 1047 1090 +3 624 1047 1090 +3 624 1047 1090 +3 624 1047 1090 +8 625 1387 1398 1672 1674 2050 2052 3012 +8 625 1387 1398 1672 1674 2050 2052 3012 +8 625 1387 1398 1672 1674 2050 2052 3012 +8 625 1387 1398 1672 1674 2050 2052 3012 +8 625 1387 1398 1672 1674 2050 2052 3012 +8 625 1387 1398 1672 1674 2050 2052 3012 +4 625 1387 1398 3012 +4 625 1387 1398 3012 +4 625 1387 1398 3012 +4 625 1387 1398 3012 +4 625 1387 1398 3012 +4 625 1387 1398 3012 +6 625 1387 1398 1682 2042 3012 +6 625 1387 1398 1682 2042 3012 +6 625 1387 1398 1682 2042 3012 +6 625 1387 1398 1682 2042 3012 +6 625 1387 1398 1682 2042 3012 +6 625 1387 1398 1682 2042 3012 +2 625 1682 +2 625 1682 +2 625 1682 +2 625 1682 +2 625 1682 +2 625 1682 +10 625 626 627 1264 1265 1307 1308 1681 1682 1683 +10 625 626 627 1264 1265 1307 1308 1681 1682 1683 +10 625 626 627 1264 1265 1307 1308 1681 1682 1683 +10 625 626 627 1264 1265 1307 1308 1681 1682 1683 +10 625 626 627 1264 1265 1307 1308 1681 1682 1683 +10 625 626 627 1264 1265 1307 1308 1681 1682 1683 +4 625 626 1264 1307 +4 625 626 1264 1307 +4 625 626 1264 1307 +4 625 626 1264 1307 +4 625 626 1264 1307 +4 625 626 1264 1307 +3 625 1672 1674 +3 625 1672 1674 +3 625 1672 1674 +3 625 1672 1674 +3 625 1672 1674 +3 625 1672 1674 +4 626 627 1681 1683 +4 626 627 1681 1683 +4 626 627 1681 1683 +4 626 627 1681 1683 +4 626 627 1681 1683 +4 626 627 1681 1683 +8 626 627 1048 1049 1091 1092 1681 1683 +8 626 627 1048 1049 1091 1092 1681 1683 +8 626 627 1048 1049 1091 1092 1681 1683 +8 626 627 1048 1049 1091 1092 1681 1683 +8 626 627 1048 1049 1091 1092 1681 1683 +8 626 627 1048 1049 1091 1092 1681 1683 +3 626 1048 1091 +3 626 1048 1091 +3 626 1048 1091 +3 626 1048 1091 +3 626 1048 1091 +3 626 1048 1091 +3 627 1265 1308 +3 627 1265 1308 +3 627 1265 1308 +3 627 1265 1308 +3 627 1265 1308 +3 627 1265 1308 +8 627 628 1265 1266 1308 1309 1688 1689 +8 627 628 1265 1266 1308 1309 1688 1689 +8 627 628 1265 1266 1308 1309 1688 1689 +8 627 628 1265 1266 1308 1309 1688 1689 +8 627 628 1265 1266 1308 1309 1688 1689 +8 627 628 1265 1266 1308 1309 1688 1689 +4 627 628 1688 1689 +4 627 628 1688 1689 +4 627 628 1688 1689 +4 627 628 1688 1689 +4 627 628 1688 1689 +4 627 628 1688 1689 +8 627 628 1049 1050 1092 1093 1688 1689 +8 627 628 1049 1050 1092 1093 1688 1689 +8 627 628 1049 1050 1092 1093 1688 1689 +8 627 628 1049 1050 1092 1093 1688 1689 +8 627 628 1049 1050 1092 1093 1688 1689 +8 627 628 1049 1050 1092 1093 1688 1689 +3 627 1049 1092 +3 627 1049 1092 +3 627 1049 1092 +3 627 1049 1092 +3 627 1049 1092 +3 627 1049 1092 +3 628 1266 1309 +3 628 1266 1309 +3 628 1266 1309 +3 628 1266 1309 +3 628 1266 1309 +3 628 1266 1309 +11 628 629 630 1266 1267 1309 1310 1696 1697 1698 1699 +11 628 629 630 1266 1267 1309 1310 1696 1697 1698 1699 +11 628 629 630 1266 1267 1309 1310 1696 1697 1698 1699 +11 628 629 630 1266 1267 1309 1310 1696 1697 1698 1699 +11 628 629 630 1266 1267 1309 1310 1696 1697 1698 1699 +11 628 629 630 1266 1267 1309 1310 1696 1697 1698 1699 +4 628 630 1697 1699 +4 628 630 1697 1699 +4 628 630 1697 1699 +4 628 630 1697 1699 +4 628 630 1697 1699 +4 628 630 1697 1699 +8 628 630 1050 1051 1093 1094 1697 1699 +8 628 630 1050 1051 1093 1094 1697 1699 +8 628 630 1050 1051 1093 1094 1697 1699 +8 628 630 1050 1051 1093 1094 1697 1699 +8 628 630 1050 1051 1093 1094 1697 1699 +8 628 630 1050 1051 1093 1094 1697 1699 +3 628 1050 1093 +3 628 1050 1093 +3 628 1050 1093 +3 628 1050 1093 +3 628 1050 1093 +3 628 1050 1093 +8 629 1388 1399 1696 1698 2026 2028 3008 +8 629 1388 1399 1696 1698 2026 2028 3008 +8 629 1388 1399 1696 1698 2026 2028 3008 +8 629 1388 1399 1696 1698 2026 2028 3008 +8 629 1388 1399 1696 1698 2026 2028 3008 +8 629 1388 1399 1696 1698 2026 2028 3008 +4 629 1388 1399 3008 +4 629 1388 1399 3008 +4 629 1388 1399 3008 +4 629 1388 1399 3008 +4 629 1388 1399 3008 +4 629 1388 1399 3008 +8 629 1388 1399 1706 1708 2016 2018 3008 +8 629 1388 1399 1706 1708 2016 2018 3008 +8 629 1388 1399 1706 1708 2016 2018 3008 +8 629 1388 1399 1706 1708 2016 2018 3008 +8 629 1388 1399 1706 1708 2016 2018 3008 +8 629 1388 1399 1706 1708 2016 2018 3008 +3 629 1706 1708 +3 629 1706 1708 +3 629 1706 1708 +3 629 1706 1708 +3 629 1706 1708 +3 629 1706 1708 +11 629 630 631 1267 1268 1310 1311 1706 1707 1708 1709 +11 629 630 631 1267 1268 1310 1311 1706 1707 1708 1709 +11 629 630 631 1267 1268 1310 1311 1706 1707 1708 1709 +11 629 630 631 1267 1268 1310 1311 1706 1707 1708 1709 +11 629 630 631 1267 1268 1310 1311 1706 1707 1708 1709 +11 629 630 631 1267 1268 1310 1311 1706 1707 1708 1709 +4 629 630 1267 1310 +4 629 630 1267 1310 +4 629 630 1267 1310 +4 629 630 1267 1310 +4 629 630 1267 1310 +4 629 630 1267 1310 +3 629 1696 1698 +3 629 1696 1698 +3 629 1696 1698 +3 629 1696 1698 +3 629 1696 1698 +3 629 1696 1698 +4 630 631 1707 1709 +4 630 631 1707 1709 +4 630 631 1707 1709 +4 630 631 1707 1709 +4 630 631 1707 1709 +4 630 631 1707 1709 +8 630 631 1051 1052 1094 1095 1707 1709 +8 630 631 1051 1052 1094 1095 1707 1709 +8 630 631 1051 1052 1094 1095 1707 1709 +8 630 631 1051 1052 1094 1095 1707 1709 +8 630 631 1051 1052 1094 1095 1707 1709 +8 630 631 1051 1052 1094 1095 1707 1709 +3 630 1051 1094 +3 630 1051 1094 +3 630 1051 1094 +3 630 1051 1094 +3 630 1051 1094 +3 630 1051 1094 +3 631 1268 1311 +3 631 1268 1311 +3 631 1268 1311 +3 631 1268 1311 +3 631 1268 1311 +3 631 1268 1311 +8 631 632 1268 1269 1311 1312 1714 1715 +8 631 632 1268 1269 1311 1312 1714 1715 +8 631 632 1268 1269 1311 1312 1714 1715 +8 631 632 1268 1269 1311 1312 1714 1715 +8 631 632 1268 1269 1311 1312 1714 1715 +8 631 632 1268 1269 1311 1312 1714 1715 +4 631 632 1714 1715 +4 631 632 1714 1715 +4 631 632 1714 1715 +4 631 632 1714 1715 +4 631 632 1714 1715 +4 631 632 1714 1715 +8 631 632 1052 1053 1095 1096 1714 1715 +8 631 632 1052 1053 1095 1096 1714 1715 +8 631 632 1052 1053 1095 1096 1714 1715 +8 631 632 1052 1053 1095 1096 1714 1715 +8 631 632 1052 1053 1095 1096 1714 1715 +8 631 632 1052 1053 1095 1096 1714 1715 +3 631 1052 1095 +3 631 1052 1095 +3 631 1052 1095 +3 631 1052 1095 +3 631 1052 1095 +3 631 1052 1095 +3 632 1269 1312 +3 632 1269 1312 +3 632 1269 1312 +3 632 1269 1312 +3 632 1269 1312 +3 632 1269 1312 +3 632 1053 1096 +3 632 1053 1096 +3 632 1053 1096 +3 632 1053 1096 +3 632 1053 1096 +3 632 1053 1096 +3 633 1184 1227 +3 633 1184 1227 +3 633 1184 1227 +3 633 1184 1227 +3 633 1184 1227 +3 633 1184 1227 +10 633 634 641 643 1184 1185 1227 1228 1404 1405 +10 633 634 641 643 1184 1185 1227 1228 1404 1405 +10 633 634 641 643 1184 1185 1227 1228 1404 1405 +10 633 634 641 643 1184 1185 1227 1228 1404 1405 +10 633 634 641 643 1184 1185 1227 1228 1404 1405 +10 633 634 641 643 1184 1185 1227 1228 1404 1405 +4 633 634 1404 1405 +4 633 634 1404 1405 +4 633 634 1404 1405 +4 633 634 1404 1405 +4 633 634 1404 1405 +4 633 634 1404 1405 +8 633 634 968 969 1011 1012 1404 1405 +8 633 634 968 969 1011 1012 1404 1405 +8 633 634 968 969 1011 1012 1404 1405 +8 633 634 968 969 1011 1012 1404 1405 +8 633 634 968 969 1011 1012 1404 1405 +8 633 634 968 969 1011 1012 1404 1405 +3 633 968 1011 +3 633 968 1011 +3 633 968 1011 +3 633 968 1011 +3 633 968 1011 +3 633 968 1011 +4 634 641 1185 1228 +4 634 641 1185 1228 +4 634 641 1185 1228 +4 634 641 1185 1228 +4 634 641 1185 1228 +4 634 641 1185 1228 +10 634 636 638 641 1185 1186 1228 1229 1411 1412 +10 634 636 638 641 1185 1186 1228 1229 1411 1412 +10 634 636 638 641 1185 1186 1228 1229 1411 1412 +10 634 636 638 641 1185 1186 1228 1229 1411 1412 +10 634 636 638 641 1185 1186 1228 1229 1411 1412 +10 634 636 638 641 1185 1186 1228 1229 1411 1412 +4 634 636 1411 1412 +4 634 636 1411 1412 +4 634 636 1411 1412 +4 634 636 1411 1412 +4 634 636 1411 1412 +4 634 636 1411 1412 +8 634 636 969 970 1012 1013 1411 1412 +8 634 636 969 970 1012 1013 1411 1412 +8 634 636 969 970 1012 1013 1411 1412 +8 634 636 969 970 1012 1013 1411 1412 +8 634 636 969 970 1012 1013 1411 1412 +8 634 636 969 970 1012 1013 1411 1412 +3 634 969 1012 +3 634 969 1012 +3 634 969 1012 +3 634 969 1012 +3 634 969 1012 +3 634 969 1012 +10 635 636 637 638 1186 1187 1229 1230 1417 1418 +10 635 636 637 638 1186 1187 1229 1230 1417 1418 +10 635 636 637 638 1186 1187 1229 1230 1417 1418 +10 635 636 637 638 1186 1187 1229 1230 1417 1418 +10 635 636 637 638 1186 1187 1229 1230 1417 1418 +10 635 636 637 638 1186 1187 1229 1230 1417 1418 +4 635 637 1187 1230 +4 635 637 1187 1230 +4 635 637 1187 1230 +4 635 637 1187 1230 +4 635 637 1187 1230 +4 635 637 1187 1230 +10 635 637 639 1187 1188 1230 1231 1423 1424 1853 +10 635 637 639 1187 1188 1230 1231 1423 1424 1853 +10 635 637 639 1187 1188 1230 1231 1423 1424 1853 +10 635 637 639 1187 1188 1230 1231 1423 1424 1853 +10 635 637 639 1187 1188 1230 1231 1423 1424 1853 +10 635 637 639 1187 1188 1230 1231 1423 1424 1853 +2 635 638 +2 635 638 +2 635 638 +2 635 638 +2 635 638 +2 635 638 +1 635 +1 635 +1 635 +1 635 +1 635 +1 635 +2 635 1853 +2 635 1853 +2 635 1853 +2 635 1853 +2 635 1853 +2 635 1853 +4 636 638 1186 1229 +4 636 638 1186 1229 +4 636 638 1186 1229 +4 636 638 1186 1229 +4 636 638 1186 1229 +4 636 638 1186 1229 +4 636 637 1417 1418 +4 636 637 1417 1418 +4 636 637 1417 1418 +4 636 637 1417 1418 +4 636 637 1417 1418 +4 636 637 1417 1418 +8 636 637 970 971 1013 1014 1417 1418 +8 636 637 970 971 1013 1014 1417 1418 +8 636 637 970 971 1013 1014 1417 1418 +8 636 637 970 971 1013 1014 1417 1418 +8 636 637 970 971 1013 1014 1417 1418 +8 636 637 970 971 1013 1014 1417 1418 +3 636 970 1013 +3 636 970 1013 +3 636 970 1013 +3 636 970 1013 +3 636 970 1013 +3 636 970 1013 +4 637 639 1423 1424 +4 637 639 1423 1424 +4 637 639 1423 1424 +4 637 639 1423 1424 +4 637 639 1423 1424 +4 637 639 1423 1424 +8 637 639 971 972 1014 1015 1423 1424 +8 637 639 971 972 1014 1015 1423 1424 +8 637 639 971 972 1014 1015 1423 1424 +8 637 639 971 972 1014 1015 1423 1424 +8 637 639 971 972 1014 1015 1423 1424 +8 637 639 971 972 1014 1015 1423 1424 +3 637 971 1014 +3 637 971 1014 +3 637 971 1014 +3 637 971 1014 +3 637 971 1014 +3 637 971 1014 +2 638 641 +2 638 641 +2 638 641 +2 638 641 +2 638 641 +2 638 641 +1 638 +1 638 +1 638 +1 638 +1 638 +1 638 +4 639 1188 1231 1853 +4 639 1188 1231 1853 +4 639 1188 1231 1853 +4 639 1188 1231 1853 +4 639 1188 1231 1853 +4 639 1188 1231 1853 +10 639 640 1188 1189 1231 1232 1429 1430 1853 1854 +10 639 640 1188 1189 1231 1232 1429 1430 1853 1854 +10 639 640 1188 1189 1231 1232 1429 1430 1853 1854 +10 639 640 1188 1189 1231 1232 1429 1430 1853 1854 +10 639 640 1188 1189 1231 1232 1429 1430 1853 1854 +10 639 640 1188 1189 1231 1232 1429 1430 1853 1854 +4 639 640 1429 1430 +4 639 640 1429 1430 +4 639 640 1429 1430 +4 639 640 1429 1430 +4 639 640 1429 1430 +4 639 640 1429 1430 +8 639 640 972 973 1015 1016 1429 1430 +8 639 640 972 973 1015 1016 1429 1430 +8 639 640 972 973 1015 1016 1429 1430 +8 639 640 972 973 1015 1016 1429 1430 +8 639 640 972 973 1015 1016 1429 1430 +8 639 640 972 973 1015 1016 1429 1430 +3 639 972 1015 +3 639 972 1015 +3 639 972 1015 +3 639 972 1015 +3 639 972 1015 +3 639 972 1015 +4 640 1189 1232 1854 +4 640 1189 1232 1854 +4 640 1189 1232 1854 +4 640 1189 1232 1854 +4 640 1189 1232 1854 +4 640 1189 1232 1854 +10 640 642 1189 1190 1232 1233 1435 1436 1854 1855 +10 640 642 1189 1190 1232 1233 1435 1436 1854 1855 +10 640 642 1189 1190 1232 1233 1435 1436 1854 1855 +10 640 642 1189 1190 1232 1233 1435 1436 1854 1855 +10 640 642 1189 1190 1232 1233 1435 1436 1854 1855 +10 640 642 1189 1190 1232 1233 1435 1436 1854 1855 +4 640 642 1435 1436 +4 640 642 1435 1436 +4 640 642 1435 1436 +4 640 642 1435 1436 +4 640 642 1435 1436 +4 640 642 1435 1436 +8 640 642 973 974 1016 1017 1435 1436 +8 640 642 973 974 1016 1017 1435 1436 +8 640 642 973 974 1016 1017 1435 1436 +8 640 642 973 974 1016 1017 1435 1436 +8 640 642 973 974 1016 1017 1435 1436 +8 640 642 973 974 1016 1017 1435 1436 +3 640 973 1016 +3 640 973 1016 +3 640 973 1016 +3 640 973 1016 +3 640 973 1016 +3 640 973 1016 +2 641 643 +2 641 643 +2 641 643 +2 641 643 +2 641 643 +2 641 643 +4 642 1190 1233 1855 +4 642 1190 1233 1855 +4 642 1190 1233 1855 +4 642 1190 1233 1855 +4 642 1190 1233 1855 +4 642 1190 1233 1855 +10 642 644 1190 1191 1233 1234 1441 1442 1855 1857 +10 642 644 1190 1191 1233 1234 1441 1442 1855 1857 +10 642 644 1190 1191 1233 1234 1441 1442 1855 1857 +10 642 644 1190 1191 1233 1234 1441 1442 1855 1857 +10 642 644 1190 1191 1233 1234 1441 1442 1855 1857 +10 642 644 1190 1191 1233 1234 1441 1442 1855 1857 +4 642 644 1441 1442 +4 642 644 1441 1442 +4 642 644 1441 1442 +4 642 644 1441 1442 +4 642 644 1441 1442 +4 642 644 1441 1442 +8 642 644 974 975 1017 1018 1441 1442 +8 642 644 974 975 1017 1018 1441 1442 +8 642 644 974 975 1017 1018 1441 1442 +8 642 644 974 975 1017 1018 1441 1442 +8 642 644 974 975 1017 1018 1441 1442 +8 642 644 974 975 1017 1018 1441 1442 +3 642 974 1017 +3 642 974 1017 +3 642 974 1017 +3 642 974 1017 +3 642 974 1017 +3 642 974 1017 +2 643 2994 +2 643 2994 +2 643 2994 +2 643 2994 +2 643 2994 +2 643 2994 +1 643 +1 643 +1 643 +1 643 +1 643 +1 643 +2 643 2994 +2 643 2994 +2 643 2994 +2 643 2994 +2 643 2994 +2 643 2994 +2 643 2994 +2 643 2994 +2 643 2994 +2 643 2994 +2 643 2994 +2 643 2994 +1 643 +1 643 +1 643 +1 643 +1 643 +1 643 +4 644 1191 1234 1857 +4 644 1191 1234 1857 +4 644 1191 1234 1857 +4 644 1191 1234 1857 +4 644 1191 1234 1857 +4 644 1191 1234 1857 +10 644 645 1191 1192 1234 1235 1448 1449 1856 1857 +10 644 645 1191 1192 1234 1235 1448 1449 1856 1857 +10 644 645 1191 1192 1234 1235 1448 1449 1856 1857 +10 644 645 1191 1192 1234 1235 1448 1449 1856 1857 +10 644 645 1191 1192 1234 1235 1448 1449 1856 1857 +10 644 645 1191 1192 1234 1235 1448 1449 1856 1857 +4 644 645 1448 1449 +4 644 645 1448 1449 +4 644 645 1448 1449 +4 644 645 1448 1449 +4 644 645 1448 1449 +4 644 645 1448 1449 +8 644 645 975 976 1018 1019 1448 1449 +8 644 645 975 976 1018 1019 1448 1449 +8 644 645 975 976 1018 1019 1448 1449 +8 644 645 975 976 1018 1019 1448 1449 +8 644 645 975 976 1018 1019 1448 1449 +8 644 645 975 976 1018 1019 1448 1449 +3 644 975 1018 +3 644 975 1018 +3 644 975 1018 +3 644 975 1018 +3 644 975 1018 +3 644 975 1018 +3 645 1192 1235 +3 645 1192 1235 +3 645 1192 1235 +3 645 1192 1235 +3 645 1192 1235 +3 645 1192 1235 +8 645 646 1192 1193 1235 1236 1455 1456 +8 645 646 1192 1193 1235 1236 1455 1456 +8 645 646 1192 1193 1235 1236 1455 1456 +8 645 646 1192 1193 1235 1236 1455 1456 +8 645 646 1192 1193 1235 1236 1455 1456 +8 645 646 1192 1193 1235 1236 1455 1456 +4 645 646 1455 1456 +4 645 646 1455 1456 +4 645 646 1455 1456 +4 645 646 1455 1456 +4 645 646 1455 1456 +4 645 646 1455 1456 +8 645 646 976 977 1019 1020 1455 1456 +8 645 646 976 977 1019 1020 1455 1456 +8 645 646 976 977 1019 1020 1455 1456 +8 645 646 976 977 1019 1020 1455 1456 +8 645 646 976 977 1019 1020 1455 1456 +8 645 646 976 977 1019 1020 1455 1456 +3 645 976 1019 +3 645 976 1019 +3 645 976 1019 +3 645 976 1019 +3 645 976 1019 +3 645 976 1019 +3 646 1193 1236 +3 646 1193 1236 +3 646 1193 1236 +3 646 1193 1236 +3 646 1193 1236 +3 646 1193 1236 +8 646 647 1193 1194 1236 1237 1462 1463 +8 646 647 1193 1194 1236 1237 1462 1463 +8 646 647 1193 1194 1236 1237 1462 1463 +8 646 647 1193 1194 1236 1237 1462 1463 +8 646 647 1193 1194 1236 1237 1462 1463 +8 646 647 1193 1194 1236 1237 1462 1463 +4 646 647 1462 1463 +4 646 647 1462 1463 +4 646 647 1462 1463 +4 646 647 1462 1463 +4 646 647 1462 1463 +4 646 647 1462 1463 +8 646 647 977 978 1020 1021 1462 1463 +8 646 647 977 978 1020 1021 1462 1463 +8 646 647 977 978 1020 1021 1462 1463 +8 646 647 977 978 1020 1021 1462 1463 +8 646 647 977 978 1020 1021 1462 1463 +8 646 647 977 978 1020 1021 1462 1463 +3 646 977 1020 +3 646 977 1020 +3 646 977 1020 +3 646 977 1020 +3 646 977 1020 +3 646 977 1020 +3 647 1194 1237 +3 647 1194 1237 +3 647 1194 1237 +3 647 1194 1237 +3 647 1194 1237 +3 647 1194 1237 +8 647 648 1194 1195 1237 1238 1470 1471 +8 647 648 1194 1195 1237 1238 1470 1471 +8 647 648 1194 1195 1237 1238 1470 1471 +8 647 648 1194 1195 1237 1238 1470 1471 +8 647 648 1194 1195 1237 1238 1470 1471 +8 647 648 1194 1195 1237 1238 1470 1471 +4 647 648 1470 1471 +4 647 648 1470 1471 +4 647 648 1470 1471 +4 647 648 1470 1471 +4 647 648 1470 1471 +4 647 648 1470 1471 +8 647 648 978 979 1021 1022 1470 1471 +8 647 648 978 979 1021 1022 1470 1471 +8 647 648 978 979 1021 1022 1470 1471 +8 647 648 978 979 1021 1022 1470 1471 +8 647 648 978 979 1021 1022 1470 1471 +8 647 648 978 979 1021 1022 1470 1471 +3 647 978 1021 +3 647 978 1021 +3 647 978 1021 +3 647 978 1021 +3 647 978 1021 +3 647 978 1021 +3 648 1195 1238 +3 648 1195 1238 +3 648 1195 1238 +3 648 1195 1238 +3 648 1195 1238 +3 648 1195 1238 +8 648 649 1195 1196 1238 1239 1477 1478 +8 648 649 1195 1196 1238 1239 1477 1478 +8 648 649 1195 1196 1238 1239 1477 1478 +8 648 649 1195 1196 1238 1239 1477 1478 +8 648 649 1195 1196 1238 1239 1477 1478 +8 648 649 1195 1196 1238 1239 1477 1478 +4 648 649 1477 1478 +4 648 649 1477 1478 +4 648 649 1477 1478 +4 648 649 1477 1478 +4 648 649 1477 1478 +4 648 649 1477 1478 +8 648 649 979 980 1022 1023 1477 1478 +8 648 649 979 980 1022 1023 1477 1478 +8 648 649 979 980 1022 1023 1477 1478 +8 648 649 979 980 1022 1023 1477 1478 +8 648 649 979 980 1022 1023 1477 1478 +8 648 649 979 980 1022 1023 1477 1478 +3 648 979 1022 +3 648 979 1022 +3 648 979 1022 +3 648 979 1022 +3 648 979 1022 +3 648 979 1022 +3 649 1196 1239 +3 649 1196 1239 +3 649 1196 1239 +3 649 1196 1239 +3 649 1196 1239 +3 649 1196 1239 +11 649 650 651 1196 1197 1239 1240 1484 1485 1486 1487 +11 649 650 651 1196 1197 1239 1240 1484 1485 1486 1487 +11 649 650 651 1196 1197 1239 1240 1484 1485 1486 1487 +11 649 650 651 1196 1197 1239 1240 1484 1485 1486 1487 +11 649 650 651 1196 1197 1239 1240 1484 1485 1486 1487 +11 649 650 651 1196 1197 1239 1240 1484 1485 1486 1487 +4 649 651 1485 1487 +4 649 651 1485 1487 +4 649 651 1485 1487 +4 649 651 1485 1487 +4 649 651 1485 1487 +4 649 651 1485 1487 +8 649 651 980 981 1023 1024 1485 1487 +8 649 651 980 981 1023 1024 1485 1487 +8 649 651 980 981 1023 1024 1485 1487 +8 649 651 980 981 1023 1024 1485 1487 +8 649 651 980 981 1023 1024 1485 1487 +8 649 651 980 981 1023 1024 1485 1487 +3 649 980 1023 +3 649 980 1023 +3 649 980 1023 +3 649 980 1023 +3 649 980 1023 +3 649 980 1023 +8 650 1368 1379 1484 1486 2238 2240 2987 +8 650 1368 1379 1484 1486 2238 2240 2987 +8 650 1368 1379 1484 1486 2238 2240 2987 +8 650 1368 1379 1484 1486 2238 2240 2987 +8 650 1368 1379 1484 1486 2238 2240 2987 +8 650 1368 1379 1484 1486 2238 2240 2987 +4 650 1368 1379 2987 +4 650 1368 1379 2987 +4 650 1368 1379 2987 +4 650 1368 1379 2987 +4 650 1368 1379 2987 +4 650 1368 1379 2987 +8 650 1368 1379 1494 1496 2228 2230 2987 +8 650 1368 1379 1494 1496 2228 2230 2987 +8 650 1368 1379 1494 1496 2228 2230 2987 +8 650 1368 1379 1494 1496 2228 2230 2987 +8 650 1368 1379 1494 1496 2228 2230 2987 +8 650 1368 1379 1494 1496 2228 2230 2987 +3 650 1494 1496 +3 650 1494 1496 +3 650 1494 1496 +3 650 1494 1496 +3 650 1494 1496 +3 650 1494 1496 +11 650 651 652 1197 1198 1240 1241 1494 1495 1496 1497 +11 650 651 652 1197 1198 1240 1241 1494 1495 1496 1497 +11 650 651 652 1197 1198 1240 1241 1494 1495 1496 1497 +11 650 651 652 1197 1198 1240 1241 1494 1495 1496 1497 +11 650 651 652 1197 1198 1240 1241 1494 1495 1496 1497 +11 650 651 652 1197 1198 1240 1241 1494 1495 1496 1497 +4 650 651 1197 1240 +4 650 651 1197 1240 +4 650 651 1197 1240 +4 650 651 1197 1240 +4 650 651 1197 1240 +4 650 651 1197 1240 +3 650 1484 1486 +3 650 1484 1486 +3 650 1484 1486 +3 650 1484 1486 +3 650 1484 1486 +3 650 1484 1486 +4 651 652 1495 1497 +4 651 652 1495 1497 +4 651 652 1495 1497 +4 651 652 1495 1497 +4 651 652 1495 1497 +4 651 652 1495 1497 +8 651 652 981 982 1024 1025 1495 1497 +8 651 652 981 982 1024 1025 1495 1497 +8 651 652 981 982 1024 1025 1495 1497 +8 651 652 981 982 1024 1025 1495 1497 +8 651 652 981 982 1024 1025 1495 1497 +8 651 652 981 982 1024 1025 1495 1497 +3 651 981 1024 +3 651 981 1024 +3 651 981 1024 +3 651 981 1024 +3 651 981 1024 +3 651 981 1024 +3 652 1198 1241 +3 652 1198 1241 +3 652 1198 1241 +3 652 1198 1241 +3 652 1198 1241 +3 652 1198 1241 +8 652 653 1198 1199 1241 1242 1503 1504 +8 652 653 1198 1199 1241 1242 1503 1504 +8 652 653 1198 1199 1241 1242 1503 1504 +8 652 653 1198 1199 1241 1242 1503 1504 +8 652 653 1198 1199 1241 1242 1503 1504 +8 652 653 1198 1199 1241 1242 1503 1504 +4 652 653 1503 1504 +4 652 653 1503 1504 +4 652 653 1503 1504 +4 652 653 1503 1504 +4 652 653 1503 1504 +4 652 653 1503 1504 +8 652 653 982 983 1025 1026 1503 1504 +8 652 653 982 983 1025 1026 1503 1504 +8 652 653 982 983 1025 1026 1503 1504 +8 652 653 982 983 1025 1026 1503 1504 +8 652 653 982 983 1025 1026 1503 1504 +8 652 653 982 983 1025 1026 1503 1504 +3 652 982 1025 +3 652 982 1025 +3 652 982 1025 +3 652 982 1025 +3 652 982 1025 +3 652 982 1025 +3 653 1199 1242 +3 653 1199 1242 +3 653 1199 1242 +3 653 1199 1242 +3 653 1199 1242 +3 653 1199 1242 +8 653 654 1199 1200 1242 1243 1510 1511 +8 653 654 1199 1200 1242 1243 1510 1511 +8 653 654 1199 1200 1242 1243 1510 1511 +8 653 654 1199 1200 1242 1243 1510 1511 +8 653 654 1199 1200 1242 1243 1510 1511 +8 653 654 1199 1200 1242 1243 1510 1511 +4 653 654 1510 1511 +4 653 654 1510 1511 +4 653 654 1510 1511 +4 653 654 1510 1511 +4 653 654 1510 1511 +4 653 654 1510 1511 +8 653 654 983 984 1026 1027 1510 1511 +8 653 654 983 984 1026 1027 1510 1511 +8 653 654 983 984 1026 1027 1510 1511 +8 653 654 983 984 1026 1027 1510 1511 +8 653 654 983 984 1026 1027 1510 1511 +8 653 654 983 984 1026 1027 1510 1511 +3 653 983 1026 +3 653 983 1026 +3 653 983 1026 +3 653 983 1026 +3 653 983 1026 +3 653 983 1026 +3 654 1200 1243 +3 654 1200 1243 +3 654 1200 1243 +3 654 1200 1243 +3 654 1200 1243 +3 654 1200 1243 +8 654 655 1200 1201 1243 1244 1518 1519 +8 654 655 1200 1201 1243 1244 1518 1519 +8 654 655 1200 1201 1243 1244 1518 1519 +8 654 655 1200 1201 1243 1244 1518 1519 +8 654 655 1200 1201 1243 1244 1518 1519 +8 654 655 1200 1201 1243 1244 1518 1519 +4 654 655 1518 1519 +4 654 655 1518 1519 +4 654 655 1518 1519 +4 654 655 1518 1519 +4 654 655 1518 1519 +4 654 655 1518 1519 +8 654 655 984 985 1027 1028 1518 1519 +8 654 655 984 985 1027 1028 1518 1519 +8 654 655 984 985 1027 1028 1518 1519 +8 654 655 984 985 1027 1028 1518 1519 +8 654 655 984 985 1027 1028 1518 1519 +8 654 655 984 985 1027 1028 1518 1519 +3 654 984 1027 +3 654 984 1027 +3 654 984 1027 +3 654 984 1027 +3 654 984 1027 +3 654 984 1027 +3 655 1201 1244 +3 655 1201 1244 +3 655 1201 1244 +3 655 1201 1244 +3 655 1201 1244 +3 655 1201 1244 +8 655 656 1201 1202 1244 1245 1525 1526 +8 655 656 1201 1202 1244 1245 1525 1526 +8 655 656 1201 1202 1244 1245 1525 1526 +8 655 656 1201 1202 1244 1245 1525 1526 +8 655 656 1201 1202 1244 1245 1525 1526 +8 655 656 1201 1202 1244 1245 1525 1526 +4 655 656 1525 1526 +4 655 656 1525 1526 +4 655 656 1525 1526 +4 655 656 1525 1526 +4 655 656 1525 1526 +4 655 656 1525 1526 +8 655 656 985 986 1028 1029 1525 1526 +8 655 656 985 986 1028 1029 1525 1526 +8 655 656 985 986 1028 1029 1525 1526 +8 655 656 985 986 1028 1029 1525 1526 +8 655 656 985 986 1028 1029 1525 1526 +8 655 656 985 986 1028 1029 1525 1526 +3 655 985 1028 +3 655 985 1028 +3 655 985 1028 +3 655 985 1028 +3 655 985 1028 +3 655 985 1028 +3 656 1202 1245 +3 656 1202 1245 +3 656 1202 1245 +3 656 1202 1245 +3 656 1202 1245 +3 656 1202 1245 +10 656 657 1202 1203 1245 1246 1532 1533 1534 1535 +10 656 657 1202 1203 1245 1246 1532 1533 1534 1535 +10 656 657 1202 1203 1245 1246 1532 1533 1534 1535 +10 656 657 1202 1203 1245 1246 1532 1533 1534 1535 +10 656 657 1202 1203 1245 1246 1532 1533 1534 1535 +10 656 657 1202 1203 1245 1246 1532 1533 1534 1535 +4 656 657 1533 1535 +4 656 657 1533 1535 +4 656 657 1533 1535 +4 656 657 1533 1535 +4 656 657 1533 1535 +4 656 657 1533 1535 +8 656 657 986 987 1029 1030 1533 1535 +8 656 657 986 987 1029 1030 1533 1535 +8 656 657 986 987 1029 1030 1533 1535 +8 656 657 986 987 1029 1030 1533 1535 +8 656 657 986 987 1029 1030 1533 1535 +8 656 657 986 987 1029 1030 1533 1535 +3 656 986 1029 +3 656 986 1029 +3 656 986 1029 +3 656 986 1029 +3 656 986 1029 +3 656 986 1029 +3 657 1203 1246 +3 657 1203 1246 +3 657 1203 1246 +3 657 1203 1246 +3 657 1203 1246 +3 657 1203 1246 +8 657 658 1203 1204 1246 1247 1542 1543 +8 657 658 1203 1204 1246 1247 1542 1543 +8 657 658 1203 1204 1246 1247 1542 1543 +8 657 658 1203 1204 1246 1247 1542 1543 +8 657 658 1203 1204 1246 1247 1542 1543 +8 657 658 1203 1204 1246 1247 1542 1543 +4 657 658 1542 1543 +4 657 658 1542 1543 +4 657 658 1542 1543 +4 657 658 1542 1543 +4 657 658 1542 1543 +4 657 658 1542 1543 +8 657 658 987 988 1030 1031 1542 1543 +8 657 658 987 988 1030 1031 1542 1543 +8 657 658 987 988 1030 1031 1542 1543 +8 657 658 987 988 1030 1031 1542 1543 +8 657 658 987 988 1030 1031 1542 1543 +8 657 658 987 988 1030 1031 1542 1543 +3 657 987 1030 +3 657 987 1030 +3 657 987 1030 +3 657 987 1030 +3 657 987 1030 +3 657 987 1030 +3 658 1204 1247 +3 658 1204 1247 +3 658 1204 1247 +3 658 1204 1247 +3 658 1204 1247 +3 658 1204 1247 +8 658 659 1204 1205 1247 1248 1549 1550 +8 658 659 1204 1205 1247 1248 1549 1550 +8 658 659 1204 1205 1247 1248 1549 1550 +8 658 659 1204 1205 1247 1248 1549 1550 +8 658 659 1204 1205 1247 1248 1549 1550 +8 658 659 1204 1205 1247 1248 1549 1550 +4 658 659 1549 1550 +4 658 659 1549 1550 +4 658 659 1549 1550 +4 658 659 1549 1550 +4 658 659 1549 1550 +4 658 659 1549 1550 +8 658 659 988 989 1031 1032 1549 1550 +8 658 659 988 989 1031 1032 1549 1550 +8 658 659 988 989 1031 1032 1549 1550 +8 658 659 988 989 1031 1032 1549 1550 +8 658 659 988 989 1031 1032 1549 1550 +8 658 659 988 989 1031 1032 1549 1550 +3 658 988 1031 +3 658 988 1031 +3 658 988 1031 +3 658 988 1031 +3 658 988 1031 +3 658 988 1031 +3 659 1205 1248 +3 659 1205 1248 +3 659 1205 1248 +3 659 1205 1248 +3 659 1205 1248 +3 659 1205 1248 +8 659 660 1205 1206 1248 1249 1556 1557 +8 659 660 1205 1206 1248 1249 1556 1557 +8 659 660 1205 1206 1248 1249 1556 1557 +8 659 660 1205 1206 1248 1249 1556 1557 +8 659 660 1205 1206 1248 1249 1556 1557 +8 659 660 1205 1206 1248 1249 1556 1557 +4 659 660 1556 1557 +4 659 660 1556 1557 +4 659 660 1556 1557 +4 659 660 1556 1557 +4 659 660 1556 1557 +4 659 660 1556 1557 +8 659 660 989 990 1032 1033 1556 1557 +8 659 660 989 990 1032 1033 1556 1557 +8 659 660 989 990 1032 1033 1556 1557 +8 659 660 989 990 1032 1033 1556 1557 +8 659 660 989 990 1032 1033 1556 1557 +8 659 660 989 990 1032 1033 1556 1557 +3 659 989 1032 +3 659 989 1032 +3 659 989 1032 +3 659 989 1032 +3 659 989 1032 +3 659 989 1032 +3 660 1206 1249 +3 660 1206 1249 +3 660 1206 1249 +3 660 1206 1249 +3 660 1206 1249 +3 660 1206 1249 +8 660 661 1206 1207 1249 1250 1564 1565 +8 660 661 1206 1207 1249 1250 1564 1565 +8 660 661 1206 1207 1249 1250 1564 1565 +8 660 661 1206 1207 1249 1250 1564 1565 +8 660 661 1206 1207 1249 1250 1564 1565 +8 660 661 1206 1207 1249 1250 1564 1565 +4 660 661 1564 1565 +4 660 661 1564 1565 +4 660 661 1564 1565 +4 660 661 1564 1565 +4 660 661 1564 1565 +4 660 661 1564 1565 +8 660 661 990 991 1033 1034 1564 1565 +8 660 661 990 991 1033 1034 1564 1565 +8 660 661 990 991 1033 1034 1564 1565 +8 660 661 990 991 1033 1034 1564 1565 +8 660 661 990 991 1033 1034 1564 1565 +8 660 661 990 991 1033 1034 1564 1565 +3 660 990 1033 +3 660 990 1033 +3 660 990 1033 +3 660 990 1033 +3 660 990 1033 +3 660 990 1033 +3 661 1207 1250 +3 661 1207 1250 +3 661 1207 1250 +3 661 1207 1250 +3 661 1207 1250 +3 661 1207 1250 +8 661 662 1207 1208 1250 1251 1571 1572 +8 661 662 1207 1208 1250 1251 1571 1572 +8 661 662 1207 1208 1250 1251 1571 1572 +8 661 662 1207 1208 1250 1251 1571 1572 +8 661 662 1207 1208 1250 1251 1571 1572 +8 661 662 1207 1208 1250 1251 1571 1572 +4 661 662 1571 1572 +4 661 662 1571 1572 +4 661 662 1571 1572 +4 661 662 1571 1572 +4 661 662 1571 1572 +4 661 662 1571 1572 +8 661 662 991 992 1034 1035 1571 1572 +8 661 662 991 992 1034 1035 1571 1572 +8 661 662 991 992 1034 1035 1571 1572 +8 661 662 991 992 1034 1035 1571 1572 +8 661 662 991 992 1034 1035 1571 1572 +8 661 662 991 992 1034 1035 1571 1572 +3 661 991 1034 +3 661 991 1034 +3 661 991 1034 +3 661 991 1034 +3 661 991 1034 +3 661 991 1034 +3 662 1208 1251 +3 662 1208 1251 +3 662 1208 1251 +3 662 1208 1251 +3 662 1208 1251 +3 662 1208 1251 +10 662 663 1208 1209 1251 1252 1578 1579 1580 1581 +10 662 663 1208 1209 1251 1252 1578 1579 1580 1581 +10 662 663 1208 1209 1251 1252 1578 1579 1580 1581 +10 662 663 1208 1209 1251 1252 1578 1579 1580 1581 +10 662 663 1208 1209 1251 1252 1578 1579 1580 1581 +10 662 663 1208 1209 1251 1252 1578 1579 1580 1581 +4 662 663 1579 1581 +4 662 663 1579 1581 +4 662 663 1579 1581 +4 662 663 1579 1581 +4 662 663 1579 1581 +4 662 663 1579 1581 +8 662 663 992 993 1035 1036 1579 1581 +8 662 663 992 993 1035 1036 1579 1581 +8 662 663 992 993 1035 1036 1579 1581 +8 662 663 992 993 1035 1036 1579 1581 +8 662 663 992 993 1035 1036 1579 1581 +8 662 663 992 993 1035 1036 1579 1581 +3 662 992 1035 +3 662 992 1035 +3 662 992 1035 +3 662 992 1035 +3 662 992 1035 +3 662 992 1035 +3 663 1209 1252 +3 663 1209 1252 +3 663 1209 1252 +3 663 1209 1252 +3 663 1209 1252 +3 663 1209 1252 +8 663 664 1209 1210 1252 1253 1588 1589 +8 663 664 1209 1210 1252 1253 1588 1589 +8 663 664 1209 1210 1252 1253 1588 1589 +8 663 664 1209 1210 1252 1253 1588 1589 +8 663 664 1209 1210 1252 1253 1588 1589 +8 663 664 1209 1210 1252 1253 1588 1589 +4 663 664 1588 1589 +4 663 664 1588 1589 +4 663 664 1588 1589 +4 663 664 1588 1589 +4 663 664 1588 1589 +4 663 664 1588 1589 +8 663 664 993 994 1036 1037 1588 1589 +8 663 664 993 994 1036 1037 1588 1589 +8 663 664 993 994 1036 1037 1588 1589 +8 663 664 993 994 1036 1037 1588 1589 +8 663 664 993 994 1036 1037 1588 1589 +8 663 664 993 994 1036 1037 1588 1589 +3 663 993 1036 +3 663 993 1036 +3 663 993 1036 +3 663 993 1036 +3 663 993 1036 +3 663 993 1036 +3 664 1210 1253 +3 664 1210 1253 +3 664 1210 1253 +3 664 1210 1253 +3 664 1210 1253 +3 664 1210 1253 +8 664 665 1210 1211 1253 1254 1595 1596 +8 664 665 1210 1211 1253 1254 1595 1596 +8 664 665 1210 1211 1253 1254 1595 1596 +8 664 665 1210 1211 1253 1254 1595 1596 +8 664 665 1210 1211 1253 1254 1595 1596 +8 664 665 1210 1211 1253 1254 1595 1596 +4 664 665 1595 1596 +4 664 665 1595 1596 +4 664 665 1595 1596 +4 664 665 1595 1596 +4 664 665 1595 1596 +4 664 665 1595 1596 +8 664 665 994 995 1037 1038 1595 1596 +8 664 665 994 995 1037 1038 1595 1596 +8 664 665 994 995 1037 1038 1595 1596 +8 664 665 994 995 1037 1038 1595 1596 +8 664 665 994 995 1037 1038 1595 1596 +8 664 665 994 995 1037 1038 1595 1596 +3 664 994 1037 +3 664 994 1037 +3 664 994 1037 +3 664 994 1037 +3 664 994 1037 +3 664 994 1037 +3 665 1211 1254 +3 665 1211 1254 +3 665 1211 1254 +3 665 1211 1254 +3 665 1211 1254 +3 665 1211 1254 +8 665 666 1211 1212 1254 1255 1602 1603 +8 665 666 1211 1212 1254 1255 1602 1603 +8 665 666 1211 1212 1254 1255 1602 1603 +8 665 666 1211 1212 1254 1255 1602 1603 +8 665 666 1211 1212 1254 1255 1602 1603 +8 665 666 1211 1212 1254 1255 1602 1603 +4 665 666 1602 1603 +4 665 666 1602 1603 +4 665 666 1602 1603 +4 665 666 1602 1603 +4 665 666 1602 1603 +4 665 666 1602 1603 +8 665 666 995 996 1038 1039 1602 1603 +8 665 666 995 996 1038 1039 1602 1603 +8 665 666 995 996 1038 1039 1602 1603 +8 665 666 995 996 1038 1039 1602 1603 +8 665 666 995 996 1038 1039 1602 1603 +8 665 666 995 996 1038 1039 1602 1603 +3 665 995 1038 +3 665 995 1038 +3 665 995 1038 +3 665 995 1038 +3 665 995 1038 +3 665 995 1038 +3 666 1212 1255 +3 666 1212 1255 +3 666 1212 1255 +3 666 1212 1255 +3 666 1212 1255 +3 666 1212 1255 +8 666 667 1212 1213 1255 1256 1610 1611 +8 666 667 1212 1213 1255 1256 1610 1611 +8 666 667 1212 1213 1255 1256 1610 1611 +8 666 667 1212 1213 1255 1256 1610 1611 +8 666 667 1212 1213 1255 1256 1610 1611 +8 666 667 1212 1213 1255 1256 1610 1611 +4 666 667 1610 1611 +4 666 667 1610 1611 +4 666 667 1610 1611 +4 666 667 1610 1611 +4 666 667 1610 1611 +4 666 667 1610 1611 +8 666 667 996 997 1039 1040 1610 1611 +8 666 667 996 997 1039 1040 1610 1611 +8 666 667 996 997 1039 1040 1610 1611 +8 666 667 996 997 1039 1040 1610 1611 +8 666 667 996 997 1039 1040 1610 1611 +8 666 667 996 997 1039 1040 1610 1611 +3 666 996 1039 +3 666 996 1039 +3 666 996 1039 +3 666 996 1039 +3 666 996 1039 +3 666 996 1039 +3 667 1213 1256 +3 667 1213 1256 +3 667 1213 1256 +3 667 1213 1256 +3 667 1213 1256 +3 667 1213 1256 +8 667 668 1213 1214 1256 1257 1617 1618 +8 667 668 1213 1214 1256 1257 1617 1618 +8 667 668 1213 1214 1256 1257 1617 1618 +8 667 668 1213 1214 1256 1257 1617 1618 +8 667 668 1213 1214 1256 1257 1617 1618 +8 667 668 1213 1214 1256 1257 1617 1618 +4 667 668 1617 1618 +4 667 668 1617 1618 +4 667 668 1617 1618 +4 667 668 1617 1618 +4 667 668 1617 1618 +4 667 668 1617 1618 +8 667 668 997 998 1040 1041 1617 1618 +8 667 668 997 998 1040 1041 1617 1618 +8 667 668 997 998 1040 1041 1617 1618 +8 667 668 997 998 1040 1041 1617 1618 +8 667 668 997 998 1040 1041 1617 1618 +8 667 668 997 998 1040 1041 1617 1618 +3 667 997 1040 +3 667 997 1040 +3 667 997 1040 +3 667 997 1040 +3 667 997 1040 +3 667 997 1040 +3 668 1214 1257 +3 668 1214 1257 +3 668 1214 1257 +3 668 1214 1257 +3 668 1214 1257 +3 668 1214 1257 +10 668 669 1214 1215 1257 1258 1624 1625 1626 1627 +10 668 669 1214 1215 1257 1258 1624 1625 1626 1627 +10 668 669 1214 1215 1257 1258 1624 1625 1626 1627 +10 668 669 1214 1215 1257 1258 1624 1625 1626 1627 +10 668 669 1214 1215 1257 1258 1624 1625 1626 1627 +10 668 669 1214 1215 1257 1258 1624 1625 1626 1627 +4 668 669 1625 1627 +4 668 669 1625 1627 +4 668 669 1625 1627 +4 668 669 1625 1627 +4 668 669 1625 1627 +4 668 669 1625 1627 +8 668 669 998 999 1041 1042 1625 1627 +8 668 669 998 999 1041 1042 1625 1627 +8 668 669 998 999 1041 1042 1625 1627 +8 668 669 998 999 1041 1042 1625 1627 +8 668 669 998 999 1041 1042 1625 1627 +8 668 669 998 999 1041 1042 1625 1627 +3 668 998 1041 +3 668 998 1041 +3 668 998 1041 +3 668 998 1041 +3 668 998 1041 +3 668 998 1041 +3 669 1215 1258 +3 669 1215 1258 +3 669 1215 1258 +3 669 1215 1258 +3 669 1215 1258 +3 669 1215 1258 +8 669 670 1215 1216 1258 1259 1634 1635 +8 669 670 1215 1216 1258 1259 1634 1635 +8 669 670 1215 1216 1258 1259 1634 1635 +8 669 670 1215 1216 1258 1259 1634 1635 +8 669 670 1215 1216 1258 1259 1634 1635 +8 669 670 1215 1216 1258 1259 1634 1635 +4 669 670 1634 1635 +4 669 670 1634 1635 +4 669 670 1634 1635 +4 669 670 1634 1635 +4 669 670 1634 1635 +4 669 670 1634 1635 +8 669 670 999 1000 1042 1043 1634 1635 +8 669 670 999 1000 1042 1043 1634 1635 +8 669 670 999 1000 1042 1043 1634 1635 +8 669 670 999 1000 1042 1043 1634 1635 +8 669 670 999 1000 1042 1043 1634 1635 +8 669 670 999 1000 1042 1043 1634 1635 +3 669 999 1042 +3 669 999 1042 +3 669 999 1042 +3 669 999 1042 +3 669 999 1042 +3 669 999 1042 +3 670 1216 1259 +3 670 1216 1259 +3 670 1216 1259 +3 670 1216 1259 +3 670 1216 1259 +3 670 1216 1259 +8 670 671 1216 1217 1259 1260 1641 1642 +8 670 671 1216 1217 1259 1260 1641 1642 +8 670 671 1216 1217 1259 1260 1641 1642 +8 670 671 1216 1217 1259 1260 1641 1642 +8 670 671 1216 1217 1259 1260 1641 1642 +8 670 671 1216 1217 1259 1260 1641 1642 +4 670 671 1641 1642 +4 670 671 1641 1642 +4 670 671 1641 1642 +4 670 671 1641 1642 +4 670 671 1641 1642 +4 670 671 1641 1642 +8 670 671 1000 1001 1043 1044 1641 1642 +8 670 671 1000 1001 1043 1044 1641 1642 +8 670 671 1000 1001 1043 1044 1641 1642 +8 670 671 1000 1001 1043 1044 1641 1642 +8 670 671 1000 1001 1043 1044 1641 1642 +8 670 671 1000 1001 1043 1044 1641 1642 +3 670 1000 1043 +3 670 1000 1043 +3 670 1000 1043 +3 670 1000 1043 +3 670 1000 1043 +3 670 1000 1043 +3 671 1217 1260 +3 671 1217 1260 +3 671 1217 1260 +3 671 1217 1260 +3 671 1217 1260 +3 671 1217 1260 +8 671 672 1217 1218 1260 1261 1648 1649 +8 671 672 1217 1218 1260 1261 1648 1649 +8 671 672 1217 1218 1260 1261 1648 1649 +8 671 672 1217 1218 1260 1261 1648 1649 +8 671 672 1217 1218 1260 1261 1648 1649 +8 671 672 1217 1218 1260 1261 1648 1649 +4 671 672 1648 1649 +4 671 672 1648 1649 +4 671 672 1648 1649 +4 671 672 1648 1649 +4 671 672 1648 1649 +4 671 672 1648 1649 +8 671 672 1001 1002 1044 1045 1648 1649 +8 671 672 1001 1002 1044 1045 1648 1649 +8 671 672 1001 1002 1044 1045 1648 1649 +8 671 672 1001 1002 1044 1045 1648 1649 +8 671 672 1001 1002 1044 1045 1648 1649 +8 671 672 1001 1002 1044 1045 1648 1649 +3 671 1001 1044 +3 671 1001 1044 +3 671 1001 1044 +3 671 1001 1044 +3 671 1001 1044 +3 671 1001 1044 +3 672 1218 1261 +3 672 1218 1261 +3 672 1218 1261 +3 672 1218 1261 +3 672 1218 1261 +3 672 1218 1261 +8 672 673 1218 1219 1261 1262 1656 1657 +8 672 673 1218 1219 1261 1262 1656 1657 +8 672 673 1218 1219 1261 1262 1656 1657 +8 672 673 1218 1219 1261 1262 1656 1657 +8 672 673 1218 1219 1261 1262 1656 1657 +8 672 673 1218 1219 1261 1262 1656 1657 +4 672 673 1656 1657 +4 672 673 1656 1657 +4 672 673 1656 1657 +4 672 673 1656 1657 +4 672 673 1656 1657 +4 672 673 1656 1657 +8 672 673 1002 1003 1045 1046 1656 1657 +8 672 673 1002 1003 1045 1046 1656 1657 +8 672 673 1002 1003 1045 1046 1656 1657 +8 672 673 1002 1003 1045 1046 1656 1657 +8 672 673 1002 1003 1045 1046 1656 1657 +8 672 673 1002 1003 1045 1046 1656 1657 +3 672 1002 1045 +3 672 1002 1045 +3 672 1002 1045 +3 672 1002 1045 +3 672 1002 1045 +3 672 1002 1045 +3 673 1219 1262 +3 673 1219 1262 +3 673 1219 1262 +3 673 1219 1262 +3 673 1219 1262 +3 673 1219 1262 +8 673 674 1219 1220 1262 1263 1663 1664 +8 673 674 1219 1220 1262 1263 1663 1664 +8 673 674 1219 1220 1262 1263 1663 1664 +8 673 674 1219 1220 1262 1263 1663 1664 +8 673 674 1219 1220 1262 1263 1663 1664 +8 673 674 1219 1220 1262 1263 1663 1664 +4 673 674 1663 1664 +4 673 674 1663 1664 +4 673 674 1663 1664 +4 673 674 1663 1664 +4 673 674 1663 1664 +4 673 674 1663 1664 +8 673 674 1003 1004 1046 1047 1663 1664 +8 673 674 1003 1004 1046 1047 1663 1664 +8 673 674 1003 1004 1046 1047 1663 1664 +8 673 674 1003 1004 1046 1047 1663 1664 +8 673 674 1003 1004 1046 1047 1663 1664 +8 673 674 1003 1004 1046 1047 1663 1664 +3 673 1003 1046 +3 673 1003 1046 +3 673 1003 1046 +3 673 1003 1046 +3 673 1003 1046 +3 673 1003 1046 +3 674 1220 1263 +3 674 1220 1263 +3 674 1220 1263 +3 674 1220 1263 +3 674 1220 1263 +3 674 1220 1263 +10 674 675 1220 1221 1263 1264 1670 1671 1672 1673 +10 674 675 1220 1221 1263 1264 1670 1671 1672 1673 +10 674 675 1220 1221 1263 1264 1670 1671 1672 1673 +10 674 675 1220 1221 1263 1264 1670 1671 1672 1673 +10 674 675 1220 1221 1263 1264 1670 1671 1672 1673 +10 674 675 1220 1221 1263 1264 1670 1671 1672 1673 +4 674 675 1671 1673 +4 674 675 1671 1673 +4 674 675 1671 1673 +4 674 675 1671 1673 +4 674 675 1671 1673 +4 674 675 1671 1673 +8 674 675 1004 1005 1047 1048 1671 1673 +8 674 675 1004 1005 1047 1048 1671 1673 +8 674 675 1004 1005 1047 1048 1671 1673 +8 674 675 1004 1005 1047 1048 1671 1673 +8 674 675 1004 1005 1047 1048 1671 1673 +8 674 675 1004 1005 1047 1048 1671 1673 +3 674 1004 1047 +3 674 1004 1047 +3 674 1004 1047 +3 674 1004 1047 +3 674 1004 1047 +3 674 1004 1047 +3 675 1221 1264 +3 675 1221 1264 +3 675 1221 1264 +3 675 1221 1264 +3 675 1221 1264 +3 675 1221 1264 +8 675 676 1221 1222 1264 1265 1680 1681 +8 675 676 1221 1222 1264 1265 1680 1681 +8 675 676 1221 1222 1264 1265 1680 1681 +8 675 676 1221 1222 1264 1265 1680 1681 +8 675 676 1221 1222 1264 1265 1680 1681 +8 675 676 1221 1222 1264 1265 1680 1681 +4 675 676 1680 1681 +4 675 676 1680 1681 +4 675 676 1680 1681 +4 675 676 1680 1681 +4 675 676 1680 1681 +4 675 676 1680 1681 +8 675 676 1005 1006 1048 1049 1680 1681 +8 675 676 1005 1006 1048 1049 1680 1681 +8 675 676 1005 1006 1048 1049 1680 1681 +8 675 676 1005 1006 1048 1049 1680 1681 +8 675 676 1005 1006 1048 1049 1680 1681 +8 675 676 1005 1006 1048 1049 1680 1681 +3 675 1005 1048 +3 675 1005 1048 +3 675 1005 1048 +3 675 1005 1048 +3 675 1005 1048 +3 675 1005 1048 +3 676 1222 1265 +3 676 1222 1265 +3 676 1222 1265 +3 676 1222 1265 +3 676 1222 1265 +3 676 1222 1265 +8 676 677 1222 1223 1265 1266 1687 1688 +8 676 677 1222 1223 1265 1266 1687 1688 +8 676 677 1222 1223 1265 1266 1687 1688 +8 676 677 1222 1223 1265 1266 1687 1688 +8 676 677 1222 1223 1265 1266 1687 1688 +8 676 677 1222 1223 1265 1266 1687 1688 +4 676 677 1687 1688 +4 676 677 1687 1688 +4 676 677 1687 1688 +4 676 677 1687 1688 +4 676 677 1687 1688 +4 676 677 1687 1688 +8 676 677 1006 1007 1049 1050 1687 1688 +8 676 677 1006 1007 1049 1050 1687 1688 +8 676 677 1006 1007 1049 1050 1687 1688 +8 676 677 1006 1007 1049 1050 1687 1688 +8 676 677 1006 1007 1049 1050 1687 1688 +8 676 677 1006 1007 1049 1050 1687 1688 +3 676 1006 1049 +3 676 1006 1049 +3 676 1006 1049 +3 676 1006 1049 +3 676 1006 1049 +3 676 1006 1049 +3 677 1223 1266 +3 677 1223 1266 +3 677 1223 1266 +3 677 1223 1266 +3 677 1223 1266 +3 677 1223 1266 +11 677 678 679 1223 1224 1266 1267 1694 1695 1696 1697 +11 677 678 679 1223 1224 1266 1267 1694 1695 1696 1697 +11 677 678 679 1223 1224 1266 1267 1694 1695 1696 1697 +11 677 678 679 1223 1224 1266 1267 1694 1695 1696 1697 +11 677 678 679 1223 1224 1266 1267 1694 1695 1696 1697 +11 677 678 679 1223 1224 1266 1267 1694 1695 1696 1697 +4 677 679 1695 1697 +4 677 679 1695 1697 +4 677 679 1695 1697 +4 677 679 1695 1697 +4 677 679 1695 1697 +4 677 679 1695 1697 +8 677 679 1007 1008 1050 1051 1695 1697 +8 677 679 1007 1008 1050 1051 1695 1697 +8 677 679 1007 1008 1050 1051 1695 1697 +8 677 679 1007 1008 1050 1051 1695 1697 +8 677 679 1007 1008 1050 1051 1695 1697 +8 677 679 1007 1008 1050 1051 1695 1697 +3 677 1007 1050 +3 677 1007 1050 +3 677 1007 1050 +3 677 1007 1050 +3 677 1007 1050 +3 677 1007 1050 +8 678 1377 1388 1694 1696 2028 2030 2959 +8 678 1377 1388 1694 1696 2028 2030 2959 +8 678 1377 1388 1694 1696 2028 2030 2959 +8 678 1377 1388 1694 1696 2028 2030 2959 +8 678 1377 1388 1694 1696 2028 2030 2959 +8 678 1377 1388 1694 1696 2028 2030 2959 +4 678 1377 1388 2959 +4 678 1377 1388 2959 +4 678 1377 1388 2959 +4 678 1377 1388 2959 +4 678 1377 1388 2959 +4 678 1377 1388 2959 +8 678 1377 1388 1704 1706 2018 2020 2959 +8 678 1377 1388 1704 1706 2018 2020 2959 +8 678 1377 1388 1704 1706 2018 2020 2959 +8 678 1377 1388 1704 1706 2018 2020 2959 +8 678 1377 1388 1704 1706 2018 2020 2959 +8 678 1377 1388 1704 1706 2018 2020 2959 +3 678 1704 1706 +3 678 1704 1706 +3 678 1704 1706 +3 678 1704 1706 +3 678 1704 1706 +3 678 1704 1706 +11 678 679 680 1224 1225 1267 1268 1704 1705 1706 1707 +11 678 679 680 1224 1225 1267 1268 1704 1705 1706 1707 +11 678 679 680 1224 1225 1267 1268 1704 1705 1706 1707 +11 678 679 680 1224 1225 1267 1268 1704 1705 1706 1707 +11 678 679 680 1224 1225 1267 1268 1704 1705 1706 1707 +11 678 679 680 1224 1225 1267 1268 1704 1705 1706 1707 +4 678 679 1224 1267 +4 678 679 1224 1267 +4 678 679 1224 1267 +4 678 679 1224 1267 +4 678 679 1224 1267 +4 678 679 1224 1267 +3 678 1694 1696 +3 678 1694 1696 +3 678 1694 1696 +3 678 1694 1696 +3 678 1694 1696 +3 678 1694 1696 +4 679 680 1705 1707 +4 679 680 1705 1707 +4 679 680 1705 1707 +4 679 680 1705 1707 +4 679 680 1705 1707 +4 679 680 1705 1707 +8 679 680 1008 1009 1051 1052 1705 1707 +8 679 680 1008 1009 1051 1052 1705 1707 +8 679 680 1008 1009 1051 1052 1705 1707 +8 679 680 1008 1009 1051 1052 1705 1707 +8 679 680 1008 1009 1051 1052 1705 1707 +8 679 680 1008 1009 1051 1052 1705 1707 +3 679 1008 1051 +3 679 1008 1051 +3 679 1008 1051 +3 679 1008 1051 +3 679 1008 1051 +3 679 1008 1051 +3 680 1225 1268 +3 680 1225 1268 +3 680 1225 1268 +3 680 1225 1268 +3 680 1225 1268 +3 680 1225 1268 +8 680 681 1225 1226 1268 1269 1713 1714 +8 680 681 1225 1226 1268 1269 1713 1714 +8 680 681 1225 1226 1268 1269 1713 1714 +8 680 681 1225 1226 1268 1269 1713 1714 +8 680 681 1225 1226 1268 1269 1713 1714 +8 680 681 1225 1226 1268 1269 1713 1714 +4 680 681 1713 1714 +4 680 681 1713 1714 +4 680 681 1713 1714 +4 680 681 1713 1714 +4 680 681 1713 1714 +4 680 681 1713 1714 +8 680 681 1009 1010 1052 1053 1713 1714 +8 680 681 1009 1010 1052 1053 1713 1714 +8 680 681 1009 1010 1052 1053 1713 1714 +8 680 681 1009 1010 1052 1053 1713 1714 +8 680 681 1009 1010 1052 1053 1713 1714 +8 680 681 1009 1010 1052 1053 1713 1714 +3 680 1009 1052 +3 680 1009 1052 +3 680 1009 1052 +3 680 1009 1052 +3 680 1009 1052 +3 680 1009 1052 +3 681 1226 1269 +3 681 1226 1269 +3 681 1226 1269 +3 681 1226 1269 +3 681 1226 1269 +3 681 1226 1269 +3 681 1010 1053 +3 681 1010 1053 +3 681 1010 1053 +3 681 1010 1053 +3 681 1010 1053 +3 681 1010 1053 +11 682 689 691 878 1141 1142 1184 1185 1402 1403 1404 +11 682 689 691 878 1141 1142 1184 1185 1402 1403 1404 +11 682 689 691 878 1141 1142 1184 1185 1402 1403 1404 +11 682 689 691 878 1141 1142 1184 1185 1402 1403 1404 +11 682 689 691 878 1141 1142 1184 1185 1402 1403 1404 +11 682 689 691 878 1141 1142 1184 1185 1402 1403 1404 +4 682 689 1142 1185 +4 682 689 1142 1185 +4 682 689 1142 1185 +4 682 689 1142 1185 +4 682 689 1142 1185 +4 682 689 1142 1185 +10 682 684 686 689 1142 1143 1185 1186 1410 1411 +10 682 684 686 689 1142 1143 1185 1186 1410 1411 +10 682 684 686 689 1142 1143 1185 1186 1410 1411 +10 682 684 686 689 1142 1143 1185 1186 1410 1411 +10 682 684 686 689 1142 1143 1185 1186 1410 1411 +10 682 684 686 689 1142 1143 1185 1186 1410 1411 +4 682 684 1410 1411 +4 682 684 1410 1411 +4 682 684 1410 1411 +4 682 684 1410 1411 +4 682 684 1410 1411 +4 682 684 1410 1411 +8 682 684 926 927 969 970 1410 1411 +8 682 684 926 927 969 970 1410 1411 +8 682 684 926 927 969 970 1410 1411 +8 682 684 926 927 969 970 1410 1411 +8 682 684 926 927 969 970 1410 1411 +8 682 684 926 927 969 970 1410 1411 +8 682 878 925 926 968 969 1403 1404 +8 682 878 925 926 968 969 1403 1404 +8 682 878 925 926 968 969 1403 1404 +8 682 878 925 926 968 969 1403 1404 +8 682 878 925 926 968 969 1403 1404 +8 682 878 925 926 968 969 1403 1404 +3 682 926 969 +3 682 926 969 +3 682 926 969 +3 682 926 969 +3 682 926 969 +3 682 926 969 +4 682 878 1403 1404 +4 682 878 1403 1404 +4 682 878 1403 1404 +4 682 878 1403 1404 +4 682 878 1403 1404 +4 682 878 1403 1404 +10 683 684 685 686 1143 1144 1186 1187 1416 1417 +10 683 684 685 686 1143 1144 1186 1187 1416 1417 +10 683 684 685 686 1143 1144 1186 1187 1416 1417 +10 683 684 685 686 1143 1144 1186 1187 1416 1417 +10 683 684 685 686 1143 1144 1186 1187 1416 1417 +10 683 684 685 686 1143 1144 1186 1187 1416 1417 +4 683 685 1144 1187 +4 683 685 1144 1187 +4 683 685 1144 1187 +4 683 685 1144 1187 +4 683 685 1144 1187 +4 683 685 1144 1187 +10 683 685 687 1144 1145 1187 1188 1422 1423 1848 +10 683 685 687 1144 1145 1187 1188 1422 1423 1848 +10 683 685 687 1144 1145 1187 1188 1422 1423 1848 +10 683 685 687 1144 1145 1187 1188 1422 1423 1848 +10 683 685 687 1144 1145 1187 1188 1422 1423 1848 +10 683 685 687 1144 1145 1187 1188 1422 1423 1848 +2 683 686 +2 683 686 +2 683 686 +2 683 686 +2 683 686 +2 683 686 +1 683 +1 683 +1 683 +1 683 +1 683 +1 683 +2 683 1848 +2 683 1848 +2 683 1848 +2 683 1848 +2 683 1848 +2 683 1848 +4 684 686 1143 1186 +4 684 686 1143 1186 +4 684 686 1143 1186 +4 684 686 1143 1186 +4 684 686 1143 1186 +4 684 686 1143 1186 +4 684 685 1416 1417 +4 684 685 1416 1417 +4 684 685 1416 1417 +4 684 685 1416 1417 +4 684 685 1416 1417 +4 684 685 1416 1417 +8 684 685 927 928 970 971 1416 1417 +8 684 685 927 928 970 971 1416 1417 +8 684 685 927 928 970 971 1416 1417 +8 684 685 927 928 970 971 1416 1417 +8 684 685 927 928 970 971 1416 1417 +8 684 685 927 928 970 971 1416 1417 +3 684 927 970 +3 684 927 970 +3 684 927 970 +3 684 927 970 +3 684 927 970 +3 684 927 970 +4 685 687 1422 1423 +4 685 687 1422 1423 +4 685 687 1422 1423 +4 685 687 1422 1423 +4 685 687 1422 1423 +4 685 687 1422 1423 +8 685 687 928 929 971 972 1422 1423 +8 685 687 928 929 971 972 1422 1423 +8 685 687 928 929 971 972 1422 1423 +8 685 687 928 929 971 972 1422 1423 +8 685 687 928 929 971 972 1422 1423 +8 685 687 928 929 971 972 1422 1423 +3 685 928 971 +3 685 928 971 +3 685 928 971 +3 685 928 971 +3 685 928 971 +3 685 928 971 +2 686 689 +2 686 689 +2 686 689 +2 686 689 +2 686 689 +2 686 689 +1 686 +1 686 +1 686 +1 686 +1 686 +1 686 +4 687 1145 1188 1848 +4 687 1145 1188 1848 +4 687 1145 1188 1848 +4 687 1145 1188 1848 +4 687 1145 1188 1848 +4 687 1145 1188 1848 +10 687 688 1145 1146 1188 1189 1428 1429 1848 1849 +10 687 688 1145 1146 1188 1189 1428 1429 1848 1849 +10 687 688 1145 1146 1188 1189 1428 1429 1848 1849 +10 687 688 1145 1146 1188 1189 1428 1429 1848 1849 +10 687 688 1145 1146 1188 1189 1428 1429 1848 1849 +10 687 688 1145 1146 1188 1189 1428 1429 1848 1849 +4 687 688 1428 1429 +4 687 688 1428 1429 +4 687 688 1428 1429 +4 687 688 1428 1429 +4 687 688 1428 1429 +4 687 688 1428 1429 +8 687 688 929 930 972 973 1428 1429 +8 687 688 929 930 972 973 1428 1429 +8 687 688 929 930 972 973 1428 1429 +8 687 688 929 930 972 973 1428 1429 +8 687 688 929 930 972 973 1428 1429 +8 687 688 929 930 972 973 1428 1429 +3 687 929 972 +3 687 929 972 +3 687 929 972 +3 687 929 972 +3 687 929 972 +3 687 929 972 +4 688 1146 1189 1849 +4 688 1146 1189 1849 +4 688 1146 1189 1849 +4 688 1146 1189 1849 +4 688 1146 1189 1849 +4 688 1146 1189 1849 +10 688 690 1146 1147 1189 1190 1434 1435 1849 1850 +10 688 690 1146 1147 1189 1190 1434 1435 1849 1850 +10 688 690 1146 1147 1189 1190 1434 1435 1849 1850 +10 688 690 1146 1147 1189 1190 1434 1435 1849 1850 +10 688 690 1146 1147 1189 1190 1434 1435 1849 1850 +10 688 690 1146 1147 1189 1190 1434 1435 1849 1850 +4 688 690 1434 1435 +4 688 690 1434 1435 +4 688 690 1434 1435 +4 688 690 1434 1435 +4 688 690 1434 1435 +4 688 690 1434 1435 +8 688 690 930 931 973 974 1434 1435 +8 688 690 930 931 973 974 1434 1435 +8 688 690 930 931 973 974 1434 1435 +8 688 690 930 931 973 974 1434 1435 +8 688 690 930 931 973 974 1434 1435 +8 688 690 930 931 973 974 1434 1435 +3 688 930 973 +3 688 930 973 +3 688 930 973 +3 688 930 973 +3 688 930 973 +3 688 930 973 +2 689 691 +2 689 691 +2 689 691 +2 689 691 +2 689 691 +2 689 691 +4 690 1147 1190 1850 +4 690 1147 1190 1850 +4 690 1147 1190 1850 +4 690 1147 1190 1850 +4 690 1147 1190 1850 +4 690 1147 1190 1850 +10 690 692 1147 1148 1190 1191 1440 1441 1850 1852 +10 690 692 1147 1148 1190 1191 1440 1441 1850 1852 +10 690 692 1147 1148 1190 1191 1440 1441 1850 1852 +10 690 692 1147 1148 1190 1191 1440 1441 1850 1852 +10 690 692 1147 1148 1190 1191 1440 1441 1850 1852 +10 690 692 1147 1148 1190 1191 1440 1441 1850 1852 +4 690 692 1440 1441 +4 690 692 1440 1441 +4 690 692 1440 1441 +4 690 692 1440 1441 +4 690 692 1440 1441 +4 690 692 1440 1441 +8 690 692 931 932 974 975 1440 1441 +8 690 692 931 932 974 975 1440 1441 +8 690 692 931 932 974 975 1440 1441 +8 690 692 931 932 974 975 1440 1441 +8 690 692 931 932 974 975 1440 1441 +8 690 692 931 932 974 975 1440 1441 +3 690 931 974 +3 690 931 974 +3 690 931 974 +3 690 931 974 +3 690 931 974 +3 690 931 974 +4 691 1402 2322 2946 +4 691 1402 2322 2946 +4 691 1402 2322 2946 +4 691 1402 2322 2946 +4 691 1402 2322 2946 +4 691 1402 2322 2946 +2 691 1402 +2 691 1402 +2 691 1402 +2 691 1402 +2 691 1402 +2 691 1402 +2 691 2946 +2 691 2946 +2 691 2946 +2 691 2946 +2 691 2946 +2 691 2946 +2 691 2946 +2 691 2946 +2 691 2946 +2 691 2946 +2 691 2946 +2 691 2946 +1 691 +1 691 +1 691 +1 691 +1 691 +1 691 +4 692 1148 1191 1852 +4 692 1148 1191 1852 +4 692 1148 1191 1852 +4 692 1148 1191 1852 +4 692 1148 1191 1852 +4 692 1148 1191 1852 +11 692 693 1148 1149 1191 1192 1446 1447 1448 1851 1852 +11 692 693 1148 1149 1191 1192 1446 1447 1448 1851 1852 +11 692 693 1148 1149 1191 1192 1446 1447 1448 1851 1852 +11 692 693 1148 1149 1191 1192 1446 1447 1448 1851 1852 +11 692 693 1148 1149 1191 1192 1446 1447 1448 1851 1852 +11 692 693 1148 1149 1191 1192 1446 1447 1448 1851 1852 +4 692 693 1447 1448 +4 692 693 1447 1448 +4 692 693 1447 1448 +4 692 693 1447 1448 +4 692 693 1447 1448 +4 692 693 1447 1448 +8 692 693 932 933 975 976 1447 1448 +8 692 693 932 933 975 976 1447 1448 +8 692 693 932 933 975 976 1447 1448 +8 692 693 932 933 975 976 1447 1448 +8 692 693 932 933 975 976 1447 1448 +8 692 693 932 933 975 976 1447 1448 +3 692 932 975 +3 692 932 975 +3 692 932 975 +3 692 932 975 +3 692 932 975 +3 692 932 975 +3 693 1149 1192 +3 693 1149 1192 +3 693 1149 1192 +3 693 1149 1192 +3 693 1149 1192 +3 693 1149 1192 +8 693 694 1149 1150 1192 1193 1454 1455 +8 693 694 1149 1150 1192 1193 1454 1455 +8 693 694 1149 1150 1192 1193 1454 1455 +8 693 694 1149 1150 1192 1193 1454 1455 +8 693 694 1149 1150 1192 1193 1454 1455 +8 693 694 1149 1150 1192 1193 1454 1455 +4 693 694 1454 1455 +4 693 694 1454 1455 +4 693 694 1454 1455 +4 693 694 1454 1455 +4 693 694 1454 1455 +4 693 694 1454 1455 +8 693 694 933 934 976 977 1454 1455 +8 693 694 933 934 976 977 1454 1455 +8 693 694 933 934 976 977 1454 1455 +8 693 694 933 934 976 977 1454 1455 +8 693 694 933 934 976 977 1454 1455 +8 693 694 933 934 976 977 1454 1455 +3 693 933 976 +3 693 933 976 +3 693 933 976 +3 693 933 976 +3 693 933 976 +3 693 933 976 +3 694 1150 1193 +3 694 1150 1193 +3 694 1150 1193 +3 694 1150 1193 +3 694 1150 1193 +3 694 1150 1193 +10 694 695 696 1150 1151 1193 1194 1460 1461 1462 +10 694 695 696 1150 1151 1193 1194 1460 1461 1462 +10 694 695 696 1150 1151 1193 1194 1460 1461 1462 +10 694 695 696 1150 1151 1193 1194 1460 1461 1462 +10 694 695 696 1150 1151 1193 1194 1460 1461 1462 +10 694 695 696 1150 1151 1193 1194 1460 1461 1462 +4 694 696 1461 1462 +4 694 696 1461 1462 +4 694 696 1461 1462 +4 694 696 1461 1462 +4 694 696 1461 1462 +4 694 696 1461 1462 +8 694 696 934 935 977 978 1461 1462 +8 694 696 934 935 977 978 1461 1462 +8 694 696 934 935 977 978 1461 1462 +8 694 696 934 935 977 978 1461 1462 +8 694 696 934 935 977 978 1461 1462 +8 694 696 934 935 977 978 1461 1462 +3 694 934 977 +3 694 934 977 +3 694 934 977 +3 694 934 977 +3 694 934 977 +3 694 934 977 +6 695 1356 1367 1460 2264 2942 +6 695 1356 1367 1460 2264 2942 +6 695 1356 1367 1460 2264 2942 +6 695 1356 1367 1460 2264 2942 +6 695 1356 1367 1460 2264 2942 +6 695 1356 1367 1460 2264 2942 +4 695 1356 1367 2942 +4 695 1356 1367 2942 +4 695 1356 1367 2942 +4 695 1356 1367 2942 +4 695 1356 1367 2942 +4 695 1356 1367 2942 +6 695 1356 1367 1468 2256 2942 +6 695 1356 1367 1468 2256 2942 +6 695 1356 1367 1468 2256 2942 +6 695 1356 1367 1468 2256 2942 +6 695 1356 1367 1468 2256 2942 +6 695 1356 1367 1468 2256 2942 +2 695 1468 +2 695 1468 +2 695 1468 +2 695 1468 +2 695 1468 +2 695 1468 +10 695 696 697 1151 1152 1194 1195 1468 1469 1470 +10 695 696 697 1151 1152 1194 1195 1468 1469 1470 +10 695 696 697 1151 1152 1194 1195 1468 1469 1470 +10 695 696 697 1151 1152 1194 1195 1468 1469 1470 +10 695 696 697 1151 1152 1194 1195 1468 1469 1470 +10 695 696 697 1151 1152 1194 1195 1468 1469 1470 +4 695 696 1151 1194 +4 695 696 1151 1194 +4 695 696 1151 1194 +4 695 696 1151 1194 +4 695 696 1151 1194 +4 695 696 1151 1194 +2 695 1460 +2 695 1460 +2 695 1460 +2 695 1460 +2 695 1460 +2 695 1460 +4 696 697 1469 1470 +4 696 697 1469 1470 +4 696 697 1469 1470 +4 696 697 1469 1470 +4 696 697 1469 1470 +4 696 697 1469 1470 +8 696 697 935 936 978 979 1469 1470 +8 696 697 935 936 978 979 1469 1470 +8 696 697 935 936 978 979 1469 1470 +8 696 697 935 936 978 979 1469 1470 +8 696 697 935 936 978 979 1469 1470 +8 696 697 935 936 978 979 1469 1470 +3 696 935 978 +3 696 935 978 +3 696 935 978 +3 696 935 978 +3 696 935 978 +3 696 935 978 +3 697 1152 1195 +3 697 1152 1195 +3 697 1152 1195 +3 697 1152 1195 +3 697 1152 1195 +3 697 1152 1195 +8 697 698 1152 1153 1195 1196 1476 1477 +8 697 698 1152 1153 1195 1196 1476 1477 +8 697 698 1152 1153 1195 1196 1476 1477 +8 697 698 1152 1153 1195 1196 1476 1477 +8 697 698 1152 1153 1195 1196 1476 1477 +8 697 698 1152 1153 1195 1196 1476 1477 +4 697 698 1476 1477 +4 697 698 1476 1477 +4 697 698 1476 1477 +4 697 698 1476 1477 +4 697 698 1476 1477 +4 697 698 1476 1477 +8 697 698 936 937 979 980 1476 1477 +8 697 698 936 937 979 980 1476 1477 +8 697 698 936 937 979 980 1476 1477 +8 697 698 936 937 979 980 1476 1477 +8 697 698 936 937 979 980 1476 1477 +8 697 698 936 937 979 980 1476 1477 +3 697 936 979 +3 697 936 979 +3 697 936 979 +3 697 936 979 +3 697 936 979 +3 697 936 979 +3 698 1153 1196 +3 698 1153 1196 +3 698 1153 1196 +3 698 1153 1196 +3 698 1153 1196 +3 698 1153 1196 +11 698 699 700 1153 1154 1196 1197 1482 1483 1484 1485 +11 698 699 700 1153 1154 1196 1197 1482 1483 1484 1485 +11 698 699 700 1153 1154 1196 1197 1482 1483 1484 1485 +11 698 699 700 1153 1154 1196 1197 1482 1483 1484 1485 +11 698 699 700 1153 1154 1196 1197 1482 1483 1484 1485 +11 698 699 700 1153 1154 1196 1197 1482 1483 1484 1485 +4 698 700 1483 1485 +4 698 700 1483 1485 +4 698 700 1483 1485 +4 698 700 1483 1485 +4 698 700 1483 1485 +4 698 700 1483 1485 +8 698 700 937 938 980 981 1483 1485 +8 698 700 937 938 980 981 1483 1485 +8 698 700 937 938 980 981 1483 1485 +8 698 700 937 938 980 981 1483 1485 +8 698 700 937 938 980 981 1483 1485 +8 698 700 937 938 980 981 1483 1485 +3 698 937 980 +3 698 937 980 +3 698 937 980 +3 698 937 980 +3 698 937 980 +3 698 937 980 +8 699 1357 1368 1482 1484 2240 2242 2938 +8 699 1357 1368 1482 1484 2240 2242 2938 +8 699 1357 1368 1482 1484 2240 2242 2938 +8 699 1357 1368 1482 1484 2240 2242 2938 +8 699 1357 1368 1482 1484 2240 2242 2938 +8 699 1357 1368 1482 1484 2240 2242 2938 +4 699 1357 1368 2938 +4 699 1357 1368 2938 +4 699 1357 1368 2938 +4 699 1357 1368 2938 +4 699 1357 1368 2938 +4 699 1357 1368 2938 +8 699 1357 1368 1492 1494 2230 2232 2938 +8 699 1357 1368 1492 1494 2230 2232 2938 +8 699 1357 1368 1492 1494 2230 2232 2938 +8 699 1357 1368 1492 1494 2230 2232 2938 +8 699 1357 1368 1492 1494 2230 2232 2938 +8 699 1357 1368 1492 1494 2230 2232 2938 +3 699 1492 1494 +3 699 1492 1494 +3 699 1492 1494 +3 699 1492 1494 +3 699 1492 1494 +3 699 1492 1494 +11 699 700 701 1154 1155 1197 1198 1492 1493 1494 1495 +11 699 700 701 1154 1155 1197 1198 1492 1493 1494 1495 +11 699 700 701 1154 1155 1197 1198 1492 1493 1494 1495 +11 699 700 701 1154 1155 1197 1198 1492 1493 1494 1495 +11 699 700 701 1154 1155 1197 1198 1492 1493 1494 1495 +11 699 700 701 1154 1155 1197 1198 1492 1493 1494 1495 +4 699 700 1154 1197 +4 699 700 1154 1197 +4 699 700 1154 1197 +4 699 700 1154 1197 +4 699 700 1154 1197 +4 699 700 1154 1197 +3 699 1482 1484 +3 699 1482 1484 +3 699 1482 1484 +3 699 1482 1484 +3 699 1482 1484 +3 699 1482 1484 +4 700 701 1493 1495 +4 700 701 1493 1495 +4 700 701 1493 1495 +4 700 701 1493 1495 +4 700 701 1493 1495 +4 700 701 1493 1495 +8 700 701 938 939 981 982 1493 1495 +8 700 701 938 939 981 982 1493 1495 +8 700 701 938 939 981 982 1493 1495 +8 700 701 938 939 981 982 1493 1495 +8 700 701 938 939 981 982 1493 1495 +8 700 701 938 939 981 982 1493 1495 +3 700 938 981 +3 700 938 981 +3 700 938 981 +3 700 938 981 +3 700 938 981 +3 700 938 981 +3 701 1155 1198 +3 701 1155 1198 +3 701 1155 1198 +3 701 1155 1198 +3 701 1155 1198 +3 701 1155 1198 +8 701 702 1155 1156 1198 1199 1502 1503 +8 701 702 1155 1156 1198 1199 1502 1503 +8 701 702 1155 1156 1198 1199 1502 1503 +8 701 702 1155 1156 1198 1199 1502 1503 +8 701 702 1155 1156 1198 1199 1502 1503 +8 701 702 1155 1156 1198 1199 1502 1503 +4 701 702 1502 1503 +4 701 702 1502 1503 +4 701 702 1502 1503 +4 701 702 1502 1503 +4 701 702 1502 1503 +4 701 702 1502 1503 +8 701 702 939 940 982 983 1502 1503 +8 701 702 939 940 982 983 1502 1503 +8 701 702 939 940 982 983 1502 1503 +8 701 702 939 940 982 983 1502 1503 +8 701 702 939 940 982 983 1502 1503 +8 701 702 939 940 982 983 1502 1503 +3 701 939 982 +3 701 939 982 +3 701 939 982 +3 701 939 982 +3 701 939 982 +3 701 939 982 +3 702 1156 1199 +3 702 1156 1199 +3 702 1156 1199 +3 702 1156 1199 +3 702 1156 1199 +3 702 1156 1199 +10 702 703 704 1156 1157 1199 1200 1508 1509 1510 +10 702 703 704 1156 1157 1199 1200 1508 1509 1510 +10 702 703 704 1156 1157 1199 1200 1508 1509 1510 +10 702 703 704 1156 1157 1199 1200 1508 1509 1510 +10 702 703 704 1156 1157 1199 1200 1508 1509 1510 +10 702 703 704 1156 1157 1199 1200 1508 1509 1510 +4 702 704 1509 1510 +4 702 704 1509 1510 +4 702 704 1509 1510 +4 702 704 1509 1510 +4 702 704 1509 1510 +4 702 704 1509 1510 +8 702 704 940 941 983 984 1509 1510 +8 702 704 940 941 983 984 1509 1510 +8 702 704 940 941 983 984 1509 1510 +8 702 704 940 941 983 984 1509 1510 +8 702 704 940 941 983 984 1509 1510 +8 702 704 940 941 983 984 1509 1510 +3 702 940 983 +3 702 940 983 +3 702 940 983 +3 702 940 983 +3 702 940 983 +3 702 940 983 +6 703 1358 1369 1508 2216 2934 +6 703 1358 1369 1508 2216 2934 +6 703 1358 1369 1508 2216 2934 +6 703 1358 1369 1508 2216 2934 +6 703 1358 1369 1508 2216 2934 +6 703 1358 1369 1508 2216 2934 +4 703 1358 1369 2934 +4 703 1358 1369 2934 +4 703 1358 1369 2934 +4 703 1358 1369 2934 +4 703 1358 1369 2934 +4 703 1358 1369 2934 +6 703 1358 1369 1516 2208 2934 +6 703 1358 1369 1516 2208 2934 +6 703 1358 1369 1516 2208 2934 +6 703 1358 1369 1516 2208 2934 +6 703 1358 1369 1516 2208 2934 +6 703 1358 1369 1516 2208 2934 +2 703 1516 +2 703 1516 +2 703 1516 +2 703 1516 +2 703 1516 +2 703 1516 +10 703 704 705 1157 1158 1200 1201 1516 1517 1518 +10 703 704 705 1157 1158 1200 1201 1516 1517 1518 +10 703 704 705 1157 1158 1200 1201 1516 1517 1518 +10 703 704 705 1157 1158 1200 1201 1516 1517 1518 +10 703 704 705 1157 1158 1200 1201 1516 1517 1518 +10 703 704 705 1157 1158 1200 1201 1516 1517 1518 +4 703 704 1157 1200 +4 703 704 1157 1200 +4 703 704 1157 1200 +4 703 704 1157 1200 +4 703 704 1157 1200 +4 703 704 1157 1200 +2 703 1508 +2 703 1508 +2 703 1508 +2 703 1508 +2 703 1508 +2 703 1508 +4 704 705 1517 1518 +4 704 705 1517 1518 +4 704 705 1517 1518 +4 704 705 1517 1518 +4 704 705 1517 1518 +4 704 705 1517 1518 +8 704 705 941 942 984 985 1517 1518 +8 704 705 941 942 984 985 1517 1518 +8 704 705 941 942 984 985 1517 1518 +8 704 705 941 942 984 985 1517 1518 +8 704 705 941 942 984 985 1517 1518 +8 704 705 941 942 984 985 1517 1518 +3 704 941 984 +3 704 941 984 +3 704 941 984 +3 704 941 984 +3 704 941 984 +3 704 941 984 +3 705 1158 1201 +3 705 1158 1201 +3 705 1158 1201 +3 705 1158 1201 +3 705 1158 1201 +3 705 1158 1201 +8 705 706 1158 1159 1201 1202 1524 1525 +8 705 706 1158 1159 1201 1202 1524 1525 +8 705 706 1158 1159 1201 1202 1524 1525 +8 705 706 1158 1159 1201 1202 1524 1525 +8 705 706 1158 1159 1201 1202 1524 1525 +8 705 706 1158 1159 1201 1202 1524 1525 +4 705 706 1524 1525 +4 705 706 1524 1525 +4 705 706 1524 1525 +4 705 706 1524 1525 +4 705 706 1524 1525 +4 705 706 1524 1525 +8 705 706 942 943 985 986 1524 1525 +8 705 706 942 943 985 986 1524 1525 +8 705 706 942 943 985 986 1524 1525 +8 705 706 942 943 985 986 1524 1525 +8 705 706 942 943 985 986 1524 1525 +8 705 706 942 943 985 986 1524 1525 +3 705 942 985 +3 705 942 985 +3 705 942 985 +3 705 942 985 +3 705 942 985 +3 705 942 985 +3 706 1159 1202 +3 706 1159 1202 +3 706 1159 1202 +3 706 1159 1202 +3 706 1159 1202 +3 706 1159 1202 +11 706 707 708 1159 1160 1202 1203 1530 1531 1532 1533 +11 706 707 708 1159 1160 1202 1203 1530 1531 1532 1533 +11 706 707 708 1159 1160 1202 1203 1530 1531 1532 1533 +11 706 707 708 1159 1160 1202 1203 1530 1531 1532 1533 +11 706 707 708 1159 1160 1202 1203 1530 1531 1532 1533 +11 706 707 708 1159 1160 1202 1203 1530 1531 1532 1533 +4 706 708 1531 1533 +4 706 708 1531 1533 +4 706 708 1531 1533 +4 706 708 1531 1533 +4 706 708 1531 1533 +4 706 708 1531 1533 +8 706 708 943 944 986 987 1531 1533 +8 706 708 943 944 986 987 1531 1533 +8 706 708 943 944 986 987 1531 1533 +8 706 708 943 944 986 987 1531 1533 +8 706 708 943 944 986 987 1531 1533 +8 706 708 943 944 986 987 1531 1533 +3 706 943 986 +3 706 943 986 +3 706 943 986 +3 706 943 986 +3 706 943 986 +3 706 943 986 +8 707 1359 1370 1530 1532 2192 2194 2930 +8 707 1359 1370 1530 1532 2192 2194 2930 +8 707 1359 1370 1530 1532 2192 2194 2930 +8 707 1359 1370 1530 1532 2192 2194 2930 +8 707 1359 1370 1530 1532 2192 2194 2930 +8 707 1359 1370 1530 1532 2192 2194 2930 +4 707 1359 1370 2930 +4 707 1359 1370 2930 +4 707 1359 1370 2930 +4 707 1359 1370 2930 +4 707 1359 1370 2930 +4 707 1359 1370 2930 +6 707 1359 1370 1540 2184 2930 +6 707 1359 1370 1540 2184 2930 +6 707 1359 1370 1540 2184 2930 +6 707 1359 1370 1540 2184 2930 +6 707 1359 1370 1540 2184 2930 +6 707 1359 1370 1540 2184 2930 +2 707 1540 +2 707 1540 +2 707 1540 +2 707 1540 +2 707 1540 +2 707 1540 +10 707 708 709 1160 1161 1203 1204 1540 1541 1542 +10 707 708 709 1160 1161 1203 1204 1540 1541 1542 +10 707 708 709 1160 1161 1203 1204 1540 1541 1542 +10 707 708 709 1160 1161 1203 1204 1540 1541 1542 +10 707 708 709 1160 1161 1203 1204 1540 1541 1542 +10 707 708 709 1160 1161 1203 1204 1540 1541 1542 +4 707 708 1160 1203 +4 707 708 1160 1203 +4 707 708 1160 1203 +4 707 708 1160 1203 +4 707 708 1160 1203 +4 707 708 1160 1203 +3 707 1530 1532 +3 707 1530 1532 +3 707 1530 1532 +3 707 1530 1532 +3 707 1530 1532 +3 707 1530 1532 +4 708 709 1541 1542 +4 708 709 1541 1542 +4 708 709 1541 1542 +4 708 709 1541 1542 +4 708 709 1541 1542 +4 708 709 1541 1542 +8 708 709 944 945 987 988 1541 1542 +8 708 709 944 945 987 988 1541 1542 +8 708 709 944 945 987 988 1541 1542 +8 708 709 944 945 987 988 1541 1542 +8 708 709 944 945 987 988 1541 1542 +8 708 709 944 945 987 988 1541 1542 +3 708 944 987 +3 708 944 987 +3 708 944 987 +3 708 944 987 +3 708 944 987 +3 708 944 987 +3 709 1161 1204 +3 709 1161 1204 +3 709 1161 1204 +3 709 1161 1204 +3 709 1161 1204 +3 709 1161 1204 +8 709 710 1161 1162 1204 1205 1548 1549 +8 709 710 1161 1162 1204 1205 1548 1549 +8 709 710 1161 1162 1204 1205 1548 1549 +8 709 710 1161 1162 1204 1205 1548 1549 +8 709 710 1161 1162 1204 1205 1548 1549 +8 709 710 1161 1162 1204 1205 1548 1549 +4 709 710 1548 1549 +4 709 710 1548 1549 +4 709 710 1548 1549 +4 709 710 1548 1549 +4 709 710 1548 1549 +4 709 710 1548 1549 +8 709 710 945 946 988 989 1548 1549 +8 709 710 945 946 988 989 1548 1549 +8 709 710 945 946 988 989 1548 1549 +8 709 710 945 946 988 989 1548 1549 +8 709 710 945 946 988 989 1548 1549 +8 709 710 945 946 988 989 1548 1549 +3 709 945 988 +3 709 945 988 +3 709 945 988 +3 709 945 988 +3 709 945 988 +3 709 945 988 +3 710 1162 1205 +3 710 1162 1205 +3 710 1162 1205 +3 710 1162 1205 +3 710 1162 1205 +3 710 1162 1205 +10 710 711 712 1162 1163 1205 1206 1554 1555 1556 +10 710 711 712 1162 1163 1205 1206 1554 1555 1556 +10 710 711 712 1162 1163 1205 1206 1554 1555 1556 +10 710 711 712 1162 1163 1205 1206 1554 1555 1556 +10 710 711 712 1162 1163 1205 1206 1554 1555 1556 +10 710 711 712 1162 1163 1205 1206 1554 1555 1556 +4 710 712 1555 1556 +4 710 712 1555 1556 +4 710 712 1555 1556 +4 710 712 1555 1556 +4 710 712 1555 1556 +4 710 712 1555 1556 +8 710 712 946 947 989 990 1555 1556 +8 710 712 946 947 989 990 1555 1556 +8 710 712 946 947 989 990 1555 1556 +8 710 712 946 947 989 990 1555 1556 +8 710 712 946 947 989 990 1555 1556 +8 710 712 946 947 989 990 1555 1556 +3 710 946 989 +3 710 946 989 +3 710 946 989 +3 710 946 989 +3 710 946 989 +3 710 946 989 +6 711 1360 1371 1554 2170 2926 +6 711 1360 1371 1554 2170 2926 +6 711 1360 1371 1554 2170 2926 +6 711 1360 1371 1554 2170 2926 +6 711 1360 1371 1554 2170 2926 +6 711 1360 1371 1554 2170 2926 +4 711 1360 1371 2926 +4 711 1360 1371 2926 +4 711 1360 1371 2926 +4 711 1360 1371 2926 +4 711 1360 1371 2926 +4 711 1360 1371 2926 +6 711 1360 1371 1562 2162 2926 +6 711 1360 1371 1562 2162 2926 +6 711 1360 1371 1562 2162 2926 +6 711 1360 1371 1562 2162 2926 +6 711 1360 1371 1562 2162 2926 +6 711 1360 1371 1562 2162 2926 +2 711 1562 +2 711 1562 +2 711 1562 +2 711 1562 +2 711 1562 +2 711 1562 +10 711 712 713 1163 1164 1206 1207 1562 1563 1564 +10 711 712 713 1163 1164 1206 1207 1562 1563 1564 +10 711 712 713 1163 1164 1206 1207 1562 1563 1564 +10 711 712 713 1163 1164 1206 1207 1562 1563 1564 +10 711 712 713 1163 1164 1206 1207 1562 1563 1564 +10 711 712 713 1163 1164 1206 1207 1562 1563 1564 +4 711 712 1163 1206 +4 711 712 1163 1206 +4 711 712 1163 1206 +4 711 712 1163 1206 +4 711 712 1163 1206 +4 711 712 1163 1206 +2 711 1554 +2 711 1554 +2 711 1554 +2 711 1554 +2 711 1554 +2 711 1554 +4 712 713 1563 1564 +4 712 713 1563 1564 +4 712 713 1563 1564 +4 712 713 1563 1564 +4 712 713 1563 1564 +4 712 713 1563 1564 +8 712 713 947 948 990 991 1563 1564 +8 712 713 947 948 990 991 1563 1564 +8 712 713 947 948 990 991 1563 1564 +8 712 713 947 948 990 991 1563 1564 +8 712 713 947 948 990 991 1563 1564 +8 712 713 947 948 990 991 1563 1564 +3 712 947 990 +3 712 947 990 +3 712 947 990 +3 712 947 990 +3 712 947 990 +3 712 947 990 +3 713 1164 1207 +3 713 1164 1207 +3 713 1164 1207 +3 713 1164 1207 +3 713 1164 1207 +3 713 1164 1207 +8 713 714 1164 1165 1207 1208 1570 1571 +8 713 714 1164 1165 1207 1208 1570 1571 +8 713 714 1164 1165 1207 1208 1570 1571 +8 713 714 1164 1165 1207 1208 1570 1571 +8 713 714 1164 1165 1207 1208 1570 1571 +8 713 714 1164 1165 1207 1208 1570 1571 +4 713 714 1570 1571 +4 713 714 1570 1571 +4 713 714 1570 1571 +4 713 714 1570 1571 +4 713 714 1570 1571 +4 713 714 1570 1571 +8 713 714 948 949 991 992 1570 1571 +8 713 714 948 949 991 992 1570 1571 +8 713 714 948 949 991 992 1570 1571 +8 713 714 948 949 991 992 1570 1571 +8 713 714 948 949 991 992 1570 1571 +8 713 714 948 949 991 992 1570 1571 +3 713 948 991 +3 713 948 991 +3 713 948 991 +3 713 948 991 +3 713 948 991 +3 713 948 991 +3 714 1165 1208 +3 714 1165 1208 +3 714 1165 1208 +3 714 1165 1208 +3 714 1165 1208 +3 714 1165 1208 +11 714 715 716 1165 1166 1208 1209 1576 1577 1578 1579 +11 714 715 716 1165 1166 1208 1209 1576 1577 1578 1579 +11 714 715 716 1165 1166 1208 1209 1576 1577 1578 1579 +11 714 715 716 1165 1166 1208 1209 1576 1577 1578 1579 +11 714 715 716 1165 1166 1208 1209 1576 1577 1578 1579 +11 714 715 716 1165 1166 1208 1209 1576 1577 1578 1579 +4 714 716 1577 1579 +4 714 716 1577 1579 +4 714 716 1577 1579 +4 714 716 1577 1579 +4 714 716 1577 1579 +4 714 716 1577 1579 +8 714 716 949 950 992 993 1577 1579 +8 714 716 949 950 992 993 1577 1579 +8 714 716 949 950 992 993 1577 1579 +8 714 716 949 950 992 993 1577 1579 +8 714 716 949 950 992 993 1577 1579 +8 714 716 949 950 992 993 1577 1579 +3 714 949 992 +3 714 949 992 +3 714 949 992 +3 714 949 992 +3 714 949 992 +3 714 949 992 +8 715 1361 1372 1576 1578 2146 2148 2922 +8 715 1361 1372 1576 1578 2146 2148 2922 +8 715 1361 1372 1576 1578 2146 2148 2922 +8 715 1361 1372 1576 1578 2146 2148 2922 +8 715 1361 1372 1576 1578 2146 2148 2922 +8 715 1361 1372 1576 1578 2146 2148 2922 +4 715 1361 1372 2922 +4 715 1361 1372 2922 +4 715 1361 1372 2922 +4 715 1361 1372 2922 +4 715 1361 1372 2922 +4 715 1361 1372 2922 +6 715 1361 1372 1586 2138 2922 +6 715 1361 1372 1586 2138 2922 +6 715 1361 1372 1586 2138 2922 +6 715 1361 1372 1586 2138 2922 +6 715 1361 1372 1586 2138 2922 +6 715 1361 1372 1586 2138 2922 +2 715 1586 +2 715 1586 +2 715 1586 +2 715 1586 +2 715 1586 +2 715 1586 +10 715 716 717 1166 1167 1209 1210 1586 1587 1588 +10 715 716 717 1166 1167 1209 1210 1586 1587 1588 +10 715 716 717 1166 1167 1209 1210 1586 1587 1588 +10 715 716 717 1166 1167 1209 1210 1586 1587 1588 +10 715 716 717 1166 1167 1209 1210 1586 1587 1588 +10 715 716 717 1166 1167 1209 1210 1586 1587 1588 +4 715 716 1166 1209 +4 715 716 1166 1209 +4 715 716 1166 1209 +4 715 716 1166 1209 +4 715 716 1166 1209 +4 715 716 1166 1209 +3 715 1576 1578 +3 715 1576 1578 +3 715 1576 1578 +3 715 1576 1578 +3 715 1576 1578 +3 715 1576 1578 +4 716 717 1587 1588 +4 716 717 1587 1588 +4 716 717 1587 1588 +4 716 717 1587 1588 +4 716 717 1587 1588 +4 716 717 1587 1588 +8 716 717 950 951 993 994 1587 1588 +8 716 717 950 951 993 994 1587 1588 +8 716 717 950 951 993 994 1587 1588 +8 716 717 950 951 993 994 1587 1588 +8 716 717 950 951 993 994 1587 1588 +8 716 717 950 951 993 994 1587 1588 +3 716 950 993 +3 716 950 993 +3 716 950 993 +3 716 950 993 +3 716 950 993 +3 716 950 993 +3 717 1167 1210 +3 717 1167 1210 +3 717 1167 1210 +3 717 1167 1210 +3 717 1167 1210 +3 717 1167 1210 +8 717 718 1167 1168 1210 1211 1594 1595 +8 717 718 1167 1168 1210 1211 1594 1595 +8 717 718 1167 1168 1210 1211 1594 1595 +8 717 718 1167 1168 1210 1211 1594 1595 +8 717 718 1167 1168 1210 1211 1594 1595 +8 717 718 1167 1168 1210 1211 1594 1595 +4 717 718 1594 1595 +4 717 718 1594 1595 +4 717 718 1594 1595 +4 717 718 1594 1595 +4 717 718 1594 1595 +4 717 718 1594 1595 +8 717 718 951 952 994 995 1594 1595 +8 717 718 951 952 994 995 1594 1595 +8 717 718 951 952 994 995 1594 1595 +8 717 718 951 952 994 995 1594 1595 +8 717 718 951 952 994 995 1594 1595 +8 717 718 951 952 994 995 1594 1595 +3 717 951 994 +3 717 951 994 +3 717 951 994 +3 717 951 994 +3 717 951 994 +3 717 951 994 +3 718 1168 1211 +3 718 1168 1211 +3 718 1168 1211 +3 718 1168 1211 +3 718 1168 1211 +3 718 1168 1211 +10 718 719 720 1168 1169 1211 1212 1600 1601 1602 +10 718 719 720 1168 1169 1211 1212 1600 1601 1602 +10 718 719 720 1168 1169 1211 1212 1600 1601 1602 +10 718 719 720 1168 1169 1211 1212 1600 1601 1602 +10 718 719 720 1168 1169 1211 1212 1600 1601 1602 +10 718 719 720 1168 1169 1211 1212 1600 1601 1602 +4 718 720 1601 1602 +4 718 720 1601 1602 +4 718 720 1601 1602 +4 718 720 1601 1602 +4 718 720 1601 1602 +4 718 720 1601 1602 +8 718 720 952 953 995 996 1601 1602 +8 718 720 952 953 995 996 1601 1602 +8 718 720 952 953 995 996 1601 1602 +8 718 720 952 953 995 996 1601 1602 +8 718 720 952 953 995 996 1601 1602 +8 718 720 952 953 995 996 1601 1602 +3 718 952 995 +3 718 952 995 +3 718 952 995 +3 718 952 995 +3 718 952 995 +3 718 952 995 +6 719 1362 1373 1600 2124 2918 +6 719 1362 1373 1600 2124 2918 +6 719 1362 1373 1600 2124 2918 +6 719 1362 1373 1600 2124 2918 +6 719 1362 1373 1600 2124 2918 +6 719 1362 1373 1600 2124 2918 +4 719 1362 1373 2918 +4 719 1362 1373 2918 +4 719 1362 1373 2918 +4 719 1362 1373 2918 +4 719 1362 1373 2918 +4 719 1362 1373 2918 +6 719 1362 1373 1608 2116 2918 +6 719 1362 1373 1608 2116 2918 +6 719 1362 1373 1608 2116 2918 +6 719 1362 1373 1608 2116 2918 +6 719 1362 1373 1608 2116 2918 +6 719 1362 1373 1608 2116 2918 +2 719 1608 +2 719 1608 +2 719 1608 +2 719 1608 +2 719 1608 +2 719 1608 +10 719 720 721 1169 1170 1212 1213 1608 1609 1610 +10 719 720 721 1169 1170 1212 1213 1608 1609 1610 +10 719 720 721 1169 1170 1212 1213 1608 1609 1610 +10 719 720 721 1169 1170 1212 1213 1608 1609 1610 +10 719 720 721 1169 1170 1212 1213 1608 1609 1610 +10 719 720 721 1169 1170 1212 1213 1608 1609 1610 +4 719 720 1169 1212 +4 719 720 1169 1212 +4 719 720 1169 1212 +4 719 720 1169 1212 +4 719 720 1169 1212 +4 719 720 1169 1212 +2 719 1600 +2 719 1600 +2 719 1600 +2 719 1600 +2 719 1600 +2 719 1600 +4 720 721 1609 1610 +4 720 721 1609 1610 +4 720 721 1609 1610 +4 720 721 1609 1610 +4 720 721 1609 1610 +4 720 721 1609 1610 +8 720 721 953 954 996 997 1609 1610 +8 720 721 953 954 996 997 1609 1610 +8 720 721 953 954 996 997 1609 1610 +8 720 721 953 954 996 997 1609 1610 +8 720 721 953 954 996 997 1609 1610 +8 720 721 953 954 996 997 1609 1610 +3 720 953 996 +3 720 953 996 +3 720 953 996 +3 720 953 996 +3 720 953 996 +3 720 953 996 +3 721 1170 1213 +3 721 1170 1213 +3 721 1170 1213 +3 721 1170 1213 +3 721 1170 1213 +3 721 1170 1213 +8 721 722 1170 1171 1213 1214 1616 1617 +8 721 722 1170 1171 1213 1214 1616 1617 +8 721 722 1170 1171 1213 1214 1616 1617 +8 721 722 1170 1171 1213 1214 1616 1617 +8 721 722 1170 1171 1213 1214 1616 1617 +8 721 722 1170 1171 1213 1214 1616 1617 +4 721 722 1616 1617 +4 721 722 1616 1617 +4 721 722 1616 1617 +4 721 722 1616 1617 +4 721 722 1616 1617 +4 721 722 1616 1617 +8 721 722 954 955 997 998 1616 1617 +8 721 722 954 955 997 998 1616 1617 +8 721 722 954 955 997 998 1616 1617 +8 721 722 954 955 997 998 1616 1617 +8 721 722 954 955 997 998 1616 1617 +8 721 722 954 955 997 998 1616 1617 +3 721 954 997 +3 721 954 997 +3 721 954 997 +3 721 954 997 +3 721 954 997 +3 721 954 997 +3 722 1171 1214 +3 722 1171 1214 +3 722 1171 1214 +3 722 1171 1214 +3 722 1171 1214 +3 722 1171 1214 +11 722 723 724 1171 1172 1214 1215 1622 1623 1624 1625 +11 722 723 724 1171 1172 1214 1215 1622 1623 1624 1625 +11 722 723 724 1171 1172 1214 1215 1622 1623 1624 1625 +11 722 723 724 1171 1172 1214 1215 1622 1623 1624 1625 +11 722 723 724 1171 1172 1214 1215 1622 1623 1624 1625 +11 722 723 724 1171 1172 1214 1215 1622 1623 1624 1625 +4 722 724 1623 1625 +4 722 724 1623 1625 +4 722 724 1623 1625 +4 722 724 1623 1625 +4 722 724 1623 1625 +4 722 724 1623 1625 +8 722 724 955 956 998 999 1623 1625 +8 722 724 955 956 998 999 1623 1625 +8 722 724 955 956 998 999 1623 1625 +8 722 724 955 956 998 999 1623 1625 +8 722 724 955 956 998 999 1623 1625 +8 722 724 955 956 998 999 1623 1625 +3 722 955 998 +3 722 955 998 +3 722 955 998 +3 722 955 998 +3 722 955 998 +3 722 955 998 +8 723 1363 1374 1622 1624 2100 2102 2914 +8 723 1363 1374 1622 1624 2100 2102 2914 +8 723 1363 1374 1622 1624 2100 2102 2914 +8 723 1363 1374 1622 1624 2100 2102 2914 +8 723 1363 1374 1622 1624 2100 2102 2914 +8 723 1363 1374 1622 1624 2100 2102 2914 +4 723 1363 1374 2914 +4 723 1363 1374 2914 +4 723 1363 1374 2914 +4 723 1363 1374 2914 +4 723 1363 1374 2914 +4 723 1363 1374 2914 +6 723 1363 1374 1632 2092 2914 +6 723 1363 1374 1632 2092 2914 +6 723 1363 1374 1632 2092 2914 +6 723 1363 1374 1632 2092 2914 +6 723 1363 1374 1632 2092 2914 +6 723 1363 1374 1632 2092 2914 +2 723 1632 +2 723 1632 +2 723 1632 +2 723 1632 +2 723 1632 +2 723 1632 +10 723 724 725 1172 1173 1215 1216 1632 1633 1634 +10 723 724 725 1172 1173 1215 1216 1632 1633 1634 +10 723 724 725 1172 1173 1215 1216 1632 1633 1634 +10 723 724 725 1172 1173 1215 1216 1632 1633 1634 +10 723 724 725 1172 1173 1215 1216 1632 1633 1634 +10 723 724 725 1172 1173 1215 1216 1632 1633 1634 +4 723 724 1172 1215 +4 723 724 1172 1215 +4 723 724 1172 1215 +4 723 724 1172 1215 +4 723 724 1172 1215 +4 723 724 1172 1215 +3 723 1622 1624 +3 723 1622 1624 +3 723 1622 1624 +3 723 1622 1624 +3 723 1622 1624 +3 723 1622 1624 +4 724 725 1633 1634 +4 724 725 1633 1634 +4 724 725 1633 1634 +4 724 725 1633 1634 +4 724 725 1633 1634 +4 724 725 1633 1634 +8 724 725 956 957 999 1000 1633 1634 +8 724 725 956 957 999 1000 1633 1634 +8 724 725 956 957 999 1000 1633 1634 +8 724 725 956 957 999 1000 1633 1634 +8 724 725 956 957 999 1000 1633 1634 +8 724 725 956 957 999 1000 1633 1634 +3 724 956 999 +3 724 956 999 +3 724 956 999 +3 724 956 999 +3 724 956 999 +3 724 956 999 +3 725 1173 1216 +3 725 1173 1216 +3 725 1173 1216 +3 725 1173 1216 +3 725 1173 1216 +3 725 1173 1216 +8 725 726 1173 1174 1216 1217 1640 1641 +8 725 726 1173 1174 1216 1217 1640 1641 +8 725 726 1173 1174 1216 1217 1640 1641 +8 725 726 1173 1174 1216 1217 1640 1641 +8 725 726 1173 1174 1216 1217 1640 1641 +8 725 726 1173 1174 1216 1217 1640 1641 +4 725 726 1640 1641 +4 725 726 1640 1641 +4 725 726 1640 1641 +4 725 726 1640 1641 +4 725 726 1640 1641 +4 725 726 1640 1641 +8 725 726 957 958 1000 1001 1640 1641 +8 725 726 957 958 1000 1001 1640 1641 +8 725 726 957 958 1000 1001 1640 1641 +8 725 726 957 958 1000 1001 1640 1641 +8 725 726 957 958 1000 1001 1640 1641 +8 725 726 957 958 1000 1001 1640 1641 +3 725 957 1000 +3 725 957 1000 +3 725 957 1000 +3 725 957 1000 +3 725 957 1000 +3 725 957 1000 +3 726 1174 1217 +3 726 1174 1217 +3 726 1174 1217 +3 726 1174 1217 +3 726 1174 1217 +3 726 1174 1217 +10 726 727 728 1174 1175 1217 1218 1646 1647 1648 +10 726 727 728 1174 1175 1217 1218 1646 1647 1648 +10 726 727 728 1174 1175 1217 1218 1646 1647 1648 +10 726 727 728 1174 1175 1217 1218 1646 1647 1648 +10 726 727 728 1174 1175 1217 1218 1646 1647 1648 +10 726 727 728 1174 1175 1217 1218 1646 1647 1648 +4 726 728 1647 1648 +4 726 728 1647 1648 +4 726 728 1647 1648 +4 726 728 1647 1648 +4 726 728 1647 1648 +4 726 728 1647 1648 +8 726 728 958 959 1001 1002 1647 1648 +8 726 728 958 959 1001 1002 1647 1648 +8 726 728 958 959 1001 1002 1647 1648 +8 726 728 958 959 1001 1002 1647 1648 +8 726 728 958 959 1001 1002 1647 1648 +8 726 728 958 959 1001 1002 1647 1648 +3 726 958 1001 +3 726 958 1001 +3 726 958 1001 +3 726 958 1001 +3 726 958 1001 +3 726 958 1001 +6 727 1364 1375 1646 2078 2910 +6 727 1364 1375 1646 2078 2910 +6 727 1364 1375 1646 2078 2910 +6 727 1364 1375 1646 2078 2910 +6 727 1364 1375 1646 2078 2910 +6 727 1364 1375 1646 2078 2910 +4 727 1364 1375 2910 +4 727 1364 1375 2910 +4 727 1364 1375 2910 +4 727 1364 1375 2910 +4 727 1364 1375 2910 +4 727 1364 1375 2910 +6 727 1364 1375 1654 2070 2910 +6 727 1364 1375 1654 2070 2910 +6 727 1364 1375 1654 2070 2910 +6 727 1364 1375 1654 2070 2910 +6 727 1364 1375 1654 2070 2910 +6 727 1364 1375 1654 2070 2910 +2 727 1654 +2 727 1654 +2 727 1654 +2 727 1654 +2 727 1654 +2 727 1654 +10 727 728 729 1175 1176 1218 1219 1654 1655 1656 +10 727 728 729 1175 1176 1218 1219 1654 1655 1656 +10 727 728 729 1175 1176 1218 1219 1654 1655 1656 +10 727 728 729 1175 1176 1218 1219 1654 1655 1656 +10 727 728 729 1175 1176 1218 1219 1654 1655 1656 +10 727 728 729 1175 1176 1218 1219 1654 1655 1656 +4 727 728 1175 1218 +4 727 728 1175 1218 +4 727 728 1175 1218 +4 727 728 1175 1218 +4 727 728 1175 1218 +4 727 728 1175 1218 +2 727 1646 +2 727 1646 +2 727 1646 +2 727 1646 +2 727 1646 +2 727 1646 +4 728 729 1655 1656 +4 728 729 1655 1656 +4 728 729 1655 1656 +4 728 729 1655 1656 +4 728 729 1655 1656 +4 728 729 1655 1656 +8 728 729 959 960 1002 1003 1655 1656 +8 728 729 959 960 1002 1003 1655 1656 +8 728 729 959 960 1002 1003 1655 1656 +8 728 729 959 960 1002 1003 1655 1656 +8 728 729 959 960 1002 1003 1655 1656 +8 728 729 959 960 1002 1003 1655 1656 +3 728 959 1002 +3 728 959 1002 +3 728 959 1002 +3 728 959 1002 +3 728 959 1002 +3 728 959 1002 +3 729 1176 1219 +3 729 1176 1219 +3 729 1176 1219 +3 729 1176 1219 +3 729 1176 1219 +3 729 1176 1219 +8 729 730 1176 1177 1219 1220 1662 1663 +8 729 730 1176 1177 1219 1220 1662 1663 +8 729 730 1176 1177 1219 1220 1662 1663 +8 729 730 1176 1177 1219 1220 1662 1663 +8 729 730 1176 1177 1219 1220 1662 1663 +8 729 730 1176 1177 1219 1220 1662 1663 +4 729 730 1662 1663 +4 729 730 1662 1663 +4 729 730 1662 1663 +4 729 730 1662 1663 +4 729 730 1662 1663 +4 729 730 1662 1663 +8 729 730 960 961 1003 1004 1662 1663 +8 729 730 960 961 1003 1004 1662 1663 +8 729 730 960 961 1003 1004 1662 1663 +8 729 730 960 961 1003 1004 1662 1663 +8 729 730 960 961 1003 1004 1662 1663 +8 729 730 960 961 1003 1004 1662 1663 +3 729 960 1003 +3 729 960 1003 +3 729 960 1003 +3 729 960 1003 +3 729 960 1003 +3 729 960 1003 +3 730 1177 1220 +3 730 1177 1220 +3 730 1177 1220 +3 730 1177 1220 +3 730 1177 1220 +3 730 1177 1220 +11 730 731 732 1177 1178 1220 1221 1668 1669 1670 1671 +11 730 731 732 1177 1178 1220 1221 1668 1669 1670 1671 +11 730 731 732 1177 1178 1220 1221 1668 1669 1670 1671 +11 730 731 732 1177 1178 1220 1221 1668 1669 1670 1671 +11 730 731 732 1177 1178 1220 1221 1668 1669 1670 1671 +11 730 731 732 1177 1178 1220 1221 1668 1669 1670 1671 +4 730 732 1669 1671 +4 730 732 1669 1671 +4 730 732 1669 1671 +4 730 732 1669 1671 +4 730 732 1669 1671 +4 730 732 1669 1671 +8 730 732 961 962 1004 1005 1669 1671 +8 730 732 961 962 1004 1005 1669 1671 +8 730 732 961 962 1004 1005 1669 1671 +8 730 732 961 962 1004 1005 1669 1671 +8 730 732 961 962 1004 1005 1669 1671 +8 730 732 961 962 1004 1005 1669 1671 +3 730 961 1004 +3 730 961 1004 +3 730 961 1004 +3 730 961 1004 +3 730 961 1004 +3 730 961 1004 +8 731 1365 1376 1668 1670 2054 2056 2906 +8 731 1365 1376 1668 1670 2054 2056 2906 +8 731 1365 1376 1668 1670 2054 2056 2906 +8 731 1365 1376 1668 1670 2054 2056 2906 +8 731 1365 1376 1668 1670 2054 2056 2906 +8 731 1365 1376 1668 1670 2054 2056 2906 +4 731 1365 1376 2906 +4 731 1365 1376 2906 +4 731 1365 1376 2906 +4 731 1365 1376 2906 +4 731 1365 1376 2906 +4 731 1365 1376 2906 +6 731 1365 1376 1678 2046 2906 +6 731 1365 1376 1678 2046 2906 +6 731 1365 1376 1678 2046 2906 +6 731 1365 1376 1678 2046 2906 +6 731 1365 1376 1678 2046 2906 +6 731 1365 1376 1678 2046 2906 +2 731 1678 +2 731 1678 +2 731 1678 +2 731 1678 +2 731 1678 +2 731 1678 +10 731 732 733 1178 1179 1221 1222 1678 1679 1680 +10 731 732 733 1178 1179 1221 1222 1678 1679 1680 +10 731 732 733 1178 1179 1221 1222 1678 1679 1680 +10 731 732 733 1178 1179 1221 1222 1678 1679 1680 +10 731 732 733 1178 1179 1221 1222 1678 1679 1680 +10 731 732 733 1178 1179 1221 1222 1678 1679 1680 +4 731 732 1178 1221 +4 731 732 1178 1221 +4 731 732 1178 1221 +4 731 732 1178 1221 +4 731 732 1178 1221 +4 731 732 1178 1221 +3 731 1668 1670 +3 731 1668 1670 +3 731 1668 1670 +3 731 1668 1670 +3 731 1668 1670 +3 731 1668 1670 +4 732 733 1679 1680 +4 732 733 1679 1680 +4 732 733 1679 1680 +4 732 733 1679 1680 +4 732 733 1679 1680 +4 732 733 1679 1680 +8 732 733 962 963 1005 1006 1679 1680 +8 732 733 962 963 1005 1006 1679 1680 +8 732 733 962 963 1005 1006 1679 1680 +8 732 733 962 963 1005 1006 1679 1680 +8 732 733 962 963 1005 1006 1679 1680 +8 732 733 962 963 1005 1006 1679 1680 +3 732 962 1005 +3 732 962 1005 +3 732 962 1005 +3 732 962 1005 +3 732 962 1005 +3 732 962 1005 +3 733 1179 1222 +3 733 1179 1222 +3 733 1179 1222 +3 733 1179 1222 +3 733 1179 1222 +3 733 1179 1222 +8 733 734 1179 1180 1222 1223 1686 1687 +8 733 734 1179 1180 1222 1223 1686 1687 +8 733 734 1179 1180 1222 1223 1686 1687 +8 733 734 1179 1180 1222 1223 1686 1687 +8 733 734 1179 1180 1222 1223 1686 1687 +8 733 734 1179 1180 1222 1223 1686 1687 +4 733 734 1686 1687 +4 733 734 1686 1687 +4 733 734 1686 1687 +4 733 734 1686 1687 +4 733 734 1686 1687 +4 733 734 1686 1687 +8 733 734 963 964 1006 1007 1686 1687 +8 733 734 963 964 1006 1007 1686 1687 +8 733 734 963 964 1006 1007 1686 1687 +8 733 734 963 964 1006 1007 1686 1687 +8 733 734 963 964 1006 1007 1686 1687 +8 733 734 963 964 1006 1007 1686 1687 +3 733 963 1006 +3 733 963 1006 +3 733 963 1006 +3 733 963 1006 +3 733 963 1006 +3 733 963 1006 +3 734 1180 1223 +3 734 1180 1223 +3 734 1180 1223 +3 734 1180 1223 +3 734 1180 1223 +3 734 1180 1223 +11 734 735 736 1180 1181 1223 1224 1692 1693 1694 1695 +11 734 735 736 1180 1181 1223 1224 1692 1693 1694 1695 +11 734 735 736 1180 1181 1223 1224 1692 1693 1694 1695 +11 734 735 736 1180 1181 1223 1224 1692 1693 1694 1695 +11 734 735 736 1180 1181 1223 1224 1692 1693 1694 1695 +11 734 735 736 1180 1181 1223 1224 1692 1693 1694 1695 +4 734 736 1693 1695 +4 734 736 1693 1695 +4 734 736 1693 1695 +4 734 736 1693 1695 +4 734 736 1693 1695 +4 734 736 1693 1695 +8 734 736 964 965 1007 1008 1693 1695 +8 734 736 964 965 1007 1008 1693 1695 +8 734 736 964 965 1007 1008 1693 1695 +8 734 736 964 965 1007 1008 1693 1695 +8 734 736 964 965 1007 1008 1693 1695 +8 734 736 964 965 1007 1008 1693 1695 +3 734 964 1007 +3 734 964 1007 +3 734 964 1007 +3 734 964 1007 +3 734 964 1007 +3 734 964 1007 +8 735 1366 1377 1692 1694 2030 2032 2902 +8 735 1366 1377 1692 1694 2030 2032 2902 +8 735 1366 1377 1692 1694 2030 2032 2902 +8 735 1366 1377 1692 1694 2030 2032 2902 +8 735 1366 1377 1692 1694 2030 2032 2902 +8 735 1366 1377 1692 1694 2030 2032 2902 +4 735 1366 1377 2902 +4 735 1366 1377 2902 +4 735 1366 1377 2902 +4 735 1366 1377 2902 +4 735 1366 1377 2902 +4 735 1366 1377 2902 +8 735 1366 1377 1702 1704 2020 2022 2902 +8 735 1366 1377 1702 1704 2020 2022 2902 +8 735 1366 1377 1702 1704 2020 2022 2902 +8 735 1366 1377 1702 1704 2020 2022 2902 +8 735 1366 1377 1702 1704 2020 2022 2902 +8 735 1366 1377 1702 1704 2020 2022 2902 +3 735 1702 1704 +3 735 1702 1704 +3 735 1702 1704 +3 735 1702 1704 +3 735 1702 1704 +3 735 1702 1704 +11 735 736 737 1181 1182 1224 1225 1702 1703 1704 1705 +11 735 736 737 1181 1182 1224 1225 1702 1703 1704 1705 +11 735 736 737 1181 1182 1224 1225 1702 1703 1704 1705 +11 735 736 737 1181 1182 1224 1225 1702 1703 1704 1705 +11 735 736 737 1181 1182 1224 1225 1702 1703 1704 1705 +11 735 736 737 1181 1182 1224 1225 1702 1703 1704 1705 +4 735 736 1181 1224 +4 735 736 1181 1224 +4 735 736 1181 1224 +4 735 736 1181 1224 +4 735 736 1181 1224 +4 735 736 1181 1224 +3 735 1692 1694 +3 735 1692 1694 +3 735 1692 1694 +3 735 1692 1694 +3 735 1692 1694 +3 735 1692 1694 +4 736 737 1703 1705 +4 736 737 1703 1705 +4 736 737 1703 1705 +4 736 737 1703 1705 +4 736 737 1703 1705 +4 736 737 1703 1705 +8 736 737 965 966 1008 1009 1703 1705 +8 736 737 965 966 1008 1009 1703 1705 +8 736 737 965 966 1008 1009 1703 1705 +8 736 737 965 966 1008 1009 1703 1705 +8 736 737 965 966 1008 1009 1703 1705 +8 736 737 965 966 1008 1009 1703 1705 +3 736 965 1008 +3 736 965 1008 +3 736 965 1008 +3 736 965 1008 +3 736 965 1008 +3 736 965 1008 +3 737 1182 1225 +3 737 1182 1225 +3 737 1182 1225 +3 737 1182 1225 +3 737 1182 1225 +3 737 1182 1225 +8 737 881 1182 1183 1225 1226 1712 1713 +8 737 881 1182 1183 1225 1226 1712 1713 +8 737 881 1182 1183 1225 1226 1712 1713 +8 737 881 1182 1183 1225 1226 1712 1713 +8 737 881 1182 1183 1225 1226 1712 1713 +8 737 881 1182 1183 1225 1226 1712 1713 +4 737 881 1712 1713 +4 737 881 1712 1713 +4 737 881 1712 1713 +4 737 881 1712 1713 +4 737 881 1712 1713 +4 737 881 1712 1713 +8 737 881 966 967 1009 1010 1712 1713 +8 737 881 966 967 1009 1010 1712 1713 +8 737 881 966 967 1009 1010 1712 1713 +8 737 881 966 967 1009 1010 1712 1713 +8 737 881 966 967 1009 1010 1712 1713 +8 737 881 966 967 1009 1010 1712 1713 +3 737 966 1009 +3 737 966 1009 +3 737 966 1009 +3 737 966 1009 +3 737 966 1009 +3 737 966 1009 +10 738 876 1313 1314 1400 1402 2322 2324 2761 2899 +10 738 876 1313 1314 1400 1402 2322 2324 2761 2899 +10 738 876 1313 1314 1400 1402 2322 2324 2761 2899 +10 738 876 1313 1314 1400 1402 2322 2324 2761 2899 +10 738 876 1313 1314 1400 1402 2322 2324 2761 2899 +10 738 876 1313 1314 1400 1402 2322 2324 2761 2899 +3 738 1314 2899 +3 738 1314 2899 +3 738 1314 2899 +3 738 1314 2899 +3 738 1314 2899 +3 738 1314 2899 +8 738 740 1314 1315 1408 2316 2897 2899 +8 738 740 1314 1315 1408 2316 2897 2899 +8 738 740 1314 1315 1408 2316 2897 2899 +8 738 740 1314 1315 1408 2316 2897 2899 +8 738 740 1314 1315 1408 2316 2897 2899 +8 738 740 1314 1315 1408 2316 2897 2899 +3 738 740 1408 +3 738 740 1408 +3 738 740 1408 +3 738 740 1408 +3 738 740 1408 +3 738 740 1408 +12 738 739 876 877 1098 1099 1141 1142 1400 1401 1402 1403 +12 738 739 876 877 1098 1099 1141 1142 1400 1401 1402 1403 +12 738 739 876 877 1098 1099 1141 1142 1400 1401 1402 1403 +12 738 739 876 877 1098 1099 1141 1142 1400 1401 1402 1403 +12 738 739 876 877 1098 1099 1141 1142 1400 1401 1402 1403 +12 738 739 876 877 1098 1099 1141 1142 1400 1401 1402 1403 +4 738 739 1099 1142 +4 738 739 1099 1142 +4 738 739 1099 1142 +4 738 739 1099 1142 +4 738 739 1099 1142 +4 738 739 1099 1142 +4 738 876 1400 1402 +4 738 876 1400 1402 +4 738 876 1400 1402 +4 738 876 1400 1402 +4 738 876 1400 1402 +4 738 876 1400 1402 +4 739 741 1409 1410 +4 739 741 1409 1410 +4 739 741 1409 1410 +4 739 741 1409 1410 +4 739 741 1409 1410 +4 739 741 1409 1410 +8 739 741 883 884 926 927 1409 1410 +8 739 741 883 884 926 927 1409 1410 +8 739 741 883 884 926 927 1409 1410 +8 739 741 883 884 926 927 1409 1410 +8 739 741 883 884 926 927 1409 1410 +8 739 741 883 884 926 927 1409 1410 +8 739 877 882 883 925 926 1401 1403 +8 739 877 882 883 925 926 1401 1403 +8 739 877 882 883 925 926 1401 1403 +8 739 877 882 883 925 926 1401 1403 +8 739 877 882 883 925 926 1401 1403 +8 739 877 882 883 925 926 1401 1403 +3 739 883 926 +3 739 883 926 +3 739 883 926 +3 739 883 926 +3 739 883 926 +3 739 883 926 +4 739 877 1401 1403 +4 739 877 1401 1403 +4 739 877 1401 1403 +4 739 877 1401 1403 +4 739 877 1401 1403 +4 739 877 1401 1403 +3 740 1315 2897 +3 740 1315 2897 +3 740 1315 2897 +3 740 1315 2897 +3 740 1315 2897 +3 740 1315 2897 +8 740 742 1315 1316 1414 2310 2895 2897 +8 740 742 1315 1316 1414 2310 2895 2897 +8 740 742 1315 1316 1414 2310 2895 2897 +8 740 742 1315 1316 1414 2310 2895 2897 +8 740 742 1315 1316 1414 2310 2895 2897 +8 740 742 1315 1316 1414 2310 2895 2897 +3 740 742 1414 +3 740 742 1414 +3 740 742 1414 +3 740 742 1414 +3 740 742 1414 +3 740 742 1414 +4 740 741 1100 1143 +4 740 741 1100 1143 +4 740 741 1100 1143 +4 740 741 1100 1143 +4 740 741 1100 1143 +4 740 741 1100 1143 +4 741 743 1415 1416 +4 741 743 1415 1416 +4 741 743 1415 1416 +4 741 743 1415 1416 +4 741 743 1415 1416 +4 741 743 1415 1416 +8 741 743 884 885 927 928 1415 1416 +8 741 743 884 885 927 928 1415 1416 +8 741 743 884 885 927 928 1415 1416 +8 741 743 884 885 927 928 1415 1416 +8 741 743 884 885 927 928 1415 1416 +8 741 743 884 885 927 928 1415 1416 +3 741 884 927 +3 741 884 927 +3 741 884 927 +3 741 884 927 +3 741 884 927 +3 741 884 927 +3 742 1316 2895 +3 742 1316 2895 +3 742 1316 2895 +3 742 1316 2895 +3 742 1316 2895 +3 742 1316 2895 +8 742 744 1316 1317 1420 2304 2893 2895 +8 742 744 1316 1317 1420 2304 2893 2895 +8 742 744 1316 1317 1420 2304 2893 2895 +8 742 744 1316 1317 1420 2304 2893 2895 +8 742 744 1316 1317 1420 2304 2893 2895 +8 742 744 1316 1317 1420 2304 2893 2895 +3 742 744 1420 +3 742 744 1420 +3 742 744 1420 +3 742 744 1420 +3 742 744 1420 +3 742 744 1420 +4 742 743 1101 1144 +4 742 743 1101 1144 +4 742 743 1101 1144 +4 742 743 1101 1144 +4 742 743 1101 1144 +4 742 743 1101 1144 +4 743 745 1421 1422 +4 743 745 1421 1422 +4 743 745 1421 1422 +4 743 745 1421 1422 +4 743 745 1421 1422 +4 743 745 1421 1422 +8 743 745 885 886 928 929 1421 1422 +8 743 745 885 886 928 929 1421 1422 +8 743 745 885 886 928 929 1421 1422 +8 743 745 885 886 928 929 1421 1422 +8 743 745 885 886 928 929 1421 1422 +8 743 745 885 886 928 929 1421 1422 +3 743 885 928 +3 743 885 928 +3 743 885 928 +3 743 885 928 +3 743 885 928 +3 743 885 928 +3 744 1317 2893 +3 744 1317 2893 +3 744 1317 2893 +3 744 1317 2893 +3 744 1317 2893 +3 744 1317 2893 +8 744 746 1317 1318 1426 2298 2891 2893 +8 744 746 1317 1318 1426 2298 2891 2893 +8 744 746 1317 1318 1426 2298 2891 2893 +8 744 746 1317 1318 1426 2298 2891 2893 +8 744 746 1317 1318 1426 2298 2891 2893 +8 744 746 1317 1318 1426 2298 2891 2893 +3 744 746 1426 +3 744 746 1426 +3 744 746 1426 +3 744 746 1426 +3 744 746 1426 +3 744 746 1426 +4 744 745 1102 1145 +4 744 745 1102 1145 +4 744 745 1102 1145 +4 744 745 1102 1145 +4 744 745 1102 1145 +4 744 745 1102 1145 +4 745 747 1427 1428 +4 745 747 1427 1428 +4 745 747 1427 1428 +4 745 747 1427 1428 +4 745 747 1427 1428 +4 745 747 1427 1428 +8 745 747 886 887 929 930 1427 1428 +8 745 747 886 887 929 930 1427 1428 +8 745 747 886 887 929 930 1427 1428 +8 745 747 886 887 929 930 1427 1428 +8 745 747 886 887 929 930 1427 1428 +8 745 747 886 887 929 930 1427 1428 +3 745 886 929 +3 745 886 929 +3 745 886 929 +3 745 886 929 +3 745 886 929 +3 745 886 929 +3 746 1318 2891 +3 746 1318 2891 +3 746 1318 2891 +3 746 1318 2891 +3 746 1318 2891 +3 746 1318 2891 +8 746 748 1318 1319 1432 2292 2889 2891 +8 746 748 1318 1319 1432 2292 2889 2891 +8 746 748 1318 1319 1432 2292 2889 2891 +8 746 748 1318 1319 1432 2292 2889 2891 +8 746 748 1318 1319 1432 2292 2889 2891 +8 746 748 1318 1319 1432 2292 2889 2891 +3 746 748 1432 +3 746 748 1432 +3 746 748 1432 +3 746 748 1432 +3 746 748 1432 +3 746 748 1432 +4 746 747 1103 1146 +4 746 747 1103 1146 +4 746 747 1103 1146 +4 746 747 1103 1146 +4 746 747 1103 1146 +4 746 747 1103 1146 +4 747 749 1433 1434 +4 747 749 1433 1434 +4 747 749 1433 1434 +4 747 749 1433 1434 +4 747 749 1433 1434 +4 747 749 1433 1434 +8 747 749 887 888 930 931 1433 1434 +8 747 749 887 888 930 931 1433 1434 +8 747 749 887 888 930 931 1433 1434 +8 747 749 887 888 930 931 1433 1434 +8 747 749 887 888 930 931 1433 1434 +8 747 749 887 888 930 931 1433 1434 +3 747 887 930 +3 747 887 930 +3 747 887 930 +3 747 887 930 +3 747 887 930 +3 747 887 930 +3 748 1319 2889 +3 748 1319 2889 +3 748 1319 2889 +3 748 1319 2889 +3 748 1319 2889 +3 748 1319 2889 +8 748 750 1319 1320 1438 2286 2887 2889 +8 748 750 1319 1320 1438 2286 2887 2889 +8 748 750 1319 1320 1438 2286 2887 2889 +8 748 750 1319 1320 1438 2286 2887 2889 +8 748 750 1319 1320 1438 2286 2887 2889 +8 748 750 1319 1320 1438 2286 2887 2889 +3 748 750 1438 +3 748 750 1438 +3 748 750 1438 +3 748 750 1438 +3 748 750 1438 +3 748 750 1438 +4 748 749 1104 1147 +4 748 749 1104 1147 +4 748 749 1104 1147 +4 748 749 1104 1147 +4 748 749 1104 1147 +4 748 749 1104 1147 +4 749 751 1439 1440 +4 749 751 1439 1440 +4 749 751 1439 1440 +4 749 751 1439 1440 +4 749 751 1439 1440 +4 749 751 1439 1440 +8 749 751 888 889 931 932 1439 1440 +8 749 751 888 889 931 932 1439 1440 +8 749 751 888 889 931 932 1439 1440 +8 749 751 888 889 931 932 1439 1440 +8 749 751 888 889 931 932 1439 1440 +8 749 751 888 889 931 932 1439 1440 +3 749 888 931 +3 749 888 931 +3 749 888 931 +3 749 888 931 +3 749 888 931 +3 749 888 931 +3 750 1320 2887 +3 750 1320 2887 +3 750 1320 2887 +3 750 1320 2887 +3 750 1320 2887 +3 750 1320 2887 +10 750 752 1320 1321 1444 1446 2278 2280 2885 2887 +10 750 752 1320 1321 1444 1446 2278 2280 2885 2887 +10 750 752 1320 1321 1444 1446 2278 2280 2885 2887 +10 750 752 1320 1321 1444 1446 2278 2280 2885 2887 +10 750 752 1320 1321 1444 1446 2278 2280 2885 2887 +10 750 752 1320 1321 1444 1446 2278 2280 2885 2887 +4 750 752 1444 1446 +4 750 752 1444 1446 +4 750 752 1444 1446 +4 750 752 1444 1446 +4 750 752 1444 1446 +4 750 752 1444 1446 +12 750 751 752 753 1105 1106 1148 1149 1444 1445 1446 1447 +12 750 751 752 753 1105 1106 1148 1149 1444 1445 1446 1447 +12 750 751 752 753 1105 1106 1148 1149 1444 1445 1446 1447 +12 750 751 752 753 1105 1106 1148 1149 1444 1445 1446 1447 +12 750 751 752 753 1105 1106 1148 1149 1444 1445 1446 1447 +12 750 751 752 753 1105 1106 1148 1149 1444 1445 1446 1447 +4 750 751 1105 1148 +4 750 751 1105 1148 +4 750 751 1105 1148 +4 750 751 1105 1148 +4 750 751 1105 1148 +4 750 751 1105 1148 +4 751 753 1445 1447 +4 751 753 1445 1447 +4 751 753 1445 1447 +4 751 753 1445 1447 +4 751 753 1445 1447 +4 751 753 1445 1447 +8 751 753 889 890 932 933 1445 1447 +8 751 753 889 890 932 933 1445 1447 +8 751 753 889 890 932 933 1445 1447 +8 751 753 889 890 932 933 1445 1447 +8 751 753 889 890 932 933 1445 1447 +8 751 753 889 890 932 933 1445 1447 +3 751 889 932 +3 751 889 932 +3 751 889 932 +3 751 889 932 +3 751 889 932 +3 751 889 932 +3 752 1321 2885 +3 752 1321 2885 +3 752 1321 2885 +3 752 1321 2885 +3 752 1321 2885 +3 752 1321 2885 +8 752 754 1321 1322 1452 2272 2883 2885 +8 752 754 1321 1322 1452 2272 2883 2885 +8 752 754 1321 1322 1452 2272 2883 2885 +8 752 754 1321 1322 1452 2272 2883 2885 +8 752 754 1321 1322 1452 2272 2883 2885 +8 752 754 1321 1322 1452 2272 2883 2885 +3 752 754 1452 +3 752 754 1452 +3 752 754 1452 +3 752 754 1452 +3 752 754 1452 +3 752 754 1452 +11 752 753 754 755 1106 1107 1149 1150 1452 1453 1454 +11 752 753 754 755 1106 1107 1149 1150 1452 1453 1454 +11 752 753 754 755 1106 1107 1149 1150 1452 1453 1454 +11 752 753 754 755 1106 1107 1149 1150 1452 1453 1454 +11 752 753 754 755 1106 1107 1149 1150 1452 1453 1454 +11 752 753 754 755 1106 1107 1149 1150 1452 1453 1454 +4 752 753 1106 1149 +4 752 753 1106 1149 +4 752 753 1106 1149 +4 752 753 1106 1149 +4 752 753 1106 1149 +4 752 753 1106 1149 +4 753 755 1453 1454 +4 753 755 1453 1454 +4 753 755 1453 1454 +4 753 755 1453 1454 +4 753 755 1453 1454 +4 753 755 1453 1454 +8 753 755 890 891 933 934 1453 1454 +8 753 755 890 891 933 934 1453 1454 +8 753 755 890 891 933 934 1453 1454 +8 753 755 890 891 933 934 1453 1454 +8 753 755 890 891 933 934 1453 1454 +8 753 755 890 891 933 934 1453 1454 +3 753 890 933 +3 753 890 933 +3 753 890 933 +3 753 890 933 +3 753 890 933 +3 753 890 933 +3 754 1322 2883 +3 754 1322 2883 +3 754 1322 2883 +3 754 1322 2883 +3 754 1322 2883 +3 754 1322 2883 +11 754 756 1322 1323 1356 1458 1460 2264 2266 2881 2883 +11 754 756 1322 1323 1356 1458 1460 2264 2266 2881 2883 +11 754 756 1322 1323 1356 1458 1460 2264 2266 2881 2883 +11 754 756 1322 1323 1356 1458 1460 2264 2266 2881 2883 +11 754 756 1322 1323 1356 1458 1460 2264 2266 2881 2883 +11 754 756 1322 1323 1356 1458 1460 2264 2266 2881 2883 +4 754 756 1458 1460 +4 754 756 1458 1460 +4 754 756 1458 1460 +4 754 756 1458 1460 +4 754 756 1458 1460 +4 754 756 1458 1460 +12 754 755 756 757 1107 1108 1150 1151 1458 1459 1460 1461 +12 754 755 756 757 1107 1108 1150 1151 1458 1459 1460 1461 +12 754 755 756 757 1107 1108 1150 1151 1458 1459 1460 1461 +12 754 755 756 757 1107 1108 1150 1151 1458 1459 1460 1461 +12 754 755 756 757 1107 1108 1150 1151 1458 1459 1460 1461 +12 754 755 756 757 1107 1108 1150 1151 1458 1459 1460 1461 +4 754 755 1107 1150 +4 754 755 1107 1150 +4 754 755 1107 1150 +4 754 755 1107 1150 +4 754 755 1107 1150 +4 754 755 1107 1150 +4 755 757 1459 1461 +4 755 757 1459 1461 +4 755 757 1459 1461 +4 755 757 1459 1461 +4 755 757 1459 1461 +4 755 757 1459 1461 +8 755 757 891 892 934 935 1459 1461 +8 755 757 891 892 934 935 1459 1461 +8 755 757 891 892 934 935 1459 1461 +8 755 757 891 892 934 935 1459 1461 +8 755 757 891 892 934 935 1459 1461 +8 755 757 891 892 934 935 1459 1461 +3 755 891 934 +3 755 891 934 +3 755 891 934 +3 755 891 934 +3 755 891 934 +3 755 891 934 +4 756 1323 1356 2881 +4 756 1323 1356 2881 +4 756 1323 1356 2881 +4 756 1323 1356 2881 +4 756 1323 1356 2881 +4 756 1323 1356 2881 +11 756 758 1323 1324 1356 1466 1468 2256 2258 2879 2881 +11 756 758 1323 1324 1356 1466 1468 2256 2258 2879 2881 +11 756 758 1323 1324 1356 1466 1468 2256 2258 2879 2881 +11 756 758 1323 1324 1356 1466 1468 2256 2258 2879 2881 +11 756 758 1323 1324 1356 1466 1468 2256 2258 2879 2881 +11 756 758 1323 1324 1356 1466 1468 2256 2258 2879 2881 +4 756 758 1466 1468 +4 756 758 1466 1468 +4 756 758 1466 1468 +4 756 758 1466 1468 +4 756 758 1466 1468 +4 756 758 1466 1468 +12 756 757 758 759 1108 1109 1151 1152 1466 1467 1468 1469 +12 756 757 758 759 1108 1109 1151 1152 1466 1467 1468 1469 +12 756 757 758 759 1108 1109 1151 1152 1466 1467 1468 1469 +12 756 757 758 759 1108 1109 1151 1152 1466 1467 1468 1469 +12 756 757 758 759 1108 1109 1151 1152 1466 1467 1468 1469 +12 756 757 758 759 1108 1109 1151 1152 1466 1467 1468 1469 +4 756 757 1108 1151 +4 756 757 1108 1151 +4 756 757 1108 1151 +4 756 757 1108 1151 +4 756 757 1108 1151 +4 756 757 1108 1151 +4 757 759 1467 1469 +4 757 759 1467 1469 +4 757 759 1467 1469 +4 757 759 1467 1469 +4 757 759 1467 1469 +4 757 759 1467 1469 +8 757 759 892 893 935 936 1467 1469 +8 757 759 892 893 935 936 1467 1469 +8 757 759 892 893 935 936 1467 1469 +8 757 759 892 893 935 936 1467 1469 +8 757 759 892 893 935 936 1467 1469 +8 757 759 892 893 935 936 1467 1469 +3 757 892 935 +3 757 892 935 +3 757 892 935 +3 757 892 935 +3 757 892 935 +3 757 892 935 +3 758 1324 2879 +3 758 1324 2879 +3 758 1324 2879 +3 758 1324 2879 +3 758 1324 2879 +3 758 1324 2879 +8 758 760 1324 1325 1474 2250 2877 2879 +8 758 760 1324 1325 1474 2250 2877 2879 +8 758 760 1324 1325 1474 2250 2877 2879 +8 758 760 1324 1325 1474 2250 2877 2879 +8 758 760 1324 1325 1474 2250 2877 2879 +8 758 760 1324 1325 1474 2250 2877 2879 +3 758 760 1474 +3 758 760 1474 +3 758 760 1474 +3 758 760 1474 +3 758 760 1474 +3 758 760 1474 +11 758 759 760 761 1109 1110 1152 1153 1474 1475 1476 +11 758 759 760 761 1109 1110 1152 1153 1474 1475 1476 +11 758 759 760 761 1109 1110 1152 1153 1474 1475 1476 +11 758 759 760 761 1109 1110 1152 1153 1474 1475 1476 +11 758 759 760 761 1109 1110 1152 1153 1474 1475 1476 +11 758 759 760 761 1109 1110 1152 1153 1474 1475 1476 +4 758 759 1109 1152 +4 758 759 1109 1152 +4 758 759 1109 1152 +4 758 759 1109 1152 +4 758 759 1109 1152 +4 758 759 1109 1152 +4 759 761 1475 1476 +4 759 761 1475 1476 +4 759 761 1475 1476 +4 759 761 1475 1476 +4 759 761 1475 1476 +4 759 761 1475 1476 +8 759 761 893 894 936 937 1475 1476 +8 759 761 893 894 936 937 1475 1476 +8 759 761 893 894 936 937 1475 1476 +8 759 761 893 894 936 937 1475 1476 +8 759 761 893 894 936 937 1475 1476 +8 759 761 893 894 936 937 1475 1476 +3 759 893 936 +3 759 893 936 +3 759 893 936 +3 759 893 936 +3 759 893 936 +3 759 893 936 +3 760 1325 2877 +3 760 1325 2877 +3 760 1325 2877 +3 760 1325 2877 +3 760 1325 2877 +3 760 1325 2877 +11 760 762 1325 1326 1357 1480 1482 2242 2244 2875 2877 +11 760 762 1325 1326 1357 1480 1482 2242 2244 2875 2877 +11 760 762 1325 1326 1357 1480 1482 2242 2244 2875 2877 +11 760 762 1325 1326 1357 1480 1482 2242 2244 2875 2877 +11 760 762 1325 1326 1357 1480 1482 2242 2244 2875 2877 +11 760 762 1325 1326 1357 1480 1482 2242 2244 2875 2877 +4 760 762 1480 1482 +4 760 762 1480 1482 +4 760 762 1480 1482 +4 760 762 1480 1482 +4 760 762 1480 1482 +4 760 762 1480 1482 +12 760 761 762 763 1110 1111 1153 1154 1480 1481 1482 1483 +12 760 761 762 763 1110 1111 1153 1154 1480 1481 1482 1483 +12 760 761 762 763 1110 1111 1153 1154 1480 1481 1482 1483 +12 760 761 762 763 1110 1111 1153 1154 1480 1481 1482 1483 +12 760 761 762 763 1110 1111 1153 1154 1480 1481 1482 1483 +12 760 761 762 763 1110 1111 1153 1154 1480 1481 1482 1483 +4 760 761 1110 1153 +4 760 761 1110 1153 +4 760 761 1110 1153 +4 760 761 1110 1153 +4 760 761 1110 1153 +4 760 761 1110 1153 +4 761 763 1481 1483 +4 761 763 1481 1483 +4 761 763 1481 1483 +4 761 763 1481 1483 +4 761 763 1481 1483 +4 761 763 1481 1483 +8 761 763 894 895 937 938 1481 1483 +8 761 763 894 895 937 938 1481 1483 +8 761 763 894 895 937 938 1481 1483 +8 761 763 894 895 937 938 1481 1483 +8 761 763 894 895 937 938 1481 1483 +8 761 763 894 895 937 938 1481 1483 +3 761 894 937 +3 761 894 937 +3 761 894 937 +3 761 894 937 +3 761 894 937 +3 761 894 937 +4 762 1326 1357 2875 +4 762 1326 1357 2875 +4 762 1326 1357 2875 +4 762 1326 1357 2875 +4 762 1326 1357 2875 +4 762 1326 1357 2875 +11 762 764 1326 1327 1357 1490 1492 2232 2234 2873 2875 +11 762 764 1326 1327 1357 1490 1492 2232 2234 2873 2875 +11 762 764 1326 1327 1357 1490 1492 2232 2234 2873 2875 +11 762 764 1326 1327 1357 1490 1492 2232 2234 2873 2875 +11 762 764 1326 1327 1357 1490 1492 2232 2234 2873 2875 +11 762 764 1326 1327 1357 1490 1492 2232 2234 2873 2875 +4 762 764 1490 1492 +4 762 764 1490 1492 +4 762 764 1490 1492 +4 762 764 1490 1492 +4 762 764 1490 1492 +4 762 764 1490 1492 +12 762 763 764 765 1111 1112 1154 1155 1490 1491 1492 1493 +12 762 763 764 765 1111 1112 1154 1155 1490 1491 1492 1493 +12 762 763 764 765 1111 1112 1154 1155 1490 1491 1492 1493 +12 762 763 764 765 1111 1112 1154 1155 1490 1491 1492 1493 +12 762 763 764 765 1111 1112 1154 1155 1490 1491 1492 1493 +12 762 763 764 765 1111 1112 1154 1155 1490 1491 1492 1493 +4 762 763 1111 1154 +4 762 763 1111 1154 +4 762 763 1111 1154 +4 762 763 1111 1154 +4 762 763 1111 1154 +4 762 763 1111 1154 +4 763 765 1491 1493 +4 763 765 1491 1493 +4 763 765 1491 1493 +4 763 765 1491 1493 +4 763 765 1491 1493 +4 763 765 1491 1493 +8 763 765 895 896 938 939 1491 1493 +8 763 765 895 896 938 939 1491 1493 +8 763 765 895 896 938 939 1491 1493 +8 763 765 895 896 938 939 1491 1493 +8 763 765 895 896 938 939 1491 1493 +8 763 765 895 896 938 939 1491 1493 +3 763 895 938 +3 763 895 938 +3 763 895 938 +3 763 895 938 +3 763 895 938 +3 763 895 938 +3 764 1327 2873 +3 764 1327 2873 +3 764 1327 2873 +3 764 1327 2873 +3 764 1327 2873 +3 764 1327 2873 +8 764 766 1327 1328 1500 2224 2871 2873 +8 764 766 1327 1328 1500 2224 2871 2873 +8 764 766 1327 1328 1500 2224 2871 2873 +8 764 766 1327 1328 1500 2224 2871 2873 +8 764 766 1327 1328 1500 2224 2871 2873 +8 764 766 1327 1328 1500 2224 2871 2873 +3 764 766 1500 +3 764 766 1500 +3 764 766 1500 +3 764 766 1500 +3 764 766 1500 +3 764 766 1500 +11 764 765 766 767 1112 1113 1155 1156 1500 1501 1502 +11 764 765 766 767 1112 1113 1155 1156 1500 1501 1502 +11 764 765 766 767 1112 1113 1155 1156 1500 1501 1502 +11 764 765 766 767 1112 1113 1155 1156 1500 1501 1502 +11 764 765 766 767 1112 1113 1155 1156 1500 1501 1502 +11 764 765 766 767 1112 1113 1155 1156 1500 1501 1502 +4 764 765 1112 1155 +4 764 765 1112 1155 +4 764 765 1112 1155 +4 764 765 1112 1155 +4 764 765 1112 1155 +4 764 765 1112 1155 +4 765 767 1501 1502 +4 765 767 1501 1502 +4 765 767 1501 1502 +4 765 767 1501 1502 +4 765 767 1501 1502 +4 765 767 1501 1502 +8 765 767 896 897 939 940 1501 1502 +8 765 767 896 897 939 940 1501 1502 +8 765 767 896 897 939 940 1501 1502 +8 765 767 896 897 939 940 1501 1502 +8 765 767 896 897 939 940 1501 1502 +8 765 767 896 897 939 940 1501 1502 +3 765 896 939 +3 765 896 939 +3 765 896 939 +3 765 896 939 +3 765 896 939 +3 765 896 939 +3 766 1328 2871 +3 766 1328 2871 +3 766 1328 2871 +3 766 1328 2871 +3 766 1328 2871 +3 766 1328 2871 +11 766 768 1328 1329 1358 1506 1508 2216 2218 2869 2871 +11 766 768 1328 1329 1358 1506 1508 2216 2218 2869 2871 +11 766 768 1328 1329 1358 1506 1508 2216 2218 2869 2871 +11 766 768 1328 1329 1358 1506 1508 2216 2218 2869 2871 +11 766 768 1328 1329 1358 1506 1508 2216 2218 2869 2871 +11 766 768 1328 1329 1358 1506 1508 2216 2218 2869 2871 +4 766 768 1506 1508 +4 766 768 1506 1508 +4 766 768 1506 1508 +4 766 768 1506 1508 +4 766 768 1506 1508 +4 766 768 1506 1508 +12 766 767 768 769 1113 1114 1156 1157 1506 1507 1508 1509 +12 766 767 768 769 1113 1114 1156 1157 1506 1507 1508 1509 +12 766 767 768 769 1113 1114 1156 1157 1506 1507 1508 1509 +12 766 767 768 769 1113 1114 1156 1157 1506 1507 1508 1509 +12 766 767 768 769 1113 1114 1156 1157 1506 1507 1508 1509 +12 766 767 768 769 1113 1114 1156 1157 1506 1507 1508 1509 +4 766 767 1113 1156 +4 766 767 1113 1156 +4 766 767 1113 1156 +4 766 767 1113 1156 +4 766 767 1113 1156 +4 766 767 1113 1156 +4 767 769 1507 1509 +4 767 769 1507 1509 +4 767 769 1507 1509 +4 767 769 1507 1509 +4 767 769 1507 1509 +4 767 769 1507 1509 +8 767 769 897 898 940 941 1507 1509 +8 767 769 897 898 940 941 1507 1509 +8 767 769 897 898 940 941 1507 1509 +8 767 769 897 898 940 941 1507 1509 +8 767 769 897 898 940 941 1507 1509 +8 767 769 897 898 940 941 1507 1509 +3 767 897 940 +3 767 897 940 +3 767 897 940 +3 767 897 940 +3 767 897 940 +3 767 897 940 +4 768 1329 1358 2869 +4 768 1329 1358 2869 +4 768 1329 1358 2869 +4 768 1329 1358 2869 +4 768 1329 1358 2869 +4 768 1329 1358 2869 +11 768 770 1329 1330 1358 1514 1516 2208 2210 2867 2869 +11 768 770 1329 1330 1358 1514 1516 2208 2210 2867 2869 +11 768 770 1329 1330 1358 1514 1516 2208 2210 2867 2869 +11 768 770 1329 1330 1358 1514 1516 2208 2210 2867 2869 +11 768 770 1329 1330 1358 1514 1516 2208 2210 2867 2869 +11 768 770 1329 1330 1358 1514 1516 2208 2210 2867 2869 +4 768 770 1514 1516 +4 768 770 1514 1516 +4 768 770 1514 1516 +4 768 770 1514 1516 +4 768 770 1514 1516 +4 768 770 1514 1516 +12 768 769 770 771 1114 1115 1157 1158 1514 1515 1516 1517 +12 768 769 770 771 1114 1115 1157 1158 1514 1515 1516 1517 +12 768 769 770 771 1114 1115 1157 1158 1514 1515 1516 1517 +12 768 769 770 771 1114 1115 1157 1158 1514 1515 1516 1517 +12 768 769 770 771 1114 1115 1157 1158 1514 1515 1516 1517 +12 768 769 770 771 1114 1115 1157 1158 1514 1515 1516 1517 +4 768 769 1114 1157 +4 768 769 1114 1157 +4 768 769 1114 1157 +4 768 769 1114 1157 +4 768 769 1114 1157 +4 768 769 1114 1157 +4 769 771 1515 1517 +4 769 771 1515 1517 +4 769 771 1515 1517 +4 769 771 1515 1517 +4 769 771 1515 1517 +4 769 771 1515 1517 +8 769 771 898 899 941 942 1515 1517 +8 769 771 898 899 941 942 1515 1517 +8 769 771 898 899 941 942 1515 1517 +8 769 771 898 899 941 942 1515 1517 +8 769 771 898 899 941 942 1515 1517 +8 769 771 898 899 941 942 1515 1517 +3 769 898 941 +3 769 898 941 +3 769 898 941 +3 769 898 941 +3 769 898 941 +3 769 898 941 +3 770 1330 2867 +3 770 1330 2867 +3 770 1330 2867 +3 770 1330 2867 +3 770 1330 2867 +3 770 1330 2867 +8 770 772 1330 1331 1522 2202 2865 2867 +8 770 772 1330 1331 1522 2202 2865 2867 +8 770 772 1330 1331 1522 2202 2865 2867 +8 770 772 1330 1331 1522 2202 2865 2867 +8 770 772 1330 1331 1522 2202 2865 2867 +8 770 772 1330 1331 1522 2202 2865 2867 +3 770 772 1522 +3 770 772 1522 +3 770 772 1522 +3 770 772 1522 +3 770 772 1522 +3 770 772 1522 +11 770 771 772 773 1115 1116 1158 1159 1522 1523 1524 +11 770 771 772 773 1115 1116 1158 1159 1522 1523 1524 +11 770 771 772 773 1115 1116 1158 1159 1522 1523 1524 +11 770 771 772 773 1115 1116 1158 1159 1522 1523 1524 +11 770 771 772 773 1115 1116 1158 1159 1522 1523 1524 +11 770 771 772 773 1115 1116 1158 1159 1522 1523 1524 +4 770 771 1115 1158 +4 770 771 1115 1158 +4 770 771 1115 1158 +4 770 771 1115 1158 +4 770 771 1115 1158 +4 770 771 1115 1158 +4 771 773 1523 1524 +4 771 773 1523 1524 +4 771 773 1523 1524 +4 771 773 1523 1524 +4 771 773 1523 1524 +4 771 773 1523 1524 +8 771 773 899 900 942 943 1523 1524 +8 771 773 899 900 942 943 1523 1524 +8 771 773 899 900 942 943 1523 1524 +8 771 773 899 900 942 943 1523 1524 +8 771 773 899 900 942 943 1523 1524 +8 771 773 899 900 942 943 1523 1524 +3 771 899 942 +3 771 899 942 +3 771 899 942 +3 771 899 942 +3 771 899 942 +3 771 899 942 +3 772 1331 2865 +3 772 1331 2865 +3 772 1331 2865 +3 772 1331 2865 +3 772 1331 2865 +3 772 1331 2865 +11 772 774 1331 1332 1359 1528 1530 2194 2196 2863 2865 +11 772 774 1331 1332 1359 1528 1530 2194 2196 2863 2865 +11 772 774 1331 1332 1359 1528 1530 2194 2196 2863 2865 +11 772 774 1331 1332 1359 1528 1530 2194 2196 2863 2865 +11 772 774 1331 1332 1359 1528 1530 2194 2196 2863 2865 +11 772 774 1331 1332 1359 1528 1530 2194 2196 2863 2865 +4 772 774 1528 1530 +4 772 774 1528 1530 +4 772 774 1528 1530 +4 772 774 1528 1530 +4 772 774 1528 1530 +4 772 774 1528 1530 +12 772 773 774 775 1116 1117 1159 1160 1528 1529 1530 1531 +12 772 773 774 775 1116 1117 1159 1160 1528 1529 1530 1531 +12 772 773 774 775 1116 1117 1159 1160 1528 1529 1530 1531 +12 772 773 774 775 1116 1117 1159 1160 1528 1529 1530 1531 +12 772 773 774 775 1116 1117 1159 1160 1528 1529 1530 1531 +12 772 773 774 775 1116 1117 1159 1160 1528 1529 1530 1531 +4 772 773 1116 1159 +4 772 773 1116 1159 +4 772 773 1116 1159 +4 772 773 1116 1159 +4 772 773 1116 1159 +4 772 773 1116 1159 +4 773 775 1529 1531 +4 773 775 1529 1531 +4 773 775 1529 1531 +4 773 775 1529 1531 +4 773 775 1529 1531 +4 773 775 1529 1531 +8 773 775 900 901 943 944 1529 1531 +8 773 775 900 901 943 944 1529 1531 +8 773 775 900 901 943 944 1529 1531 +8 773 775 900 901 943 944 1529 1531 +8 773 775 900 901 943 944 1529 1531 +8 773 775 900 901 943 944 1529 1531 +3 773 900 943 +3 773 900 943 +3 773 900 943 +3 773 900 943 +3 773 900 943 +3 773 900 943 +4 774 1332 1359 2863 +4 774 1332 1359 2863 +4 774 1332 1359 2863 +4 774 1332 1359 2863 +4 774 1332 1359 2863 +4 774 1332 1359 2863 +11 774 776 1332 1333 1359 1538 1540 2184 2186 2861 2863 +11 774 776 1332 1333 1359 1538 1540 2184 2186 2861 2863 +11 774 776 1332 1333 1359 1538 1540 2184 2186 2861 2863 +11 774 776 1332 1333 1359 1538 1540 2184 2186 2861 2863 +11 774 776 1332 1333 1359 1538 1540 2184 2186 2861 2863 +11 774 776 1332 1333 1359 1538 1540 2184 2186 2861 2863 +4 774 776 1538 1540 +4 774 776 1538 1540 +4 774 776 1538 1540 +4 774 776 1538 1540 +4 774 776 1538 1540 +4 774 776 1538 1540 +12 774 775 776 777 1117 1118 1160 1161 1538 1539 1540 1541 +12 774 775 776 777 1117 1118 1160 1161 1538 1539 1540 1541 +12 774 775 776 777 1117 1118 1160 1161 1538 1539 1540 1541 +12 774 775 776 777 1117 1118 1160 1161 1538 1539 1540 1541 +12 774 775 776 777 1117 1118 1160 1161 1538 1539 1540 1541 +12 774 775 776 777 1117 1118 1160 1161 1538 1539 1540 1541 +4 774 775 1117 1160 +4 774 775 1117 1160 +4 774 775 1117 1160 +4 774 775 1117 1160 +4 774 775 1117 1160 +4 774 775 1117 1160 +4 775 777 1539 1541 +4 775 777 1539 1541 +4 775 777 1539 1541 +4 775 777 1539 1541 +4 775 777 1539 1541 +4 775 777 1539 1541 +8 775 777 901 902 944 945 1539 1541 +8 775 777 901 902 944 945 1539 1541 +8 775 777 901 902 944 945 1539 1541 +8 775 777 901 902 944 945 1539 1541 +8 775 777 901 902 944 945 1539 1541 +8 775 777 901 902 944 945 1539 1541 +3 775 901 944 +3 775 901 944 +3 775 901 944 +3 775 901 944 +3 775 901 944 +3 775 901 944 +3 776 1333 2861 +3 776 1333 2861 +3 776 1333 2861 +3 776 1333 2861 +3 776 1333 2861 +3 776 1333 2861 +8 776 778 1333 1334 1546 2178 2859 2861 +8 776 778 1333 1334 1546 2178 2859 2861 +8 776 778 1333 1334 1546 2178 2859 2861 +8 776 778 1333 1334 1546 2178 2859 2861 +8 776 778 1333 1334 1546 2178 2859 2861 +8 776 778 1333 1334 1546 2178 2859 2861 +3 776 778 1546 +3 776 778 1546 +3 776 778 1546 +3 776 778 1546 +3 776 778 1546 +3 776 778 1546 +11 776 777 778 779 1118 1119 1161 1162 1546 1547 1548 +11 776 777 778 779 1118 1119 1161 1162 1546 1547 1548 +11 776 777 778 779 1118 1119 1161 1162 1546 1547 1548 +11 776 777 778 779 1118 1119 1161 1162 1546 1547 1548 +11 776 777 778 779 1118 1119 1161 1162 1546 1547 1548 +11 776 777 778 779 1118 1119 1161 1162 1546 1547 1548 +4 776 777 1118 1161 +4 776 777 1118 1161 +4 776 777 1118 1161 +4 776 777 1118 1161 +4 776 777 1118 1161 +4 776 777 1118 1161 +4 777 779 1547 1548 +4 777 779 1547 1548 +4 777 779 1547 1548 +4 777 779 1547 1548 +4 777 779 1547 1548 +4 777 779 1547 1548 +8 777 779 902 903 945 946 1547 1548 +8 777 779 902 903 945 946 1547 1548 +8 777 779 902 903 945 946 1547 1548 +8 777 779 902 903 945 946 1547 1548 +8 777 779 902 903 945 946 1547 1548 +8 777 779 902 903 945 946 1547 1548 +3 777 902 945 +3 777 902 945 +3 777 902 945 +3 777 902 945 +3 777 902 945 +3 777 902 945 +3 778 1334 2859 +3 778 1334 2859 +3 778 1334 2859 +3 778 1334 2859 +3 778 1334 2859 +3 778 1334 2859 +11 778 780 1334 1335 1360 1552 1554 2170 2172 2857 2859 +11 778 780 1334 1335 1360 1552 1554 2170 2172 2857 2859 +11 778 780 1334 1335 1360 1552 1554 2170 2172 2857 2859 +11 778 780 1334 1335 1360 1552 1554 2170 2172 2857 2859 +11 778 780 1334 1335 1360 1552 1554 2170 2172 2857 2859 +11 778 780 1334 1335 1360 1552 1554 2170 2172 2857 2859 +4 778 780 1552 1554 +4 778 780 1552 1554 +4 778 780 1552 1554 +4 778 780 1552 1554 +4 778 780 1552 1554 +4 778 780 1552 1554 +12 778 779 780 781 1119 1120 1162 1163 1552 1553 1554 1555 +12 778 779 780 781 1119 1120 1162 1163 1552 1553 1554 1555 +12 778 779 780 781 1119 1120 1162 1163 1552 1553 1554 1555 +12 778 779 780 781 1119 1120 1162 1163 1552 1553 1554 1555 +12 778 779 780 781 1119 1120 1162 1163 1552 1553 1554 1555 +12 778 779 780 781 1119 1120 1162 1163 1552 1553 1554 1555 +4 778 779 1119 1162 +4 778 779 1119 1162 +4 778 779 1119 1162 +4 778 779 1119 1162 +4 778 779 1119 1162 +4 778 779 1119 1162 +4 779 781 1553 1555 +4 779 781 1553 1555 +4 779 781 1553 1555 +4 779 781 1553 1555 +4 779 781 1553 1555 +4 779 781 1553 1555 +8 779 781 903 904 946 947 1553 1555 +8 779 781 903 904 946 947 1553 1555 +8 779 781 903 904 946 947 1553 1555 +8 779 781 903 904 946 947 1553 1555 +8 779 781 903 904 946 947 1553 1555 +8 779 781 903 904 946 947 1553 1555 +3 779 903 946 +3 779 903 946 +3 779 903 946 +3 779 903 946 +3 779 903 946 +3 779 903 946 +4 780 1335 1360 2857 +4 780 1335 1360 2857 +4 780 1335 1360 2857 +4 780 1335 1360 2857 +4 780 1335 1360 2857 +4 780 1335 1360 2857 +11 780 782 1335 1336 1360 1560 1562 2162 2164 2855 2857 +11 780 782 1335 1336 1360 1560 1562 2162 2164 2855 2857 +11 780 782 1335 1336 1360 1560 1562 2162 2164 2855 2857 +11 780 782 1335 1336 1360 1560 1562 2162 2164 2855 2857 +11 780 782 1335 1336 1360 1560 1562 2162 2164 2855 2857 +11 780 782 1335 1336 1360 1560 1562 2162 2164 2855 2857 +4 780 782 1560 1562 +4 780 782 1560 1562 +4 780 782 1560 1562 +4 780 782 1560 1562 +4 780 782 1560 1562 +4 780 782 1560 1562 +12 780 781 782 783 1120 1121 1163 1164 1560 1561 1562 1563 +12 780 781 782 783 1120 1121 1163 1164 1560 1561 1562 1563 +12 780 781 782 783 1120 1121 1163 1164 1560 1561 1562 1563 +12 780 781 782 783 1120 1121 1163 1164 1560 1561 1562 1563 +12 780 781 782 783 1120 1121 1163 1164 1560 1561 1562 1563 +12 780 781 782 783 1120 1121 1163 1164 1560 1561 1562 1563 +4 780 781 1120 1163 +4 780 781 1120 1163 +4 780 781 1120 1163 +4 780 781 1120 1163 +4 780 781 1120 1163 +4 780 781 1120 1163 +4 781 783 1561 1563 +4 781 783 1561 1563 +4 781 783 1561 1563 +4 781 783 1561 1563 +4 781 783 1561 1563 +4 781 783 1561 1563 +8 781 783 904 905 947 948 1561 1563 +8 781 783 904 905 947 948 1561 1563 +8 781 783 904 905 947 948 1561 1563 +8 781 783 904 905 947 948 1561 1563 +8 781 783 904 905 947 948 1561 1563 +8 781 783 904 905 947 948 1561 1563 +3 781 904 947 +3 781 904 947 +3 781 904 947 +3 781 904 947 +3 781 904 947 +3 781 904 947 +3 782 1336 2855 +3 782 1336 2855 +3 782 1336 2855 +3 782 1336 2855 +3 782 1336 2855 +3 782 1336 2855 +8 782 784 1336 1337 1568 2156 2853 2855 +8 782 784 1336 1337 1568 2156 2853 2855 +8 782 784 1336 1337 1568 2156 2853 2855 +8 782 784 1336 1337 1568 2156 2853 2855 +8 782 784 1336 1337 1568 2156 2853 2855 +8 782 784 1336 1337 1568 2156 2853 2855 +3 782 784 1568 +3 782 784 1568 +3 782 784 1568 +3 782 784 1568 +3 782 784 1568 +3 782 784 1568 +11 782 783 784 785 1121 1122 1164 1165 1568 1569 1570 +11 782 783 784 785 1121 1122 1164 1165 1568 1569 1570 +11 782 783 784 785 1121 1122 1164 1165 1568 1569 1570 +11 782 783 784 785 1121 1122 1164 1165 1568 1569 1570 +11 782 783 784 785 1121 1122 1164 1165 1568 1569 1570 +11 782 783 784 785 1121 1122 1164 1165 1568 1569 1570 +4 782 783 1121 1164 +4 782 783 1121 1164 +4 782 783 1121 1164 +4 782 783 1121 1164 +4 782 783 1121 1164 +4 782 783 1121 1164 +4 783 785 1569 1570 +4 783 785 1569 1570 +4 783 785 1569 1570 +4 783 785 1569 1570 +4 783 785 1569 1570 +4 783 785 1569 1570 +8 783 785 905 906 948 949 1569 1570 +8 783 785 905 906 948 949 1569 1570 +8 783 785 905 906 948 949 1569 1570 +8 783 785 905 906 948 949 1569 1570 +8 783 785 905 906 948 949 1569 1570 +8 783 785 905 906 948 949 1569 1570 +3 783 905 948 +3 783 905 948 +3 783 905 948 +3 783 905 948 +3 783 905 948 +3 783 905 948 +3 784 1337 2853 +3 784 1337 2853 +3 784 1337 2853 +3 784 1337 2853 +3 784 1337 2853 +3 784 1337 2853 +11 784 786 1337 1338 1361 1574 1576 2148 2150 2851 2853 +11 784 786 1337 1338 1361 1574 1576 2148 2150 2851 2853 +11 784 786 1337 1338 1361 1574 1576 2148 2150 2851 2853 +11 784 786 1337 1338 1361 1574 1576 2148 2150 2851 2853 +11 784 786 1337 1338 1361 1574 1576 2148 2150 2851 2853 +11 784 786 1337 1338 1361 1574 1576 2148 2150 2851 2853 +4 784 786 1574 1576 +4 784 786 1574 1576 +4 784 786 1574 1576 +4 784 786 1574 1576 +4 784 786 1574 1576 +4 784 786 1574 1576 +12 784 785 786 787 1122 1123 1165 1166 1574 1575 1576 1577 +12 784 785 786 787 1122 1123 1165 1166 1574 1575 1576 1577 +12 784 785 786 787 1122 1123 1165 1166 1574 1575 1576 1577 +12 784 785 786 787 1122 1123 1165 1166 1574 1575 1576 1577 +12 784 785 786 787 1122 1123 1165 1166 1574 1575 1576 1577 +12 784 785 786 787 1122 1123 1165 1166 1574 1575 1576 1577 +4 784 785 1122 1165 +4 784 785 1122 1165 +4 784 785 1122 1165 +4 784 785 1122 1165 +4 784 785 1122 1165 +4 784 785 1122 1165 +4 785 787 1575 1577 +4 785 787 1575 1577 +4 785 787 1575 1577 +4 785 787 1575 1577 +4 785 787 1575 1577 +4 785 787 1575 1577 +8 785 787 906 907 949 950 1575 1577 +8 785 787 906 907 949 950 1575 1577 +8 785 787 906 907 949 950 1575 1577 +8 785 787 906 907 949 950 1575 1577 +8 785 787 906 907 949 950 1575 1577 +8 785 787 906 907 949 950 1575 1577 +3 785 906 949 +3 785 906 949 +3 785 906 949 +3 785 906 949 +3 785 906 949 +3 785 906 949 +4 786 1338 1361 2851 +4 786 1338 1361 2851 +4 786 1338 1361 2851 +4 786 1338 1361 2851 +4 786 1338 1361 2851 +4 786 1338 1361 2851 +11 786 788 1338 1339 1361 1584 1586 2138 2140 2849 2851 +11 786 788 1338 1339 1361 1584 1586 2138 2140 2849 2851 +11 786 788 1338 1339 1361 1584 1586 2138 2140 2849 2851 +11 786 788 1338 1339 1361 1584 1586 2138 2140 2849 2851 +11 786 788 1338 1339 1361 1584 1586 2138 2140 2849 2851 +11 786 788 1338 1339 1361 1584 1586 2138 2140 2849 2851 +4 786 788 1584 1586 +4 786 788 1584 1586 +4 786 788 1584 1586 +4 786 788 1584 1586 +4 786 788 1584 1586 +4 786 788 1584 1586 +12 786 787 788 789 1123 1124 1166 1167 1584 1585 1586 1587 +12 786 787 788 789 1123 1124 1166 1167 1584 1585 1586 1587 +12 786 787 788 789 1123 1124 1166 1167 1584 1585 1586 1587 +12 786 787 788 789 1123 1124 1166 1167 1584 1585 1586 1587 +12 786 787 788 789 1123 1124 1166 1167 1584 1585 1586 1587 +12 786 787 788 789 1123 1124 1166 1167 1584 1585 1586 1587 +4 786 787 1123 1166 +4 786 787 1123 1166 +4 786 787 1123 1166 +4 786 787 1123 1166 +4 786 787 1123 1166 +4 786 787 1123 1166 +4 787 789 1585 1587 +4 787 789 1585 1587 +4 787 789 1585 1587 +4 787 789 1585 1587 +4 787 789 1585 1587 +4 787 789 1585 1587 +8 787 789 907 908 950 951 1585 1587 +8 787 789 907 908 950 951 1585 1587 +8 787 789 907 908 950 951 1585 1587 +8 787 789 907 908 950 951 1585 1587 +8 787 789 907 908 950 951 1585 1587 +8 787 789 907 908 950 951 1585 1587 +3 787 907 950 +3 787 907 950 +3 787 907 950 +3 787 907 950 +3 787 907 950 +3 787 907 950 +3 788 1339 2849 +3 788 1339 2849 +3 788 1339 2849 +3 788 1339 2849 +3 788 1339 2849 +3 788 1339 2849 +8 788 790 1339 1340 1592 2132 2847 2849 +8 788 790 1339 1340 1592 2132 2847 2849 +8 788 790 1339 1340 1592 2132 2847 2849 +8 788 790 1339 1340 1592 2132 2847 2849 +8 788 790 1339 1340 1592 2132 2847 2849 +8 788 790 1339 1340 1592 2132 2847 2849 +3 788 790 1592 +3 788 790 1592 +3 788 790 1592 +3 788 790 1592 +3 788 790 1592 +3 788 790 1592 +11 788 789 790 791 1124 1125 1167 1168 1592 1593 1594 +11 788 789 790 791 1124 1125 1167 1168 1592 1593 1594 +11 788 789 790 791 1124 1125 1167 1168 1592 1593 1594 +11 788 789 790 791 1124 1125 1167 1168 1592 1593 1594 +11 788 789 790 791 1124 1125 1167 1168 1592 1593 1594 +11 788 789 790 791 1124 1125 1167 1168 1592 1593 1594 +4 788 789 1124 1167 +4 788 789 1124 1167 +4 788 789 1124 1167 +4 788 789 1124 1167 +4 788 789 1124 1167 +4 788 789 1124 1167 +4 789 791 1593 1594 +4 789 791 1593 1594 +4 789 791 1593 1594 +4 789 791 1593 1594 +4 789 791 1593 1594 +4 789 791 1593 1594 +8 789 791 908 909 951 952 1593 1594 +8 789 791 908 909 951 952 1593 1594 +8 789 791 908 909 951 952 1593 1594 +8 789 791 908 909 951 952 1593 1594 +8 789 791 908 909 951 952 1593 1594 +8 789 791 908 909 951 952 1593 1594 +3 789 908 951 +3 789 908 951 +3 789 908 951 +3 789 908 951 +3 789 908 951 +3 789 908 951 +3 790 1340 2847 +3 790 1340 2847 +3 790 1340 2847 +3 790 1340 2847 +3 790 1340 2847 +3 790 1340 2847 +11 790 792 1340 1341 1362 1598 1600 2124 2126 2845 2847 +11 790 792 1340 1341 1362 1598 1600 2124 2126 2845 2847 +11 790 792 1340 1341 1362 1598 1600 2124 2126 2845 2847 +11 790 792 1340 1341 1362 1598 1600 2124 2126 2845 2847 +11 790 792 1340 1341 1362 1598 1600 2124 2126 2845 2847 +11 790 792 1340 1341 1362 1598 1600 2124 2126 2845 2847 +4 790 792 1598 1600 +4 790 792 1598 1600 +4 790 792 1598 1600 +4 790 792 1598 1600 +4 790 792 1598 1600 +4 790 792 1598 1600 +12 790 791 792 793 1125 1126 1168 1169 1598 1599 1600 1601 +12 790 791 792 793 1125 1126 1168 1169 1598 1599 1600 1601 +12 790 791 792 793 1125 1126 1168 1169 1598 1599 1600 1601 +12 790 791 792 793 1125 1126 1168 1169 1598 1599 1600 1601 +12 790 791 792 793 1125 1126 1168 1169 1598 1599 1600 1601 +12 790 791 792 793 1125 1126 1168 1169 1598 1599 1600 1601 +4 790 791 1125 1168 +4 790 791 1125 1168 +4 790 791 1125 1168 +4 790 791 1125 1168 +4 790 791 1125 1168 +4 790 791 1125 1168 +4 791 793 1599 1601 +4 791 793 1599 1601 +4 791 793 1599 1601 +4 791 793 1599 1601 +4 791 793 1599 1601 +4 791 793 1599 1601 +8 791 793 909 910 952 953 1599 1601 +8 791 793 909 910 952 953 1599 1601 +8 791 793 909 910 952 953 1599 1601 +8 791 793 909 910 952 953 1599 1601 +8 791 793 909 910 952 953 1599 1601 +8 791 793 909 910 952 953 1599 1601 +3 791 909 952 +3 791 909 952 +3 791 909 952 +3 791 909 952 +3 791 909 952 +3 791 909 952 +4 792 1341 1362 2845 +4 792 1341 1362 2845 +4 792 1341 1362 2845 +4 792 1341 1362 2845 +4 792 1341 1362 2845 +4 792 1341 1362 2845 +11 792 794 1341 1342 1362 1606 1608 2116 2118 2843 2845 +11 792 794 1341 1342 1362 1606 1608 2116 2118 2843 2845 +11 792 794 1341 1342 1362 1606 1608 2116 2118 2843 2845 +11 792 794 1341 1342 1362 1606 1608 2116 2118 2843 2845 +11 792 794 1341 1342 1362 1606 1608 2116 2118 2843 2845 +11 792 794 1341 1342 1362 1606 1608 2116 2118 2843 2845 +4 792 794 1606 1608 +4 792 794 1606 1608 +4 792 794 1606 1608 +4 792 794 1606 1608 +4 792 794 1606 1608 +4 792 794 1606 1608 +12 792 793 794 795 1126 1127 1169 1170 1606 1607 1608 1609 +12 792 793 794 795 1126 1127 1169 1170 1606 1607 1608 1609 +12 792 793 794 795 1126 1127 1169 1170 1606 1607 1608 1609 +12 792 793 794 795 1126 1127 1169 1170 1606 1607 1608 1609 +12 792 793 794 795 1126 1127 1169 1170 1606 1607 1608 1609 +12 792 793 794 795 1126 1127 1169 1170 1606 1607 1608 1609 +4 792 793 1126 1169 +4 792 793 1126 1169 +4 792 793 1126 1169 +4 792 793 1126 1169 +4 792 793 1126 1169 +4 792 793 1126 1169 +4 793 795 1607 1609 +4 793 795 1607 1609 +4 793 795 1607 1609 +4 793 795 1607 1609 +4 793 795 1607 1609 +4 793 795 1607 1609 +8 793 795 910 911 953 954 1607 1609 +8 793 795 910 911 953 954 1607 1609 +8 793 795 910 911 953 954 1607 1609 +8 793 795 910 911 953 954 1607 1609 +8 793 795 910 911 953 954 1607 1609 +8 793 795 910 911 953 954 1607 1609 +3 793 910 953 +3 793 910 953 +3 793 910 953 +3 793 910 953 +3 793 910 953 +3 793 910 953 +3 794 1342 2843 +3 794 1342 2843 +3 794 1342 2843 +3 794 1342 2843 +3 794 1342 2843 +3 794 1342 2843 +8 794 796 1342 1343 1614 2110 2841 2843 +8 794 796 1342 1343 1614 2110 2841 2843 +8 794 796 1342 1343 1614 2110 2841 2843 +8 794 796 1342 1343 1614 2110 2841 2843 +8 794 796 1342 1343 1614 2110 2841 2843 +8 794 796 1342 1343 1614 2110 2841 2843 +3 794 796 1614 +3 794 796 1614 +3 794 796 1614 +3 794 796 1614 +3 794 796 1614 +3 794 796 1614 +11 794 795 796 797 1127 1128 1170 1171 1614 1615 1616 +11 794 795 796 797 1127 1128 1170 1171 1614 1615 1616 +11 794 795 796 797 1127 1128 1170 1171 1614 1615 1616 +11 794 795 796 797 1127 1128 1170 1171 1614 1615 1616 +11 794 795 796 797 1127 1128 1170 1171 1614 1615 1616 +11 794 795 796 797 1127 1128 1170 1171 1614 1615 1616 +4 794 795 1127 1170 +4 794 795 1127 1170 +4 794 795 1127 1170 +4 794 795 1127 1170 +4 794 795 1127 1170 +4 794 795 1127 1170 +4 795 797 1615 1616 +4 795 797 1615 1616 +4 795 797 1615 1616 +4 795 797 1615 1616 +4 795 797 1615 1616 +4 795 797 1615 1616 +8 795 797 911 912 954 955 1615 1616 +8 795 797 911 912 954 955 1615 1616 +8 795 797 911 912 954 955 1615 1616 +8 795 797 911 912 954 955 1615 1616 +8 795 797 911 912 954 955 1615 1616 +8 795 797 911 912 954 955 1615 1616 +3 795 911 954 +3 795 911 954 +3 795 911 954 +3 795 911 954 +3 795 911 954 +3 795 911 954 +3 796 1343 2841 +3 796 1343 2841 +3 796 1343 2841 +3 796 1343 2841 +3 796 1343 2841 +3 796 1343 2841 +11 796 798 1343 1344 1363 1620 1622 2102 2104 2839 2841 +11 796 798 1343 1344 1363 1620 1622 2102 2104 2839 2841 +11 796 798 1343 1344 1363 1620 1622 2102 2104 2839 2841 +11 796 798 1343 1344 1363 1620 1622 2102 2104 2839 2841 +11 796 798 1343 1344 1363 1620 1622 2102 2104 2839 2841 +11 796 798 1343 1344 1363 1620 1622 2102 2104 2839 2841 +4 796 798 1620 1622 +4 796 798 1620 1622 +4 796 798 1620 1622 +4 796 798 1620 1622 +4 796 798 1620 1622 +4 796 798 1620 1622 +12 796 797 798 799 1128 1129 1171 1172 1620 1621 1622 1623 +12 796 797 798 799 1128 1129 1171 1172 1620 1621 1622 1623 +12 796 797 798 799 1128 1129 1171 1172 1620 1621 1622 1623 +12 796 797 798 799 1128 1129 1171 1172 1620 1621 1622 1623 +12 796 797 798 799 1128 1129 1171 1172 1620 1621 1622 1623 +12 796 797 798 799 1128 1129 1171 1172 1620 1621 1622 1623 +4 796 797 1128 1171 +4 796 797 1128 1171 +4 796 797 1128 1171 +4 796 797 1128 1171 +4 796 797 1128 1171 +4 796 797 1128 1171 +4 797 799 1621 1623 +4 797 799 1621 1623 +4 797 799 1621 1623 +4 797 799 1621 1623 +4 797 799 1621 1623 +4 797 799 1621 1623 +8 797 799 912 913 955 956 1621 1623 +8 797 799 912 913 955 956 1621 1623 +8 797 799 912 913 955 956 1621 1623 +8 797 799 912 913 955 956 1621 1623 +8 797 799 912 913 955 956 1621 1623 +8 797 799 912 913 955 956 1621 1623 +3 797 912 955 +3 797 912 955 +3 797 912 955 +3 797 912 955 +3 797 912 955 +3 797 912 955 +4 798 1344 1363 2839 +4 798 1344 1363 2839 +4 798 1344 1363 2839 +4 798 1344 1363 2839 +4 798 1344 1363 2839 +4 798 1344 1363 2839 +11 798 800 1344 1345 1363 1630 1632 2092 2094 2837 2839 +11 798 800 1344 1345 1363 1630 1632 2092 2094 2837 2839 +11 798 800 1344 1345 1363 1630 1632 2092 2094 2837 2839 +11 798 800 1344 1345 1363 1630 1632 2092 2094 2837 2839 +11 798 800 1344 1345 1363 1630 1632 2092 2094 2837 2839 +11 798 800 1344 1345 1363 1630 1632 2092 2094 2837 2839 +4 798 800 1630 1632 +4 798 800 1630 1632 +4 798 800 1630 1632 +4 798 800 1630 1632 +4 798 800 1630 1632 +4 798 800 1630 1632 +12 798 799 800 801 1129 1130 1172 1173 1630 1631 1632 1633 +12 798 799 800 801 1129 1130 1172 1173 1630 1631 1632 1633 +12 798 799 800 801 1129 1130 1172 1173 1630 1631 1632 1633 +12 798 799 800 801 1129 1130 1172 1173 1630 1631 1632 1633 +12 798 799 800 801 1129 1130 1172 1173 1630 1631 1632 1633 +12 798 799 800 801 1129 1130 1172 1173 1630 1631 1632 1633 +4 798 799 1129 1172 +4 798 799 1129 1172 +4 798 799 1129 1172 +4 798 799 1129 1172 +4 798 799 1129 1172 +4 798 799 1129 1172 +4 799 801 1631 1633 +4 799 801 1631 1633 +4 799 801 1631 1633 +4 799 801 1631 1633 +4 799 801 1631 1633 +4 799 801 1631 1633 +8 799 801 913 914 956 957 1631 1633 +8 799 801 913 914 956 957 1631 1633 +8 799 801 913 914 956 957 1631 1633 +8 799 801 913 914 956 957 1631 1633 +8 799 801 913 914 956 957 1631 1633 +8 799 801 913 914 956 957 1631 1633 +3 799 913 956 +3 799 913 956 +3 799 913 956 +3 799 913 956 +3 799 913 956 +3 799 913 956 +3 800 1345 2837 +3 800 1345 2837 +3 800 1345 2837 +3 800 1345 2837 +3 800 1345 2837 +3 800 1345 2837 +8 800 802 1345 1346 1638 2086 2835 2837 +8 800 802 1345 1346 1638 2086 2835 2837 +8 800 802 1345 1346 1638 2086 2835 2837 +8 800 802 1345 1346 1638 2086 2835 2837 +8 800 802 1345 1346 1638 2086 2835 2837 +8 800 802 1345 1346 1638 2086 2835 2837 +3 800 802 1638 +3 800 802 1638 +3 800 802 1638 +3 800 802 1638 +3 800 802 1638 +3 800 802 1638 +11 800 801 802 803 1130 1131 1173 1174 1638 1639 1640 +11 800 801 802 803 1130 1131 1173 1174 1638 1639 1640 +11 800 801 802 803 1130 1131 1173 1174 1638 1639 1640 +11 800 801 802 803 1130 1131 1173 1174 1638 1639 1640 +11 800 801 802 803 1130 1131 1173 1174 1638 1639 1640 +11 800 801 802 803 1130 1131 1173 1174 1638 1639 1640 +4 800 801 1130 1173 +4 800 801 1130 1173 +4 800 801 1130 1173 +4 800 801 1130 1173 +4 800 801 1130 1173 +4 800 801 1130 1173 +4 801 803 1639 1640 +4 801 803 1639 1640 +4 801 803 1639 1640 +4 801 803 1639 1640 +4 801 803 1639 1640 +4 801 803 1639 1640 +8 801 803 914 915 957 958 1639 1640 +8 801 803 914 915 957 958 1639 1640 +8 801 803 914 915 957 958 1639 1640 +8 801 803 914 915 957 958 1639 1640 +8 801 803 914 915 957 958 1639 1640 +8 801 803 914 915 957 958 1639 1640 +3 801 914 957 +3 801 914 957 +3 801 914 957 +3 801 914 957 +3 801 914 957 +3 801 914 957 +3 802 1346 2835 +3 802 1346 2835 +3 802 1346 2835 +3 802 1346 2835 +3 802 1346 2835 +3 802 1346 2835 +11 802 804 1346 1347 1364 1644 1646 2078 2080 2833 2835 +11 802 804 1346 1347 1364 1644 1646 2078 2080 2833 2835 +11 802 804 1346 1347 1364 1644 1646 2078 2080 2833 2835 +11 802 804 1346 1347 1364 1644 1646 2078 2080 2833 2835 +11 802 804 1346 1347 1364 1644 1646 2078 2080 2833 2835 +11 802 804 1346 1347 1364 1644 1646 2078 2080 2833 2835 +4 802 804 1644 1646 +4 802 804 1644 1646 +4 802 804 1644 1646 +4 802 804 1644 1646 +4 802 804 1644 1646 +4 802 804 1644 1646 +12 802 803 804 805 1131 1132 1174 1175 1644 1645 1646 1647 +12 802 803 804 805 1131 1132 1174 1175 1644 1645 1646 1647 +12 802 803 804 805 1131 1132 1174 1175 1644 1645 1646 1647 +12 802 803 804 805 1131 1132 1174 1175 1644 1645 1646 1647 +12 802 803 804 805 1131 1132 1174 1175 1644 1645 1646 1647 +12 802 803 804 805 1131 1132 1174 1175 1644 1645 1646 1647 +4 802 803 1131 1174 +4 802 803 1131 1174 +4 802 803 1131 1174 +4 802 803 1131 1174 +4 802 803 1131 1174 +4 802 803 1131 1174 +4 803 805 1645 1647 +4 803 805 1645 1647 +4 803 805 1645 1647 +4 803 805 1645 1647 +4 803 805 1645 1647 +4 803 805 1645 1647 +8 803 805 915 916 958 959 1645 1647 +8 803 805 915 916 958 959 1645 1647 +8 803 805 915 916 958 959 1645 1647 +8 803 805 915 916 958 959 1645 1647 +8 803 805 915 916 958 959 1645 1647 +8 803 805 915 916 958 959 1645 1647 +3 803 915 958 +3 803 915 958 +3 803 915 958 +3 803 915 958 +3 803 915 958 +3 803 915 958 +4 804 1347 1364 2833 +4 804 1347 1364 2833 +4 804 1347 1364 2833 +4 804 1347 1364 2833 +4 804 1347 1364 2833 +4 804 1347 1364 2833 +11 804 806 1347 1348 1364 1652 1654 2070 2072 2831 2833 +11 804 806 1347 1348 1364 1652 1654 2070 2072 2831 2833 +11 804 806 1347 1348 1364 1652 1654 2070 2072 2831 2833 +11 804 806 1347 1348 1364 1652 1654 2070 2072 2831 2833 +11 804 806 1347 1348 1364 1652 1654 2070 2072 2831 2833 +11 804 806 1347 1348 1364 1652 1654 2070 2072 2831 2833 +4 804 806 1652 1654 +4 804 806 1652 1654 +4 804 806 1652 1654 +4 804 806 1652 1654 +4 804 806 1652 1654 +4 804 806 1652 1654 +12 804 805 806 807 1132 1133 1175 1176 1652 1653 1654 1655 +12 804 805 806 807 1132 1133 1175 1176 1652 1653 1654 1655 +12 804 805 806 807 1132 1133 1175 1176 1652 1653 1654 1655 +12 804 805 806 807 1132 1133 1175 1176 1652 1653 1654 1655 +12 804 805 806 807 1132 1133 1175 1176 1652 1653 1654 1655 +12 804 805 806 807 1132 1133 1175 1176 1652 1653 1654 1655 +4 804 805 1132 1175 +4 804 805 1132 1175 +4 804 805 1132 1175 +4 804 805 1132 1175 +4 804 805 1132 1175 +4 804 805 1132 1175 +4 805 807 1653 1655 +4 805 807 1653 1655 +4 805 807 1653 1655 +4 805 807 1653 1655 +4 805 807 1653 1655 +4 805 807 1653 1655 +8 805 807 916 917 959 960 1653 1655 +8 805 807 916 917 959 960 1653 1655 +8 805 807 916 917 959 960 1653 1655 +8 805 807 916 917 959 960 1653 1655 +8 805 807 916 917 959 960 1653 1655 +8 805 807 916 917 959 960 1653 1655 +3 805 916 959 +3 805 916 959 +3 805 916 959 +3 805 916 959 +3 805 916 959 +3 805 916 959 +3 806 1348 2831 +3 806 1348 2831 +3 806 1348 2831 +3 806 1348 2831 +3 806 1348 2831 +3 806 1348 2831 +8 806 808 1348 1349 1660 2064 2829 2831 +8 806 808 1348 1349 1660 2064 2829 2831 +8 806 808 1348 1349 1660 2064 2829 2831 +8 806 808 1348 1349 1660 2064 2829 2831 +8 806 808 1348 1349 1660 2064 2829 2831 +8 806 808 1348 1349 1660 2064 2829 2831 +3 806 808 1660 +3 806 808 1660 +3 806 808 1660 +3 806 808 1660 +3 806 808 1660 +3 806 808 1660 +11 806 807 808 809 1133 1134 1176 1177 1660 1661 1662 +11 806 807 808 809 1133 1134 1176 1177 1660 1661 1662 +11 806 807 808 809 1133 1134 1176 1177 1660 1661 1662 +11 806 807 808 809 1133 1134 1176 1177 1660 1661 1662 +11 806 807 808 809 1133 1134 1176 1177 1660 1661 1662 +11 806 807 808 809 1133 1134 1176 1177 1660 1661 1662 +4 806 807 1133 1176 +4 806 807 1133 1176 +4 806 807 1133 1176 +4 806 807 1133 1176 +4 806 807 1133 1176 +4 806 807 1133 1176 +4 807 809 1661 1662 +4 807 809 1661 1662 +4 807 809 1661 1662 +4 807 809 1661 1662 +4 807 809 1661 1662 +4 807 809 1661 1662 +8 807 809 917 918 960 961 1661 1662 +8 807 809 917 918 960 961 1661 1662 +8 807 809 917 918 960 961 1661 1662 +8 807 809 917 918 960 961 1661 1662 +8 807 809 917 918 960 961 1661 1662 +8 807 809 917 918 960 961 1661 1662 +3 807 917 960 +3 807 917 960 +3 807 917 960 +3 807 917 960 +3 807 917 960 +3 807 917 960 +3 808 1349 2829 +3 808 1349 2829 +3 808 1349 2829 +3 808 1349 2829 +3 808 1349 2829 +3 808 1349 2829 +11 808 810 1349 1350 1365 1666 1668 2056 2058 2827 2829 +11 808 810 1349 1350 1365 1666 1668 2056 2058 2827 2829 +11 808 810 1349 1350 1365 1666 1668 2056 2058 2827 2829 +11 808 810 1349 1350 1365 1666 1668 2056 2058 2827 2829 +11 808 810 1349 1350 1365 1666 1668 2056 2058 2827 2829 +11 808 810 1349 1350 1365 1666 1668 2056 2058 2827 2829 +4 808 810 1666 1668 +4 808 810 1666 1668 +4 808 810 1666 1668 +4 808 810 1666 1668 +4 808 810 1666 1668 +4 808 810 1666 1668 +12 808 809 810 811 1134 1135 1177 1178 1666 1667 1668 1669 +12 808 809 810 811 1134 1135 1177 1178 1666 1667 1668 1669 +12 808 809 810 811 1134 1135 1177 1178 1666 1667 1668 1669 +12 808 809 810 811 1134 1135 1177 1178 1666 1667 1668 1669 +12 808 809 810 811 1134 1135 1177 1178 1666 1667 1668 1669 +12 808 809 810 811 1134 1135 1177 1178 1666 1667 1668 1669 +4 808 809 1134 1177 +4 808 809 1134 1177 +4 808 809 1134 1177 +4 808 809 1134 1177 +4 808 809 1134 1177 +4 808 809 1134 1177 +4 809 811 1667 1669 +4 809 811 1667 1669 +4 809 811 1667 1669 +4 809 811 1667 1669 +4 809 811 1667 1669 +4 809 811 1667 1669 +8 809 811 918 919 961 962 1667 1669 +8 809 811 918 919 961 962 1667 1669 +8 809 811 918 919 961 962 1667 1669 +8 809 811 918 919 961 962 1667 1669 +8 809 811 918 919 961 962 1667 1669 +8 809 811 918 919 961 962 1667 1669 +3 809 918 961 +3 809 918 961 +3 809 918 961 +3 809 918 961 +3 809 918 961 +3 809 918 961 +4 810 1350 1365 2827 +4 810 1350 1365 2827 +4 810 1350 1365 2827 +4 810 1350 1365 2827 +4 810 1350 1365 2827 +4 810 1350 1365 2827 +11 810 812 1350 1351 1365 1676 1678 2046 2048 2825 2827 +11 810 812 1350 1351 1365 1676 1678 2046 2048 2825 2827 +11 810 812 1350 1351 1365 1676 1678 2046 2048 2825 2827 +11 810 812 1350 1351 1365 1676 1678 2046 2048 2825 2827 +11 810 812 1350 1351 1365 1676 1678 2046 2048 2825 2827 +11 810 812 1350 1351 1365 1676 1678 2046 2048 2825 2827 +4 810 812 1676 1678 +4 810 812 1676 1678 +4 810 812 1676 1678 +4 810 812 1676 1678 +4 810 812 1676 1678 +4 810 812 1676 1678 +12 810 811 812 813 1135 1136 1178 1179 1676 1677 1678 1679 +12 810 811 812 813 1135 1136 1178 1179 1676 1677 1678 1679 +12 810 811 812 813 1135 1136 1178 1179 1676 1677 1678 1679 +12 810 811 812 813 1135 1136 1178 1179 1676 1677 1678 1679 +12 810 811 812 813 1135 1136 1178 1179 1676 1677 1678 1679 +12 810 811 812 813 1135 1136 1178 1179 1676 1677 1678 1679 +4 810 811 1135 1178 +4 810 811 1135 1178 +4 810 811 1135 1178 +4 810 811 1135 1178 +4 810 811 1135 1178 +4 810 811 1135 1178 +4 811 813 1677 1679 +4 811 813 1677 1679 +4 811 813 1677 1679 +4 811 813 1677 1679 +4 811 813 1677 1679 +4 811 813 1677 1679 +8 811 813 919 920 962 963 1677 1679 +8 811 813 919 920 962 963 1677 1679 +8 811 813 919 920 962 963 1677 1679 +8 811 813 919 920 962 963 1677 1679 +8 811 813 919 920 962 963 1677 1679 +8 811 813 919 920 962 963 1677 1679 +3 811 919 962 +3 811 919 962 +3 811 919 962 +3 811 919 962 +3 811 919 962 +3 811 919 962 +3 812 1351 2825 +3 812 1351 2825 +3 812 1351 2825 +3 812 1351 2825 +3 812 1351 2825 +3 812 1351 2825 +8 812 814 1351 1352 1684 2040 2823 2825 +8 812 814 1351 1352 1684 2040 2823 2825 +8 812 814 1351 1352 1684 2040 2823 2825 +8 812 814 1351 1352 1684 2040 2823 2825 +8 812 814 1351 1352 1684 2040 2823 2825 +8 812 814 1351 1352 1684 2040 2823 2825 +3 812 814 1684 +3 812 814 1684 +3 812 814 1684 +3 812 814 1684 +3 812 814 1684 +3 812 814 1684 +11 812 813 814 815 1136 1137 1179 1180 1684 1685 1686 +11 812 813 814 815 1136 1137 1179 1180 1684 1685 1686 +11 812 813 814 815 1136 1137 1179 1180 1684 1685 1686 +11 812 813 814 815 1136 1137 1179 1180 1684 1685 1686 +11 812 813 814 815 1136 1137 1179 1180 1684 1685 1686 +11 812 813 814 815 1136 1137 1179 1180 1684 1685 1686 +4 812 813 1136 1179 +4 812 813 1136 1179 +4 812 813 1136 1179 +4 812 813 1136 1179 +4 812 813 1136 1179 +4 812 813 1136 1179 +4 813 815 1685 1686 +4 813 815 1685 1686 +4 813 815 1685 1686 +4 813 815 1685 1686 +4 813 815 1685 1686 +4 813 815 1685 1686 +8 813 815 920 921 963 964 1685 1686 +8 813 815 920 921 963 964 1685 1686 +8 813 815 920 921 963 964 1685 1686 +8 813 815 920 921 963 964 1685 1686 +8 813 815 920 921 963 964 1685 1686 +8 813 815 920 921 963 964 1685 1686 +3 813 920 963 +3 813 920 963 +3 813 920 963 +3 813 920 963 +3 813 920 963 +3 813 920 963 +3 814 1352 2823 +3 814 1352 2823 +3 814 1352 2823 +3 814 1352 2823 +3 814 1352 2823 +3 814 1352 2823 +11 814 816 1352 1353 1366 1690 1692 2032 2034 2821 2823 +11 814 816 1352 1353 1366 1690 1692 2032 2034 2821 2823 +11 814 816 1352 1353 1366 1690 1692 2032 2034 2821 2823 +11 814 816 1352 1353 1366 1690 1692 2032 2034 2821 2823 +11 814 816 1352 1353 1366 1690 1692 2032 2034 2821 2823 +11 814 816 1352 1353 1366 1690 1692 2032 2034 2821 2823 +4 814 816 1690 1692 +4 814 816 1690 1692 +4 814 816 1690 1692 +4 814 816 1690 1692 +4 814 816 1690 1692 +4 814 816 1690 1692 +12 814 815 816 817 1137 1138 1180 1181 1690 1691 1692 1693 +12 814 815 816 817 1137 1138 1180 1181 1690 1691 1692 1693 +12 814 815 816 817 1137 1138 1180 1181 1690 1691 1692 1693 +12 814 815 816 817 1137 1138 1180 1181 1690 1691 1692 1693 +12 814 815 816 817 1137 1138 1180 1181 1690 1691 1692 1693 +12 814 815 816 817 1137 1138 1180 1181 1690 1691 1692 1693 +4 814 815 1137 1180 +4 814 815 1137 1180 +4 814 815 1137 1180 +4 814 815 1137 1180 +4 814 815 1137 1180 +4 814 815 1137 1180 +4 815 817 1691 1693 +4 815 817 1691 1693 +4 815 817 1691 1693 +4 815 817 1691 1693 +4 815 817 1691 1693 +4 815 817 1691 1693 +8 815 817 921 922 964 965 1691 1693 +8 815 817 921 922 964 965 1691 1693 +8 815 817 921 922 964 965 1691 1693 +8 815 817 921 922 964 965 1691 1693 +8 815 817 921 922 964 965 1691 1693 +8 815 817 921 922 964 965 1691 1693 +3 815 921 964 +3 815 921 964 +3 815 921 964 +3 815 921 964 +3 815 921 964 +3 815 921 964 +4 816 1353 1366 2821 +4 816 1353 1366 2821 +4 816 1353 1366 2821 +4 816 1353 1366 2821 +4 816 1353 1366 2821 +4 816 1353 1366 2821 +11 816 818 1353 1354 1366 1700 1702 2022 2024 2819 2821 +11 816 818 1353 1354 1366 1700 1702 2022 2024 2819 2821 +11 816 818 1353 1354 1366 1700 1702 2022 2024 2819 2821 +11 816 818 1353 1354 1366 1700 1702 2022 2024 2819 2821 +11 816 818 1353 1354 1366 1700 1702 2022 2024 2819 2821 +11 816 818 1353 1354 1366 1700 1702 2022 2024 2819 2821 +4 816 818 1700 1702 +4 816 818 1700 1702 +4 816 818 1700 1702 +4 816 818 1700 1702 +4 816 818 1700 1702 +4 816 818 1700 1702 +12 816 817 818 819 1138 1139 1181 1182 1700 1701 1702 1703 +12 816 817 818 819 1138 1139 1181 1182 1700 1701 1702 1703 +12 816 817 818 819 1138 1139 1181 1182 1700 1701 1702 1703 +12 816 817 818 819 1138 1139 1181 1182 1700 1701 1702 1703 +12 816 817 818 819 1138 1139 1181 1182 1700 1701 1702 1703 +12 816 817 818 819 1138 1139 1181 1182 1700 1701 1702 1703 +4 816 817 1138 1181 +4 816 817 1138 1181 +4 816 817 1138 1181 +4 816 817 1138 1181 +4 816 817 1138 1181 +4 816 817 1138 1181 +4 817 819 1701 1703 +4 817 819 1701 1703 +4 817 819 1701 1703 +4 817 819 1701 1703 +4 817 819 1701 1703 +4 817 819 1701 1703 +8 817 819 922 923 965 966 1701 1703 +8 817 819 922 923 965 966 1701 1703 +8 817 819 922 923 965 966 1701 1703 +8 817 819 922 923 965 966 1701 1703 +8 817 819 922 923 965 966 1701 1703 +8 817 819 922 923 965 966 1701 1703 +3 817 922 965 +3 817 922 965 +3 817 922 965 +3 817 922 965 +3 817 922 965 +3 817 922 965 +3 818 1354 2819 +3 818 1354 2819 +3 818 1354 2819 +3 818 1354 2819 +3 818 1354 2819 +3 818 1354 2819 +8 818 879 1354 1355 1710 2014 2758 2819 +8 818 879 1354 1355 1710 2014 2758 2819 +8 818 879 1354 1355 1710 2014 2758 2819 +8 818 879 1354 1355 1710 2014 2758 2819 +8 818 879 1354 1355 1710 2014 2758 2819 +8 818 879 1354 1355 1710 2014 2758 2819 +3 818 879 1710 +3 818 879 1710 +3 818 879 1710 +3 818 879 1710 +3 818 879 1710 +3 818 879 1710 +11 818 819 879 880 1139 1140 1182 1183 1710 1711 1712 +11 818 819 879 880 1139 1140 1182 1183 1710 1711 1712 +11 818 819 879 880 1139 1140 1182 1183 1710 1711 1712 +11 818 819 879 880 1139 1140 1182 1183 1710 1711 1712 +11 818 819 879 880 1139 1140 1182 1183 1710 1711 1712 +11 818 819 879 880 1139 1140 1182 1183 1710 1711 1712 +4 818 819 1139 1182 +4 818 819 1139 1182 +4 818 819 1139 1182 +4 818 819 1139 1182 +4 818 819 1139 1182 +4 818 819 1139 1182 +4 819 880 1711 1712 +4 819 880 1711 1712 +4 819 880 1711 1712 +4 819 880 1711 1712 +4 819 880 1711 1712 +4 819 880 1711 1712 +8 819 880 923 924 966 967 1711 1712 +8 819 880 923 924 966 967 1711 1712 +8 819 880 923 924 966 967 1711 1712 +8 819 880 923 924 966 967 1711 1712 +8 819 880 923 924 966 967 1711 1712 +8 819 880 923 924 966 967 1711 1712 +3 819 923 966 +3 819 923 966 +3 819 923 966 +3 819 923 966 +3 819 923 966 +3 819 923 966 +3 820 1313 2817 +3 820 1313 2817 +3 820 1313 2817 +3 820 1313 2817 +3 820 1313 2817 +3 820 1313 2817 +8 820 821 1313 1314 1400 2324 2816 2817 +8 820 821 1313 1314 1400 2324 2816 2817 +8 820 821 1313 1314 1400 2324 2816 2817 +8 820 821 1313 1314 1400 2324 2816 2817 +8 820 821 1313 1314 1400 2324 2816 2817 +8 820 821 1313 1314 1400 2324 2816 2817 +3 820 821 1400 +3 820 821 1400 +3 820 821 1400 +3 820 821 1400 +3 820 821 1400 +3 820 821 1400 +8 820 821 882 883 1098 1099 1400 1401 +8 820 821 882 883 1098 1099 1400 1401 +8 820 821 882 883 1098 1099 1400 1401 +8 820 821 882 883 1098 1099 1400 1401 +8 820 821 882 883 1098 1099 1400 1401 +8 820 821 882 883 1098 1099 1400 1401 +3 820 882 1098 +3 820 882 1098 +3 820 882 1098 +3 820 882 1098 +3 820 882 1098 +3 820 882 1098 +3 821 1314 2816 +3 821 1314 2816 +3 821 1314 2816 +3 821 1314 2816 +3 821 1314 2816 +3 821 1314 2816 +8 821 822 1314 1315 1408 2316 2815 2816 +8 821 822 1314 1315 1408 2316 2815 2816 +8 821 822 1314 1315 1408 2316 2815 2816 +8 821 822 1314 1315 1408 2316 2815 2816 +8 821 822 1314 1315 1408 2316 2815 2816 +8 821 822 1314 1315 1408 2316 2815 2816 +3 821 822 1408 +3 821 822 1408 +3 821 822 1408 +3 821 822 1408 +3 821 822 1408 +3 821 822 1408 +8 821 822 883 884 1099 1100 1408 1409 +8 821 822 883 884 1099 1100 1408 1409 +8 821 822 883 884 1099 1100 1408 1409 +8 821 822 883 884 1099 1100 1408 1409 +8 821 822 883 884 1099 1100 1408 1409 +8 821 822 883 884 1099 1100 1408 1409 +3 821 883 1099 +3 821 883 1099 +3 821 883 1099 +3 821 883 1099 +3 821 883 1099 +3 821 883 1099 +3 822 1315 2815 +3 822 1315 2815 +3 822 1315 2815 +3 822 1315 2815 +3 822 1315 2815 +3 822 1315 2815 +8 822 823 1315 1316 1414 2310 2814 2815 +8 822 823 1315 1316 1414 2310 2814 2815 +8 822 823 1315 1316 1414 2310 2814 2815 +8 822 823 1315 1316 1414 2310 2814 2815 +8 822 823 1315 1316 1414 2310 2814 2815 +8 822 823 1315 1316 1414 2310 2814 2815 +3 822 823 1414 +3 822 823 1414 +3 822 823 1414 +3 822 823 1414 +3 822 823 1414 +3 822 823 1414 +8 822 823 884 885 1100 1101 1414 1415 +8 822 823 884 885 1100 1101 1414 1415 +8 822 823 884 885 1100 1101 1414 1415 +8 822 823 884 885 1100 1101 1414 1415 +8 822 823 884 885 1100 1101 1414 1415 +8 822 823 884 885 1100 1101 1414 1415 +3 822 884 1100 +3 822 884 1100 +3 822 884 1100 +3 822 884 1100 +3 822 884 1100 +3 822 884 1100 +3 823 1316 2814 +3 823 1316 2814 +3 823 1316 2814 +3 823 1316 2814 +3 823 1316 2814 +3 823 1316 2814 +8 823 824 1316 1317 1420 2304 2813 2814 +8 823 824 1316 1317 1420 2304 2813 2814 +8 823 824 1316 1317 1420 2304 2813 2814 +8 823 824 1316 1317 1420 2304 2813 2814 +8 823 824 1316 1317 1420 2304 2813 2814 +8 823 824 1316 1317 1420 2304 2813 2814 +3 823 824 1420 +3 823 824 1420 +3 823 824 1420 +3 823 824 1420 +3 823 824 1420 +3 823 824 1420 +8 823 824 885 886 1101 1102 1420 1421 +8 823 824 885 886 1101 1102 1420 1421 +8 823 824 885 886 1101 1102 1420 1421 +8 823 824 885 886 1101 1102 1420 1421 +8 823 824 885 886 1101 1102 1420 1421 +8 823 824 885 886 1101 1102 1420 1421 +3 823 885 1101 +3 823 885 1101 +3 823 885 1101 +3 823 885 1101 +3 823 885 1101 +3 823 885 1101 +3 824 1317 2813 +3 824 1317 2813 +3 824 1317 2813 +3 824 1317 2813 +3 824 1317 2813 +3 824 1317 2813 +8 824 825 1317 1318 1426 2298 2812 2813 +8 824 825 1317 1318 1426 2298 2812 2813 +8 824 825 1317 1318 1426 2298 2812 2813 +8 824 825 1317 1318 1426 2298 2812 2813 +8 824 825 1317 1318 1426 2298 2812 2813 +8 824 825 1317 1318 1426 2298 2812 2813 +3 824 825 1426 +3 824 825 1426 +3 824 825 1426 +3 824 825 1426 +3 824 825 1426 +3 824 825 1426 +8 824 825 886 887 1102 1103 1426 1427 +8 824 825 886 887 1102 1103 1426 1427 +8 824 825 886 887 1102 1103 1426 1427 +8 824 825 886 887 1102 1103 1426 1427 +8 824 825 886 887 1102 1103 1426 1427 +8 824 825 886 887 1102 1103 1426 1427 +3 824 886 1102 +3 824 886 1102 +3 824 886 1102 +3 824 886 1102 +3 824 886 1102 +3 824 886 1102 +3 825 1318 2812 +3 825 1318 2812 +3 825 1318 2812 +3 825 1318 2812 +3 825 1318 2812 +3 825 1318 2812 +8 825 826 1318 1319 1432 2292 2811 2812 +8 825 826 1318 1319 1432 2292 2811 2812 +8 825 826 1318 1319 1432 2292 2811 2812 +8 825 826 1318 1319 1432 2292 2811 2812 +8 825 826 1318 1319 1432 2292 2811 2812 +8 825 826 1318 1319 1432 2292 2811 2812 +3 825 826 1432 +3 825 826 1432 +3 825 826 1432 +3 825 826 1432 +3 825 826 1432 +3 825 826 1432 +8 825 826 887 888 1103 1104 1432 1433 +8 825 826 887 888 1103 1104 1432 1433 +8 825 826 887 888 1103 1104 1432 1433 +8 825 826 887 888 1103 1104 1432 1433 +8 825 826 887 888 1103 1104 1432 1433 +8 825 826 887 888 1103 1104 1432 1433 +3 825 887 1103 +3 825 887 1103 +3 825 887 1103 +3 825 887 1103 +3 825 887 1103 +3 825 887 1103 +3 826 1319 2811 +3 826 1319 2811 +3 826 1319 2811 +3 826 1319 2811 +3 826 1319 2811 +3 826 1319 2811 +8 826 827 1319 1320 1438 2286 2810 2811 +8 826 827 1319 1320 1438 2286 2810 2811 +8 826 827 1319 1320 1438 2286 2810 2811 +8 826 827 1319 1320 1438 2286 2810 2811 +8 826 827 1319 1320 1438 2286 2810 2811 +8 826 827 1319 1320 1438 2286 2810 2811 +3 826 827 1438 +3 826 827 1438 +3 826 827 1438 +3 826 827 1438 +3 826 827 1438 +3 826 827 1438 +8 826 827 888 889 1104 1105 1438 1439 +8 826 827 888 889 1104 1105 1438 1439 +8 826 827 888 889 1104 1105 1438 1439 +8 826 827 888 889 1104 1105 1438 1439 +8 826 827 888 889 1104 1105 1438 1439 +8 826 827 888 889 1104 1105 1438 1439 +3 826 888 1104 +3 826 888 1104 +3 826 888 1104 +3 826 888 1104 +3 826 888 1104 +3 826 888 1104 +3 827 1320 2810 +3 827 1320 2810 +3 827 1320 2810 +3 827 1320 2810 +3 827 1320 2810 +3 827 1320 2810 +8 827 828 1320 1321 1444 2280 2809 2810 +8 827 828 1320 1321 1444 2280 2809 2810 +8 827 828 1320 1321 1444 2280 2809 2810 +8 827 828 1320 1321 1444 2280 2809 2810 +8 827 828 1320 1321 1444 2280 2809 2810 +8 827 828 1320 1321 1444 2280 2809 2810 +3 827 828 1444 +3 827 828 1444 +3 827 828 1444 +3 827 828 1444 +3 827 828 1444 +3 827 828 1444 +8 827 828 889 890 1105 1106 1444 1445 +8 827 828 889 890 1105 1106 1444 1445 +8 827 828 889 890 1105 1106 1444 1445 +8 827 828 889 890 1105 1106 1444 1445 +8 827 828 889 890 1105 1106 1444 1445 +8 827 828 889 890 1105 1106 1444 1445 +3 827 889 1105 +3 827 889 1105 +3 827 889 1105 +3 827 889 1105 +3 827 889 1105 +3 827 889 1105 +3 828 1321 2809 +3 828 1321 2809 +3 828 1321 2809 +3 828 1321 2809 +3 828 1321 2809 +3 828 1321 2809 +8 828 829 1321 1322 1452 2272 2808 2809 +8 828 829 1321 1322 1452 2272 2808 2809 +8 828 829 1321 1322 1452 2272 2808 2809 +8 828 829 1321 1322 1452 2272 2808 2809 +8 828 829 1321 1322 1452 2272 2808 2809 +8 828 829 1321 1322 1452 2272 2808 2809 +3 828 829 1452 +3 828 829 1452 +3 828 829 1452 +3 828 829 1452 +3 828 829 1452 +3 828 829 1452 +8 828 829 890 891 1106 1107 1452 1453 +8 828 829 890 891 1106 1107 1452 1453 +8 828 829 890 891 1106 1107 1452 1453 +8 828 829 890 891 1106 1107 1452 1453 +8 828 829 890 891 1106 1107 1452 1453 +8 828 829 890 891 1106 1107 1452 1453 +3 828 890 1106 +3 828 890 1106 +3 828 890 1106 +3 828 890 1106 +3 828 890 1106 +3 828 890 1106 +3 829 1322 2808 +3 829 1322 2808 +3 829 1322 2808 +3 829 1322 2808 +3 829 1322 2808 +3 829 1322 2808 +8 829 830 1322 1323 1458 2266 2807 2808 +8 829 830 1322 1323 1458 2266 2807 2808 +8 829 830 1322 1323 1458 2266 2807 2808 +8 829 830 1322 1323 1458 2266 2807 2808 +8 829 830 1322 1323 1458 2266 2807 2808 +8 829 830 1322 1323 1458 2266 2807 2808 +3 829 830 1458 +3 829 830 1458 +3 829 830 1458 +3 829 830 1458 +3 829 830 1458 +3 829 830 1458 +8 829 830 891 892 1107 1108 1458 1459 +8 829 830 891 892 1107 1108 1458 1459 +8 829 830 891 892 1107 1108 1458 1459 +8 829 830 891 892 1107 1108 1458 1459 +8 829 830 891 892 1107 1108 1458 1459 +8 829 830 891 892 1107 1108 1458 1459 +3 829 891 1107 +3 829 891 1107 +3 829 891 1107 +3 829 891 1107 +3 829 891 1107 +3 829 891 1107 +3 830 1323 2807 +3 830 1323 2807 +3 830 1323 2807 +3 830 1323 2807 +3 830 1323 2807 +3 830 1323 2807 +8 830 831 1323 1324 1466 2258 2806 2807 +8 830 831 1323 1324 1466 2258 2806 2807 +8 830 831 1323 1324 1466 2258 2806 2807 +8 830 831 1323 1324 1466 2258 2806 2807 +8 830 831 1323 1324 1466 2258 2806 2807 +8 830 831 1323 1324 1466 2258 2806 2807 +3 830 831 1466 +3 830 831 1466 +3 830 831 1466 +3 830 831 1466 +3 830 831 1466 +3 830 831 1466 +8 830 831 892 893 1108 1109 1466 1467 +8 830 831 892 893 1108 1109 1466 1467 +8 830 831 892 893 1108 1109 1466 1467 +8 830 831 892 893 1108 1109 1466 1467 +8 830 831 892 893 1108 1109 1466 1467 +8 830 831 892 893 1108 1109 1466 1467 +3 830 892 1108 +3 830 892 1108 +3 830 892 1108 +3 830 892 1108 +3 830 892 1108 +3 830 892 1108 +3 831 1324 2806 +3 831 1324 2806 +3 831 1324 2806 +3 831 1324 2806 +3 831 1324 2806 +3 831 1324 2806 +8 831 832 1324 1325 1474 2250 2805 2806 +8 831 832 1324 1325 1474 2250 2805 2806 +8 831 832 1324 1325 1474 2250 2805 2806 +8 831 832 1324 1325 1474 2250 2805 2806 +8 831 832 1324 1325 1474 2250 2805 2806 +8 831 832 1324 1325 1474 2250 2805 2806 +3 831 832 1474 +3 831 832 1474 +3 831 832 1474 +3 831 832 1474 +3 831 832 1474 +3 831 832 1474 +8 831 832 893 894 1109 1110 1474 1475 +8 831 832 893 894 1109 1110 1474 1475 +8 831 832 893 894 1109 1110 1474 1475 +8 831 832 893 894 1109 1110 1474 1475 +8 831 832 893 894 1109 1110 1474 1475 +8 831 832 893 894 1109 1110 1474 1475 +3 831 893 1109 +3 831 893 1109 +3 831 893 1109 +3 831 893 1109 +3 831 893 1109 +3 831 893 1109 +3 832 1325 2805 +3 832 1325 2805 +3 832 1325 2805 +3 832 1325 2805 +3 832 1325 2805 +3 832 1325 2805 +8 832 833 1325 1326 1480 2244 2804 2805 +8 832 833 1325 1326 1480 2244 2804 2805 +8 832 833 1325 1326 1480 2244 2804 2805 +8 832 833 1325 1326 1480 2244 2804 2805 +8 832 833 1325 1326 1480 2244 2804 2805 +8 832 833 1325 1326 1480 2244 2804 2805 +3 832 833 1480 +3 832 833 1480 +3 832 833 1480 +3 832 833 1480 +3 832 833 1480 +3 832 833 1480 +8 832 833 894 895 1110 1111 1480 1481 +8 832 833 894 895 1110 1111 1480 1481 +8 832 833 894 895 1110 1111 1480 1481 +8 832 833 894 895 1110 1111 1480 1481 +8 832 833 894 895 1110 1111 1480 1481 +8 832 833 894 895 1110 1111 1480 1481 +3 832 894 1110 +3 832 894 1110 +3 832 894 1110 +3 832 894 1110 +3 832 894 1110 +3 832 894 1110 +3 833 1326 2804 +3 833 1326 2804 +3 833 1326 2804 +3 833 1326 2804 +3 833 1326 2804 +3 833 1326 2804 +8 833 834 1326 1327 1490 2234 2803 2804 +8 833 834 1326 1327 1490 2234 2803 2804 +8 833 834 1326 1327 1490 2234 2803 2804 +8 833 834 1326 1327 1490 2234 2803 2804 +8 833 834 1326 1327 1490 2234 2803 2804 +8 833 834 1326 1327 1490 2234 2803 2804 +3 833 834 1490 +3 833 834 1490 +3 833 834 1490 +3 833 834 1490 +3 833 834 1490 +3 833 834 1490 +8 833 834 895 896 1111 1112 1490 1491 +8 833 834 895 896 1111 1112 1490 1491 +8 833 834 895 896 1111 1112 1490 1491 +8 833 834 895 896 1111 1112 1490 1491 +8 833 834 895 896 1111 1112 1490 1491 +8 833 834 895 896 1111 1112 1490 1491 +3 833 895 1111 +3 833 895 1111 +3 833 895 1111 +3 833 895 1111 +3 833 895 1111 +3 833 895 1111 +3 834 1327 2803 +3 834 1327 2803 +3 834 1327 2803 +3 834 1327 2803 +3 834 1327 2803 +3 834 1327 2803 +8 834 835 1327 1328 1500 2224 2802 2803 +8 834 835 1327 1328 1500 2224 2802 2803 +8 834 835 1327 1328 1500 2224 2802 2803 +8 834 835 1327 1328 1500 2224 2802 2803 +8 834 835 1327 1328 1500 2224 2802 2803 +8 834 835 1327 1328 1500 2224 2802 2803 +3 834 835 1500 +3 834 835 1500 +3 834 835 1500 +3 834 835 1500 +3 834 835 1500 +3 834 835 1500 +8 834 835 896 897 1112 1113 1500 1501 +8 834 835 896 897 1112 1113 1500 1501 +8 834 835 896 897 1112 1113 1500 1501 +8 834 835 896 897 1112 1113 1500 1501 +8 834 835 896 897 1112 1113 1500 1501 +8 834 835 896 897 1112 1113 1500 1501 +3 834 896 1112 +3 834 896 1112 +3 834 896 1112 +3 834 896 1112 +3 834 896 1112 +3 834 896 1112 +3 835 1328 2802 +3 835 1328 2802 +3 835 1328 2802 +3 835 1328 2802 +3 835 1328 2802 +3 835 1328 2802 +8 835 836 1328 1329 1506 2218 2801 2802 +8 835 836 1328 1329 1506 2218 2801 2802 +8 835 836 1328 1329 1506 2218 2801 2802 +8 835 836 1328 1329 1506 2218 2801 2802 +8 835 836 1328 1329 1506 2218 2801 2802 +8 835 836 1328 1329 1506 2218 2801 2802 +3 835 836 1506 +3 835 836 1506 +3 835 836 1506 +3 835 836 1506 +3 835 836 1506 +3 835 836 1506 +8 835 836 897 898 1113 1114 1506 1507 +8 835 836 897 898 1113 1114 1506 1507 +8 835 836 897 898 1113 1114 1506 1507 +8 835 836 897 898 1113 1114 1506 1507 +8 835 836 897 898 1113 1114 1506 1507 +8 835 836 897 898 1113 1114 1506 1507 +3 835 897 1113 +3 835 897 1113 +3 835 897 1113 +3 835 897 1113 +3 835 897 1113 +3 835 897 1113 +3 836 1329 2801 +3 836 1329 2801 +3 836 1329 2801 +3 836 1329 2801 +3 836 1329 2801 +3 836 1329 2801 +8 836 837 1329 1330 1514 2210 2800 2801 +8 836 837 1329 1330 1514 2210 2800 2801 +8 836 837 1329 1330 1514 2210 2800 2801 +8 836 837 1329 1330 1514 2210 2800 2801 +8 836 837 1329 1330 1514 2210 2800 2801 +8 836 837 1329 1330 1514 2210 2800 2801 +3 836 837 1514 +3 836 837 1514 +3 836 837 1514 +3 836 837 1514 +3 836 837 1514 +3 836 837 1514 +8 836 837 898 899 1114 1115 1514 1515 +8 836 837 898 899 1114 1115 1514 1515 +8 836 837 898 899 1114 1115 1514 1515 +8 836 837 898 899 1114 1115 1514 1515 +8 836 837 898 899 1114 1115 1514 1515 +8 836 837 898 899 1114 1115 1514 1515 +3 836 898 1114 +3 836 898 1114 +3 836 898 1114 +3 836 898 1114 +3 836 898 1114 +3 836 898 1114 +3 837 1330 2800 +3 837 1330 2800 +3 837 1330 2800 +3 837 1330 2800 +3 837 1330 2800 +3 837 1330 2800 +8 837 838 1330 1331 1522 2202 2799 2800 +8 837 838 1330 1331 1522 2202 2799 2800 +8 837 838 1330 1331 1522 2202 2799 2800 +8 837 838 1330 1331 1522 2202 2799 2800 +8 837 838 1330 1331 1522 2202 2799 2800 +8 837 838 1330 1331 1522 2202 2799 2800 +3 837 838 1522 +3 837 838 1522 +3 837 838 1522 +3 837 838 1522 +3 837 838 1522 +3 837 838 1522 +8 837 838 899 900 1115 1116 1522 1523 +8 837 838 899 900 1115 1116 1522 1523 +8 837 838 899 900 1115 1116 1522 1523 +8 837 838 899 900 1115 1116 1522 1523 +8 837 838 899 900 1115 1116 1522 1523 +8 837 838 899 900 1115 1116 1522 1523 +3 837 899 1115 +3 837 899 1115 +3 837 899 1115 +3 837 899 1115 +3 837 899 1115 +3 837 899 1115 +3 838 1331 2799 +3 838 1331 2799 +3 838 1331 2799 +3 838 1331 2799 +3 838 1331 2799 +3 838 1331 2799 +8 838 839 1331 1332 1528 2196 2798 2799 +8 838 839 1331 1332 1528 2196 2798 2799 +8 838 839 1331 1332 1528 2196 2798 2799 +8 838 839 1331 1332 1528 2196 2798 2799 +8 838 839 1331 1332 1528 2196 2798 2799 +8 838 839 1331 1332 1528 2196 2798 2799 +3 838 839 1528 +3 838 839 1528 +3 838 839 1528 +3 838 839 1528 +3 838 839 1528 +3 838 839 1528 +8 838 839 900 901 1116 1117 1528 1529 +8 838 839 900 901 1116 1117 1528 1529 +8 838 839 900 901 1116 1117 1528 1529 +8 838 839 900 901 1116 1117 1528 1529 +8 838 839 900 901 1116 1117 1528 1529 +8 838 839 900 901 1116 1117 1528 1529 +3 838 900 1116 +3 838 900 1116 +3 838 900 1116 +3 838 900 1116 +3 838 900 1116 +3 838 900 1116 +3 839 1332 2798 +3 839 1332 2798 +3 839 1332 2798 +3 839 1332 2798 +3 839 1332 2798 +3 839 1332 2798 +8 839 840 1332 1333 1538 2186 2797 2798 +8 839 840 1332 1333 1538 2186 2797 2798 +8 839 840 1332 1333 1538 2186 2797 2798 +8 839 840 1332 1333 1538 2186 2797 2798 +8 839 840 1332 1333 1538 2186 2797 2798 +8 839 840 1332 1333 1538 2186 2797 2798 +3 839 840 1538 +3 839 840 1538 +3 839 840 1538 +3 839 840 1538 +3 839 840 1538 +3 839 840 1538 +8 839 840 901 902 1117 1118 1538 1539 +8 839 840 901 902 1117 1118 1538 1539 +8 839 840 901 902 1117 1118 1538 1539 +8 839 840 901 902 1117 1118 1538 1539 +8 839 840 901 902 1117 1118 1538 1539 +8 839 840 901 902 1117 1118 1538 1539 +3 839 901 1117 +3 839 901 1117 +3 839 901 1117 +3 839 901 1117 +3 839 901 1117 +3 839 901 1117 +3 840 1333 2797 +3 840 1333 2797 +3 840 1333 2797 +3 840 1333 2797 +3 840 1333 2797 +3 840 1333 2797 +8 840 841 1333 1334 1546 2178 2796 2797 +8 840 841 1333 1334 1546 2178 2796 2797 +8 840 841 1333 1334 1546 2178 2796 2797 +8 840 841 1333 1334 1546 2178 2796 2797 +8 840 841 1333 1334 1546 2178 2796 2797 +8 840 841 1333 1334 1546 2178 2796 2797 +3 840 841 1546 +3 840 841 1546 +3 840 841 1546 +3 840 841 1546 +3 840 841 1546 +3 840 841 1546 +8 840 841 902 903 1118 1119 1546 1547 +8 840 841 902 903 1118 1119 1546 1547 +8 840 841 902 903 1118 1119 1546 1547 +8 840 841 902 903 1118 1119 1546 1547 +8 840 841 902 903 1118 1119 1546 1547 +8 840 841 902 903 1118 1119 1546 1547 +3 840 902 1118 +3 840 902 1118 +3 840 902 1118 +3 840 902 1118 +3 840 902 1118 +3 840 902 1118 +3 841 1334 2796 +3 841 1334 2796 +3 841 1334 2796 +3 841 1334 2796 +3 841 1334 2796 +3 841 1334 2796 +8 841 842 1334 1335 1552 2172 2795 2796 +8 841 842 1334 1335 1552 2172 2795 2796 +8 841 842 1334 1335 1552 2172 2795 2796 +8 841 842 1334 1335 1552 2172 2795 2796 +8 841 842 1334 1335 1552 2172 2795 2796 +8 841 842 1334 1335 1552 2172 2795 2796 +3 841 842 1552 +3 841 842 1552 +3 841 842 1552 +3 841 842 1552 +3 841 842 1552 +3 841 842 1552 +8 841 842 903 904 1119 1120 1552 1553 +8 841 842 903 904 1119 1120 1552 1553 +8 841 842 903 904 1119 1120 1552 1553 +8 841 842 903 904 1119 1120 1552 1553 +8 841 842 903 904 1119 1120 1552 1553 +8 841 842 903 904 1119 1120 1552 1553 +3 841 903 1119 +3 841 903 1119 +3 841 903 1119 +3 841 903 1119 +3 841 903 1119 +3 841 903 1119 +3 842 1335 2795 +3 842 1335 2795 +3 842 1335 2795 +3 842 1335 2795 +3 842 1335 2795 +3 842 1335 2795 +8 842 843 1335 1336 1560 2164 2794 2795 +8 842 843 1335 1336 1560 2164 2794 2795 +8 842 843 1335 1336 1560 2164 2794 2795 +8 842 843 1335 1336 1560 2164 2794 2795 +8 842 843 1335 1336 1560 2164 2794 2795 +8 842 843 1335 1336 1560 2164 2794 2795 +3 842 843 1560 +3 842 843 1560 +3 842 843 1560 +3 842 843 1560 +3 842 843 1560 +3 842 843 1560 +8 842 843 904 905 1120 1121 1560 1561 +8 842 843 904 905 1120 1121 1560 1561 +8 842 843 904 905 1120 1121 1560 1561 +8 842 843 904 905 1120 1121 1560 1561 +8 842 843 904 905 1120 1121 1560 1561 +8 842 843 904 905 1120 1121 1560 1561 +3 842 904 1120 +3 842 904 1120 +3 842 904 1120 +3 842 904 1120 +3 842 904 1120 +3 842 904 1120 +3 843 1336 2794 +3 843 1336 2794 +3 843 1336 2794 +3 843 1336 2794 +3 843 1336 2794 +3 843 1336 2794 +8 843 844 1336 1337 1568 2156 2793 2794 +8 843 844 1336 1337 1568 2156 2793 2794 +8 843 844 1336 1337 1568 2156 2793 2794 +8 843 844 1336 1337 1568 2156 2793 2794 +8 843 844 1336 1337 1568 2156 2793 2794 +8 843 844 1336 1337 1568 2156 2793 2794 +3 843 844 1568 +3 843 844 1568 +3 843 844 1568 +3 843 844 1568 +3 843 844 1568 +3 843 844 1568 +8 843 844 905 906 1121 1122 1568 1569 +8 843 844 905 906 1121 1122 1568 1569 +8 843 844 905 906 1121 1122 1568 1569 +8 843 844 905 906 1121 1122 1568 1569 +8 843 844 905 906 1121 1122 1568 1569 +8 843 844 905 906 1121 1122 1568 1569 +3 843 905 1121 +3 843 905 1121 +3 843 905 1121 +3 843 905 1121 +3 843 905 1121 +3 843 905 1121 +3 844 1337 2793 +3 844 1337 2793 +3 844 1337 2793 +3 844 1337 2793 +3 844 1337 2793 +3 844 1337 2793 +8 844 845 1337 1338 1574 2150 2792 2793 +8 844 845 1337 1338 1574 2150 2792 2793 +8 844 845 1337 1338 1574 2150 2792 2793 +8 844 845 1337 1338 1574 2150 2792 2793 +8 844 845 1337 1338 1574 2150 2792 2793 +8 844 845 1337 1338 1574 2150 2792 2793 +3 844 845 1574 +3 844 845 1574 +3 844 845 1574 +3 844 845 1574 +3 844 845 1574 +3 844 845 1574 +8 844 845 906 907 1122 1123 1574 1575 +8 844 845 906 907 1122 1123 1574 1575 +8 844 845 906 907 1122 1123 1574 1575 +8 844 845 906 907 1122 1123 1574 1575 +8 844 845 906 907 1122 1123 1574 1575 +8 844 845 906 907 1122 1123 1574 1575 +3 844 906 1122 +3 844 906 1122 +3 844 906 1122 +3 844 906 1122 +3 844 906 1122 +3 844 906 1122 +3 845 1338 2792 +3 845 1338 2792 +3 845 1338 2792 +3 845 1338 2792 +3 845 1338 2792 +3 845 1338 2792 +8 845 846 1338 1339 1584 2140 2791 2792 +8 845 846 1338 1339 1584 2140 2791 2792 +8 845 846 1338 1339 1584 2140 2791 2792 +8 845 846 1338 1339 1584 2140 2791 2792 +8 845 846 1338 1339 1584 2140 2791 2792 +8 845 846 1338 1339 1584 2140 2791 2792 +3 845 846 1584 +3 845 846 1584 +3 845 846 1584 +3 845 846 1584 +3 845 846 1584 +3 845 846 1584 +8 845 846 907 908 1123 1124 1584 1585 +8 845 846 907 908 1123 1124 1584 1585 +8 845 846 907 908 1123 1124 1584 1585 +8 845 846 907 908 1123 1124 1584 1585 +8 845 846 907 908 1123 1124 1584 1585 +8 845 846 907 908 1123 1124 1584 1585 +3 845 907 1123 +3 845 907 1123 +3 845 907 1123 +3 845 907 1123 +3 845 907 1123 +3 845 907 1123 +3 846 1339 2791 +3 846 1339 2791 +3 846 1339 2791 +3 846 1339 2791 +3 846 1339 2791 +3 846 1339 2791 +8 846 847 1339 1340 1592 2132 2790 2791 +8 846 847 1339 1340 1592 2132 2790 2791 +8 846 847 1339 1340 1592 2132 2790 2791 +8 846 847 1339 1340 1592 2132 2790 2791 +8 846 847 1339 1340 1592 2132 2790 2791 +8 846 847 1339 1340 1592 2132 2790 2791 +3 846 847 1592 +3 846 847 1592 +3 846 847 1592 +3 846 847 1592 +3 846 847 1592 +3 846 847 1592 +8 846 847 908 909 1124 1125 1592 1593 +8 846 847 908 909 1124 1125 1592 1593 +8 846 847 908 909 1124 1125 1592 1593 +8 846 847 908 909 1124 1125 1592 1593 +8 846 847 908 909 1124 1125 1592 1593 +8 846 847 908 909 1124 1125 1592 1593 +3 846 908 1124 +3 846 908 1124 +3 846 908 1124 +3 846 908 1124 +3 846 908 1124 +3 846 908 1124 +3 847 1340 2790 +3 847 1340 2790 +3 847 1340 2790 +3 847 1340 2790 +3 847 1340 2790 +3 847 1340 2790 +8 847 848 1340 1341 1598 2126 2789 2790 +8 847 848 1340 1341 1598 2126 2789 2790 +8 847 848 1340 1341 1598 2126 2789 2790 +8 847 848 1340 1341 1598 2126 2789 2790 +8 847 848 1340 1341 1598 2126 2789 2790 +8 847 848 1340 1341 1598 2126 2789 2790 +3 847 848 1598 +3 847 848 1598 +3 847 848 1598 +3 847 848 1598 +3 847 848 1598 +3 847 848 1598 +8 847 848 909 910 1125 1126 1598 1599 +8 847 848 909 910 1125 1126 1598 1599 +8 847 848 909 910 1125 1126 1598 1599 +8 847 848 909 910 1125 1126 1598 1599 +8 847 848 909 910 1125 1126 1598 1599 +8 847 848 909 910 1125 1126 1598 1599 +3 847 909 1125 +3 847 909 1125 +3 847 909 1125 +3 847 909 1125 +3 847 909 1125 +3 847 909 1125 +3 848 1341 2789 +3 848 1341 2789 +3 848 1341 2789 +3 848 1341 2789 +3 848 1341 2789 +3 848 1341 2789 +8 848 849 1341 1342 1606 2118 2788 2789 +8 848 849 1341 1342 1606 2118 2788 2789 +8 848 849 1341 1342 1606 2118 2788 2789 +8 848 849 1341 1342 1606 2118 2788 2789 +8 848 849 1341 1342 1606 2118 2788 2789 +8 848 849 1341 1342 1606 2118 2788 2789 +3 848 849 1606 +3 848 849 1606 +3 848 849 1606 +3 848 849 1606 +3 848 849 1606 +3 848 849 1606 +8 848 849 910 911 1126 1127 1606 1607 +8 848 849 910 911 1126 1127 1606 1607 +8 848 849 910 911 1126 1127 1606 1607 +8 848 849 910 911 1126 1127 1606 1607 +8 848 849 910 911 1126 1127 1606 1607 +8 848 849 910 911 1126 1127 1606 1607 +3 848 910 1126 +3 848 910 1126 +3 848 910 1126 +3 848 910 1126 +3 848 910 1126 +3 848 910 1126 +3 849 1342 2788 +3 849 1342 2788 +3 849 1342 2788 +3 849 1342 2788 +3 849 1342 2788 +3 849 1342 2788 +8 849 850 1342 1343 1614 2110 2787 2788 +8 849 850 1342 1343 1614 2110 2787 2788 +8 849 850 1342 1343 1614 2110 2787 2788 +8 849 850 1342 1343 1614 2110 2787 2788 +8 849 850 1342 1343 1614 2110 2787 2788 +8 849 850 1342 1343 1614 2110 2787 2788 +3 849 850 1614 +3 849 850 1614 +3 849 850 1614 +3 849 850 1614 +3 849 850 1614 +3 849 850 1614 +8 849 850 911 912 1127 1128 1614 1615 +8 849 850 911 912 1127 1128 1614 1615 +8 849 850 911 912 1127 1128 1614 1615 +8 849 850 911 912 1127 1128 1614 1615 +8 849 850 911 912 1127 1128 1614 1615 +8 849 850 911 912 1127 1128 1614 1615 +3 849 911 1127 +3 849 911 1127 +3 849 911 1127 +3 849 911 1127 +3 849 911 1127 +3 849 911 1127 +3 850 1343 2787 +3 850 1343 2787 +3 850 1343 2787 +3 850 1343 2787 +3 850 1343 2787 +3 850 1343 2787 +8 850 851 1343 1344 1620 2104 2786 2787 +8 850 851 1343 1344 1620 2104 2786 2787 +8 850 851 1343 1344 1620 2104 2786 2787 +8 850 851 1343 1344 1620 2104 2786 2787 +8 850 851 1343 1344 1620 2104 2786 2787 +8 850 851 1343 1344 1620 2104 2786 2787 +3 850 851 1620 +3 850 851 1620 +3 850 851 1620 +3 850 851 1620 +3 850 851 1620 +3 850 851 1620 +8 850 851 912 913 1128 1129 1620 1621 +8 850 851 912 913 1128 1129 1620 1621 +8 850 851 912 913 1128 1129 1620 1621 +8 850 851 912 913 1128 1129 1620 1621 +8 850 851 912 913 1128 1129 1620 1621 +8 850 851 912 913 1128 1129 1620 1621 +3 850 912 1128 +3 850 912 1128 +3 850 912 1128 +3 850 912 1128 +3 850 912 1128 +3 850 912 1128 +3 851 1344 2786 +3 851 1344 2786 +3 851 1344 2786 +3 851 1344 2786 +3 851 1344 2786 +3 851 1344 2786 +8 851 852 1344 1345 1630 2094 2785 2786 +8 851 852 1344 1345 1630 2094 2785 2786 +8 851 852 1344 1345 1630 2094 2785 2786 +8 851 852 1344 1345 1630 2094 2785 2786 +8 851 852 1344 1345 1630 2094 2785 2786 +8 851 852 1344 1345 1630 2094 2785 2786 +3 851 852 1630 +3 851 852 1630 +3 851 852 1630 +3 851 852 1630 +3 851 852 1630 +3 851 852 1630 +8 851 852 913 914 1129 1130 1630 1631 +8 851 852 913 914 1129 1130 1630 1631 +8 851 852 913 914 1129 1130 1630 1631 +8 851 852 913 914 1129 1130 1630 1631 +8 851 852 913 914 1129 1130 1630 1631 +8 851 852 913 914 1129 1130 1630 1631 +3 851 913 1129 +3 851 913 1129 +3 851 913 1129 +3 851 913 1129 +3 851 913 1129 +3 851 913 1129 +3 852 1345 2785 +3 852 1345 2785 +3 852 1345 2785 +3 852 1345 2785 +3 852 1345 2785 +3 852 1345 2785 +8 852 853 1345 1346 1638 2086 2784 2785 +8 852 853 1345 1346 1638 2086 2784 2785 +8 852 853 1345 1346 1638 2086 2784 2785 +8 852 853 1345 1346 1638 2086 2784 2785 +8 852 853 1345 1346 1638 2086 2784 2785 +8 852 853 1345 1346 1638 2086 2784 2785 +3 852 853 1638 +3 852 853 1638 +3 852 853 1638 +3 852 853 1638 +3 852 853 1638 +3 852 853 1638 +8 852 853 914 915 1130 1131 1638 1639 +8 852 853 914 915 1130 1131 1638 1639 +8 852 853 914 915 1130 1131 1638 1639 +8 852 853 914 915 1130 1131 1638 1639 +8 852 853 914 915 1130 1131 1638 1639 +8 852 853 914 915 1130 1131 1638 1639 +3 852 914 1130 +3 852 914 1130 +3 852 914 1130 +3 852 914 1130 +3 852 914 1130 +3 852 914 1130 +3 853 1346 2784 +3 853 1346 2784 +3 853 1346 2784 +3 853 1346 2784 +3 853 1346 2784 +3 853 1346 2784 +8 853 854 1346 1347 1644 2080 2783 2784 +8 853 854 1346 1347 1644 2080 2783 2784 +8 853 854 1346 1347 1644 2080 2783 2784 +8 853 854 1346 1347 1644 2080 2783 2784 +8 853 854 1346 1347 1644 2080 2783 2784 +8 853 854 1346 1347 1644 2080 2783 2784 +3 853 854 1644 +3 853 854 1644 +3 853 854 1644 +3 853 854 1644 +3 853 854 1644 +3 853 854 1644 +8 853 854 915 916 1131 1132 1644 1645 +8 853 854 915 916 1131 1132 1644 1645 +8 853 854 915 916 1131 1132 1644 1645 +8 853 854 915 916 1131 1132 1644 1645 +8 853 854 915 916 1131 1132 1644 1645 +8 853 854 915 916 1131 1132 1644 1645 +3 853 915 1131 +3 853 915 1131 +3 853 915 1131 +3 853 915 1131 +3 853 915 1131 +3 853 915 1131 +3 854 1347 2783 +3 854 1347 2783 +3 854 1347 2783 +3 854 1347 2783 +3 854 1347 2783 +3 854 1347 2783 +8 854 855 1347 1348 1652 2072 2782 2783 +8 854 855 1347 1348 1652 2072 2782 2783 +8 854 855 1347 1348 1652 2072 2782 2783 +8 854 855 1347 1348 1652 2072 2782 2783 +8 854 855 1347 1348 1652 2072 2782 2783 +8 854 855 1347 1348 1652 2072 2782 2783 +3 854 855 1652 +3 854 855 1652 +3 854 855 1652 +3 854 855 1652 +3 854 855 1652 +3 854 855 1652 +8 854 855 916 917 1132 1133 1652 1653 +8 854 855 916 917 1132 1133 1652 1653 +8 854 855 916 917 1132 1133 1652 1653 +8 854 855 916 917 1132 1133 1652 1653 +8 854 855 916 917 1132 1133 1652 1653 +8 854 855 916 917 1132 1133 1652 1653 +3 854 916 1132 +3 854 916 1132 +3 854 916 1132 +3 854 916 1132 +3 854 916 1132 +3 854 916 1132 +3 855 1348 2782 +3 855 1348 2782 +3 855 1348 2782 +3 855 1348 2782 +3 855 1348 2782 +3 855 1348 2782 +8 855 856 1348 1349 1660 2064 2781 2782 +8 855 856 1348 1349 1660 2064 2781 2782 +8 855 856 1348 1349 1660 2064 2781 2782 +8 855 856 1348 1349 1660 2064 2781 2782 +8 855 856 1348 1349 1660 2064 2781 2782 +8 855 856 1348 1349 1660 2064 2781 2782 +3 855 856 1660 +3 855 856 1660 +3 855 856 1660 +3 855 856 1660 +3 855 856 1660 +3 855 856 1660 +8 855 856 917 918 1133 1134 1660 1661 +8 855 856 917 918 1133 1134 1660 1661 +8 855 856 917 918 1133 1134 1660 1661 +8 855 856 917 918 1133 1134 1660 1661 +8 855 856 917 918 1133 1134 1660 1661 +8 855 856 917 918 1133 1134 1660 1661 +3 855 917 1133 +3 855 917 1133 +3 855 917 1133 +3 855 917 1133 +3 855 917 1133 +3 855 917 1133 +3 856 1349 2781 +3 856 1349 2781 +3 856 1349 2781 +3 856 1349 2781 +3 856 1349 2781 +3 856 1349 2781 +8 856 857 1349 1350 1666 2058 2780 2781 +8 856 857 1349 1350 1666 2058 2780 2781 +8 856 857 1349 1350 1666 2058 2780 2781 +8 856 857 1349 1350 1666 2058 2780 2781 +8 856 857 1349 1350 1666 2058 2780 2781 +8 856 857 1349 1350 1666 2058 2780 2781 +3 856 857 1666 +3 856 857 1666 +3 856 857 1666 +3 856 857 1666 +3 856 857 1666 +3 856 857 1666 +8 856 857 918 919 1134 1135 1666 1667 +8 856 857 918 919 1134 1135 1666 1667 +8 856 857 918 919 1134 1135 1666 1667 +8 856 857 918 919 1134 1135 1666 1667 +8 856 857 918 919 1134 1135 1666 1667 +8 856 857 918 919 1134 1135 1666 1667 +3 856 918 1134 +3 856 918 1134 +3 856 918 1134 +3 856 918 1134 +3 856 918 1134 +3 856 918 1134 +3 857 1350 2780 +3 857 1350 2780 +3 857 1350 2780 +3 857 1350 2780 +3 857 1350 2780 +3 857 1350 2780 +8 857 858 1350 1351 1676 2048 2779 2780 +8 857 858 1350 1351 1676 2048 2779 2780 +8 857 858 1350 1351 1676 2048 2779 2780 +8 857 858 1350 1351 1676 2048 2779 2780 +8 857 858 1350 1351 1676 2048 2779 2780 +8 857 858 1350 1351 1676 2048 2779 2780 +3 857 858 1676 +3 857 858 1676 +3 857 858 1676 +3 857 858 1676 +3 857 858 1676 +3 857 858 1676 +8 857 858 919 920 1135 1136 1676 1677 +8 857 858 919 920 1135 1136 1676 1677 +8 857 858 919 920 1135 1136 1676 1677 +8 857 858 919 920 1135 1136 1676 1677 +8 857 858 919 920 1135 1136 1676 1677 +8 857 858 919 920 1135 1136 1676 1677 +3 857 919 1135 +3 857 919 1135 +3 857 919 1135 +3 857 919 1135 +3 857 919 1135 +3 857 919 1135 +3 858 1351 2779 +3 858 1351 2779 +3 858 1351 2779 +3 858 1351 2779 +3 858 1351 2779 +3 858 1351 2779 +8 858 859 1351 1352 1684 2040 2778 2779 +8 858 859 1351 1352 1684 2040 2778 2779 +8 858 859 1351 1352 1684 2040 2778 2779 +8 858 859 1351 1352 1684 2040 2778 2779 +8 858 859 1351 1352 1684 2040 2778 2779 +8 858 859 1351 1352 1684 2040 2778 2779 +3 858 859 1684 +3 858 859 1684 +3 858 859 1684 +3 858 859 1684 +3 858 859 1684 +3 858 859 1684 +8 858 859 920 921 1136 1137 1684 1685 +8 858 859 920 921 1136 1137 1684 1685 +8 858 859 920 921 1136 1137 1684 1685 +8 858 859 920 921 1136 1137 1684 1685 +8 858 859 920 921 1136 1137 1684 1685 +8 858 859 920 921 1136 1137 1684 1685 +3 858 920 1136 +3 858 920 1136 +3 858 920 1136 +3 858 920 1136 +3 858 920 1136 +3 858 920 1136 +3 859 1352 2778 +3 859 1352 2778 +3 859 1352 2778 +3 859 1352 2778 +3 859 1352 2778 +3 859 1352 2778 +8 859 860 1352 1353 1690 2034 2777 2778 +8 859 860 1352 1353 1690 2034 2777 2778 +8 859 860 1352 1353 1690 2034 2777 2778 +8 859 860 1352 1353 1690 2034 2777 2778 +8 859 860 1352 1353 1690 2034 2777 2778 +8 859 860 1352 1353 1690 2034 2777 2778 +3 859 860 1690 +3 859 860 1690 +3 859 860 1690 +3 859 860 1690 +3 859 860 1690 +3 859 860 1690 +8 859 860 921 922 1137 1138 1690 1691 +8 859 860 921 922 1137 1138 1690 1691 +8 859 860 921 922 1137 1138 1690 1691 +8 859 860 921 922 1137 1138 1690 1691 +8 859 860 921 922 1137 1138 1690 1691 +8 859 860 921 922 1137 1138 1690 1691 +3 859 921 1137 +3 859 921 1137 +3 859 921 1137 +3 859 921 1137 +3 859 921 1137 +3 859 921 1137 +3 860 1353 2777 +3 860 1353 2777 +3 860 1353 2777 +3 860 1353 2777 +3 860 1353 2777 +3 860 1353 2777 +8 860 861 1353 1354 1700 2024 2776 2777 +8 860 861 1353 1354 1700 2024 2776 2777 +8 860 861 1353 1354 1700 2024 2776 2777 +8 860 861 1353 1354 1700 2024 2776 2777 +8 860 861 1353 1354 1700 2024 2776 2777 +8 860 861 1353 1354 1700 2024 2776 2777 +3 860 861 1700 +3 860 861 1700 +3 860 861 1700 +3 860 861 1700 +3 860 861 1700 +3 860 861 1700 +8 860 861 922 923 1138 1139 1700 1701 +8 860 861 922 923 1138 1139 1700 1701 +8 860 861 922 923 1138 1139 1700 1701 +8 860 861 922 923 1138 1139 1700 1701 +8 860 861 922 923 1138 1139 1700 1701 +8 860 861 922 923 1138 1139 1700 1701 +3 860 922 1138 +3 860 922 1138 +3 860 922 1138 +3 860 922 1138 +3 860 922 1138 +3 860 922 1138 +3 861 1354 2776 +3 861 1354 2776 +3 861 1354 2776 +3 861 1354 2776 +3 861 1354 2776 +3 861 1354 2776 +8 861 862 1354 1355 1710 2014 2775 2776 +8 861 862 1354 1355 1710 2014 2775 2776 +8 861 862 1354 1355 1710 2014 2775 2776 +8 861 862 1354 1355 1710 2014 2775 2776 +8 861 862 1354 1355 1710 2014 2775 2776 +8 861 862 1354 1355 1710 2014 2775 2776 +3 861 862 1710 +3 861 862 1710 +3 861 862 1710 +3 861 862 1710 +3 861 862 1710 +3 861 862 1710 +8 861 862 923 924 1139 1140 1710 1711 +8 861 862 923 924 1139 1140 1710 1711 +8 861 862 923 924 1139 1140 1710 1711 +8 861 862 923 924 1139 1140 1710 1711 +8 861 862 923 924 1139 1140 1710 1711 +8 861 862 923 924 1139 1140 1710 1711 +3 861 923 1139 +3 861 923 1139 +3 861 923 1139 +3 861 923 1139 +3 861 923 1139 +3 861 923 1139 +3 862 1355 2775 +3 862 1355 2775 +3 862 1355 2775 +3 862 1355 2775 +3 862 1355 2775 +3 862 1355 2775 +3 862 924 1140 +3 862 924 1140 +3 862 924 1140 +3 862 924 1140 +3 862 924 1140 +3 862 924 1140 +4 863 1759 1965 2774 +4 863 1759 1965 2774 +4 863 1759 1965 2774 +4 863 1759 1965 2774 +4 863 1759 1965 2774 +4 863 1759 1965 2774 +2 863 2774 +2 863 2774 +2 863 2774 +2 863 2774 +2 863 2774 +2 863 2774 +2 863 2774 +2 863 2774 +2 863 2774 +2 863 2774 +2 863 2774 +2 863 2774 +1 863 +1 863 +1 863 +1 863 +1 863 +1 863 +2 863 1759 +2 863 1759 +2 863 1759 +2 863 1759 +2 863 1759 +2 863 1759 +2 864 2773 +2 864 2773 +2 864 2773 +2 864 2773 +2 864 2773 +2 864 2773 +2 864 2773 +2 864 2773 +2 864 2773 +2 864 2773 +2 864 2773 +2 864 2773 +4 864 1760 1964 2773 +4 864 1760 1964 2773 +4 864 1760 1964 2773 +4 864 1760 1964 2773 +4 864 1760 1964 2773 +4 864 1760 1964 2773 +2 864 1760 +2 864 1760 +2 864 1760 +2 864 1760 +2 864 1760 +2 864 1760 +1 864 +1 864 +1 864 +1 864 +1 864 +1 864 +4 865 1761 1963 2772 +4 865 1761 1963 2772 +4 865 1761 1963 2772 +4 865 1761 1963 2772 +4 865 1761 1963 2772 +4 865 1761 1963 2772 +2 865 2772 +2 865 2772 +2 865 2772 +2 865 2772 +2 865 2772 +2 865 2772 +4 865 1762 1962 2772 +4 865 1762 1962 2772 +4 865 1762 1962 2772 +4 865 1762 1962 2772 +4 865 1762 1962 2772 +4 865 1762 1962 2772 +2 865 1762 +2 865 1762 +2 865 1762 +2 865 1762 +2 865 1762 +2 865 1762 +2 865 1761 +2 865 1761 +2 865 1761 +2 865 1761 +2 865 1761 +2 865 1761 +4 866 1763 1961 2771 +4 866 1763 1961 2771 +4 866 1763 1961 2771 +4 866 1763 1961 2771 +4 866 1763 1961 2771 +4 866 1763 1961 2771 +2 866 2771 +2 866 2771 +2 866 2771 +2 866 2771 +2 866 2771 +2 866 2771 +4 866 1764 1960 2771 +4 866 1764 1960 2771 +4 866 1764 1960 2771 +4 866 1764 1960 2771 +4 866 1764 1960 2771 +4 866 1764 1960 2771 +2 866 1764 +2 866 1764 +2 866 1764 +2 866 1764 +2 866 1764 +2 866 1764 +2 866 1763 +2 866 1763 +2 866 1763 +2 866 1763 +2 866 1763 +2 866 1763 +4 867 1765 1959 2770 +4 867 1765 1959 2770 +4 867 1765 1959 2770 +4 867 1765 1959 2770 +4 867 1765 1959 2770 +4 867 1765 1959 2770 +2 867 2770 +2 867 2770 +2 867 2770 +2 867 2770 +2 867 2770 +2 867 2770 +4 867 1766 1958 2770 +4 867 1766 1958 2770 +4 867 1766 1958 2770 +4 867 1766 1958 2770 +4 867 1766 1958 2770 +4 867 1766 1958 2770 +2 867 1766 +2 867 1766 +2 867 1766 +2 867 1766 +2 867 1766 +2 867 1766 +2 867 1765 +2 867 1765 +2 867 1765 +2 867 1765 +2 867 1765 +2 867 1765 +4 868 1767 1957 2769 +4 868 1767 1957 2769 +4 868 1767 1957 2769 +4 868 1767 1957 2769 +4 868 1767 1957 2769 +4 868 1767 1957 2769 +2 868 2769 +2 868 2769 +2 868 2769 +2 868 2769 +2 868 2769 +2 868 2769 +4 868 1768 1956 2769 +4 868 1768 1956 2769 +4 868 1768 1956 2769 +4 868 1768 1956 2769 +4 868 1768 1956 2769 +4 868 1768 1956 2769 +2 868 1768 +2 868 1768 +2 868 1768 +2 868 1768 +2 868 1768 +2 868 1768 +2 868 1767 +2 868 1767 +2 868 1767 +2 868 1767 +2 868 1767 +2 868 1767 +4 869 1769 1955 2768 +4 869 1769 1955 2768 +4 869 1769 1955 2768 +4 869 1769 1955 2768 +4 869 1769 1955 2768 +4 869 1769 1955 2768 +2 869 2768 +2 869 2768 +2 869 2768 +2 869 2768 +2 869 2768 +2 869 2768 +4 869 1770 1954 2768 +4 869 1770 1954 2768 +4 869 1770 1954 2768 +4 869 1770 1954 2768 +4 869 1770 1954 2768 +4 869 1770 1954 2768 +2 869 1770 +2 869 1770 +2 869 1770 +2 869 1770 +2 869 1770 +2 869 1770 +2 869 1769 +2 869 1769 +2 869 1769 +2 869 1769 +2 869 1769 +2 869 1769 +4 870 1771 1953 2767 +4 870 1771 1953 2767 +4 870 1771 1953 2767 +4 870 1771 1953 2767 +4 870 1771 1953 2767 +4 870 1771 1953 2767 +2 870 2767 +2 870 2767 +2 870 2767 +2 870 2767 +2 870 2767 +2 870 2767 +4 870 1772 1952 2767 +4 870 1772 1952 2767 +4 870 1772 1952 2767 +4 870 1772 1952 2767 +4 870 1772 1952 2767 +4 870 1772 1952 2767 +2 870 1772 +2 870 1772 +2 870 1772 +2 870 1772 +2 870 1772 +2 870 1772 +2 870 1771 +2 870 1771 +2 870 1771 +2 870 1771 +2 870 1771 +2 870 1771 +4 871 1773 1951 2766 +4 871 1773 1951 2766 +4 871 1773 1951 2766 +4 871 1773 1951 2766 +4 871 1773 1951 2766 +4 871 1773 1951 2766 +2 871 2766 +2 871 2766 +2 871 2766 +2 871 2766 +2 871 2766 +2 871 2766 +4 871 1774 1950 2766 +4 871 1774 1950 2766 +4 871 1774 1950 2766 +4 871 1774 1950 2766 +4 871 1774 1950 2766 +4 871 1774 1950 2766 +2 871 1774 +2 871 1774 +2 871 1774 +2 871 1774 +2 871 1774 +2 871 1774 +2 871 1773 +2 871 1773 +2 871 1773 +2 871 1773 +2 871 1773 +2 871 1773 +4 872 1775 1949 2765 +4 872 1775 1949 2765 +4 872 1775 1949 2765 +4 872 1775 1949 2765 +4 872 1775 1949 2765 +4 872 1775 1949 2765 +2 872 2765 +2 872 2765 +2 872 2765 +2 872 2765 +2 872 2765 +2 872 2765 +4 872 1776 1948 2765 +4 872 1776 1948 2765 +4 872 1776 1948 2765 +4 872 1776 1948 2765 +4 872 1776 1948 2765 +4 872 1776 1948 2765 +2 872 1776 +2 872 1776 +2 872 1776 +2 872 1776 +2 872 1776 +2 872 1776 +2 872 1775 +2 872 1775 +2 872 1775 +2 872 1775 +2 872 1775 +2 872 1775 +4 873 1777 1947 2764 +4 873 1777 1947 2764 +4 873 1777 1947 2764 +4 873 1777 1947 2764 +4 873 1777 1947 2764 +4 873 1777 1947 2764 +2 873 2764 +2 873 2764 +2 873 2764 +2 873 2764 +2 873 2764 +2 873 2764 +4 873 1778 1946 2764 +4 873 1778 1946 2764 +4 873 1778 1946 2764 +4 873 1778 1946 2764 +4 873 1778 1946 2764 +4 873 1778 1946 2764 +2 873 1778 +2 873 1778 +2 873 1778 +2 873 1778 +2 873 1778 +2 873 1778 +2 873 1777 +2 873 1777 +2 873 1777 +2 873 1777 +2 873 1777 +2 873 1777 +4 874 1779 1945 2763 +4 874 1779 1945 2763 +4 874 1779 1945 2763 +4 874 1779 1945 2763 +4 874 1779 1945 2763 +4 874 1779 1945 2763 +2 874 2763 +2 874 2763 +2 874 2763 +2 874 2763 +2 874 2763 +2 874 2763 +4 874 1780 1944 2763 +4 874 1780 1944 2763 +4 874 1780 1944 2763 +4 874 1780 1944 2763 +4 874 1780 1944 2763 +4 874 1780 1944 2763 +2 874 1780 +2 874 1780 +2 874 1780 +2 874 1780 +2 874 1780 +2 874 1780 +2 874 1779 +2 874 1779 +2 874 1779 +2 874 1779 +2 874 1779 +2 874 1779 +4 875 1781 1943 2762 +4 875 1781 1943 2762 +4 875 1781 1943 2762 +4 875 1781 1943 2762 +4 875 1781 1943 2762 +4 875 1781 1943 2762 +2 875 2762 +2 875 2762 +2 875 2762 +2 875 2762 +2 875 2762 +2 875 2762 +4 875 1782 1942 2762 +4 875 1782 1942 2762 +4 875 1782 1942 2762 +4 875 1782 1942 2762 +4 875 1782 1942 2762 +4 875 1782 1942 2762 +2 875 1782 +2 875 1782 +2 875 1782 +2 875 1782 +2 875 1782 +2 875 1782 +2 875 1781 +2 875 1781 +2 875 1781 +2 875 1781 +2 875 1781 +2 875 1781 +4 876 877 1098 1141 +4 876 877 1098 1141 +4 876 877 1098 1141 +4 876 877 1098 1141 +4 876 877 1098 1141 +4 876 877 1098 1141 +3 876 1313 2761 +3 876 1313 2761 +3 876 1313 2761 +3 876 1313 2761 +3 876 1313 2761 +3 876 1313 2761 +3 877 882 925 +3 877 882 925 +3 877 882 925 +3 877 882 925 +3 877 882 925 +3 877 882 925 +3 878 925 968 +3 878 925 968 +3 878 925 968 +3 878 925 968 +3 878 925 968 +3 878 925 968 +3 878 1141 1184 +3 878 1141 1184 +3 878 1141 1184 +3 878 1141 1184 +3 878 1141 1184 +3 878 1141 1184 +4 879 880 1140 1183 +4 879 880 1140 1183 +4 879 880 1140 1183 +4 879 880 1140 1183 +4 879 880 1140 1183 +4 879 880 1140 1183 +3 879 1355 2758 +3 879 1355 2758 +3 879 1355 2758 +3 879 1355 2758 +3 879 1355 2758 +3 879 1355 2758 +3 880 924 967 +3 880 924 967 +3 880 924 967 +3 880 924 967 +3 880 924 967 +3 880 924 967 +3 881 967 1010 +3 881 967 1010 +3 881 967 1010 +3 881 967 1010 +3 881 967 1010 +3 881 967 1010 +3 881 1183 1226 +3 881 1183 1226 +3 881 1183 1226 +3 881 1183 1226 +3 881 1183 1226 +3 881 1183 1226 +3 882 883 1401 +3 882 883 1401 +3 882 883 1401 +3 882 883 1401 +3 882 883 1401 +3 882 883 1401 +3 883 884 1409 +3 883 884 1409 +3 883 884 1409 +3 883 884 1409 +3 883 884 1409 +3 883 884 1409 +3 884 885 1415 +3 884 885 1415 +3 884 885 1415 +3 884 885 1415 +3 884 885 1415 +3 884 885 1415 +3 885 886 1421 +3 885 886 1421 +3 885 886 1421 +3 885 886 1421 +3 885 886 1421 +3 885 886 1421 +3 886 887 1427 +3 886 887 1427 +3 886 887 1427 +3 886 887 1427 +3 886 887 1427 +3 886 887 1427 +3 887 888 1433 +3 887 888 1433 +3 887 888 1433 +3 887 888 1433 +3 887 888 1433 +3 887 888 1433 +3 888 889 1439 +3 888 889 1439 +3 888 889 1439 +3 888 889 1439 +3 888 889 1439 +3 888 889 1439 +3 889 890 1445 +3 889 890 1445 +3 889 890 1445 +3 889 890 1445 +3 889 890 1445 +3 889 890 1445 +3 890 891 1453 +3 890 891 1453 +3 890 891 1453 +3 890 891 1453 +3 890 891 1453 +3 890 891 1453 +3 891 892 1459 +3 891 892 1459 +3 891 892 1459 +3 891 892 1459 +3 891 892 1459 +3 891 892 1459 +3 892 893 1467 +3 892 893 1467 +3 892 893 1467 +3 892 893 1467 +3 892 893 1467 +3 892 893 1467 +3 893 894 1475 +3 893 894 1475 +3 893 894 1475 +3 893 894 1475 +3 893 894 1475 +3 893 894 1475 +3 894 895 1481 +3 894 895 1481 +3 894 895 1481 +3 894 895 1481 +3 894 895 1481 +3 894 895 1481 +3 895 896 1491 +3 895 896 1491 +3 895 896 1491 +3 895 896 1491 +3 895 896 1491 +3 895 896 1491 +3 896 897 1501 +3 896 897 1501 +3 896 897 1501 +3 896 897 1501 +3 896 897 1501 +3 896 897 1501 +3 897 898 1507 +3 897 898 1507 +3 897 898 1507 +3 897 898 1507 +3 897 898 1507 +3 897 898 1507 +3 898 899 1515 +3 898 899 1515 +3 898 899 1515 +3 898 899 1515 +3 898 899 1515 +3 898 899 1515 +3 899 900 1523 +3 899 900 1523 +3 899 900 1523 +3 899 900 1523 +3 899 900 1523 +3 899 900 1523 +3 900 901 1529 +3 900 901 1529 +3 900 901 1529 +3 900 901 1529 +3 900 901 1529 +3 900 901 1529 +3 901 902 1539 +3 901 902 1539 +3 901 902 1539 +3 901 902 1539 +3 901 902 1539 +3 901 902 1539 +3 902 903 1547 +3 902 903 1547 +3 902 903 1547 +3 902 903 1547 +3 902 903 1547 +3 902 903 1547 +3 903 904 1553 +3 903 904 1553 +3 903 904 1553 +3 903 904 1553 +3 903 904 1553 +3 903 904 1553 +3 904 905 1561 +3 904 905 1561 +3 904 905 1561 +3 904 905 1561 +3 904 905 1561 +3 904 905 1561 +3 905 906 1569 +3 905 906 1569 +3 905 906 1569 +3 905 906 1569 +3 905 906 1569 +3 905 906 1569 +3 906 907 1575 +3 906 907 1575 +3 906 907 1575 +3 906 907 1575 +3 906 907 1575 +3 906 907 1575 +3 907 908 1585 +3 907 908 1585 +3 907 908 1585 +3 907 908 1585 +3 907 908 1585 +3 907 908 1585 +3 908 909 1593 +3 908 909 1593 +3 908 909 1593 +3 908 909 1593 +3 908 909 1593 +3 908 909 1593 +3 909 910 1599 +3 909 910 1599 +3 909 910 1599 +3 909 910 1599 +3 909 910 1599 +3 909 910 1599 +3 910 911 1607 +3 910 911 1607 +3 910 911 1607 +3 910 911 1607 +3 910 911 1607 +3 910 911 1607 +3 911 912 1615 +3 911 912 1615 +3 911 912 1615 +3 911 912 1615 +3 911 912 1615 +3 911 912 1615 +3 912 913 1621 +3 912 913 1621 +3 912 913 1621 +3 912 913 1621 +3 912 913 1621 +3 912 913 1621 +3 913 914 1631 +3 913 914 1631 +3 913 914 1631 +3 913 914 1631 +3 913 914 1631 +3 913 914 1631 +3 914 915 1639 +3 914 915 1639 +3 914 915 1639 +3 914 915 1639 +3 914 915 1639 +3 914 915 1639 +3 915 916 1645 +3 915 916 1645 +3 915 916 1645 +3 915 916 1645 +3 915 916 1645 +3 915 916 1645 +3 916 917 1653 +3 916 917 1653 +3 916 917 1653 +3 916 917 1653 +3 916 917 1653 +3 916 917 1653 +3 917 918 1661 +3 917 918 1661 +3 917 918 1661 +3 917 918 1661 +3 917 918 1661 +3 917 918 1661 +3 918 919 1667 +3 918 919 1667 +3 918 919 1667 +3 918 919 1667 +3 918 919 1667 +3 918 919 1667 +3 919 920 1677 +3 919 920 1677 +3 919 920 1677 +3 919 920 1677 +3 919 920 1677 +3 919 920 1677 +3 920 921 1685 +3 920 921 1685 +3 920 921 1685 +3 920 921 1685 +3 920 921 1685 +3 920 921 1685 +3 921 922 1691 +3 921 922 1691 +3 921 922 1691 +3 921 922 1691 +3 921 922 1691 +3 921 922 1691 +3 922 923 1701 +3 922 923 1701 +3 922 923 1701 +3 922 923 1701 +3 922 923 1701 +3 922 923 1701 +3 923 924 1711 +3 923 924 1711 +3 923 924 1711 +3 923 924 1711 +3 923 924 1711 +3 923 924 1711 +3 925 926 1403 +3 925 926 1403 +3 925 926 1403 +3 925 926 1403 +3 925 926 1403 +3 925 926 1403 +3 926 927 1410 +3 926 927 1410 +3 926 927 1410 +3 926 927 1410 +3 926 927 1410 +3 926 927 1410 +3 927 928 1416 +3 927 928 1416 +3 927 928 1416 +3 927 928 1416 +3 927 928 1416 +3 927 928 1416 +3 928 929 1422 +3 928 929 1422 +3 928 929 1422 +3 928 929 1422 +3 928 929 1422 +3 928 929 1422 +3 929 930 1428 +3 929 930 1428 +3 929 930 1428 +3 929 930 1428 +3 929 930 1428 +3 929 930 1428 +3 930 931 1434 +3 930 931 1434 +3 930 931 1434 +3 930 931 1434 +3 930 931 1434 +3 930 931 1434 +3 931 932 1440 +3 931 932 1440 +3 931 932 1440 +3 931 932 1440 +3 931 932 1440 +3 931 932 1440 +3 932 933 1447 +3 932 933 1447 +3 932 933 1447 +3 932 933 1447 +3 932 933 1447 +3 932 933 1447 +3 933 934 1454 +3 933 934 1454 +3 933 934 1454 +3 933 934 1454 +3 933 934 1454 +3 933 934 1454 +3 934 935 1461 +3 934 935 1461 +3 934 935 1461 +3 934 935 1461 +3 934 935 1461 +3 934 935 1461 +3 935 936 1469 +3 935 936 1469 +3 935 936 1469 +3 935 936 1469 +3 935 936 1469 +3 935 936 1469 +3 936 937 1476 +3 936 937 1476 +3 936 937 1476 +3 936 937 1476 +3 936 937 1476 +3 936 937 1476 +3 937 938 1483 +3 937 938 1483 +3 937 938 1483 +3 937 938 1483 +3 937 938 1483 +3 937 938 1483 +3 938 939 1493 +3 938 939 1493 +3 938 939 1493 +3 938 939 1493 +3 938 939 1493 +3 938 939 1493 +3 939 940 1502 +3 939 940 1502 +3 939 940 1502 +3 939 940 1502 +3 939 940 1502 +3 939 940 1502 +3 940 941 1509 +3 940 941 1509 +3 940 941 1509 +3 940 941 1509 +3 940 941 1509 +3 940 941 1509 +3 941 942 1517 +3 941 942 1517 +3 941 942 1517 +3 941 942 1517 +3 941 942 1517 +3 941 942 1517 +3 942 943 1524 +3 942 943 1524 +3 942 943 1524 +3 942 943 1524 +3 942 943 1524 +3 942 943 1524 +3 943 944 1531 +3 943 944 1531 +3 943 944 1531 +3 943 944 1531 +3 943 944 1531 +3 943 944 1531 +3 944 945 1541 +3 944 945 1541 +3 944 945 1541 +3 944 945 1541 +3 944 945 1541 +3 944 945 1541 +3 945 946 1548 +3 945 946 1548 +3 945 946 1548 +3 945 946 1548 +3 945 946 1548 +3 945 946 1548 +3 946 947 1555 +3 946 947 1555 +3 946 947 1555 +3 946 947 1555 +3 946 947 1555 +3 946 947 1555 +3 947 948 1563 +3 947 948 1563 +3 947 948 1563 +3 947 948 1563 +3 947 948 1563 +3 947 948 1563 +3 948 949 1570 +3 948 949 1570 +3 948 949 1570 +3 948 949 1570 +3 948 949 1570 +3 948 949 1570 +3 949 950 1577 +3 949 950 1577 +3 949 950 1577 +3 949 950 1577 +3 949 950 1577 +3 949 950 1577 +3 950 951 1587 +3 950 951 1587 +3 950 951 1587 +3 950 951 1587 +3 950 951 1587 +3 950 951 1587 +3 951 952 1594 +3 951 952 1594 +3 951 952 1594 +3 951 952 1594 +3 951 952 1594 +3 951 952 1594 +3 952 953 1601 +3 952 953 1601 +3 952 953 1601 +3 952 953 1601 +3 952 953 1601 +3 952 953 1601 +3 953 954 1609 +3 953 954 1609 +3 953 954 1609 +3 953 954 1609 +3 953 954 1609 +3 953 954 1609 +3 954 955 1616 +3 954 955 1616 +3 954 955 1616 +3 954 955 1616 +3 954 955 1616 +3 954 955 1616 +3 955 956 1623 +3 955 956 1623 +3 955 956 1623 +3 955 956 1623 +3 955 956 1623 +3 955 956 1623 +3 956 957 1633 +3 956 957 1633 +3 956 957 1633 +3 956 957 1633 +3 956 957 1633 +3 956 957 1633 +3 957 958 1640 +3 957 958 1640 +3 957 958 1640 +3 957 958 1640 +3 957 958 1640 +3 957 958 1640 +3 958 959 1647 +3 958 959 1647 +3 958 959 1647 +3 958 959 1647 +3 958 959 1647 +3 958 959 1647 +3 959 960 1655 +3 959 960 1655 +3 959 960 1655 +3 959 960 1655 +3 959 960 1655 +3 959 960 1655 +3 960 961 1662 +3 960 961 1662 +3 960 961 1662 +3 960 961 1662 +3 960 961 1662 +3 960 961 1662 +3 961 962 1669 +3 961 962 1669 +3 961 962 1669 +3 961 962 1669 +3 961 962 1669 +3 961 962 1669 +3 962 963 1679 +3 962 963 1679 +3 962 963 1679 +3 962 963 1679 +3 962 963 1679 +3 962 963 1679 +3 963 964 1686 +3 963 964 1686 +3 963 964 1686 +3 963 964 1686 +3 963 964 1686 +3 963 964 1686 +3 964 965 1693 +3 964 965 1693 +3 964 965 1693 +3 964 965 1693 +3 964 965 1693 +3 964 965 1693 +3 965 966 1703 +3 965 966 1703 +3 965 966 1703 +3 965 966 1703 +3 965 966 1703 +3 965 966 1703 +3 966 967 1712 +3 966 967 1712 +3 966 967 1712 +3 966 967 1712 +3 966 967 1712 +3 966 967 1712 +3 968 969 1404 +3 968 969 1404 +3 968 969 1404 +3 968 969 1404 +3 968 969 1404 +3 968 969 1404 +3 969 970 1411 +3 969 970 1411 +3 969 970 1411 +3 969 970 1411 +3 969 970 1411 +3 969 970 1411 +3 970 971 1417 +3 970 971 1417 +3 970 971 1417 +3 970 971 1417 +3 970 971 1417 +3 970 971 1417 +3 971 972 1423 +3 971 972 1423 +3 971 972 1423 +3 971 972 1423 +3 971 972 1423 +3 971 972 1423 +3 972 973 1429 +3 972 973 1429 +3 972 973 1429 +3 972 973 1429 +3 972 973 1429 +3 972 973 1429 +3 973 974 1435 +3 973 974 1435 +3 973 974 1435 +3 973 974 1435 +3 973 974 1435 +3 973 974 1435 +3 974 975 1441 +3 974 975 1441 +3 974 975 1441 +3 974 975 1441 +3 974 975 1441 +3 974 975 1441 +3 975 976 1448 +3 975 976 1448 +3 975 976 1448 +3 975 976 1448 +3 975 976 1448 +3 975 976 1448 +3 976 977 1455 +3 976 977 1455 +3 976 977 1455 +3 976 977 1455 +3 976 977 1455 +3 976 977 1455 +3 977 978 1462 +3 977 978 1462 +3 977 978 1462 +3 977 978 1462 +3 977 978 1462 +3 977 978 1462 +3 978 979 1470 +3 978 979 1470 +3 978 979 1470 +3 978 979 1470 +3 978 979 1470 +3 978 979 1470 +3 979 980 1477 +3 979 980 1477 +3 979 980 1477 +3 979 980 1477 +3 979 980 1477 +3 979 980 1477 +3 980 981 1485 +3 980 981 1485 +3 980 981 1485 +3 980 981 1485 +3 980 981 1485 +3 980 981 1485 +3 981 982 1495 +3 981 982 1495 +3 981 982 1495 +3 981 982 1495 +3 981 982 1495 +3 981 982 1495 +3 982 983 1503 +3 982 983 1503 +3 982 983 1503 +3 982 983 1503 +3 982 983 1503 +3 982 983 1503 +3 983 984 1510 +3 983 984 1510 +3 983 984 1510 +3 983 984 1510 +3 983 984 1510 +3 983 984 1510 +3 984 985 1518 +3 984 985 1518 +3 984 985 1518 +3 984 985 1518 +3 984 985 1518 +3 984 985 1518 +3 985 986 1525 +3 985 986 1525 +3 985 986 1525 +3 985 986 1525 +3 985 986 1525 +3 985 986 1525 +3 986 987 1533 +3 986 987 1533 +3 986 987 1533 +3 986 987 1533 +3 986 987 1533 +3 986 987 1533 +3 987 988 1542 +3 987 988 1542 +3 987 988 1542 +3 987 988 1542 +3 987 988 1542 +3 987 988 1542 +3 988 989 1549 +3 988 989 1549 +3 988 989 1549 +3 988 989 1549 +3 988 989 1549 +3 988 989 1549 +3 989 990 1556 +3 989 990 1556 +3 989 990 1556 +3 989 990 1556 +3 989 990 1556 +3 989 990 1556 +3 990 991 1564 +3 990 991 1564 +3 990 991 1564 +3 990 991 1564 +3 990 991 1564 +3 990 991 1564 +3 991 992 1571 +3 991 992 1571 +3 991 992 1571 +3 991 992 1571 +3 991 992 1571 +3 991 992 1571 +3 992 993 1579 +3 992 993 1579 +3 992 993 1579 +3 992 993 1579 +3 992 993 1579 +3 992 993 1579 +3 993 994 1588 +3 993 994 1588 +3 993 994 1588 +3 993 994 1588 +3 993 994 1588 +3 993 994 1588 +3 994 995 1595 +3 994 995 1595 +3 994 995 1595 +3 994 995 1595 +3 994 995 1595 +3 994 995 1595 +3 995 996 1602 +3 995 996 1602 +3 995 996 1602 +3 995 996 1602 +3 995 996 1602 +3 995 996 1602 +3 996 997 1610 +3 996 997 1610 +3 996 997 1610 +3 996 997 1610 +3 996 997 1610 +3 996 997 1610 +3 997 998 1617 +3 997 998 1617 +3 997 998 1617 +3 997 998 1617 +3 997 998 1617 +3 997 998 1617 +3 998 999 1625 +3 998 999 1625 +3 998 999 1625 +3 998 999 1625 +3 998 999 1625 +3 998 999 1625 +3 999 1000 1634 +3 999 1000 1634 +3 999 1000 1634 +3 999 1000 1634 +3 999 1000 1634 +3 999 1000 1634 +3 1000 1001 1641 +3 1000 1001 1641 +3 1000 1001 1641 +3 1000 1001 1641 +3 1000 1001 1641 +3 1000 1001 1641 +3 1001 1002 1648 +3 1001 1002 1648 +3 1001 1002 1648 +3 1001 1002 1648 +3 1001 1002 1648 +3 1001 1002 1648 +3 1002 1003 1656 +3 1002 1003 1656 +3 1002 1003 1656 +3 1002 1003 1656 +3 1002 1003 1656 +3 1002 1003 1656 +3 1003 1004 1663 +3 1003 1004 1663 +3 1003 1004 1663 +3 1003 1004 1663 +3 1003 1004 1663 +3 1003 1004 1663 +3 1004 1005 1671 +3 1004 1005 1671 +3 1004 1005 1671 +3 1004 1005 1671 +3 1004 1005 1671 +3 1004 1005 1671 +3 1005 1006 1680 +3 1005 1006 1680 +3 1005 1006 1680 +3 1005 1006 1680 +3 1005 1006 1680 +3 1005 1006 1680 +3 1006 1007 1687 +3 1006 1007 1687 +3 1006 1007 1687 +3 1006 1007 1687 +3 1006 1007 1687 +3 1006 1007 1687 +3 1007 1008 1695 +3 1007 1008 1695 +3 1007 1008 1695 +3 1007 1008 1695 +3 1007 1008 1695 +3 1007 1008 1695 +3 1008 1009 1705 +3 1008 1009 1705 +3 1008 1009 1705 +3 1008 1009 1705 +3 1008 1009 1705 +3 1008 1009 1705 +3 1009 1010 1713 +3 1009 1010 1713 +3 1009 1010 1713 +3 1009 1010 1713 +3 1009 1010 1713 +3 1009 1010 1713 +3 1011 1012 1405 +3 1011 1012 1405 +3 1011 1012 1405 +3 1011 1012 1405 +3 1011 1012 1405 +3 1011 1012 1405 +3 1012 1013 1412 +3 1012 1013 1412 +3 1012 1013 1412 +3 1012 1013 1412 +3 1012 1013 1412 +3 1012 1013 1412 +3 1013 1014 1418 +3 1013 1014 1418 +3 1013 1014 1418 +3 1013 1014 1418 +3 1013 1014 1418 +3 1013 1014 1418 +3 1014 1015 1424 +3 1014 1015 1424 +3 1014 1015 1424 +3 1014 1015 1424 +3 1014 1015 1424 +3 1014 1015 1424 +3 1015 1016 1430 +3 1015 1016 1430 +3 1015 1016 1430 +3 1015 1016 1430 +3 1015 1016 1430 +3 1015 1016 1430 +3 1016 1017 1436 +3 1016 1017 1436 +3 1016 1017 1436 +3 1016 1017 1436 +3 1016 1017 1436 +3 1016 1017 1436 +3 1017 1018 1442 +3 1017 1018 1442 +3 1017 1018 1442 +3 1017 1018 1442 +3 1017 1018 1442 +3 1017 1018 1442 +3 1018 1019 1449 +3 1018 1019 1449 +3 1018 1019 1449 +3 1018 1019 1449 +3 1018 1019 1449 +3 1018 1019 1449 +3 1019 1020 1456 +3 1019 1020 1456 +3 1019 1020 1456 +3 1019 1020 1456 +3 1019 1020 1456 +3 1019 1020 1456 +3 1020 1021 1463 +3 1020 1021 1463 +3 1020 1021 1463 +3 1020 1021 1463 +3 1020 1021 1463 +3 1020 1021 1463 +3 1021 1022 1471 +3 1021 1022 1471 +3 1021 1022 1471 +3 1021 1022 1471 +3 1021 1022 1471 +3 1021 1022 1471 +3 1022 1023 1478 +3 1022 1023 1478 +3 1022 1023 1478 +3 1022 1023 1478 +3 1022 1023 1478 +3 1022 1023 1478 +3 1023 1024 1487 +3 1023 1024 1487 +3 1023 1024 1487 +3 1023 1024 1487 +3 1023 1024 1487 +3 1023 1024 1487 +3 1024 1025 1497 +3 1024 1025 1497 +3 1024 1025 1497 +3 1024 1025 1497 +3 1024 1025 1497 +3 1024 1025 1497 +3 1025 1026 1504 +3 1025 1026 1504 +3 1025 1026 1504 +3 1025 1026 1504 +3 1025 1026 1504 +3 1025 1026 1504 +3 1026 1027 1511 +3 1026 1027 1511 +3 1026 1027 1511 +3 1026 1027 1511 +3 1026 1027 1511 +3 1026 1027 1511 +3 1027 1028 1519 +3 1027 1028 1519 +3 1027 1028 1519 +3 1027 1028 1519 +3 1027 1028 1519 +3 1027 1028 1519 +3 1028 1029 1526 +3 1028 1029 1526 +3 1028 1029 1526 +3 1028 1029 1526 +3 1028 1029 1526 +3 1028 1029 1526 +3 1029 1030 1535 +3 1029 1030 1535 +3 1029 1030 1535 +3 1029 1030 1535 +3 1029 1030 1535 +3 1029 1030 1535 +3 1030 1031 1543 +3 1030 1031 1543 +3 1030 1031 1543 +3 1030 1031 1543 +3 1030 1031 1543 +3 1030 1031 1543 +3 1031 1032 1550 +3 1031 1032 1550 +3 1031 1032 1550 +3 1031 1032 1550 +3 1031 1032 1550 +3 1031 1032 1550 +3 1032 1033 1557 +3 1032 1033 1557 +3 1032 1033 1557 +3 1032 1033 1557 +3 1032 1033 1557 +3 1032 1033 1557 +3 1033 1034 1565 +3 1033 1034 1565 +3 1033 1034 1565 +3 1033 1034 1565 +3 1033 1034 1565 +3 1033 1034 1565 +3 1034 1035 1572 +3 1034 1035 1572 +3 1034 1035 1572 +3 1034 1035 1572 +3 1034 1035 1572 +3 1034 1035 1572 +3 1035 1036 1581 +3 1035 1036 1581 +3 1035 1036 1581 +3 1035 1036 1581 +3 1035 1036 1581 +3 1035 1036 1581 +3 1036 1037 1589 +3 1036 1037 1589 +3 1036 1037 1589 +3 1036 1037 1589 +3 1036 1037 1589 +3 1036 1037 1589 +3 1037 1038 1596 +3 1037 1038 1596 +3 1037 1038 1596 +3 1037 1038 1596 +3 1037 1038 1596 +3 1037 1038 1596 +3 1038 1039 1603 +3 1038 1039 1603 +3 1038 1039 1603 +3 1038 1039 1603 +3 1038 1039 1603 +3 1038 1039 1603 +3 1039 1040 1611 +3 1039 1040 1611 +3 1039 1040 1611 +3 1039 1040 1611 +3 1039 1040 1611 +3 1039 1040 1611 +3 1040 1041 1618 +3 1040 1041 1618 +3 1040 1041 1618 +3 1040 1041 1618 +3 1040 1041 1618 +3 1040 1041 1618 +3 1041 1042 1627 +3 1041 1042 1627 +3 1041 1042 1627 +3 1041 1042 1627 +3 1041 1042 1627 +3 1041 1042 1627 +3 1042 1043 1635 +3 1042 1043 1635 +3 1042 1043 1635 +3 1042 1043 1635 +3 1042 1043 1635 +3 1042 1043 1635 +3 1043 1044 1642 +3 1043 1044 1642 +3 1043 1044 1642 +3 1043 1044 1642 +3 1043 1044 1642 +3 1043 1044 1642 +3 1044 1045 1649 +3 1044 1045 1649 +3 1044 1045 1649 +3 1044 1045 1649 +3 1044 1045 1649 +3 1044 1045 1649 +3 1045 1046 1657 +3 1045 1046 1657 +3 1045 1046 1657 +3 1045 1046 1657 +3 1045 1046 1657 +3 1045 1046 1657 +3 1046 1047 1664 +3 1046 1047 1664 +3 1046 1047 1664 +3 1046 1047 1664 +3 1046 1047 1664 +3 1046 1047 1664 +3 1047 1048 1673 +3 1047 1048 1673 +3 1047 1048 1673 +3 1047 1048 1673 +3 1047 1048 1673 +3 1047 1048 1673 +3 1048 1049 1681 +3 1048 1049 1681 +3 1048 1049 1681 +3 1048 1049 1681 +3 1048 1049 1681 +3 1048 1049 1681 +3 1049 1050 1688 +3 1049 1050 1688 +3 1049 1050 1688 +3 1049 1050 1688 +3 1049 1050 1688 +3 1049 1050 1688 +3 1050 1051 1697 +3 1050 1051 1697 +3 1050 1051 1697 +3 1050 1051 1697 +3 1050 1051 1697 +3 1050 1051 1697 +3 1051 1052 1707 +3 1051 1052 1707 +3 1051 1052 1707 +3 1051 1052 1707 +3 1051 1052 1707 +3 1051 1052 1707 +3 1052 1053 1714 +3 1052 1053 1714 +3 1052 1053 1714 +3 1052 1053 1714 +3 1052 1053 1714 +3 1052 1053 1714 +3 1054 1055 1407 +3 1054 1055 1407 +3 1054 1055 1407 +3 1054 1055 1407 +3 1054 1055 1407 +3 1054 1055 1407 +3 1055 1056 1413 +3 1055 1056 1413 +3 1055 1056 1413 +3 1055 1056 1413 +3 1055 1056 1413 +3 1055 1056 1413 +3 1056 1057 1419 +3 1056 1057 1419 +3 1056 1057 1419 +3 1056 1057 1419 +3 1056 1057 1419 +3 1056 1057 1419 +3 1057 1058 1425 +3 1057 1058 1425 +3 1057 1058 1425 +3 1057 1058 1425 +3 1057 1058 1425 +3 1057 1058 1425 +3 1058 1059 1431 +3 1058 1059 1431 +3 1058 1059 1431 +3 1058 1059 1431 +3 1058 1059 1431 +3 1058 1059 1431 +3 1059 1060 1437 +3 1059 1060 1437 +3 1059 1060 1437 +3 1059 1060 1437 +3 1059 1060 1437 +3 1059 1060 1437 +3 1060 1061 1443 +3 1060 1061 1443 +3 1060 1061 1443 +3 1060 1061 1443 +3 1060 1061 1443 +3 1060 1061 1443 +3 1061 1062 1451 +3 1061 1062 1451 +3 1061 1062 1451 +3 1061 1062 1451 +3 1061 1062 1451 +3 1061 1062 1451 +3 1062 1063 1457 +3 1062 1063 1457 +3 1062 1063 1457 +3 1062 1063 1457 +3 1062 1063 1457 +3 1062 1063 1457 +3 1063 1064 1465 +3 1063 1064 1465 +3 1063 1064 1465 +3 1063 1064 1465 +3 1063 1064 1465 +3 1063 1064 1465 +3 1064 1065 1473 +3 1064 1065 1473 +3 1064 1065 1473 +3 1064 1065 1473 +3 1064 1065 1473 +3 1064 1065 1473 +3 1065 1066 1479 +3 1065 1066 1479 +3 1065 1066 1479 +3 1065 1066 1479 +3 1065 1066 1479 +3 1065 1066 1479 +3 1066 1067 1489 +3 1066 1067 1489 +3 1066 1067 1489 +3 1066 1067 1489 +3 1066 1067 1489 +3 1066 1067 1489 +3 1067 1068 1499 +3 1067 1068 1499 +3 1067 1068 1499 +3 1067 1068 1499 +3 1067 1068 1499 +3 1067 1068 1499 +3 1068 1069 1505 +3 1068 1069 1505 +3 1068 1069 1505 +3 1068 1069 1505 +3 1068 1069 1505 +3 1068 1069 1505 +3 1069 1070 1513 +3 1069 1070 1513 +3 1069 1070 1513 +3 1069 1070 1513 +3 1069 1070 1513 +3 1069 1070 1513 +3 1070 1071 1521 +3 1070 1071 1521 +3 1070 1071 1521 +3 1070 1071 1521 +3 1070 1071 1521 +3 1070 1071 1521 +3 1071 1072 1527 +3 1071 1072 1527 +3 1071 1072 1527 +3 1071 1072 1527 +3 1071 1072 1527 +3 1071 1072 1527 +3 1072 1073 1537 +3 1072 1073 1537 +3 1072 1073 1537 +3 1072 1073 1537 +3 1072 1073 1537 +3 1072 1073 1537 +3 1073 1074 1545 +3 1073 1074 1545 +3 1073 1074 1545 +3 1073 1074 1545 +3 1073 1074 1545 +3 1073 1074 1545 +3 1074 1075 1551 +3 1074 1075 1551 +3 1074 1075 1551 +3 1074 1075 1551 +3 1074 1075 1551 +3 1074 1075 1551 +3 1075 1076 1559 +3 1075 1076 1559 +3 1075 1076 1559 +3 1075 1076 1559 +3 1075 1076 1559 +3 1075 1076 1559 +3 1076 1077 1567 +3 1076 1077 1567 +3 1076 1077 1567 +3 1076 1077 1567 +3 1076 1077 1567 +3 1076 1077 1567 +3 1077 1078 1573 +3 1077 1078 1573 +3 1077 1078 1573 +3 1077 1078 1573 +3 1077 1078 1573 +3 1077 1078 1573 +3 1078 1079 1583 +3 1078 1079 1583 +3 1078 1079 1583 +3 1078 1079 1583 +3 1078 1079 1583 +3 1078 1079 1583 +3 1079 1080 1591 +3 1079 1080 1591 +3 1079 1080 1591 +3 1079 1080 1591 +3 1079 1080 1591 +3 1079 1080 1591 +3 1080 1081 1597 +3 1080 1081 1597 +3 1080 1081 1597 +3 1080 1081 1597 +3 1080 1081 1597 +3 1080 1081 1597 +3 1081 1082 1605 +3 1081 1082 1605 +3 1081 1082 1605 +3 1081 1082 1605 +3 1081 1082 1605 +3 1081 1082 1605 +3 1082 1083 1613 +3 1082 1083 1613 +3 1082 1083 1613 +3 1082 1083 1613 +3 1082 1083 1613 +3 1082 1083 1613 +3 1083 1084 1619 +3 1083 1084 1619 +3 1083 1084 1619 +3 1083 1084 1619 +3 1083 1084 1619 +3 1083 1084 1619 +3 1084 1085 1629 +3 1084 1085 1629 +3 1084 1085 1629 +3 1084 1085 1629 +3 1084 1085 1629 +3 1084 1085 1629 +3 1085 1086 1637 +3 1085 1086 1637 +3 1085 1086 1637 +3 1085 1086 1637 +3 1085 1086 1637 +3 1085 1086 1637 +3 1086 1087 1643 +3 1086 1087 1643 +3 1086 1087 1643 +3 1086 1087 1643 +3 1086 1087 1643 +3 1086 1087 1643 +3 1087 1088 1651 +3 1087 1088 1651 +3 1087 1088 1651 +3 1087 1088 1651 +3 1087 1088 1651 +3 1087 1088 1651 +3 1088 1089 1659 +3 1088 1089 1659 +3 1088 1089 1659 +3 1088 1089 1659 +3 1088 1089 1659 +3 1088 1089 1659 +3 1089 1090 1665 +3 1089 1090 1665 +3 1089 1090 1665 +3 1089 1090 1665 +3 1089 1090 1665 +3 1089 1090 1665 +3 1090 1091 1675 +3 1090 1091 1675 +3 1090 1091 1675 +3 1090 1091 1675 +3 1090 1091 1675 +3 1090 1091 1675 +3 1091 1092 1683 +3 1091 1092 1683 +3 1091 1092 1683 +3 1091 1092 1683 +3 1091 1092 1683 +3 1091 1092 1683 +3 1092 1093 1689 +3 1092 1093 1689 +3 1092 1093 1689 +3 1092 1093 1689 +3 1092 1093 1689 +3 1092 1093 1689 +3 1093 1094 1699 +3 1093 1094 1699 +3 1093 1094 1699 +3 1093 1094 1699 +3 1093 1094 1699 +3 1093 1094 1699 +3 1094 1095 1709 +3 1094 1095 1709 +3 1094 1095 1709 +3 1094 1095 1709 +3 1094 1095 1709 +3 1094 1095 1709 +3 1095 1096 1715 +3 1095 1096 1715 +3 1095 1096 1715 +3 1095 1096 1715 +3 1095 1096 1715 +3 1095 1096 1715 +1 1097 +1 1097 +1 1097 +1 1097 +1 1097 +1 1097 +4 1098 1099 1400 1401 +4 1098 1099 1400 1401 +4 1098 1099 1400 1401 +4 1098 1099 1400 1401 +4 1098 1099 1400 1401 +4 1098 1099 1400 1401 +4 1099 1100 1408 1409 +4 1099 1100 1408 1409 +4 1099 1100 1408 1409 +4 1099 1100 1408 1409 +4 1099 1100 1408 1409 +4 1099 1100 1408 1409 +4 1100 1101 1414 1415 +4 1100 1101 1414 1415 +4 1100 1101 1414 1415 +4 1100 1101 1414 1415 +4 1100 1101 1414 1415 +4 1100 1101 1414 1415 +4 1101 1102 1420 1421 +4 1101 1102 1420 1421 +4 1101 1102 1420 1421 +4 1101 1102 1420 1421 +4 1101 1102 1420 1421 +4 1101 1102 1420 1421 +4 1102 1103 1426 1427 +4 1102 1103 1426 1427 +4 1102 1103 1426 1427 +4 1102 1103 1426 1427 +4 1102 1103 1426 1427 +4 1102 1103 1426 1427 +4 1103 1104 1432 1433 +4 1103 1104 1432 1433 +4 1103 1104 1432 1433 +4 1103 1104 1432 1433 +4 1103 1104 1432 1433 +4 1103 1104 1432 1433 +4 1104 1105 1438 1439 +4 1104 1105 1438 1439 +4 1104 1105 1438 1439 +4 1104 1105 1438 1439 +4 1104 1105 1438 1439 +4 1104 1105 1438 1439 +4 1105 1106 1444 1445 +4 1105 1106 1444 1445 +4 1105 1106 1444 1445 +4 1105 1106 1444 1445 +4 1105 1106 1444 1445 +4 1105 1106 1444 1445 +4 1106 1107 1452 1453 +4 1106 1107 1452 1453 +4 1106 1107 1452 1453 +4 1106 1107 1452 1453 +4 1106 1107 1452 1453 +4 1106 1107 1452 1453 +4 1107 1108 1458 1459 +4 1107 1108 1458 1459 +4 1107 1108 1458 1459 +4 1107 1108 1458 1459 +4 1107 1108 1458 1459 +4 1107 1108 1458 1459 +4 1108 1109 1466 1467 +4 1108 1109 1466 1467 +4 1108 1109 1466 1467 +4 1108 1109 1466 1467 +4 1108 1109 1466 1467 +4 1108 1109 1466 1467 +4 1109 1110 1474 1475 +4 1109 1110 1474 1475 +4 1109 1110 1474 1475 +4 1109 1110 1474 1475 +4 1109 1110 1474 1475 +4 1109 1110 1474 1475 +4 1110 1111 1480 1481 +4 1110 1111 1480 1481 +4 1110 1111 1480 1481 +4 1110 1111 1480 1481 +4 1110 1111 1480 1481 +4 1110 1111 1480 1481 +4 1111 1112 1490 1491 +4 1111 1112 1490 1491 +4 1111 1112 1490 1491 +4 1111 1112 1490 1491 +4 1111 1112 1490 1491 +4 1111 1112 1490 1491 +4 1112 1113 1500 1501 +4 1112 1113 1500 1501 +4 1112 1113 1500 1501 +4 1112 1113 1500 1501 +4 1112 1113 1500 1501 +4 1112 1113 1500 1501 +4 1113 1114 1506 1507 +4 1113 1114 1506 1507 +4 1113 1114 1506 1507 +4 1113 1114 1506 1507 +4 1113 1114 1506 1507 +4 1113 1114 1506 1507 +4 1114 1115 1514 1515 +4 1114 1115 1514 1515 +4 1114 1115 1514 1515 +4 1114 1115 1514 1515 +4 1114 1115 1514 1515 +4 1114 1115 1514 1515 +4 1115 1116 1522 1523 +4 1115 1116 1522 1523 +4 1115 1116 1522 1523 +4 1115 1116 1522 1523 +4 1115 1116 1522 1523 +4 1115 1116 1522 1523 +4 1116 1117 1528 1529 +4 1116 1117 1528 1529 +4 1116 1117 1528 1529 +4 1116 1117 1528 1529 +4 1116 1117 1528 1529 +4 1116 1117 1528 1529 +4 1117 1118 1538 1539 +4 1117 1118 1538 1539 +4 1117 1118 1538 1539 +4 1117 1118 1538 1539 +4 1117 1118 1538 1539 +4 1117 1118 1538 1539 +4 1118 1119 1546 1547 +4 1118 1119 1546 1547 +4 1118 1119 1546 1547 +4 1118 1119 1546 1547 +4 1118 1119 1546 1547 +4 1118 1119 1546 1547 +4 1119 1120 1552 1553 +4 1119 1120 1552 1553 +4 1119 1120 1552 1553 +4 1119 1120 1552 1553 +4 1119 1120 1552 1553 +4 1119 1120 1552 1553 +4 1120 1121 1560 1561 +4 1120 1121 1560 1561 +4 1120 1121 1560 1561 +4 1120 1121 1560 1561 +4 1120 1121 1560 1561 +4 1120 1121 1560 1561 +4 1121 1122 1568 1569 +4 1121 1122 1568 1569 +4 1121 1122 1568 1569 +4 1121 1122 1568 1569 +4 1121 1122 1568 1569 +4 1121 1122 1568 1569 +4 1122 1123 1574 1575 +4 1122 1123 1574 1575 +4 1122 1123 1574 1575 +4 1122 1123 1574 1575 +4 1122 1123 1574 1575 +4 1122 1123 1574 1575 +4 1123 1124 1584 1585 +4 1123 1124 1584 1585 +4 1123 1124 1584 1585 +4 1123 1124 1584 1585 +4 1123 1124 1584 1585 +4 1123 1124 1584 1585 +4 1124 1125 1592 1593 +4 1124 1125 1592 1593 +4 1124 1125 1592 1593 +4 1124 1125 1592 1593 +4 1124 1125 1592 1593 +4 1124 1125 1592 1593 +4 1125 1126 1598 1599 +4 1125 1126 1598 1599 +4 1125 1126 1598 1599 +4 1125 1126 1598 1599 +4 1125 1126 1598 1599 +4 1125 1126 1598 1599 +4 1126 1127 1606 1607 +4 1126 1127 1606 1607 +4 1126 1127 1606 1607 +4 1126 1127 1606 1607 +4 1126 1127 1606 1607 +4 1126 1127 1606 1607 +4 1127 1128 1614 1615 +4 1127 1128 1614 1615 +4 1127 1128 1614 1615 +4 1127 1128 1614 1615 +4 1127 1128 1614 1615 +4 1127 1128 1614 1615 +4 1128 1129 1620 1621 +4 1128 1129 1620 1621 +4 1128 1129 1620 1621 +4 1128 1129 1620 1621 +4 1128 1129 1620 1621 +4 1128 1129 1620 1621 +4 1129 1130 1630 1631 +4 1129 1130 1630 1631 +4 1129 1130 1630 1631 +4 1129 1130 1630 1631 +4 1129 1130 1630 1631 +4 1129 1130 1630 1631 +4 1130 1131 1638 1639 +4 1130 1131 1638 1639 +4 1130 1131 1638 1639 +4 1130 1131 1638 1639 +4 1130 1131 1638 1639 +4 1130 1131 1638 1639 +4 1131 1132 1644 1645 +4 1131 1132 1644 1645 +4 1131 1132 1644 1645 +4 1131 1132 1644 1645 +4 1131 1132 1644 1645 +4 1131 1132 1644 1645 +4 1132 1133 1652 1653 +4 1132 1133 1652 1653 +4 1132 1133 1652 1653 +4 1132 1133 1652 1653 +4 1132 1133 1652 1653 +4 1132 1133 1652 1653 +4 1133 1134 1660 1661 +4 1133 1134 1660 1661 +4 1133 1134 1660 1661 +4 1133 1134 1660 1661 +4 1133 1134 1660 1661 +4 1133 1134 1660 1661 +4 1134 1135 1666 1667 +4 1134 1135 1666 1667 +4 1134 1135 1666 1667 +4 1134 1135 1666 1667 +4 1134 1135 1666 1667 +4 1134 1135 1666 1667 +4 1135 1136 1676 1677 +4 1135 1136 1676 1677 +4 1135 1136 1676 1677 +4 1135 1136 1676 1677 +4 1135 1136 1676 1677 +4 1135 1136 1676 1677 +4 1136 1137 1684 1685 +4 1136 1137 1684 1685 +4 1136 1137 1684 1685 +4 1136 1137 1684 1685 +4 1136 1137 1684 1685 +4 1136 1137 1684 1685 +4 1137 1138 1690 1691 +4 1137 1138 1690 1691 +4 1137 1138 1690 1691 +4 1137 1138 1690 1691 +4 1137 1138 1690 1691 +4 1137 1138 1690 1691 +4 1138 1139 1700 1701 +4 1138 1139 1700 1701 +4 1138 1139 1700 1701 +4 1138 1139 1700 1701 +4 1138 1139 1700 1701 +4 1138 1139 1700 1701 +4 1139 1140 1710 1711 +4 1139 1140 1710 1711 +4 1139 1140 1710 1711 +4 1139 1140 1710 1711 +4 1139 1140 1710 1711 +4 1139 1140 1710 1711 +4 1141 1142 1402 1403 +4 1141 1142 1402 1403 +4 1141 1142 1402 1403 +4 1141 1142 1402 1403 +4 1141 1142 1402 1403 +4 1141 1142 1402 1403 +3 1142 1143 1410 +3 1142 1143 1410 +3 1142 1143 1410 +3 1142 1143 1410 +3 1142 1143 1410 +3 1142 1143 1410 +3 1143 1144 1416 +3 1143 1144 1416 +3 1143 1144 1416 +3 1143 1144 1416 +3 1143 1144 1416 +3 1143 1144 1416 +3 1144 1145 1422 +3 1144 1145 1422 +3 1144 1145 1422 +3 1144 1145 1422 +3 1144 1145 1422 +3 1144 1145 1422 +3 1145 1146 1428 +3 1145 1146 1428 +3 1145 1146 1428 +3 1145 1146 1428 +3 1145 1146 1428 +3 1145 1146 1428 +3 1146 1147 1434 +3 1146 1147 1434 +3 1146 1147 1434 +3 1146 1147 1434 +3 1146 1147 1434 +3 1146 1147 1434 +3 1147 1148 1440 +3 1147 1148 1440 +3 1147 1148 1440 +3 1147 1148 1440 +3 1147 1148 1440 +3 1147 1148 1440 +4 1148 1149 1446 1447 +4 1148 1149 1446 1447 +4 1148 1149 1446 1447 +4 1148 1149 1446 1447 +4 1148 1149 1446 1447 +4 1148 1149 1446 1447 +3 1149 1150 1454 +3 1149 1150 1454 +3 1149 1150 1454 +3 1149 1150 1454 +3 1149 1150 1454 +3 1149 1150 1454 +4 1150 1151 1460 1461 +4 1150 1151 1460 1461 +4 1150 1151 1460 1461 +4 1150 1151 1460 1461 +4 1150 1151 1460 1461 +4 1150 1151 1460 1461 +4 1151 1152 1468 1469 +4 1151 1152 1468 1469 +4 1151 1152 1468 1469 +4 1151 1152 1468 1469 +4 1151 1152 1468 1469 +4 1151 1152 1468 1469 +3 1152 1153 1476 +3 1152 1153 1476 +3 1152 1153 1476 +3 1152 1153 1476 +3 1152 1153 1476 +3 1152 1153 1476 +4 1153 1154 1482 1483 +4 1153 1154 1482 1483 +4 1153 1154 1482 1483 +4 1153 1154 1482 1483 +4 1153 1154 1482 1483 +4 1153 1154 1482 1483 +4 1154 1155 1492 1493 +4 1154 1155 1492 1493 +4 1154 1155 1492 1493 +4 1154 1155 1492 1493 +4 1154 1155 1492 1493 +4 1154 1155 1492 1493 +3 1155 1156 1502 +3 1155 1156 1502 +3 1155 1156 1502 +3 1155 1156 1502 +3 1155 1156 1502 +3 1155 1156 1502 +4 1156 1157 1508 1509 +4 1156 1157 1508 1509 +4 1156 1157 1508 1509 +4 1156 1157 1508 1509 +4 1156 1157 1508 1509 +4 1156 1157 1508 1509 +4 1157 1158 1516 1517 +4 1157 1158 1516 1517 +4 1157 1158 1516 1517 +4 1157 1158 1516 1517 +4 1157 1158 1516 1517 +4 1157 1158 1516 1517 +3 1158 1159 1524 +3 1158 1159 1524 +3 1158 1159 1524 +3 1158 1159 1524 +3 1158 1159 1524 +3 1158 1159 1524 +4 1159 1160 1530 1531 +4 1159 1160 1530 1531 +4 1159 1160 1530 1531 +4 1159 1160 1530 1531 +4 1159 1160 1530 1531 +4 1159 1160 1530 1531 +4 1160 1161 1540 1541 +4 1160 1161 1540 1541 +4 1160 1161 1540 1541 +4 1160 1161 1540 1541 +4 1160 1161 1540 1541 +4 1160 1161 1540 1541 +3 1161 1162 1548 +3 1161 1162 1548 +3 1161 1162 1548 +3 1161 1162 1548 +3 1161 1162 1548 +3 1161 1162 1548 +4 1162 1163 1554 1555 +4 1162 1163 1554 1555 +4 1162 1163 1554 1555 +4 1162 1163 1554 1555 +4 1162 1163 1554 1555 +4 1162 1163 1554 1555 +4 1163 1164 1562 1563 +4 1163 1164 1562 1563 +4 1163 1164 1562 1563 +4 1163 1164 1562 1563 +4 1163 1164 1562 1563 +4 1163 1164 1562 1563 +3 1164 1165 1570 +3 1164 1165 1570 +3 1164 1165 1570 +3 1164 1165 1570 +3 1164 1165 1570 +3 1164 1165 1570 +4 1165 1166 1576 1577 +4 1165 1166 1576 1577 +4 1165 1166 1576 1577 +4 1165 1166 1576 1577 +4 1165 1166 1576 1577 +4 1165 1166 1576 1577 +4 1166 1167 1586 1587 +4 1166 1167 1586 1587 +4 1166 1167 1586 1587 +4 1166 1167 1586 1587 +4 1166 1167 1586 1587 +4 1166 1167 1586 1587 +3 1167 1168 1594 +3 1167 1168 1594 +3 1167 1168 1594 +3 1167 1168 1594 +3 1167 1168 1594 +3 1167 1168 1594 +4 1168 1169 1600 1601 +4 1168 1169 1600 1601 +4 1168 1169 1600 1601 +4 1168 1169 1600 1601 +4 1168 1169 1600 1601 +4 1168 1169 1600 1601 +4 1169 1170 1608 1609 +4 1169 1170 1608 1609 +4 1169 1170 1608 1609 +4 1169 1170 1608 1609 +4 1169 1170 1608 1609 +4 1169 1170 1608 1609 +3 1170 1171 1616 +3 1170 1171 1616 +3 1170 1171 1616 +3 1170 1171 1616 +3 1170 1171 1616 +3 1170 1171 1616 +4 1171 1172 1622 1623 +4 1171 1172 1622 1623 +4 1171 1172 1622 1623 +4 1171 1172 1622 1623 +4 1171 1172 1622 1623 +4 1171 1172 1622 1623 +4 1172 1173 1632 1633 +4 1172 1173 1632 1633 +4 1172 1173 1632 1633 +4 1172 1173 1632 1633 +4 1172 1173 1632 1633 +4 1172 1173 1632 1633 +3 1173 1174 1640 +3 1173 1174 1640 +3 1173 1174 1640 +3 1173 1174 1640 +3 1173 1174 1640 +3 1173 1174 1640 +4 1174 1175 1646 1647 +4 1174 1175 1646 1647 +4 1174 1175 1646 1647 +4 1174 1175 1646 1647 +4 1174 1175 1646 1647 +4 1174 1175 1646 1647 +4 1175 1176 1654 1655 +4 1175 1176 1654 1655 +4 1175 1176 1654 1655 +4 1175 1176 1654 1655 +4 1175 1176 1654 1655 +4 1175 1176 1654 1655 +3 1176 1177 1662 +3 1176 1177 1662 +3 1176 1177 1662 +3 1176 1177 1662 +3 1176 1177 1662 +3 1176 1177 1662 +4 1177 1178 1668 1669 +4 1177 1178 1668 1669 +4 1177 1178 1668 1669 +4 1177 1178 1668 1669 +4 1177 1178 1668 1669 +4 1177 1178 1668 1669 +4 1178 1179 1678 1679 +4 1178 1179 1678 1679 +4 1178 1179 1678 1679 +4 1178 1179 1678 1679 +4 1178 1179 1678 1679 +4 1178 1179 1678 1679 +3 1179 1180 1686 +3 1179 1180 1686 +3 1179 1180 1686 +3 1179 1180 1686 +3 1179 1180 1686 +3 1179 1180 1686 +4 1180 1181 1692 1693 +4 1180 1181 1692 1693 +4 1180 1181 1692 1693 +4 1180 1181 1692 1693 +4 1180 1181 1692 1693 +4 1180 1181 1692 1693 +4 1181 1182 1702 1703 +4 1181 1182 1702 1703 +4 1181 1182 1702 1703 +4 1181 1182 1702 1703 +4 1181 1182 1702 1703 +4 1181 1182 1702 1703 +3 1182 1183 1712 +3 1182 1183 1712 +3 1182 1183 1712 +3 1182 1183 1712 +3 1182 1183 1712 +3 1182 1183 1712 +3 1184 1185 1404 +3 1184 1185 1404 +3 1184 1185 1404 +3 1184 1185 1404 +3 1184 1185 1404 +3 1184 1185 1404 +3 1185 1186 1411 +3 1185 1186 1411 +3 1185 1186 1411 +3 1185 1186 1411 +3 1185 1186 1411 +3 1185 1186 1411 +3 1186 1187 1417 +3 1186 1187 1417 +3 1186 1187 1417 +3 1186 1187 1417 +3 1186 1187 1417 +3 1186 1187 1417 +3 1187 1188 1423 +3 1187 1188 1423 +3 1187 1188 1423 +3 1187 1188 1423 +3 1187 1188 1423 +3 1187 1188 1423 +3 1188 1189 1429 +3 1188 1189 1429 +3 1188 1189 1429 +3 1188 1189 1429 +3 1188 1189 1429 +3 1188 1189 1429 +3 1189 1190 1435 +3 1189 1190 1435 +3 1189 1190 1435 +3 1189 1190 1435 +3 1189 1190 1435 +3 1189 1190 1435 +3 1190 1191 1441 +3 1190 1191 1441 +3 1190 1191 1441 +3 1190 1191 1441 +3 1190 1191 1441 +3 1190 1191 1441 +3 1191 1192 1448 +3 1191 1192 1448 +3 1191 1192 1448 +3 1191 1192 1448 +3 1191 1192 1448 +3 1191 1192 1448 +3 1192 1193 1455 +3 1192 1193 1455 +3 1192 1193 1455 +3 1192 1193 1455 +3 1192 1193 1455 +3 1192 1193 1455 +3 1193 1194 1462 +3 1193 1194 1462 +3 1193 1194 1462 +3 1193 1194 1462 +3 1193 1194 1462 +3 1193 1194 1462 +3 1194 1195 1470 +3 1194 1195 1470 +3 1194 1195 1470 +3 1194 1195 1470 +3 1194 1195 1470 +3 1194 1195 1470 +3 1195 1196 1477 +3 1195 1196 1477 +3 1195 1196 1477 +3 1195 1196 1477 +3 1195 1196 1477 +3 1195 1196 1477 +4 1196 1197 1484 1485 +4 1196 1197 1484 1485 +4 1196 1197 1484 1485 +4 1196 1197 1484 1485 +4 1196 1197 1484 1485 +4 1196 1197 1484 1485 +4 1197 1198 1494 1495 +4 1197 1198 1494 1495 +4 1197 1198 1494 1495 +4 1197 1198 1494 1495 +4 1197 1198 1494 1495 +4 1197 1198 1494 1495 +3 1198 1199 1503 +3 1198 1199 1503 +3 1198 1199 1503 +3 1198 1199 1503 +3 1198 1199 1503 +3 1198 1199 1503 +3 1199 1200 1510 +3 1199 1200 1510 +3 1199 1200 1510 +3 1199 1200 1510 +3 1199 1200 1510 +3 1199 1200 1510 +3 1200 1201 1518 +3 1200 1201 1518 +3 1200 1201 1518 +3 1200 1201 1518 +3 1200 1201 1518 +3 1200 1201 1518 +3 1201 1202 1525 +3 1201 1202 1525 +3 1201 1202 1525 +3 1201 1202 1525 +3 1201 1202 1525 +3 1201 1202 1525 +4 1202 1203 1532 1533 +4 1202 1203 1532 1533 +4 1202 1203 1532 1533 +4 1202 1203 1532 1533 +4 1202 1203 1532 1533 +4 1202 1203 1532 1533 +3 1203 1204 1542 +3 1203 1204 1542 +3 1203 1204 1542 +3 1203 1204 1542 +3 1203 1204 1542 +3 1203 1204 1542 +3 1204 1205 1549 +3 1204 1205 1549 +3 1204 1205 1549 +3 1204 1205 1549 +3 1204 1205 1549 +3 1204 1205 1549 +3 1205 1206 1556 +3 1205 1206 1556 +3 1205 1206 1556 +3 1205 1206 1556 +3 1205 1206 1556 +3 1205 1206 1556 +3 1206 1207 1564 +3 1206 1207 1564 +3 1206 1207 1564 +3 1206 1207 1564 +3 1206 1207 1564 +3 1206 1207 1564 +3 1207 1208 1571 +3 1207 1208 1571 +3 1207 1208 1571 +3 1207 1208 1571 +3 1207 1208 1571 +3 1207 1208 1571 +4 1208 1209 1578 1579 +4 1208 1209 1578 1579 +4 1208 1209 1578 1579 +4 1208 1209 1578 1579 +4 1208 1209 1578 1579 +4 1208 1209 1578 1579 +3 1209 1210 1588 +3 1209 1210 1588 +3 1209 1210 1588 +3 1209 1210 1588 +3 1209 1210 1588 +3 1209 1210 1588 +3 1210 1211 1595 +3 1210 1211 1595 +3 1210 1211 1595 +3 1210 1211 1595 +3 1210 1211 1595 +3 1210 1211 1595 +3 1211 1212 1602 +3 1211 1212 1602 +3 1211 1212 1602 +3 1211 1212 1602 +3 1211 1212 1602 +3 1211 1212 1602 +3 1212 1213 1610 +3 1212 1213 1610 +3 1212 1213 1610 +3 1212 1213 1610 +3 1212 1213 1610 +3 1212 1213 1610 +3 1213 1214 1617 +3 1213 1214 1617 +3 1213 1214 1617 +3 1213 1214 1617 +3 1213 1214 1617 +3 1213 1214 1617 +4 1214 1215 1624 1625 +4 1214 1215 1624 1625 +4 1214 1215 1624 1625 +4 1214 1215 1624 1625 +4 1214 1215 1624 1625 +4 1214 1215 1624 1625 +3 1215 1216 1634 +3 1215 1216 1634 +3 1215 1216 1634 +3 1215 1216 1634 +3 1215 1216 1634 +3 1215 1216 1634 +3 1216 1217 1641 +3 1216 1217 1641 +3 1216 1217 1641 +3 1216 1217 1641 +3 1216 1217 1641 +3 1216 1217 1641 +3 1217 1218 1648 +3 1217 1218 1648 +3 1217 1218 1648 +3 1217 1218 1648 +3 1217 1218 1648 +3 1217 1218 1648 +3 1218 1219 1656 +3 1218 1219 1656 +3 1218 1219 1656 +3 1218 1219 1656 +3 1218 1219 1656 +3 1218 1219 1656 +3 1219 1220 1663 +3 1219 1220 1663 +3 1219 1220 1663 +3 1219 1220 1663 +3 1219 1220 1663 +3 1219 1220 1663 +4 1220 1221 1670 1671 +4 1220 1221 1670 1671 +4 1220 1221 1670 1671 +4 1220 1221 1670 1671 +4 1220 1221 1670 1671 +4 1220 1221 1670 1671 +3 1221 1222 1680 +3 1221 1222 1680 +3 1221 1222 1680 +3 1221 1222 1680 +3 1221 1222 1680 +3 1221 1222 1680 +3 1222 1223 1687 +3 1222 1223 1687 +3 1222 1223 1687 +3 1222 1223 1687 +3 1222 1223 1687 +3 1222 1223 1687 +4 1223 1224 1694 1695 +4 1223 1224 1694 1695 +4 1223 1224 1694 1695 +4 1223 1224 1694 1695 +4 1223 1224 1694 1695 +4 1223 1224 1694 1695 +4 1224 1225 1704 1705 +4 1224 1225 1704 1705 +4 1224 1225 1704 1705 +4 1224 1225 1704 1705 +4 1224 1225 1704 1705 +4 1224 1225 1704 1705 +3 1225 1226 1713 +3 1225 1226 1713 +3 1225 1226 1713 +3 1225 1226 1713 +3 1225 1226 1713 +3 1225 1226 1713 +3 1227 1228 1405 +3 1227 1228 1405 +3 1227 1228 1405 +3 1227 1228 1405 +3 1227 1228 1405 +3 1227 1228 1405 +3 1228 1229 1412 +3 1228 1229 1412 +3 1228 1229 1412 +3 1228 1229 1412 +3 1228 1229 1412 +3 1228 1229 1412 +3 1229 1230 1418 +3 1229 1230 1418 +3 1229 1230 1418 +3 1229 1230 1418 +3 1229 1230 1418 +3 1229 1230 1418 +3 1230 1231 1424 +3 1230 1231 1424 +3 1230 1231 1424 +3 1230 1231 1424 +3 1230 1231 1424 +3 1230 1231 1424 +3 1231 1232 1430 +3 1231 1232 1430 +3 1231 1232 1430 +3 1231 1232 1430 +3 1231 1232 1430 +3 1231 1232 1430 +3 1232 1233 1436 +3 1232 1233 1436 +3 1232 1233 1436 +3 1232 1233 1436 +3 1232 1233 1436 +3 1232 1233 1436 +3 1233 1234 1442 +3 1233 1234 1442 +3 1233 1234 1442 +3 1233 1234 1442 +3 1233 1234 1442 +3 1233 1234 1442 +3 1234 1235 1449 +3 1234 1235 1449 +3 1234 1235 1449 +3 1234 1235 1449 +3 1234 1235 1449 +3 1234 1235 1449 +3 1235 1236 1456 +3 1235 1236 1456 +3 1235 1236 1456 +3 1235 1236 1456 +3 1235 1236 1456 +3 1235 1236 1456 +3 1236 1237 1463 +3 1236 1237 1463 +3 1236 1237 1463 +3 1236 1237 1463 +3 1236 1237 1463 +3 1236 1237 1463 +3 1237 1238 1471 +3 1237 1238 1471 +3 1237 1238 1471 +3 1237 1238 1471 +3 1237 1238 1471 +3 1237 1238 1471 +3 1238 1239 1478 +3 1238 1239 1478 +3 1238 1239 1478 +3 1238 1239 1478 +3 1238 1239 1478 +3 1238 1239 1478 +4 1239 1240 1486 1487 +4 1239 1240 1486 1487 +4 1239 1240 1486 1487 +4 1239 1240 1486 1487 +4 1239 1240 1486 1487 +4 1239 1240 1486 1487 +4 1240 1241 1496 1497 +4 1240 1241 1496 1497 +4 1240 1241 1496 1497 +4 1240 1241 1496 1497 +4 1240 1241 1496 1497 +4 1240 1241 1496 1497 +3 1241 1242 1504 +3 1241 1242 1504 +3 1241 1242 1504 +3 1241 1242 1504 +3 1241 1242 1504 +3 1241 1242 1504 +3 1242 1243 1511 +3 1242 1243 1511 +3 1242 1243 1511 +3 1242 1243 1511 +3 1242 1243 1511 +3 1242 1243 1511 +3 1243 1244 1519 +3 1243 1244 1519 +3 1243 1244 1519 +3 1243 1244 1519 +3 1243 1244 1519 +3 1243 1244 1519 +3 1244 1245 1526 +3 1244 1245 1526 +3 1244 1245 1526 +3 1244 1245 1526 +3 1244 1245 1526 +3 1244 1245 1526 +4 1245 1246 1534 1535 +4 1245 1246 1534 1535 +4 1245 1246 1534 1535 +4 1245 1246 1534 1535 +4 1245 1246 1534 1535 +4 1245 1246 1534 1535 +3 1246 1247 1543 +3 1246 1247 1543 +3 1246 1247 1543 +3 1246 1247 1543 +3 1246 1247 1543 +3 1246 1247 1543 +3 1247 1248 1550 +3 1247 1248 1550 +3 1247 1248 1550 +3 1247 1248 1550 +3 1247 1248 1550 +3 1247 1248 1550 +3 1248 1249 1557 +3 1248 1249 1557 +3 1248 1249 1557 +3 1248 1249 1557 +3 1248 1249 1557 +3 1248 1249 1557 +3 1249 1250 1565 +3 1249 1250 1565 +3 1249 1250 1565 +3 1249 1250 1565 +3 1249 1250 1565 +3 1249 1250 1565 +3 1250 1251 1572 +3 1250 1251 1572 +3 1250 1251 1572 +3 1250 1251 1572 +3 1250 1251 1572 +3 1250 1251 1572 +4 1251 1252 1580 1581 +4 1251 1252 1580 1581 +4 1251 1252 1580 1581 +4 1251 1252 1580 1581 +4 1251 1252 1580 1581 +4 1251 1252 1580 1581 +3 1252 1253 1589 +3 1252 1253 1589 +3 1252 1253 1589 +3 1252 1253 1589 +3 1252 1253 1589 +3 1252 1253 1589 +3 1253 1254 1596 +3 1253 1254 1596 +3 1253 1254 1596 +3 1253 1254 1596 +3 1253 1254 1596 +3 1253 1254 1596 +3 1254 1255 1603 +3 1254 1255 1603 +3 1254 1255 1603 +3 1254 1255 1603 +3 1254 1255 1603 +3 1254 1255 1603 +3 1255 1256 1611 +3 1255 1256 1611 +3 1255 1256 1611 +3 1255 1256 1611 +3 1255 1256 1611 +3 1255 1256 1611 +3 1256 1257 1618 +3 1256 1257 1618 +3 1256 1257 1618 +3 1256 1257 1618 +3 1256 1257 1618 +3 1256 1257 1618 +4 1257 1258 1626 1627 +4 1257 1258 1626 1627 +4 1257 1258 1626 1627 +4 1257 1258 1626 1627 +4 1257 1258 1626 1627 +4 1257 1258 1626 1627 +3 1258 1259 1635 +3 1258 1259 1635 +3 1258 1259 1635 +3 1258 1259 1635 +3 1258 1259 1635 +3 1258 1259 1635 +3 1259 1260 1642 +3 1259 1260 1642 +3 1259 1260 1642 +3 1259 1260 1642 +3 1259 1260 1642 +3 1259 1260 1642 +3 1260 1261 1649 +3 1260 1261 1649 +3 1260 1261 1649 +3 1260 1261 1649 +3 1260 1261 1649 +3 1260 1261 1649 +3 1261 1262 1657 +3 1261 1262 1657 +3 1261 1262 1657 +3 1261 1262 1657 +3 1261 1262 1657 +3 1261 1262 1657 +3 1262 1263 1664 +3 1262 1263 1664 +3 1262 1263 1664 +3 1262 1263 1664 +3 1262 1263 1664 +3 1262 1263 1664 +4 1263 1264 1672 1673 +4 1263 1264 1672 1673 +4 1263 1264 1672 1673 +4 1263 1264 1672 1673 +4 1263 1264 1672 1673 +4 1263 1264 1672 1673 +3 1264 1265 1681 +3 1264 1265 1681 +3 1264 1265 1681 +3 1264 1265 1681 +3 1264 1265 1681 +3 1264 1265 1681 +3 1265 1266 1688 +3 1265 1266 1688 +3 1265 1266 1688 +3 1265 1266 1688 +3 1265 1266 1688 +3 1265 1266 1688 +4 1266 1267 1696 1697 +4 1266 1267 1696 1697 +4 1266 1267 1696 1697 +4 1266 1267 1696 1697 +4 1266 1267 1696 1697 +4 1266 1267 1696 1697 +4 1267 1268 1706 1707 +4 1267 1268 1706 1707 +4 1267 1268 1706 1707 +4 1267 1268 1706 1707 +4 1267 1268 1706 1707 +4 1267 1268 1706 1707 +3 1268 1269 1714 +3 1268 1269 1714 +3 1268 1269 1714 +3 1268 1269 1714 +3 1268 1269 1714 +3 1268 1269 1714 +4 1270 1271 1406 1407 +4 1270 1271 1406 1407 +4 1270 1271 1406 1407 +4 1270 1271 1406 1407 +4 1270 1271 1406 1407 +4 1270 1271 1406 1407 +3 1271 1272 1413 +3 1271 1272 1413 +3 1271 1272 1413 +3 1271 1272 1413 +3 1271 1272 1413 +3 1271 1272 1413 +3 1272 1273 1419 +3 1272 1273 1419 +3 1272 1273 1419 +3 1272 1273 1419 +3 1272 1273 1419 +3 1272 1273 1419 +3 1273 1274 1425 +3 1273 1274 1425 +3 1273 1274 1425 +3 1273 1274 1425 +3 1273 1274 1425 +3 1273 1274 1425 +3 1274 1275 1431 +3 1274 1275 1431 +3 1274 1275 1431 +3 1274 1275 1431 +3 1274 1275 1431 +3 1274 1275 1431 +3 1275 1276 1437 +3 1275 1276 1437 +3 1275 1276 1437 +3 1275 1276 1437 +3 1275 1276 1437 +3 1275 1276 1437 +3 1276 1277 1443 +3 1276 1277 1443 +3 1276 1277 1443 +3 1276 1277 1443 +3 1276 1277 1443 +3 1276 1277 1443 +4 1277 1278 1450 1451 +4 1277 1278 1450 1451 +4 1277 1278 1450 1451 +4 1277 1278 1450 1451 +4 1277 1278 1450 1451 +4 1277 1278 1450 1451 +3 1278 1279 1457 +3 1278 1279 1457 +3 1278 1279 1457 +3 1278 1279 1457 +3 1278 1279 1457 +3 1278 1279 1457 +4 1279 1280 1464 1465 +4 1279 1280 1464 1465 +4 1279 1280 1464 1465 +4 1279 1280 1464 1465 +4 1279 1280 1464 1465 +4 1279 1280 1464 1465 +4 1280 1281 1472 1473 +4 1280 1281 1472 1473 +4 1280 1281 1472 1473 +4 1280 1281 1472 1473 +4 1280 1281 1472 1473 +4 1280 1281 1472 1473 +3 1281 1282 1479 +3 1281 1282 1479 +3 1281 1282 1479 +3 1281 1282 1479 +3 1281 1282 1479 +3 1281 1282 1479 +4 1282 1283 1488 1489 +4 1282 1283 1488 1489 +4 1282 1283 1488 1489 +4 1282 1283 1488 1489 +4 1282 1283 1488 1489 +4 1282 1283 1488 1489 +4 1283 1284 1498 1499 +4 1283 1284 1498 1499 +4 1283 1284 1498 1499 +4 1283 1284 1498 1499 +4 1283 1284 1498 1499 +4 1283 1284 1498 1499 +3 1284 1285 1505 +3 1284 1285 1505 +3 1284 1285 1505 +3 1284 1285 1505 +3 1284 1285 1505 +3 1284 1285 1505 +4 1285 1286 1512 1513 +4 1285 1286 1512 1513 +4 1285 1286 1512 1513 +4 1285 1286 1512 1513 +4 1285 1286 1512 1513 +4 1285 1286 1512 1513 +4 1286 1287 1520 1521 +4 1286 1287 1520 1521 +4 1286 1287 1520 1521 +4 1286 1287 1520 1521 +4 1286 1287 1520 1521 +4 1286 1287 1520 1521 +3 1287 1288 1527 +3 1287 1288 1527 +3 1287 1288 1527 +3 1287 1288 1527 +3 1287 1288 1527 +3 1287 1288 1527 +4 1288 1289 1536 1537 +4 1288 1289 1536 1537 +4 1288 1289 1536 1537 +4 1288 1289 1536 1537 +4 1288 1289 1536 1537 +4 1288 1289 1536 1537 +4 1289 1290 1544 1545 +4 1289 1290 1544 1545 +4 1289 1290 1544 1545 +4 1289 1290 1544 1545 +4 1289 1290 1544 1545 +4 1289 1290 1544 1545 +3 1290 1291 1551 +3 1290 1291 1551 +3 1290 1291 1551 +3 1290 1291 1551 +3 1290 1291 1551 +3 1290 1291 1551 +4 1291 1292 1558 1559 +4 1291 1292 1558 1559 +4 1291 1292 1558 1559 +4 1291 1292 1558 1559 +4 1291 1292 1558 1559 +4 1291 1292 1558 1559 +4 1292 1293 1566 1567 +4 1292 1293 1566 1567 +4 1292 1293 1566 1567 +4 1292 1293 1566 1567 +4 1292 1293 1566 1567 +4 1292 1293 1566 1567 +3 1293 1294 1573 +3 1293 1294 1573 +3 1293 1294 1573 +3 1293 1294 1573 +3 1293 1294 1573 +3 1293 1294 1573 +4 1294 1295 1582 1583 +4 1294 1295 1582 1583 +4 1294 1295 1582 1583 +4 1294 1295 1582 1583 +4 1294 1295 1582 1583 +4 1294 1295 1582 1583 +4 1295 1296 1590 1591 +4 1295 1296 1590 1591 +4 1295 1296 1590 1591 +4 1295 1296 1590 1591 +4 1295 1296 1590 1591 +4 1295 1296 1590 1591 +3 1296 1297 1597 +3 1296 1297 1597 +3 1296 1297 1597 +3 1296 1297 1597 +3 1296 1297 1597 +3 1296 1297 1597 +4 1297 1298 1604 1605 +4 1297 1298 1604 1605 +4 1297 1298 1604 1605 +4 1297 1298 1604 1605 +4 1297 1298 1604 1605 +4 1297 1298 1604 1605 +4 1298 1299 1612 1613 +4 1298 1299 1612 1613 +4 1298 1299 1612 1613 +4 1298 1299 1612 1613 +4 1298 1299 1612 1613 +4 1298 1299 1612 1613 +3 1299 1300 1619 +3 1299 1300 1619 +3 1299 1300 1619 +3 1299 1300 1619 +3 1299 1300 1619 +3 1299 1300 1619 +4 1300 1301 1628 1629 +4 1300 1301 1628 1629 +4 1300 1301 1628 1629 +4 1300 1301 1628 1629 +4 1300 1301 1628 1629 +4 1300 1301 1628 1629 +4 1301 1302 1636 1637 +4 1301 1302 1636 1637 +4 1301 1302 1636 1637 +4 1301 1302 1636 1637 +4 1301 1302 1636 1637 +4 1301 1302 1636 1637 +3 1302 1303 1643 +3 1302 1303 1643 +3 1302 1303 1643 +3 1302 1303 1643 +3 1302 1303 1643 +3 1302 1303 1643 +4 1303 1304 1650 1651 +4 1303 1304 1650 1651 +4 1303 1304 1650 1651 +4 1303 1304 1650 1651 +4 1303 1304 1650 1651 +4 1303 1304 1650 1651 +4 1304 1305 1658 1659 +4 1304 1305 1658 1659 +4 1304 1305 1658 1659 +4 1304 1305 1658 1659 +4 1304 1305 1658 1659 +4 1304 1305 1658 1659 +3 1305 1306 1665 +3 1305 1306 1665 +3 1305 1306 1665 +3 1305 1306 1665 +3 1305 1306 1665 +3 1305 1306 1665 +4 1306 1307 1674 1675 +4 1306 1307 1674 1675 +4 1306 1307 1674 1675 +4 1306 1307 1674 1675 +4 1306 1307 1674 1675 +4 1306 1307 1674 1675 +4 1307 1308 1682 1683 +4 1307 1308 1682 1683 +4 1307 1308 1682 1683 +4 1307 1308 1682 1683 +4 1307 1308 1682 1683 +4 1307 1308 1682 1683 +3 1308 1309 1689 +3 1308 1309 1689 +3 1308 1309 1689 +3 1308 1309 1689 +3 1308 1309 1689 +3 1308 1309 1689 +4 1309 1310 1698 1699 +4 1309 1310 1698 1699 +4 1309 1310 1698 1699 +4 1309 1310 1698 1699 +4 1309 1310 1698 1699 +4 1309 1310 1698 1699 +4 1310 1311 1708 1709 +4 1310 1311 1708 1709 +4 1310 1311 1708 1709 +4 1310 1311 1708 1709 +4 1310 1311 1708 1709 +4 1310 1311 1708 1709 +3 1311 1312 1715 +3 1311 1312 1715 +3 1311 1312 1715 +3 1311 1312 1715 +3 1311 1312 1715 +3 1311 1312 1715 +4 1313 1314 1400 2324 +4 1313 1314 1400 2324 +4 1313 1314 1400 2324 +4 1313 1314 1400 2324 +4 1313 1314 1400 2324 +4 1313 1314 1400 2324 +4 1314 1315 1408 2316 +4 1314 1315 1408 2316 +4 1314 1315 1408 2316 +4 1314 1315 1408 2316 +4 1314 1315 1408 2316 +4 1314 1315 1408 2316 +4 1315 1316 1414 2310 +4 1315 1316 1414 2310 +4 1315 1316 1414 2310 +4 1315 1316 1414 2310 +4 1315 1316 1414 2310 +4 1315 1316 1414 2310 +4 1316 1317 1420 2304 +4 1316 1317 1420 2304 +4 1316 1317 1420 2304 +4 1316 1317 1420 2304 +4 1316 1317 1420 2304 +4 1316 1317 1420 2304 +4 1317 1318 1426 2298 +4 1317 1318 1426 2298 +4 1317 1318 1426 2298 +4 1317 1318 1426 2298 +4 1317 1318 1426 2298 +4 1317 1318 1426 2298 +4 1318 1319 1432 2292 +4 1318 1319 1432 2292 +4 1318 1319 1432 2292 +4 1318 1319 1432 2292 +4 1318 1319 1432 2292 +4 1318 1319 1432 2292 +4 1319 1320 1438 2286 +4 1319 1320 1438 2286 +4 1319 1320 1438 2286 +4 1319 1320 1438 2286 +4 1319 1320 1438 2286 +4 1319 1320 1438 2286 +4 1320 1321 1444 2280 +4 1320 1321 1444 2280 +4 1320 1321 1444 2280 +4 1320 1321 1444 2280 +4 1320 1321 1444 2280 +4 1320 1321 1444 2280 +4 1321 1322 1452 2272 +4 1321 1322 1452 2272 +4 1321 1322 1452 2272 +4 1321 1322 1452 2272 +4 1321 1322 1452 2272 +4 1321 1322 1452 2272 +4 1322 1323 1458 2266 +4 1322 1323 1458 2266 +4 1322 1323 1458 2266 +4 1322 1323 1458 2266 +4 1322 1323 1458 2266 +4 1322 1323 1458 2266 +4 1323 1324 1466 2258 +4 1323 1324 1466 2258 +4 1323 1324 1466 2258 +4 1323 1324 1466 2258 +4 1323 1324 1466 2258 +4 1323 1324 1466 2258 +4 1324 1325 1474 2250 +4 1324 1325 1474 2250 +4 1324 1325 1474 2250 +4 1324 1325 1474 2250 +4 1324 1325 1474 2250 +4 1324 1325 1474 2250 +4 1325 1326 1480 2244 +4 1325 1326 1480 2244 +4 1325 1326 1480 2244 +4 1325 1326 1480 2244 +4 1325 1326 1480 2244 +4 1325 1326 1480 2244 +4 1326 1327 1490 2234 +4 1326 1327 1490 2234 +4 1326 1327 1490 2234 +4 1326 1327 1490 2234 +4 1326 1327 1490 2234 +4 1326 1327 1490 2234 +4 1327 1328 1500 2224 +4 1327 1328 1500 2224 +4 1327 1328 1500 2224 +4 1327 1328 1500 2224 +4 1327 1328 1500 2224 +4 1327 1328 1500 2224 +4 1328 1329 1506 2218 +4 1328 1329 1506 2218 +4 1328 1329 1506 2218 +4 1328 1329 1506 2218 +4 1328 1329 1506 2218 +4 1328 1329 1506 2218 +4 1329 1330 1514 2210 +4 1329 1330 1514 2210 +4 1329 1330 1514 2210 +4 1329 1330 1514 2210 +4 1329 1330 1514 2210 +4 1329 1330 1514 2210 +4 1330 1331 1522 2202 +4 1330 1331 1522 2202 +4 1330 1331 1522 2202 +4 1330 1331 1522 2202 +4 1330 1331 1522 2202 +4 1330 1331 1522 2202 +4 1331 1332 1528 2196 +4 1331 1332 1528 2196 +4 1331 1332 1528 2196 +4 1331 1332 1528 2196 +4 1331 1332 1528 2196 +4 1331 1332 1528 2196 +4 1332 1333 1538 2186 +4 1332 1333 1538 2186 +4 1332 1333 1538 2186 +4 1332 1333 1538 2186 +4 1332 1333 1538 2186 +4 1332 1333 1538 2186 +4 1333 1334 1546 2178 +4 1333 1334 1546 2178 +4 1333 1334 1546 2178 +4 1333 1334 1546 2178 +4 1333 1334 1546 2178 +4 1333 1334 1546 2178 +4 1334 1335 1552 2172 +4 1334 1335 1552 2172 +4 1334 1335 1552 2172 +4 1334 1335 1552 2172 +4 1334 1335 1552 2172 +4 1334 1335 1552 2172 +4 1335 1336 1560 2164 +4 1335 1336 1560 2164 +4 1335 1336 1560 2164 +4 1335 1336 1560 2164 +4 1335 1336 1560 2164 +4 1335 1336 1560 2164 +4 1336 1337 1568 2156 +4 1336 1337 1568 2156 +4 1336 1337 1568 2156 +4 1336 1337 1568 2156 +4 1336 1337 1568 2156 +4 1336 1337 1568 2156 +4 1337 1338 1574 2150 +4 1337 1338 1574 2150 +4 1337 1338 1574 2150 +4 1337 1338 1574 2150 +4 1337 1338 1574 2150 +4 1337 1338 1574 2150 +4 1338 1339 1584 2140 +4 1338 1339 1584 2140 +4 1338 1339 1584 2140 +4 1338 1339 1584 2140 +4 1338 1339 1584 2140 +4 1338 1339 1584 2140 +4 1339 1340 1592 2132 +4 1339 1340 1592 2132 +4 1339 1340 1592 2132 +4 1339 1340 1592 2132 +4 1339 1340 1592 2132 +4 1339 1340 1592 2132 +4 1340 1341 1598 2126 +4 1340 1341 1598 2126 +4 1340 1341 1598 2126 +4 1340 1341 1598 2126 +4 1340 1341 1598 2126 +4 1340 1341 1598 2126 +4 1341 1342 1606 2118 +4 1341 1342 1606 2118 +4 1341 1342 1606 2118 +4 1341 1342 1606 2118 +4 1341 1342 1606 2118 +4 1341 1342 1606 2118 +4 1342 1343 1614 2110 +4 1342 1343 1614 2110 +4 1342 1343 1614 2110 +4 1342 1343 1614 2110 +4 1342 1343 1614 2110 +4 1342 1343 1614 2110 +4 1343 1344 1620 2104 +4 1343 1344 1620 2104 +4 1343 1344 1620 2104 +4 1343 1344 1620 2104 +4 1343 1344 1620 2104 +4 1343 1344 1620 2104 +4 1344 1345 1630 2094 +4 1344 1345 1630 2094 +4 1344 1345 1630 2094 +4 1344 1345 1630 2094 +4 1344 1345 1630 2094 +4 1344 1345 1630 2094 +4 1345 1346 1638 2086 +4 1345 1346 1638 2086 +4 1345 1346 1638 2086 +4 1345 1346 1638 2086 +4 1345 1346 1638 2086 +4 1345 1346 1638 2086 +4 1346 1347 1644 2080 +4 1346 1347 1644 2080 +4 1346 1347 1644 2080 +4 1346 1347 1644 2080 +4 1346 1347 1644 2080 +4 1346 1347 1644 2080 +4 1347 1348 1652 2072 +4 1347 1348 1652 2072 +4 1347 1348 1652 2072 +4 1347 1348 1652 2072 +4 1347 1348 1652 2072 +4 1347 1348 1652 2072 +4 1348 1349 1660 2064 +4 1348 1349 1660 2064 +4 1348 1349 1660 2064 +4 1348 1349 1660 2064 +4 1348 1349 1660 2064 +4 1348 1349 1660 2064 +4 1349 1350 1666 2058 +4 1349 1350 1666 2058 +4 1349 1350 1666 2058 +4 1349 1350 1666 2058 +4 1349 1350 1666 2058 +4 1349 1350 1666 2058 +4 1350 1351 1676 2048 +4 1350 1351 1676 2048 +4 1350 1351 1676 2048 +4 1350 1351 1676 2048 +4 1350 1351 1676 2048 +4 1350 1351 1676 2048 +4 1351 1352 1684 2040 +4 1351 1352 1684 2040 +4 1351 1352 1684 2040 +4 1351 1352 1684 2040 +4 1351 1352 1684 2040 +4 1351 1352 1684 2040 +4 1352 1353 1690 2034 +4 1352 1353 1690 2034 +4 1352 1353 1690 2034 +4 1352 1353 1690 2034 +4 1352 1353 1690 2034 +4 1352 1353 1690 2034 +4 1353 1354 1700 2024 +4 1353 1354 1700 2024 +4 1353 1354 1700 2024 +4 1353 1354 1700 2024 +4 1353 1354 1700 2024 +4 1353 1354 1700 2024 +4 1354 1355 1710 2014 +4 1354 1355 1710 2014 +4 1354 1355 1710 2014 +4 1354 1355 1710 2014 +4 1354 1355 1710 2014 +4 1354 1355 1710 2014 +3 1356 1468 2256 +3 1356 1468 2256 +3 1356 1468 2256 +3 1356 1468 2256 +3 1356 1468 2256 +3 1356 1468 2256 +3 1356 1460 2264 +3 1356 1460 2264 +3 1356 1460 2264 +3 1356 1460 2264 +3 1356 1460 2264 +3 1356 1460 2264 +3 1357 1492 2232 +3 1357 1492 2232 +3 1357 1492 2232 +3 1357 1492 2232 +3 1357 1492 2232 +3 1357 1492 2232 +3 1357 1482 2242 +3 1357 1482 2242 +3 1357 1482 2242 +3 1357 1482 2242 +3 1357 1482 2242 +3 1357 1482 2242 +3 1358 1516 2208 +3 1358 1516 2208 +3 1358 1516 2208 +3 1358 1516 2208 +3 1358 1516 2208 +3 1358 1516 2208 +3 1358 1508 2216 +3 1358 1508 2216 +3 1358 1508 2216 +3 1358 1508 2216 +3 1358 1508 2216 +3 1358 1508 2216 +3 1359 1540 2184 +3 1359 1540 2184 +3 1359 1540 2184 +3 1359 1540 2184 +3 1359 1540 2184 +3 1359 1540 2184 +3 1359 1530 2194 +3 1359 1530 2194 +3 1359 1530 2194 +3 1359 1530 2194 +3 1359 1530 2194 +3 1359 1530 2194 +3 1360 1562 2162 +3 1360 1562 2162 +3 1360 1562 2162 +3 1360 1562 2162 +3 1360 1562 2162 +3 1360 1562 2162 +3 1360 1554 2170 +3 1360 1554 2170 +3 1360 1554 2170 +3 1360 1554 2170 +3 1360 1554 2170 +3 1360 1554 2170 +3 1361 1586 2138 +3 1361 1586 2138 +3 1361 1586 2138 +3 1361 1586 2138 +3 1361 1586 2138 +3 1361 1586 2138 +3 1361 1576 2148 +3 1361 1576 2148 +3 1361 1576 2148 +3 1361 1576 2148 +3 1361 1576 2148 +3 1361 1576 2148 +3 1362 1608 2116 +3 1362 1608 2116 +3 1362 1608 2116 +3 1362 1608 2116 +3 1362 1608 2116 +3 1362 1608 2116 +3 1362 1600 2124 +3 1362 1600 2124 +3 1362 1600 2124 +3 1362 1600 2124 +3 1362 1600 2124 +3 1362 1600 2124 +3 1363 1632 2092 +3 1363 1632 2092 +3 1363 1632 2092 +3 1363 1632 2092 +3 1363 1632 2092 +3 1363 1632 2092 +3 1363 1622 2102 +3 1363 1622 2102 +3 1363 1622 2102 +3 1363 1622 2102 +3 1363 1622 2102 +3 1363 1622 2102 +3 1364 1654 2070 +3 1364 1654 2070 +3 1364 1654 2070 +3 1364 1654 2070 +3 1364 1654 2070 +3 1364 1654 2070 +3 1364 1646 2078 +3 1364 1646 2078 +3 1364 1646 2078 +3 1364 1646 2078 +3 1364 1646 2078 +3 1364 1646 2078 +3 1365 1678 2046 +3 1365 1678 2046 +3 1365 1678 2046 +3 1365 1678 2046 +3 1365 1678 2046 +3 1365 1678 2046 +3 1365 1668 2056 +3 1365 1668 2056 +3 1365 1668 2056 +3 1365 1668 2056 +3 1365 1668 2056 +3 1365 1668 2056 +3 1366 1702 2022 +3 1366 1702 2022 +3 1366 1702 2022 +3 1366 1702 2022 +3 1366 1702 2022 +3 1366 1702 2022 +3 1366 1692 2032 +3 1366 1692 2032 +3 1366 1692 2032 +3 1366 1692 2032 +3 1366 1692 2032 +3 1366 1692 2032 +1 1367 +1 1367 +1 1367 +1 1367 +1 1367 +1 1367 +2 1367 1378 +2 1367 1378 +2 1367 1378 +2 1367 1378 +2 1367 1378 +2 1367 1378 +2 1367 1378 +2 1367 1378 +2 1367 1378 +2 1367 1378 +2 1367 1378 +2 1367 1378 +2 1367 1378 +2 1367 1378 +2 1367 1378 +2 1367 1378 +2 1367 1378 +2 1367 1378 +1 1367 +1 1367 +1 1367 +1 1367 +1 1367 +1 1367 +3 1368 1494 2230 +3 1368 1494 2230 +3 1368 1494 2230 +3 1368 1494 2230 +3 1368 1494 2230 +3 1368 1494 2230 +3 1368 1484 2240 +3 1368 1484 2240 +3 1368 1484 2240 +3 1368 1484 2240 +3 1368 1484 2240 +3 1368 1484 2240 +1 1369 +1 1369 +1 1369 +1 1369 +1 1369 +1 1369 +2 1369 1380 +2 1369 1380 +2 1369 1380 +2 1369 1380 +2 1369 1380 +2 1369 1380 +2 1369 1380 +2 1369 1380 +2 1369 1380 +2 1369 1380 +2 1369 1380 +2 1369 1380 +2 1369 1380 +2 1369 1380 +2 1369 1380 +2 1369 1380 +2 1369 1380 +2 1369 1380 +1 1369 +1 1369 +1 1369 +1 1369 +1 1369 +1 1369 +1 1370 +1 1370 +1 1370 +1 1370 +1 1370 +1 1370 +2 1370 1381 +2 1370 1381 +2 1370 1381 +2 1370 1381 +2 1370 1381 +2 1370 1381 +6 1370 1381 1532 1534 2190 2192 +6 1370 1381 1532 1534 2190 2192 +6 1370 1381 1532 1534 2190 2192 +6 1370 1381 1532 1534 2190 2192 +6 1370 1381 1532 1534 2190 2192 +6 1370 1381 1532 1534 2190 2192 +2 1370 1381 +2 1370 1381 +2 1370 1381 +2 1370 1381 +2 1370 1381 +2 1370 1381 +3 1370 1532 2192 +3 1370 1532 2192 +3 1370 1532 2192 +3 1370 1532 2192 +3 1370 1532 2192 +3 1370 1532 2192 +1 1371 +1 1371 +1 1371 +1 1371 +1 1371 +1 1371 +2 1371 1382 +2 1371 1382 +2 1371 1382 +2 1371 1382 +2 1371 1382 +2 1371 1382 +2 1371 1382 +2 1371 1382 +2 1371 1382 +2 1371 1382 +2 1371 1382 +2 1371 1382 +2 1371 1382 +2 1371 1382 +2 1371 1382 +2 1371 1382 +2 1371 1382 +2 1371 1382 +1 1371 +1 1371 +1 1371 +1 1371 +1 1371 +1 1371 +1 1372 +1 1372 +1 1372 +1 1372 +1 1372 +1 1372 +2 1372 1383 +2 1372 1383 +2 1372 1383 +2 1372 1383 +2 1372 1383 +2 1372 1383 +6 1372 1383 1578 1580 2144 2146 +6 1372 1383 1578 1580 2144 2146 +6 1372 1383 1578 1580 2144 2146 +6 1372 1383 1578 1580 2144 2146 +6 1372 1383 1578 1580 2144 2146 +6 1372 1383 1578 1580 2144 2146 +2 1372 1383 +2 1372 1383 +2 1372 1383 +2 1372 1383 +2 1372 1383 +2 1372 1383 +3 1372 1578 2146 +3 1372 1578 2146 +3 1372 1578 2146 +3 1372 1578 2146 +3 1372 1578 2146 +3 1372 1578 2146 +1 1373 +1 1373 +1 1373 +1 1373 +1 1373 +1 1373 +2 1373 1384 +2 1373 1384 +2 1373 1384 +2 1373 1384 +2 1373 1384 +2 1373 1384 +2 1373 1384 +2 1373 1384 +2 1373 1384 +2 1373 1384 +2 1373 1384 +2 1373 1384 +2 1373 1384 +2 1373 1384 +2 1373 1384 +2 1373 1384 +2 1373 1384 +2 1373 1384 +1 1373 +1 1373 +1 1373 +1 1373 +1 1373 +1 1373 +1 1374 +1 1374 +1 1374 +1 1374 +1 1374 +1 1374 +2 1374 1385 +2 1374 1385 +2 1374 1385 +2 1374 1385 +2 1374 1385 +2 1374 1385 +6 1374 1385 1624 1626 2098 2100 +6 1374 1385 1624 1626 2098 2100 +6 1374 1385 1624 1626 2098 2100 +6 1374 1385 1624 1626 2098 2100 +6 1374 1385 1624 1626 2098 2100 +6 1374 1385 1624 1626 2098 2100 +2 1374 1385 +2 1374 1385 +2 1374 1385 +2 1374 1385 +2 1374 1385 +2 1374 1385 +3 1374 1624 2100 +3 1374 1624 2100 +3 1374 1624 2100 +3 1374 1624 2100 +3 1374 1624 2100 +3 1374 1624 2100 +1 1375 +1 1375 +1 1375 +1 1375 +1 1375 +1 1375 +2 1375 1386 +2 1375 1386 +2 1375 1386 +2 1375 1386 +2 1375 1386 +2 1375 1386 +2 1375 1386 +2 1375 1386 +2 1375 1386 +2 1375 1386 +2 1375 1386 +2 1375 1386 +2 1375 1386 +2 1375 1386 +2 1375 1386 +2 1375 1386 +2 1375 1386 +2 1375 1386 +1 1375 +1 1375 +1 1375 +1 1375 +1 1375 +1 1375 +1 1376 +1 1376 +1 1376 +1 1376 +1 1376 +1 1376 +2 1376 1387 +2 1376 1387 +2 1376 1387 +2 1376 1387 +2 1376 1387 +2 1376 1387 +6 1376 1387 1670 1672 2052 2054 +6 1376 1387 1670 1672 2052 2054 +6 1376 1387 1670 1672 2052 2054 +6 1376 1387 1670 1672 2052 2054 +6 1376 1387 1670 1672 2052 2054 +6 1376 1387 1670 1672 2052 2054 +2 1376 1387 +2 1376 1387 +2 1376 1387 +2 1376 1387 +2 1376 1387 +2 1376 1387 +3 1376 1670 2054 +3 1376 1670 2054 +3 1376 1670 2054 +3 1376 1670 2054 +3 1376 1670 2054 +3 1376 1670 2054 +3 1377 1704 2020 +3 1377 1704 2020 +3 1377 1704 2020 +3 1377 1704 2020 +3 1377 1704 2020 +3 1377 1704 2020 +3 1377 1694 2030 +3 1377 1694 2030 +3 1377 1694 2030 +3 1377 1694 2030 +3 1377 1694 2030 +3 1377 1694 2030 +1 1378 +1 1378 +1 1378 +1 1378 +1 1378 +1 1378 +1 1378 +1 1378 +1 1378 +1 1378 +1 1378 +1 1378 +3 1379 1496 2228 +3 1379 1496 2228 +3 1379 1496 2228 +3 1379 1496 2228 +3 1379 1496 2228 +3 1379 1496 2228 +3 1379 1486 2238 +3 1379 1486 2238 +3 1379 1486 2238 +3 1379 1486 2238 +3 1379 1486 2238 +3 1379 1486 2238 +1 1380 +1 1380 +1 1380 +1 1380 +1 1380 +1 1380 +1 1380 +1 1380 +1 1380 +1 1380 +1 1380 +1 1380 +1 1381 +1 1381 +1 1381 +1 1381 +1 1381 +1 1381 +3 1381 1534 2190 +3 1381 1534 2190 +3 1381 1534 2190 +3 1381 1534 2190 +3 1381 1534 2190 +3 1381 1534 2190 +1 1382 +1 1382 +1 1382 +1 1382 +1 1382 +1 1382 +1 1382 +1 1382 +1 1382 +1 1382 +1 1382 +1 1382 +1 1383 +1 1383 +1 1383 +1 1383 +1 1383 +1 1383 +3 1383 1580 2144 +3 1383 1580 2144 +3 1383 1580 2144 +3 1383 1580 2144 +3 1383 1580 2144 +3 1383 1580 2144 +1 1384 +1 1384 +1 1384 +1 1384 +1 1384 +1 1384 +1 1384 +1 1384 +1 1384 +1 1384 +1 1384 +1 1384 +1 1385 +1 1385 +1 1385 +1 1385 +1 1385 +1 1385 +3 1385 1626 2098 +3 1385 1626 2098 +3 1385 1626 2098 +3 1385 1626 2098 +3 1385 1626 2098 +3 1385 1626 2098 +1 1386 +1 1386 +1 1386 +1 1386 +1 1386 +1 1386 +1 1386 +1 1386 +1 1386 +1 1386 +1 1386 +1 1386 +1 1387 +1 1387 +1 1387 +1 1387 +1 1387 +1 1387 +3 1387 1672 2052 +3 1387 1672 2052 +3 1387 1672 2052 +3 1387 1672 2052 +3 1387 1672 2052 +3 1387 1672 2052 +3 1388 1706 2018 +3 1388 1706 2018 +3 1388 1706 2018 +3 1388 1706 2018 +3 1388 1706 2018 +3 1388 1706 2018 +3 1388 1696 2028 +3 1388 1696 2028 +3 1388 1696 2028 +3 1388 1696 2028 +3 1388 1696 2028 +3 1388 1696 2028 +3 1389 1472 2252 +3 1389 1472 2252 +3 1389 1472 2252 +3 1389 1472 2252 +3 1389 1472 2252 +3 1389 1472 2252 +3 1389 1464 2260 +3 1389 1464 2260 +3 1389 1464 2260 +3 1389 1464 2260 +3 1389 1464 2260 +3 1389 1464 2260 +3 1390 1498 2226 +3 1390 1498 2226 +3 1390 1498 2226 +3 1390 1498 2226 +3 1390 1498 2226 +3 1390 1498 2226 +3 1390 1488 2236 +3 1390 1488 2236 +3 1390 1488 2236 +3 1390 1488 2236 +3 1390 1488 2236 +3 1390 1488 2236 +3 1391 1520 2204 +3 1391 1520 2204 +3 1391 1520 2204 +3 1391 1520 2204 +3 1391 1520 2204 +3 1391 1520 2204 +3 1391 1512 2212 +3 1391 1512 2212 +3 1391 1512 2212 +3 1391 1512 2212 +3 1391 1512 2212 +3 1391 1512 2212 +3 1392 1544 2180 +3 1392 1544 2180 +3 1392 1544 2180 +3 1392 1544 2180 +3 1392 1544 2180 +3 1392 1544 2180 +3 1392 1536 2188 +3 1392 1536 2188 +3 1392 1536 2188 +3 1392 1536 2188 +3 1392 1536 2188 +3 1392 1536 2188 +3 1393 1566 2158 +3 1393 1566 2158 +3 1393 1566 2158 +3 1393 1566 2158 +3 1393 1566 2158 +3 1393 1566 2158 +3 1393 1558 2166 +3 1393 1558 2166 +3 1393 1558 2166 +3 1393 1558 2166 +3 1393 1558 2166 +3 1393 1558 2166 +3 1394 1590 2134 +3 1394 1590 2134 +3 1394 1590 2134 +3 1394 1590 2134 +3 1394 1590 2134 +3 1394 1590 2134 +3 1394 1582 2142 +3 1394 1582 2142 +3 1394 1582 2142 +3 1394 1582 2142 +3 1394 1582 2142 +3 1394 1582 2142 +3 1395 1612 2112 +3 1395 1612 2112 +3 1395 1612 2112 +3 1395 1612 2112 +3 1395 1612 2112 +3 1395 1612 2112 +3 1395 1604 2120 +3 1395 1604 2120 +3 1395 1604 2120 +3 1395 1604 2120 +3 1395 1604 2120 +3 1395 1604 2120 +3 1396 1636 2088 +3 1396 1636 2088 +3 1396 1636 2088 +3 1396 1636 2088 +3 1396 1636 2088 +3 1396 1636 2088 +3 1396 1628 2096 +3 1396 1628 2096 +3 1396 1628 2096 +3 1396 1628 2096 +3 1396 1628 2096 +3 1396 1628 2096 +3 1397 1658 2066 +3 1397 1658 2066 +3 1397 1658 2066 +3 1397 1658 2066 +3 1397 1658 2066 +3 1397 1658 2066 +3 1397 1650 2074 +3 1397 1650 2074 +3 1397 1650 2074 +3 1397 1650 2074 +3 1397 1650 2074 +3 1397 1650 2074 +3 1398 1682 2042 +3 1398 1682 2042 +3 1398 1682 2042 +3 1398 1682 2042 +3 1398 1682 2042 +3 1398 1682 2042 +3 1398 1674 2050 +3 1398 1674 2050 +3 1398 1674 2050 +3 1398 1674 2050 +3 1398 1674 2050 +3 1398 1674 2050 +3 1399 1708 2016 +3 1399 1708 2016 +3 1399 1708 2016 +3 1399 1708 2016 +3 1399 1708 2016 +3 1399 1708 2016 +3 1399 1698 2026 +3 1399 1698 2026 +3 1399 1698 2026 +3 1399 1698 2026 +3 1399 1698 2026 +3 1399 1698 2026 +2 1402 2322 +2 1402 2322 +2 1402 2322 +2 1402 2322 +2 1402 2322 +2 1402 2322 +2 1406 2318 +2 1406 2318 +2 1406 2318 +2 1406 2318 +2 1406 2318 +2 1406 2318 +4 1446 1851 1884 2278 +4 1446 1851 1884 2278 +4 1446 1851 1884 2278 +4 1446 1851 1884 2278 +4 1446 1851 1884 2278 +4 1446 1851 1884 2278 +2 1446 1851 +2 1446 1851 +2 1446 1851 +2 1446 1851 +2 1446 1851 +2 1446 1851 +2 1446 2278 +2 1446 2278 +2 1446 2278 +2 1446 2278 +2 1446 2278 +2 1446 2278 +4 1450 1861 1874 2274 +4 1450 1861 1874 2274 +4 1450 1861 1874 2274 +4 1450 1861 1874 2274 +4 1450 1861 1874 2274 +4 1450 1861 1874 2274 +2 1450 1861 +2 1450 1861 +2 1450 1861 +2 1450 1861 +2 1450 1861 +2 1450 1861 +6 1450 1760 1866 1869 1964 2274 +6 1450 1760 1866 1869 1964 2274 +6 1450 1760 1866 1869 1964 2274 +6 1450 1760 1866 1869 1964 2274 +6 1450 1760 1866 1869 1964 2274 +6 1450 1760 1866 1869 1964 2274 +3 1450 1760 1866 +3 1450 1760 1866 +3 1450 1760 1866 +3 1450 1760 1866 +3 1450 1760 1866 +3 1450 1760 1866 +2 1450 2274 +2 1450 2274 +2 1450 2274 +2 1450 2274 +2 1450 2274 +2 1450 2274 +2 1532 1534 +2 1532 1534 +2 1532 1534 +2 1532 1534 +2 1532 1534 +2 1532 1534 +2 1578 1580 +2 1578 1580 +2 1578 1580 +2 1578 1580 +2 1578 1580 +2 1578 1580 +2 1624 1626 +2 1624 1626 +2 1624 1626 +2 1624 1626 +2 1624 1626 +2 1624 1626 +2 1670 1672 +2 1670 1672 +2 1670 1672 +2 1670 1672 +2 1670 1672 +2 1670 1672 +3 1716 1717 1759 +3 1716 1717 1759 +3 1716 1717 1759 +3 1716 1717 1759 +3 1716 1717 1759 +3 1716 1717 1759 +2 1717 1718 +2 1717 1718 +2 1717 1718 +2 1717 1718 +2 1717 1718 +2 1717 1718 +2 1718 1719 +2 1718 1719 +2 1718 1719 +2 1718 1719 +2 1718 1719 +2 1718 1719 +2 1719 1720 +2 1719 1720 +2 1719 1720 +2 1719 1720 +2 1719 1720 +2 1719 1720 +2 1720 1721 +2 1720 1721 +2 1720 1721 +2 1720 1721 +2 1720 1721 +2 1720 1721 +2 1721 1722 +2 1721 1722 +2 1721 1722 +2 1721 1722 +2 1721 1722 +2 1721 1722 +2 1722 1723 +2 1722 1723 +2 1722 1723 +2 1722 1723 +2 1722 1723 +2 1722 1723 +3 1723 1724 1760 +3 1723 1724 1760 +3 1723 1724 1760 +3 1723 1724 1760 +3 1723 1724 1760 +3 1723 1724 1760 +2 1724 1725 +2 1724 1725 +2 1724 1725 +2 1724 1725 +2 1724 1725 +2 1724 1725 +3 1725 1726 1761 +3 1725 1726 1761 +3 1725 1726 1761 +3 1725 1726 1761 +3 1725 1726 1761 +3 1725 1726 1761 +3 1726 1727 1762 +3 1726 1727 1762 +3 1726 1727 1762 +3 1726 1727 1762 +3 1726 1727 1762 +3 1726 1727 1762 +2 1727 1728 +2 1727 1728 +2 1727 1728 +2 1727 1728 +2 1727 1728 +2 1727 1728 +3 1728 1729 1763 +3 1728 1729 1763 +3 1728 1729 1763 +3 1728 1729 1763 +3 1728 1729 1763 +3 1728 1729 1763 +3 1729 1730 1764 +3 1729 1730 1764 +3 1729 1730 1764 +3 1729 1730 1764 +3 1729 1730 1764 +3 1729 1730 1764 +2 1730 1731 +2 1730 1731 +2 1730 1731 +2 1730 1731 +2 1730 1731 +2 1730 1731 +3 1731 1732 1765 +3 1731 1732 1765 +3 1731 1732 1765 +3 1731 1732 1765 +3 1731 1732 1765 +3 1731 1732 1765 +3 1732 1733 1766 +3 1732 1733 1766 +3 1732 1733 1766 +3 1732 1733 1766 +3 1732 1733 1766 +3 1732 1733 1766 +2 1733 1734 +2 1733 1734 +2 1733 1734 +2 1733 1734 +2 1733 1734 +2 1733 1734 +3 1734 1735 1767 +3 1734 1735 1767 +3 1734 1735 1767 +3 1734 1735 1767 +3 1734 1735 1767 +3 1734 1735 1767 +3 1735 1736 1768 +3 1735 1736 1768 +3 1735 1736 1768 +3 1735 1736 1768 +3 1735 1736 1768 +3 1735 1736 1768 +2 1736 1737 +2 1736 1737 +2 1736 1737 +2 1736 1737 +2 1736 1737 +2 1736 1737 +3 1737 1738 1769 +3 1737 1738 1769 +3 1737 1738 1769 +3 1737 1738 1769 +3 1737 1738 1769 +3 1737 1738 1769 +3 1738 1739 1770 +3 1738 1739 1770 +3 1738 1739 1770 +3 1738 1739 1770 +3 1738 1739 1770 +3 1738 1739 1770 +2 1739 1740 +2 1739 1740 +2 1739 1740 +2 1739 1740 +2 1739 1740 +2 1739 1740 +3 1740 1741 1771 +3 1740 1741 1771 +3 1740 1741 1771 +3 1740 1741 1771 +3 1740 1741 1771 +3 1740 1741 1771 +3 1741 1742 1772 +3 1741 1742 1772 +3 1741 1742 1772 +3 1741 1742 1772 +3 1741 1742 1772 +3 1741 1742 1772 +2 1742 1743 +2 1742 1743 +2 1742 1743 +2 1742 1743 +2 1742 1743 +2 1742 1743 +3 1743 1744 1773 +3 1743 1744 1773 +3 1743 1744 1773 +3 1743 1744 1773 +3 1743 1744 1773 +3 1743 1744 1773 +3 1744 1745 1774 +3 1744 1745 1774 +3 1744 1745 1774 +3 1744 1745 1774 +3 1744 1745 1774 +3 1744 1745 1774 +2 1745 1746 +2 1745 1746 +2 1745 1746 +2 1745 1746 +2 1745 1746 +2 1745 1746 +3 1746 1747 1775 +3 1746 1747 1775 +3 1746 1747 1775 +3 1746 1747 1775 +3 1746 1747 1775 +3 1746 1747 1775 +3 1747 1748 1776 +3 1747 1748 1776 +3 1747 1748 1776 +3 1747 1748 1776 +3 1747 1748 1776 +3 1747 1748 1776 +2 1748 1749 +2 1748 1749 +2 1748 1749 +2 1748 1749 +2 1748 1749 +2 1748 1749 +3 1749 1750 1777 +3 1749 1750 1777 +3 1749 1750 1777 +3 1749 1750 1777 +3 1749 1750 1777 +3 1749 1750 1777 +3 1750 1751 1778 +3 1750 1751 1778 +3 1750 1751 1778 +3 1750 1751 1778 +3 1750 1751 1778 +3 1750 1751 1778 +2 1751 1752 +2 1751 1752 +2 1751 1752 +2 1751 1752 +2 1751 1752 +2 1751 1752 +3 1752 1753 1779 +3 1752 1753 1779 +3 1752 1753 1779 +3 1752 1753 1779 +3 1752 1753 1779 +3 1752 1753 1779 +3 1753 1754 1780 +3 1753 1754 1780 +3 1753 1754 1780 +3 1753 1754 1780 +3 1753 1754 1780 +3 1753 1754 1780 +2 1754 1755 +2 1754 1755 +2 1754 1755 +2 1754 1755 +2 1754 1755 +2 1754 1755 +3 1755 1756 1781 +3 1755 1756 1781 +3 1755 1756 1781 +3 1755 1756 1781 +3 1755 1756 1781 +3 1755 1756 1781 +3 1756 1757 1782 +3 1756 1757 1782 +3 1756 1757 1782 +3 1756 1757 1782 +3 1756 1757 1782 +3 1756 1757 1782 +2 1757 1758 +2 1757 1758 +2 1757 1758 +2 1757 1758 +2 1757 1758 +2 1757 1758 +2 1758 1783 +2 1758 1783 +2 1758 1783 +2 1758 1783 +2 1758 1783 +2 1758 1783 +2 1759 1965 +2 1759 1965 +2 1759 1965 +2 1759 1965 +2 1759 1965 +2 1759 1965 +2 1760 1964 +2 1760 1964 +2 1760 1964 +2 1760 1964 +2 1760 1964 +2 1760 1964 +2 1761 1963 +2 1761 1963 +2 1761 1963 +2 1761 1963 +2 1761 1963 +2 1761 1963 +2 1762 1962 +2 1762 1962 +2 1762 1962 +2 1762 1962 +2 1762 1962 +2 1762 1962 +2 1763 1961 +2 1763 1961 +2 1763 1961 +2 1763 1961 +2 1763 1961 +2 1763 1961 +2 1764 1960 +2 1764 1960 +2 1764 1960 +2 1764 1960 +2 1764 1960 +2 1764 1960 +2 1765 1959 +2 1765 1959 +2 1765 1959 +2 1765 1959 +2 1765 1959 +2 1765 1959 +2 1766 1958 +2 1766 1958 +2 1766 1958 +2 1766 1958 +2 1766 1958 +2 1766 1958 +2 1767 1957 +2 1767 1957 +2 1767 1957 +2 1767 1957 +2 1767 1957 +2 1767 1957 +2 1768 1956 +2 1768 1956 +2 1768 1956 +2 1768 1956 +2 1768 1956 +2 1768 1956 +2 1769 1955 +2 1769 1955 +2 1769 1955 +2 1769 1955 +2 1769 1955 +2 1769 1955 +2 1770 1954 +2 1770 1954 +2 1770 1954 +2 1770 1954 +2 1770 1954 +2 1770 1954 +2 1771 1953 +2 1771 1953 +2 1771 1953 +2 1771 1953 +2 1771 1953 +2 1771 1953 +2 1772 1952 +2 1772 1952 +2 1772 1952 +2 1772 1952 +2 1772 1952 +2 1772 1952 +2 1773 1951 +2 1773 1951 +2 1773 1951 +2 1773 1951 +2 1773 1951 +2 1773 1951 +2 1774 1950 +2 1774 1950 +2 1774 1950 +2 1774 1950 +2 1774 1950 +2 1774 1950 +2 1775 1949 +2 1775 1949 +2 1775 1949 +2 1775 1949 +2 1775 1949 +2 1775 1949 +2 1776 1948 +2 1776 1948 +2 1776 1948 +2 1776 1948 +2 1776 1948 +2 1776 1948 +2 1777 1947 +2 1777 1947 +2 1777 1947 +2 1777 1947 +2 1777 1947 +2 1777 1947 +2 1778 1946 +2 1778 1946 +2 1778 1946 +2 1778 1946 +2 1778 1946 +2 1778 1946 +2 1779 1945 +2 1779 1945 +2 1779 1945 +2 1779 1945 +2 1779 1945 +2 1779 1945 +2 1780 1944 +2 1780 1944 +2 1780 1944 +2 1780 1944 +2 1780 1944 +2 1780 1944 +2 1781 1943 +2 1781 1943 +2 1781 1943 +2 1781 1943 +2 1781 1943 +2 1781 1943 +2 1782 1942 +2 1782 1942 +2 1782 1942 +2 1782 1942 +2 1782 1942 +2 1782 1942 +2 1783 1941 +2 1783 1941 +2 1783 1941 +2 1783 1941 +2 1783 1941 +2 1783 1941 +1 1783 +1 1783 +1 1783 +1 1783 +1 1783 +1 1783 +2 1783 1941 +2 1783 1941 +2 1783 1941 +2 1783 1941 +2 1783 1941 +2 1783 1941 +8 1784 1791 1800 1823 1825 1924 1933 1940 +8 1784 1791 1800 1823 1825 1924 1933 1940 +8 1784 1791 1800 1823 1825 1924 1933 1940 +4 1784 1823 1825 1940 +4 1784 1823 1825 1940 +4 1784 1823 1825 1940 +12 1784 1786 1808 1810 1823 1824 1825 1826 1914 1916 1938 1940 +12 1784 1786 1808 1810 1823 1824 1825 1826 1914 1916 1938 1940 +12 1784 1786 1808 1810 1823 1824 1825 1826 1914 1916 1938 1940 +4 1784 1786 1808 1810 +4 1784 1786 1808 1810 +4 1784 1786 1808 1810 +4 1784 1786 1808 1810 +4 1784 1786 1808 1810 +4 1784 1786 1808 1810 +12 1784 1785 1786 1787 1808 1809 1810 1811 1834 1835 1836 1837 +12 1784 1785 1786 1787 1808 1809 1810 1811 1834 1835 1836 1837 +12 1784 1785 1786 1787 1808 1809 1810 1811 1834 1835 1836 1837 +8 1784 1785 1791 1797 1800 1802 1834 1836 +8 1784 1785 1791 1797 1800 1802 1834 1836 +8 1784 1785 1791 1797 1800 1802 1834 1836 +4 1784 1785 1834 1836 +4 1784 1785 1834 1836 +4 1784 1785 1834 1836 +3 1784 1791 1800 +3 1784 1791 1800 +3 1784 1791 1800 +3 1784 1791 1800 +3 1784 1791 1800 +3 1784 1791 1800 +4 1785 1787 1809 1811 +4 1785 1787 1809 1811 +4 1785 1787 1809 1811 +4 1785 1787 1809 1811 +4 1785 1787 1809 1811 +4 1785 1787 1809 1811 +7 1785 1787 1809 1811 1845 1846 1847 +7 1785 1787 1809 1811 1845 1846 1847 +7 1785 1787 1809 1811 1845 1846 1847 +5 1785 1797 1802 1845 1847 +5 1785 1797 1802 1845 1847 +5 1785 1797 1802 1845 1847 +3 1785 1845 1847 +3 1785 1845 1847 +3 1785 1845 1847 +3 1785 1797 1802 +3 1785 1797 1802 +3 1785 1797 1802 +3 1785 1797 1802 +3 1785 1797 1802 +3 1785 1797 1802 +4 1786 1824 1826 1938 +4 1786 1824 1826 1938 +4 1786 1824 1826 1938 +8 1786 1816 1818 1824 1826 1906 1908 1938 +8 1786 1816 1818 1824 1826 1906 1908 1938 +8 1786 1816 1818 1824 1826 1906 1908 1938 +3 1786 1816 1818 +3 1786 1816 1818 +3 1786 1816 1818 +3 1786 1816 1818 +3 1786 1816 1818 +3 1786 1816 1818 +7 1786 1787 1816 1817 1818 1835 1837 +7 1786 1787 1816 1817 1818 1835 1837 +7 1786 1787 1816 1817 1818 1835 1837 +4 1786 1787 1835 1837 +4 1786 1787 1835 1837 +4 1786 1787 1835 1837 +2 1787 1817 +2 1787 1817 +2 1787 1817 +2 1787 1817 +2 1787 1817 +2 1787 1817 +3 1787 1817 1846 +3 1787 1817 1846 +3 1787 1817 1846 +3 1787 1817 1846 +3 1787 1817 1846 +3 1787 1817 1846 +2 1787 1846 +2 1787 1846 +2 1787 1846 +2 1787 1846 +2 1787 1846 +2 1787 1846 +8 1788 1791 1803 1825 1827 1921 1933 1936 +8 1788 1791 1803 1825 1827 1921 1933 1936 +8 1788 1791 1803 1825 1827 1921 1933 1936 +4 1788 1825 1827 1936 +4 1788 1825 1827 1936 +4 1788 1825 1827 1936 +12 1788 1790 1810 1812 1825 1826 1827 1828 1912 1914 1934 1936 +12 1788 1790 1810 1812 1825 1826 1827 1828 1912 1914 1934 1936 +12 1788 1790 1810 1812 1825 1826 1827 1828 1912 1914 1934 1936 +4 1788 1790 1810 1812 +4 1788 1790 1810 1812 +4 1788 1790 1810 1812 +4 1788 1790 1810 1812 +4 1788 1790 1810 1812 +4 1788 1790 1810 1812 +10 1788 1789 1790 1810 1811 1812 1836 1837 1838 1839 +10 1788 1789 1790 1810 1811 1812 1836 1837 1838 1839 +10 1788 1789 1790 1810 1811 1812 1836 1837 1838 1839 +7 1788 1789 1791 1802 1803 1836 1838 +7 1788 1789 1791 1802 1803 1836 1838 +7 1788 1789 1791 1802 1803 1836 1838 +4 1788 1789 1836 1838 +4 1788 1789 1836 1838 +4 1788 1789 1836 1838 +3 1788 1791 1803 +3 1788 1791 1803 +3 1788 1791 1803 +3 1788 1791 1803 +3 1788 1791 1803 +3 1788 1791 1803 +2 1789 1811 +2 1789 1811 +2 1789 1811 +2 1789 1811 +2 1789 1811 +2 1789 1811 +3 1789 1811 1847 +3 1789 1811 1847 +3 1789 1811 1847 +3 1789 1802 1847 +3 1789 1802 1847 +3 1789 1802 1847 +2 1789 1847 +2 1789 1847 +2 1789 1847 +2 1789 1802 +2 1789 1802 +2 1789 1802 +2 1789 1802 +2 1789 1802 +2 1789 1802 +4 1790 1826 1828 1934 +4 1790 1826 1828 1934 +4 1790 1826 1828 1934 +8 1790 1818 1819 1826 1828 1905 1906 1934 +8 1790 1818 1819 1826 1828 1905 1906 1934 +8 1790 1818 1819 1826 1828 1905 1906 1934 +3 1790 1818 1819 +3 1790 1818 1819 +3 1790 1818 1819 +3 1790 1818 1819 +3 1790 1818 1819 +3 1790 1818 1819 +5 1790 1818 1819 1837 1839 +5 1790 1818 1819 1837 1839 +5 1790 1818 1819 1837 1839 +3 1790 1837 1839 +3 1790 1837 1839 +3 1790 1837 1839 +3 1791 1802 1836 +3 1791 1802 1836 +3 1791 1802 1836 +3 1791 1825 1933 +3 1791 1825 1933 +3 1791 1825 1933 +8 1792 1803 1804 1827 1829 1920 1921 1932 +8 1792 1803 1804 1827 1829 1920 1921 1932 +8 1792 1803 1804 1827 1829 1920 1921 1932 +4 1792 1827 1829 1932 +4 1792 1827 1829 1932 +4 1792 1827 1829 1932 +12 1792 1793 1812 1813 1827 1828 1829 1830 1911 1912 1931 1932 +12 1792 1793 1812 1813 1827 1828 1829 1830 1911 1912 1931 1932 +12 1792 1793 1812 1813 1827 1828 1829 1830 1911 1912 1931 1932 +4 1792 1793 1812 1813 +4 1792 1793 1812 1813 +4 1792 1793 1812 1813 +4 1792 1793 1812 1813 +4 1792 1793 1812 1813 +4 1792 1793 1812 1813 +8 1792 1793 1812 1813 1838 1839 1840 1841 +8 1792 1793 1812 1813 1838 1839 1840 1841 +8 1792 1793 1812 1813 1838 1839 1840 1841 +5 1792 1803 1804 1838 1840 +5 1792 1803 1804 1838 1840 +5 1792 1803 1804 1838 1840 +3 1792 1838 1840 +3 1792 1838 1840 +3 1792 1838 1840 +3 1792 1803 1804 +3 1792 1803 1804 +3 1792 1803 1804 +3 1792 1803 1804 +3 1792 1803 1804 +3 1792 1803 1804 +4 1793 1828 1830 1931 +4 1793 1828 1830 1931 +4 1793 1828 1830 1931 +8 1793 1819 1820 1828 1830 1904 1905 1931 +8 1793 1819 1820 1828 1830 1904 1905 1931 +8 1793 1819 1820 1828 1830 1904 1905 1931 +3 1793 1819 1820 +3 1793 1819 1820 +3 1793 1819 1820 +3 1793 1819 1820 +3 1793 1819 1820 +3 1793 1819 1820 +5 1793 1819 1820 1839 1841 +5 1793 1819 1820 1839 1841 +5 1793 1819 1820 1839 1841 +3 1793 1839 1841 +3 1793 1839 1841 +3 1793 1839 1841 +8 1794 1804 1805 1829 1831 1919 1920 1930 +8 1794 1804 1805 1829 1831 1919 1920 1930 +8 1794 1804 1805 1829 1831 1919 1920 1930 +4 1794 1829 1831 1930 +4 1794 1829 1831 1930 +4 1794 1829 1831 1930 +12 1794 1795 1813 1814 1829 1830 1831 1832 1910 1911 1929 1930 +12 1794 1795 1813 1814 1829 1830 1831 1832 1910 1911 1929 1930 +12 1794 1795 1813 1814 1829 1830 1831 1832 1910 1911 1929 1930 +4 1794 1795 1813 1814 +4 1794 1795 1813 1814 +4 1794 1795 1813 1814 +4 1794 1795 1813 1814 +4 1794 1795 1813 1814 +4 1794 1795 1813 1814 +9 1794 1795 1806 1813 1814 1840 1841 1842 1843 +9 1794 1795 1806 1813 1814 1840 1841 1842 1843 +9 1794 1795 1806 1813 1814 1840 1841 1842 1843 +5 1794 1804 1805 1840 1842 +5 1794 1804 1805 1840 1842 +5 1794 1804 1805 1840 1842 +3 1794 1840 1842 +3 1794 1840 1842 +3 1794 1840 1842 +3 1794 1804 1805 +3 1794 1804 1805 +3 1794 1804 1805 +3 1794 1804 1805 +3 1794 1804 1805 +3 1794 1804 1805 +4 1795 1830 1832 1929 +4 1795 1830 1832 1929 +4 1795 1830 1832 1929 +8 1795 1820 1821 1830 1832 1903 1904 1929 +8 1795 1820 1821 1830 1832 1903 1904 1929 +8 1795 1820 1821 1830 1832 1903 1904 1929 +3 1795 1820 1821 +3 1795 1820 1821 +3 1795 1820 1821 +3 1795 1820 1821 +3 1795 1820 1821 +3 1795 1820 1821 +6 1795 1807 1820 1821 1841 1843 +6 1795 1807 1820 1821 1841 1843 +6 1795 1807 1820 1821 1841 1843 +3 1795 1841 1843 +3 1795 1841 1843 +3 1795 1841 1843 +5 1796 1805 1831 1919 1928 +5 1796 1805 1831 1919 1928 +5 1796 1805 1831 1919 1928 +3 1796 1831 1928 +3 1796 1831 1928 +3 1796 1831 1928 +11 1796 1798 1814 1815 1831 1832 1833 1909 1910 1926 1928 +11 1796 1798 1814 1815 1831 1832 1833 1909 1910 1926 1928 +11 1796 1798 1814 1815 1831 1832 1833 1909 1910 1926 1928 +4 1796 1798 1814 1815 +4 1796 1798 1814 1815 +4 1796 1798 1814 1815 +4 1796 1798 1814 1815 +4 1796 1798 1814 1815 +4 1796 1798 1814 1815 +9 1796 1798 1799 1806 1814 1815 1842 1843 1844 +9 1796 1798 1799 1806 1814 1815 1842 1843 1844 +9 1796 1798 1799 1806 1814 1815 1842 1843 1844 +3 1796 1805 1842 +3 1796 1805 1842 +3 1796 1805 1842 +2 1796 1842 +2 1796 1842 +2 1796 1842 +2 1796 1805 +2 1796 1805 +2 1796 1805 +2 1796 1805 +2 1796 1805 +2 1796 1805 +2 1797 1845 +2 1797 1845 +2 1797 1845 +2 1797 1845 +2 1797 1845 +2 1797 1845 +3 1797 1800 1834 +3 1797 1800 1834 +3 1797 1800 1834 +3 1797 1800 1834 +3 1797 1800 1834 +3 1797 1800 1834 +4 1798 1832 1833 1926 +4 1798 1832 1833 1926 +4 1798 1832 1833 1926 +8 1798 1821 1822 1832 1833 1902 1903 1926 +8 1798 1821 1822 1832 1833 1902 1903 1926 +8 1798 1821 1822 1832 1833 1902 1903 1926 +3 1798 1821 1822 +3 1798 1821 1822 +3 1798 1821 1822 +3 1798 1821 1822 +3 1798 1821 1822 +3 1798 1821 1822 +7 1798 1799 1807 1821 1822 1843 1844 +7 1798 1799 1807 1821 1822 1843 1844 +7 1798 1799 1807 1821 1822 1843 1844 +4 1798 1799 1843 1844 +4 1798 1799 1843 1844 +4 1798 1799 1843 1844 +2 1799 1807 +2 1799 1807 +2 1799 1807 +2 1799 1807 +2 1799 1807 +2 1799 1807 +2 1799 1807 +2 1799 1807 +2 1799 1807 +2 1799 1807 +2 1799 1807 +2 1799 1807 +2 1799 1806 +2 1799 1806 +2 1799 1806 +2 1799 1806 +2 1799 1806 +2 1799 1806 +1 1799 +1 1799 +1 1799 +1 1799 +1 1799 +1 1799 +2 1799 1806 +2 1799 1806 +2 1799 1806 +2 1799 1806 +2 1799 1806 +2 1799 1806 +3 1800 1823 1924 +3 1800 1823 1924 +3 1800 1823 1924 +3 1800 1823 1924 +3 1800 1823 1924 +3 1800 1823 1924 +1 1800 +1 1800 +1 1800 +1 1800 +1 1800 +1 1800 +3 1800 1823 1924 +3 1800 1823 1924 +3 1800 1823 1924 +3 1800 1823 1924 +3 1800 1823 1924 +3 1800 1823 1924 +5 1801 1815 1833 1909 1923 +5 1801 1815 1833 1909 1923 +5 1801 1815 1833 1909 1923 +3 1801 1833 1923 +3 1801 1833 1923 +3 1801 1833 1923 +5 1801 1822 1833 1902 1923 +5 1801 1822 1833 1902 1923 +5 1801 1822 1833 1902 1923 +2 1801 1822 +2 1801 1822 +2 1801 1822 +2 1801 1822 +2 1801 1822 +2 1801 1822 +3 1801 1822 1844 +3 1801 1822 1844 +3 1801 1822 1844 +3 1801 1815 1844 +3 1801 1815 1844 +3 1801 1815 1844 +2 1801 1844 +2 1801 1844 +2 1801 1844 +2 1801 1815 +2 1801 1815 +2 1801 1815 +2 1801 1815 +2 1801 1815 +2 1801 1815 +2 1802 1847 +2 1802 1847 +2 1802 1847 +2 1803 1838 +2 1803 1838 +2 1803 1838 +3 1803 1827 1921 +3 1803 1827 1921 +3 1803 1827 1921 +2 1804 1840 +2 1804 1840 +2 1804 1840 +3 1804 1829 1920 +3 1804 1829 1920 +3 1804 1829 1920 +2 1805 1842 +2 1805 1842 +2 1805 1842 +3 1805 1831 1919 +3 1805 1831 1919 +3 1805 1831 1919 +1 1806 +1 1806 +1 1806 +1 1806 +1 1806 +1 1806 +4 1806 1814 1842 1843 +4 1806 1814 1842 1843 +4 1806 1814 1842 1843 +1 1807 +1 1807 +1 1807 +1 1807 +1 1807 +1 1807 +3 1807 1821 1843 +3 1807 1821 1843 +3 1807 1821 1843 +4 1808 1823 1824 1916 +4 1808 1823 1824 1916 +4 1808 1823 1824 1916 +4 1808 1823 1824 1916 +4 1808 1823 1824 1916 +4 1808 1823 1824 1916 +1 1808 +1 1808 +1 1808 +1 1808 +1 1808 +1 1808 +4 1808 1809 1834 1835 +4 1808 1809 1834 1835 +4 1808 1809 1834 1835 +4 1808 1809 1834 1835 +4 1808 1809 1834 1835 +4 1808 1809 1834 1835 +4 1808 1823 1824 1916 +4 1808 1823 1824 1916 +4 1808 1823 1824 1916 +4 1808 1823 1824 1916 +4 1808 1823 1824 1916 +4 1808 1823 1824 1916 +3 1809 1845 1846 +3 1809 1845 1846 +3 1809 1845 1846 +3 1809 1845 1846 +3 1809 1845 1846 +3 1809 1845 1846 +4 1810 1811 1836 1837 +4 1810 1811 1836 1837 +4 1810 1811 1836 1837 +4 1810 1825 1826 1914 +4 1810 1825 1826 1914 +4 1810 1825 1826 1914 +2 1811 1847 +2 1811 1847 +2 1811 1847 +3 1812 1838 1839 +3 1812 1838 1839 +3 1812 1838 1839 +4 1812 1827 1828 1912 +4 1812 1827 1828 1912 +4 1812 1827 1828 1912 +3 1813 1840 1841 +3 1813 1840 1841 +3 1813 1840 1841 +4 1813 1829 1830 1911 +4 1813 1829 1830 1911 +4 1813 1829 1830 1911 +4 1814 1831 1832 1910 +4 1814 1831 1832 1910 +4 1814 1831 1832 1910 +2 1815 1844 +2 1815 1844 +2 1815 1844 +3 1815 1833 1909 +3 1815 1833 1909 +3 1815 1833 1909 +5 1816 1824 1866 1869 1908 +5 1816 1824 1866 1869 1908 +5 1816 1824 1866 1869 1908 +5 1816 1824 1866 1869 1908 +5 1816 1824 1866 1869 1908 +5 1816 1824 1866 1869 1908 +1 1816 +1 1816 +1 1816 +1 1816 +1 1816 +1 1816 +3 1816 1817 1835 +3 1816 1817 1835 +3 1816 1817 1835 +3 1816 1817 1835 +3 1816 1817 1835 +3 1816 1817 1835 +3 1816 1824 1908 +3 1816 1824 1908 +3 1816 1824 1908 +3 1816 1824 1908 +3 1816 1824 1908 +3 1816 1824 1908 +2 1817 1846 +2 1817 1846 +2 1817 1846 +2 1817 1846 +2 1817 1846 +2 1817 1846 +2 1818 1837 +2 1818 1837 +2 1818 1837 +3 1818 1826 1906 +3 1818 1826 1906 +3 1818 1826 1906 +2 1819 1839 +2 1819 1839 +2 1819 1839 +3 1819 1828 1905 +3 1819 1828 1905 +3 1819 1828 1905 +2 1820 1841 +2 1820 1841 +2 1820 1841 +3 1820 1830 1904 +3 1820 1830 1904 +3 1820 1830 1904 +3 1821 1832 1903 +3 1821 1832 1903 +3 1821 1832 1903 +2 1822 1844 +2 1822 1844 +2 1822 1844 +3 1822 1833 1902 +3 1822 1833 1902 +3 1822 1833 1902 +1 1823 +1 1823 +1 1823 +1 1823 +1 1823 +1 1823 +1 1824 +1 1824 +1 1824 +1 1824 +1 1824 +1 1824 +1 1848 +1 1848 +1 1848 +1 1848 +1 1848 +1 1848 +2 1848 1849 +2 1848 1849 +2 1848 1849 +2 1848 1849 +2 1848 1849 +2 1848 1849 +1 1849 +1 1849 +1 1849 +1 1849 +1 1849 +1 1849 +2 1849 1850 +2 1849 1850 +2 1849 1850 +2 1849 1850 +2 1849 1850 +2 1849 1850 +1 1850 +1 1850 +1 1850 +1 1850 +1 1850 +1 1850 +2 1850 1852 +2 1850 1852 +2 1850 1852 +2 1850 1852 +2 1850 1852 +2 1850 1852 +2 1851 1884 +2 1851 1884 +2 1851 1884 +2 1851 1884 +2 1851 1884 +2 1851 1884 +2 1851 1884 +2 1851 1884 +2 1851 1884 +2 1851 1884 +2 1851 1884 +2 1851 1884 +2 1851 1852 +2 1851 1852 +2 1851 1852 +2 1851 1852 +2 1851 1852 +2 1851 1852 +1 1851 +1 1851 +1 1851 +1 1851 +1 1851 +1 1851 +1 1853 +1 1853 +1 1853 +1 1853 +1 1853 +1 1853 +2 1853 1854 +2 1853 1854 +2 1853 1854 +2 1853 1854 +2 1853 1854 +2 1853 1854 +1 1854 +1 1854 +1 1854 +1 1854 +1 1854 +1 1854 +2 1854 1855 +2 1854 1855 +2 1854 1855 +2 1854 1855 +2 1854 1855 +2 1854 1855 +1 1855 +1 1855 +1 1855 +1 1855 +1 1855 +1 1855 +2 1855 1857 +2 1855 1857 +2 1855 1857 +2 1855 1857 +2 1855 1857 +2 1855 1857 +2 1856 1879 +2 1856 1879 +2 1856 1879 +2 1856 1879 +2 1856 1879 +2 1856 1879 +2 1856 1879 +2 1856 1879 +2 1856 1879 +2 1856 1879 +2 1856 1879 +2 1856 1879 +2 1856 1879 +2 1856 1879 +2 1856 1879 +2 1856 1879 +2 1856 1879 +2 1856 1879 +1 1856 +1 1856 +1 1856 +1 1856 +1 1856 +1 1856 +2 1856 1857 +2 1856 1857 +2 1856 1857 +2 1856 1857 +2 1856 1857 +2 1856 1857 +1 1856 +1 1856 +1 1856 +1 1856 +1 1856 +1 1856 +1 1858 +1 1858 +1 1858 +1 1858 +1 1858 +1 1858 +2 1858 1859 +2 1858 1859 +2 1858 1859 +2 1858 1859 +2 1858 1859 +2 1858 1859 +1 1859 +1 1859 +1 1859 +1 1859 +1 1859 +1 1859 +2 1859 1860 +2 1859 1860 +2 1859 1860 +2 1859 1860 +2 1859 1860 +2 1859 1860 +1 1860 +1 1860 +1 1860 +1 1860 +1 1860 +1 1860 +2 1860 1862 +2 1860 1862 +2 1860 1862 +2 1860 1862 +2 1860 1862 +2 1860 1862 +2 1861 1874 +2 1861 1874 +2 1861 1874 +2 1861 1874 +2 1861 1874 +2 1861 1874 +2 1861 1874 +2 1861 1874 +2 1861 1874 +2 1861 1874 +2 1861 1874 +2 1861 1874 +2 1861 1862 +2 1861 1862 +2 1861 1862 +2 1861 1862 +2 1861 1862 +2 1861 1862 +1 1861 +1 1861 +1 1861 +1 1861 +1 1861 +1 1861 +1 1863 +1 1863 +1 1863 +1 1863 +1 1863 +1 1863 +2 1863 1864 +2 1863 1864 +2 1863 1864 +2 1863 1864 +2 1863 1864 +2 1863 1864 +1 1864 +1 1864 +1 1864 +1 1864 +1 1864 +1 1864 +2 1864 1865 +2 1864 1865 +2 1864 1865 +2 1864 1865 +2 1864 1865 +2 1864 1865 +1 1865 +1 1865 +1 1865 +1 1865 +1 1865 +1 1865 +2 1865 1867 +2 1865 1867 +2 1865 1867 +2 1865 1867 +2 1865 1867 +2 1865 1867 +2 1866 1869 +2 1866 1869 +2 1866 1869 +2 1866 1869 +2 1866 1869 +2 1866 1869 +2 1866 1867 +2 1866 1867 +2 1866 1867 +2 1866 1867 +2 1866 1867 +2 1866 1867 +1 1866 +1 1866 +1 1866 +1 1866 +1 1866 +1 1866 +12 1868 1870 1900 1907 1908 2001 2002 2281 2360 2361 3109 3111 +12 1868 1870 1900 1907 1908 2001 2002 2281 2360 2361 3109 3111 +12 1868 1870 1900 1907 1908 2001 2002 2281 2360 2361 3109 3111 +12 1868 1870 1900 1907 1908 2001 2002 2281 2360 2361 3109 3111 +12 1868 1870 1900 1907 1908 2001 2002 2281 2360 2361 3109 3111 +12 1868 1870 1900 1907 1908 2001 2002 2281 2360 2361 3109 3111 +4 1868 2001 2360 3109 +4 1868 2001 2360 3109 +4 1868 2001 2360 3109 +4 1868 2001 2360 3109 +4 1868 2001 2360 3109 +4 1868 2001 2360 3109 +11 1868 1869 1964 2000 2001 2273 2274 2359 2360 3108 3109 +11 1868 1869 1964 2000 2001 2273 2274 2359 2360 3108 3109 +11 1868 1869 1964 2000 2001 2273 2274 2359 2360 3108 3109 +11 1868 1869 1964 2000 2001 2273 2274 2359 2360 3108 3109 +11 1868 1869 1964 2000 2001 2273 2274 2359 2360 3108 3109 +11 1868 1869 1964 2000 2001 2273 2274 2359 2360 3108 3109 +2 1868 1870 +2 1868 1870 +2 1868 1870 +2 1868 1870 +2 1868 1870 +2 1868 1870 +2 1868 1869 +2 1868 1869 +2 1868 1869 +2 1868 1869 +2 1868 1869 +2 1868 1869 +3 1869 1964 2274 +3 1869 1964 2274 +3 1869 1964 2274 +3 1869 1964 2274 +3 1869 1964 2274 +3 1869 1964 2274 +1 1869 +1 1869 +1 1869 +1 1869 +1 1869 +1 1869 +13 1870 1871 1900 1901 1915 1916 2002 2003 2287 2361 2362 3111 3113 +13 1870 1871 1900 1901 1915 1916 2002 2003 2287 2361 2362 3111 3113 +13 1870 1871 1900 1901 1915 1916 2002 2003 2287 2361 2362 3111 3113 +13 1870 1871 1900 1901 1915 1916 2002 2003 2287 2361 2362 3111 3113 +13 1870 1871 1900 1901 1915 1916 2002 2003 2287 2361 2362 3111 3113 +13 1870 1871 1900 1901 1915 1916 2002 2003 2287 2361 2362 3111 3113 +5 1870 1900 2002 2361 3111 +5 1870 1900 2002 2361 3111 +5 1870 1900 2002 2361 3111 +5 1870 1900 2002 2361 3111 +5 1870 1900 2002 2361 3111 +5 1870 1900 2002 2361 3111 +2 1870 1871 +2 1870 1871 +2 1870 1871 +2 1870 1871 +2 1870 1871 +2 1870 1871 +1 1870 +1 1870 +1 1870 +1 1870 +1 1870 +1 1870 +12 1871 1872 1901 1924 1927 2003 2004 2293 2362 2363 3113 3114 +12 1871 1872 1901 1924 1927 2003 2004 2293 2362 2363 3113 3114 +12 1871 1872 1901 1924 1927 2003 2004 2293 2362 2363 3113 3114 +12 1871 1872 1901 1924 1927 2003 2004 2293 2362 2363 3113 3114 +12 1871 1872 1901 1924 1927 2003 2004 2293 2362 2363 3113 3114 +12 1871 1872 1901 1924 1927 2003 2004 2293 2362 2363 3113 3114 +5 1871 1901 2003 2362 3113 +5 1871 1901 2003 2362 3113 +5 1871 1901 2003 2362 3113 +5 1871 1901 2003 2362 3113 +5 1871 1901 2003 2362 3113 +5 1871 1901 2003 2362 3113 +2 1871 1872 +2 1871 1872 +2 1871 1872 +2 1871 1872 +2 1871 1872 +2 1871 1872 +1 1871 +1 1871 +1 1871 +1 1871 +1 1871 +1 1871 +9 1872 2004 2005 2299 2363 2364 3114 3116 3118 +9 1872 2004 2005 2299 2363 2364 3114 3116 3118 +9 1872 2004 2005 2299 2363 2364 3114 3116 3118 +9 1872 2004 2005 2299 2363 2364 3114 3116 3118 +9 1872 2004 2005 2299 2363 2364 3114 3116 3118 +9 1872 2004 2005 2299 2363 2364 3114 3116 3118 +4 1872 2004 2363 3114 +4 1872 2004 2363 3114 +4 1872 2004 2363 3114 +4 1872 2004 2363 3114 +4 1872 2004 2363 3114 +4 1872 2004 2363 3114 +2 1872 3118 +2 1872 3118 +2 1872 3118 +2 1872 3118 +2 1872 3118 +2 1872 3118 +1 1872 +1 1872 +1 1872 +1 1872 +1 1872 +1 1872 +10 1873 1875 2281 2282 2360 2361 2403 2404 3051 3053 +10 1873 1875 2281 2282 2360 2361 2403 2404 3051 3053 +10 1873 1875 2281 2282 2360 2361 2403 2404 3051 3053 +10 1873 1875 2281 2282 2360 2361 2403 2404 3051 3053 +10 1873 1875 2281 2282 2360 2361 2403 2404 3051 3053 +10 1873 1875 2281 2282 2360 2361 2403 2404 3051 3053 +4 1873 2360 2403 3051 +4 1873 2360 2403 3051 +4 1873 2360 2403 3051 +4 1873 2360 2403 3051 +4 1873 2360 2403 3051 +4 1873 2360 2403 3051 +11 1873 1874 2273 2274 2275 2359 2360 2402 2403 3050 3051 +11 1873 1874 2273 2274 2275 2359 2360 2402 2403 3050 3051 +11 1873 1874 2273 2274 2275 2359 2360 2402 2403 3050 3051 +11 1873 1874 2273 2274 2275 2359 2360 2402 2403 3050 3051 +11 1873 1874 2273 2274 2275 2359 2360 2402 2403 3050 3051 +11 1873 1874 2273 2274 2275 2359 2360 2402 2403 3050 3051 +2 1873 1875 +2 1873 1875 +2 1873 1875 +2 1873 1875 +2 1873 1875 +2 1873 1875 +2 1873 1874 +2 1873 1874 +2 1873 1874 +2 1873 1874 +2 1873 1874 +2 1873 1874 +2 1874 2274 +2 1874 2274 +2 1874 2274 +2 1874 2274 +2 1874 2274 +2 1874 2274 +1 1874 +1 1874 +1 1874 +1 1874 +1 1874 +1 1874 +10 1875 1876 2287 2288 2361 2362 2404 2405 3053 3055 +10 1875 1876 2287 2288 2361 2362 2404 2405 3053 3055 +10 1875 1876 2287 2288 2361 2362 2404 2405 3053 3055 +10 1875 1876 2287 2288 2361 2362 2404 2405 3053 3055 +10 1875 1876 2287 2288 2361 2362 2404 2405 3053 3055 +10 1875 1876 2287 2288 2361 2362 2404 2405 3053 3055 +4 1875 2361 2404 3053 +4 1875 2361 2404 3053 +4 1875 2361 2404 3053 +4 1875 2361 2404 3053 +4 1875 2361 2404 3053 +4 1875 2361 2404 3053 +2 1875 1876 +2 1875 1876 +2 1875 1876 +2 1875 1876 +2 1875 1876 +2 1875 1876 +1 1875 +1 1875 +1 1875 +1 1875 +1 1875 +1 1875 +10 1876 1877 2293 2294 2362 2363 2405 2406 3055 3056 +10 1876 1877 2293 2294 2362 2363 2405 2406 3055 3056 +10 1876 1877 2293 2294 2362 2363 2405 2406 3055 3056 +10 1876 1877 2293 2294 2362 2363 2405 2406 3055 3056 +10 1876 1877 2293 2294 2362 2363 2405 2406 3055 3056 +10 1876 1877 2293 2294 2362 2363 2405 2406 3055 3056 +4 1876 2362 2405 3055 +4 1876 2362 2405 3055 +4 1876 2362 2405 3055 +4 1876 2362 2405 3055 +4 1876 2362 2405 3055 +4 1876 2362 2405 3055 +2 1876 1877 +2 1876 1877 +2 1876 1877 +2 1876 1877 +2 1876 1877 +2 1876 1877 +1 1876 +1 1876 +1 1876 +1 1876 +1 1876 +1 1876 +10 1877 2299 2300 2363 2364 2406 2407 3056 3058 3060 +10 1877 2299 2300 2363 2364 2406 2407 3056 3058 3060 +10 1877 2299 2300 2363 2364 2406 2407 3056 3058 3060 +10 1877 2299 2300 2363 2364 2406 2407 3056 3058 3060 +10 1877 2299 2300 2363 2364 2406 2407 3056 3058 3060 +10 1877 2299 2300 2363 2364 2406 2407 3056 3058 3060 +4 1877 2363 2406 3056 +4 1877 2363 2406 3056 +4 1877 2363 2406 3056 +4 1877 2363 2406 3056 +4 1877 2363 2406 3056 +4 1877 2363 2406 3056 +2 1877 3060 +2 1877 3060 +2 1877 3060 +2 1877 3060 +2 1877 3060 +2 1877 3060 +1 1877 +1 1877 +1 1877 +1 1877 +1 1877 +1 1877 +10 1878 1880 2282 2283 2403 2404 2446 2447 2993 2995 +10 1878 1880 2282 2283 2403 2404 2446 2447 2993 2995 +10 1878 1880 2282 2283 2403 2404 2446 2447 2993 2995 +10 1878 1880 2282 2283 2403 2404 2446 2447 2993 2995 +10 1878 1880 2282 2283 2403 2404 2446 2447 2993 2995 +10 1878 1880 2282 2283 2403 2404 2446 2447 2993 2995 +4 1878 2403 2446 2993 +4 1878 2403 2446 2993 +4 1878 2403 2446 2993 +4 1878 2403 2446 2993 +4 1878 2403 2446 2993 +4 1878 2403 2446 2993 +10 1878 1879 2275 2276 2402 2403 2445 2446 2992 2993 +10 1878 1879 2275 2276 2402 2403 2445 2446 2992 2993 +10 1878 1879 2275 2276 2402 2403 2445 2446 2992 2993 +10 1878 1879 2275 2276 2402 2403 2445 2446 2992 2993 +10 1878 1879 2275 2276 2402 2403 2445 2446 2992 2993 +10 1878 1879 2275 2276 2402 2403 2445 2446 2992 2993 +2 1878 1880 +2 1878 1880 +2 1878 1880 +2 1878 1880 +2 1878 1880 +2 1878 1880 +2 1878 1879 +2 1878 1879 +2 1878 1879 +2 1878 1879 +2 1878 1879 +2 1878 1879 +1 1879 +1 1879 +1 1879 +1 1879 +1 1879 +1 1879 +1 1879 +1 1879 +1 1879 +1 1879 +1 1879 +1 1879 +10 1880 1881 2288 2289 2404 2405 2447 2448 2995 2997 +10 1880 1881 2288 2289 2404 2405 2447 2448 2995 2997 +10 1880 1881 2288 2289 2404 2405 2447 2448 2995 2997 +10 1880 1881 2288 2289 2404 2405 2447 2448 2995 2997 +10 1880 1881 2288 2289 2404 2405 2447 2448 2995 2997 +10 1880 1881 2288 2289 2404 2405 2447 2448 2995 2997 +4 1880 2404 2447 2995 +4 1880 2404 2447 2995 +4 1880 2404 2447 2995 +4 1880 2404 2447 2995 +4 1880 2404 2447 2995 +4 1880 2404 2447 2995 +2 1880 1881 +2 1880 1881 +2 1880 1881 +2 1880 1881 +2 1880 1881 +2 1880 1881 +1 1880 +1 1880 +1 1880 +1 1880 +1 1880 +1 1880 +10 1881 1882 2294 2295 2405 2406 2448 2449 2997 2998 +10 1881 1882 2294 2295 2405 2406 2448 2449 2997 2998 +10 1881 1882 2294 2295 2405 2406 2448 2449 2997 2998 +10 1881 1882 2294 2295 2405 2406 2448 2449 2997 2998 +10 1881 1882 2294 2295 2405 2406 2448 2449 2997 2998 +10 1881 1882 2294 2295 2405 2406 2448 2449 2997 2998 +4 1881 2405 2448 2997 +4 1881 2405 2448 2997 +4 1881 2405 2448 2997 +4 1881 2405 2448 2997 +4 1881 2405 2448 2997 +4 1881 2405 2448 2997 +2 1881 1882 +2 1881 1882 +2 1881 1882 +2 1881 1882 +2 1881 1882 +2 1881 1882 +1 1881 +1 1881 +1 1881 +1 1881 +1 1881 +1 1881 +10 1882 2300 2301 2406 2407 2449 2450 2998 3000 3002 +10 1882 2300 2301 2406 2407 2449 2450 2998 3000 3002 +10 1882 2300 2301 2406 2407 2449 2450 2998 3000 3002 +10 1882 2300 2301 2406 2407 2449 2450 2998 3000 3002 +10 1882 2300 2301 2406 2407 2449 2450 2998 3000 3002 +10 1882 2300 2301 2406 2407 2449 2450 2998 3000 3002 +4 1882 2406 2449 2998 +4 1882 2406 2449 2998 +4 1882 2406 2449 2998 +4 1882 2406 2449 2998 +4 1882 2406 2449 2998 +4 1882 2406 2449 2998 +2 1882 3002 +2 1882 3002 +2 1882 3002 +2 1882 3002 +2 1882 3002 +2 1882 3002 +1 1882 +1 1882 +1 1882 +1 1882 +1 1882 +1 1882 +10 1883 1885 2283 2284 2446 2447 2489 2490 2945 2947 +10 1883 1885 2283 2284 2446 2447 2489 2490 2945 2947 +10 1883 1885 2283 2284 2446 2447 2489 2490 2945 2947 +10 1883 1885 2283 2284 2446 2447 2489 2490 2945 2947 +10 1883 1885 2283 2284 2446 2447 2489 2490 2945 2947 +10 1883 1885 2283 2284 2446 2447 2489 2490 2945 2947 +4 1883 2446 2489 2945 +4 1883 2446 2489 2945 +4 1883 2446 2489 2945 +4 1883 2446 2489 2945 +4 1883 2446 2489 2945 +4 1883 2446 2489 2945 +11 1883 1884 2276 2277 2278 2445 2446 2488 2489 2944 2945 +11 1883 1884 2276 2277 2278 2445 2446 2488 2489 2944 2945 +11 1883 1884 2276 2277 2278 2445 2446 2488 2489 2944 2945 +11 1883 1884 2276 2277 2278 2445 2446 2488 2489 2944 2945 +11 1883 1884 2276 2277 2278 2445 2446 2488 2489 2944 2945 +11 1883 1884 2276 2277 2278 2445 2446 2488 2489 2944 2945 +2 1883 1885 +2 1883 1885 +2 1883 1885 +2 1883 1885 +2 1883 1885 +2 1883 1885 +2 1883 1884 +2 1883 1884 +2 1883 1884 +2 1883 1884 +2 1883 1884 +2 1883 1884 +2 1884 2278 +2 1884 2278 +2 1884 2278 +2 1884 2278 +2 1884 2278 +2 1884 2278 +1 1884 +1 1884 +1 1884 +1 1884 +1 1884 +1 1884 +10 1885 1886 2289 2290 2447 2448 2490 2491 2947 2949 +10 1885 1886 2289 2290 2447 2448 2490 2491 2947 2949 +10 1885 1886 2289 2290 2447 2448 2490 2491 2947 2949 +10 1885 1886 2289 2290 2447 2448 2490 2491 2947 2949 +10 1885 1886 2289 2290 2447 2448 2490 2491 2947 2949 +10 1885 1886 2289 2290 2447 2448 2490 2491 2947 2949 +4 1885 2447 2490 2947 +4 1885 2447 2490 2947 +4 1885 2447 2490 2947 +4 1885 2447 2490 2947 +4 1885 2447 2490 2947 +4 1885 2447 2490 2947 +2 1885 1886 +2 1885 1886 +2 1885 1886 +2 1885 1886 +2 1885 1886 +2 1885 1886 +1 1885 +1 1885 +1 1885 +1 1885 +1 1885 +1 1885 +10 1886 1887 2295 2296 2448 2449 2491 2492 2949 2950 +10 1886 1887 2295 2296 2448 2449 2491 2492 2949 2950 +10 1886 1887 2295 2296 2448 2449 2491 2492 2949 2950 +10 1886 1887 2295 2296 2448 2449 2491 2492 2949 2950 +10 1886 1887 2295 2296 2448 2449 2491 2492 2949 2950 +10 1886 1887 2295 2296 2448 2449 2491 2492 2949 2950 +4 1886 2448 2491 2949 +4 1886 2448 2491 2949 +4 1886 2448 2491 2949 +4 1886 2448 2491 2949 +4 1886 2448 2491 2949 +4 1886 2448 2491 2949 +2 1886 1887 +2 1886 1887 +2 1886 1887 +2 1886 1887 +2 1886 1887 +2 1886 1887 +1 1886 +1 1886 +1 1886 +1 1886 +1 1886 +1 1886 +10 1887 2301 2302 2449 2450 2492 2493 2950 2952 2954 +10 1887 2301 2302 2449 2450 2492 2493 2950 2952 2954 +10 1887 2301 2302 2449 2450 2492 2493 2950 2952 2954 +10 1887 2301 2302 2449 2450 2492 2493 2950 2952 2954 +10 1887 2301 2302 2449 2450 2492 2493 2950 2952 2954 +10 1887 2301 2302 2449 2450 2492 2493 2950 2952 2954 +4 1887 2449 2492 2950 +4 1887 2449 2492 2950 +4 1887 2449 2492 2950 +4 1887 2449 2492 2950 +4 1887 2449 2492 2950 +4 1887 2449 2492 2950 +2 1887 2954 +2 1887 2954 +2 1887 2954 +2 1887 2954 +2 1887 2954 +2 1887 2954 +1 1887 +1 1887 +1 1887 +1 1887 +1 1887 +1 1887 +5 1888 1890 1922 1927 1939 +5 1888 1890 1922 1927 1939 +5 1888 1890 1922 1927 1939 +2 1888 1922 +2 1888 1922 +2 1888 1922 +3 1888 1922 1935 +3 1888 1922 1935 +3 1888 1922 1935 +2 1888 1935 +2 1888 1935 +2 1888 1935 +3 1888 1913 1935 +3 1888 1913 1935 +3 1888 1913 1935 +7 1888 1889 1890 1913 1915 1937 1939 +7 1888 1889 1890 1913 1915 1937 1939 +7 1888 1889 1890 1913 1915 1937 1939 +2 1888 1913 +2 1888 1913 +2 1888 1913 +3 1888 1890 1939 +3 1888 1890 1939 +3 1888 1890 1939 +8 1889 1890 1915 2287 2577 2578 3111 3113 +8 1889 1890 1915 2287 2577 2578 3111 3113 +8 1889 1890 1915 2287 2577 2578 3111 3113 +8 1889 1890 1915 2287 2577 2578 3111 3113 +8 1889 1890 1915 2287 2577 2578 3111 3113 +8 1889 1890 1915 2287 2577 2578 3111 3113 +3 1889 1890 1915 +3 1889 1890 1915 +3 1889 1890 1915 +3 1889 1890 1915 +3 1889 1890 1915 +3 1889 1890 1915 +2 1889 1937 +2 1889 1937 +2 1889 1937 +2 1889 1937 +2 1889 1937 +2 1889 1937 +3 1889 1907 1937 +3 1889 1907 1937 +3 1889 1907 1937 +3 1889 1907 1937 +3 1889 1907 1937 +3 1889 1907 1937 +7 1889 1907 2281 2576 2577 3109 3111 +7 1889 1907 2281 2576 2577 3109 3111 +7 1889 1907 2281 2576 2577 3109 3111 +7 1889 1907 2281 2576 2577 3109 3111 +7 1889 1907 2281 2576 2577 3109 3111 +7 1889 1907 2281 2576 2577 3109 3111 +2 1889 1907 +2 1889 1907 +2 1889 1907 +2 1889 1907 +2 1889 1907 +2 1889 1907 +3 1889 2577 3111 +3 1889 2577 3111 +3 1889 2577 3111 +3 1889 2577 3111 +3 1889 2577 3111 +3 1889 2577 3111 +7 1890 1927 2293 2578 2579 3113 3114 +7 1890 1927 2293 2578 2579 3113 3114 +7 1890 1927 2293 2578 2579 3113 3114 +7 1890 1927 2293 2578 2579 3113 3114 +7 1890 1927 2293 2578 2579 3113 3114 +7 1890 1927 2293 2578 2579 3113 3114 +2 1890 1927 +2 1890 1927 +2 1890 1927 +2 1890 1927 +2 1890 1927 +2 1890 1927 +3 1890 2578 3113 +3 1890 2578 3113 +3 1890 2578 3113 +3 1890 2578 3113 +3 1890 2578 3113 +3 1890 2578 3113 +9 1891 1892 1893 1909 1910 1918 1925 1926 1928 +9 1891 1892 1893 1909 1910 1918 1925 1926 1928 +9 1891 1892 1893 1909 1910 1918 1925 1926 1928 +2 1891 1909 +2 1891 1909 +2 1891 1909 +3 1891 1909 1923 +3 1891 1909 1923 +3 1891 1909 1923 +2 1891 1923 +2 1891 1923 +2 1891 1923 +3 1891 1902 1923 +3 1891 1902 1923 +3 1891 1902 1923 +7 1891 1892 1902 1903 1917 1925 1926 +7 1891 1892 1902 1903 1917 1925 1926 +7 1891 1892 1902 1903 1917 1925 1926 +2 1891 1902 +2 1891 1902 +2 1891 1902 +4 1891 1892 1925 1926 +4 1891 1892 1925 1926 +4 1891 1892 1925 1926 +4 1892 1893 1910 1918 +4 1892 1893 1910 1918 +4 1892 1893 1910 1918 +9 1892 1893 1894 1895 1910 1911 1918 1929 1930 +9 1892 1893 1894 1895 1910 1911 1918 1929 1930 +9 1892 1893 1894 1895 1910 1911 1918 1929 1930 +3 1892 1903 1917 +3 1892 1903 1917 +3 1892 1903 1917 +6 1892 1894 1903 1904 1917 1929 +6 1892 1894 1903 1904 1917 1929 +6 1892 1894 1903 1904 1917 1929 +3 1892 1894 1929 +3 1892 1894 1929 +3 1892 1894 1929 +5 1893 1895 1919 1920 1930 +5 1893 1895 1919 1920 1930 +5 1893 1895 1919 1920 1930 +2 1893 1919 +2 1893 1919 +2 1893 1919 +3 1893 1919 1928 +3 1893 1919 1928 +3 1893 1919 1928 +2 1893 1928 +2 1893 1928 +2 1893 1928 +3 1893 1895 1930 +3 1893 1895 1930 +3 1893 1895 1930 +8 1894 1895 1896 1897 1911 1912 1931 1932 +8 1894 1895 1896 1897 1911 1912 1931 1932 +8 1894 1895 1896 1897 1911 1912 1931 1932 +3 1894 1895 1911 +3 1894 1895 1911 +3 1894 1895 1911 +5 1894 1896 1904 1905 1931 +5 1894 1896 1904 1905 1931 +5 1894 1896 1904 1905 1931 +2 1894 1904 +2 1894 1904 +2 1894 1904 +3 1894 1896 1931 +3 1894 1896 1931 +3 1894 1896 1931 +5 1895 1897 1920 1921 1932 +5 1895 1897 1920 1921 1932 +5 1895 1897 1920 1921 1932 +2 1895 1920 +2 1895 1920 +2 1895 1920 +3 1895 1897 1932 +3 1895 1897 1932 +3 1895 1897 1932 +10 1896 1897 1898 1899 1912 1913 1914 1934 1935 1936 +10 1896 1897 1898 1899 1912 1913 1914 1934 1935 1936 +10 1896 1897 1898 1899 1912 1913 1914 1934 1935 1936 +3 1896 1897 1912 +3 1896 1897 1912 +3 1896 1897 1912 +5 1896 1898 1905 1906 1934 +5 1896 1898 1905 1906 1934 +5 1896 1898 1905 1906 1934 +2 1896 1905 +2 1896 1905 +2 1896 1905 +3 1896 1898 1934 +3 1896 1898 1934 +3 1896 1898 1934 +7 1897 1899 1921 1922 1933 1935 1936 +7 1897 1899 1921 1922 1933 1935 1936 +7 1897 1899 1921 1922 1933 1935 1936 +2 1897 1921 +2 1897 1921 +2 1897 1921 +4 1897 1899 1935 1936 +4 1897 1899 1935 1936 +4 1897 1899 1935 1936 +12 1898 1899 1900 1901 1913 1914 1915 1916 1937 1938 1939 1940 +12 1898 1899 1900 1901 1913 1914 1915 1916 1937 1938 1939 1940 +12 1898 1899 1900 1901 1913 1914 1915 1916 1937 1938 1939 1940 +4 1898 1899 1913 1914 +4 1898 1899 1913 1914 +4 1898 1899 1913 1914 +7 1898 1900 1906 1907 1908 1937 1938 +7 1898 1900 1906 1907 1908 1937 1938 +7 1898 1900 1906 1907 1908 1937 1938 +2 1898 1906 +2 1898 1906 +2 1898 1906 +4 1898 1900 1937 1938 +4 1898 1900 1937 1938 +4 1898 1900 1937 1938 +8 1899 1901 1922 1924 1927 1933 1939 1940 +8 1899 1901 1922 1924 1927 1933 1939 1940 +8 1899 1901 1922 1924 1927 1933 1939 1940 +3 1899 1922 1933 +3 1899 1922 1933 +3 1899 1922 1933 +4 1899 1901 1939 1940 +4 1899 1901 1939 1940 +4 1899 1901 1939 1940 +4 1900 1901 1915 1916 +4 1900 1901 1915 1916 +4 1900 1901 1915 1916 +4 1900 1901 1915 1916 +4 1900 1901 1915 1916 +4 1900 1901 1915 1916 +3 1900 1907 1908 +3 1900 1907 1908 +3 1900 1907 1908 +3 1900 1907 1908 +3 1900 1907 1908 +3 1900 1907 1908 +3 1901 1924 1927 +3 1901 1924 1927 +3 1901 1924 1927 +3 1901 1924 1927 +3 1901 1924 1927 +3 1901 1924 1927 +3 1902 1903 1926 +3 1902 1903 1926 +3 1902 1903 1926 +3 1902 1903 1926 +3 1902 1903 1926 +3 1902 1903 1926 +2 1902 1923 +2 1902 1923 +2 1902 1923 +2 1902 1923 +2 1902 1923 +2 1902 1923 +3 1903 1904 1929 +3 1903 1904 1929 +3 1903 1904 1929 +3 1903 1904 1929 +3 1903 1904 1929 +3 1903 1904 1929 +3 1904 1905 1931 +3 1904 1905 1931 +3 1904 1905 1931 +3 1904 1905 1931 +3 1904 1905 1931 +3 1904 1905 1931 +3 1905 1906 1934 +3 1905 1906 1934 +3 1905 1906 1934 +3 1905 1906 1934 +3 1905 1906 1934 +3 1905 1906 1934 +3 1906 1908 1938 +3 1906 1908 1938 +3 1906 1908 1938 +3 1906 1908 1938 +3 1906 1908 1938 +3 1906 1908 1938 +4 1907 2281 3109 3111 +4 1907 2281 3109 3111 +4 1907 2281 3109 3111 +4 1907 2281 3109 3111 +4 1907 2281 3109 3111 +4 1907 2281 3109 3111 +2 1907 1937 +2 1907 1937 +2 1907 1937 +2 1907 1937 +2 1907 1937 +2 1907 1937 +1 1908 +1 1908 +1 1908 +1 1908 +1 1908 +1 1908 +4 1909 1910 1926 1928 +4 1909 1910 1926 1928 +4 1909 1910 1926 1928 +4 1909 1910 1926 1928 +4 1909 1910 1926 1928 +4 1909 1910 1926 1928 +2 1909 1923 +2 1909 1923 +2 1909 1923 +2 1909 1923 +2 1909 1923 +2 1909 1923 +4 1910 1911 1929 1930 +4 1910 1911 1929 1930 +4 1910 1911 1929 1930 +4 1910 1911 1929 1930 +4 1910 1911 1929 1930 +4 1910 1911 1929 1930 +4 1911 1912 1931 1932 +4 1911 1912 1931 1932 +4 1911 1912 1931 1932 +4 1911 1912 1931 1932 +4 1911 1912 1931 1932 +4 1911 1912 1931 1932 +4 1912 1914 1934 1936 +4 1912 1914 1934 1936 +4 1912 1914 1934 1936 +4 1912 1914 1934 1936 +4 1912 1914 1934 1936 +4 1912 1914 1934 1936 +4 1913 1915 1937 1939 +4 1913 1915 1937 1939 +4 1913 1915 1937 1939 +4 1913 1915 1937 1939 +4 1913 1915 1937 1939 +4 1913 1915 1937 1939 +2 1913 1935 +2 1913 1935 +2 1913 1935 +2 1913 1935 +2 1913 1935 +2 1913 1935 +4 1914 1916 1938 1940 +4 1914 1916 1938 1940 +4 1914 1916 1938 1940 +4 1914 1916 1938 1940 +4 1914 1916 1938 1940 +4 1914 1916 1938 1940 +4 1915 2287 3111 3113 +4 1915 2287 3111 3113 +4 1915 2287 3111 3113 +4 1915 2287 3111 3113 +4 1915 2287 3111 3113 +4 1915 2287 3111 3113 +1 1916 +1 1916 +1 1916 +1 1916 +1 1916 +1 1916 +1 1917 +1 1917 +1 1917 +1 1917 +1 1917 +1 1917 +2 1917 1925 +2 1917 1925 +2 1917 1925 +2 1917 1925 +2 1917 1925 +2 1917 1925 +2 1917 1925 +2 1917 1925 +2 1917 1925 +2 1917 1925 +2 1917 1925 +2 1917 1925 +1 1918 +1 1918 +1 1918 +1 1918 +1 1918 +1 1918 +2 1918 1925 +2 1918 1925 +2 1918 1925 +2 1918 1925 +2 1918 1925 +2 1918 1925 +2 1918 1925 +2 1918 1925 +2 1918 1925 +2 1918 1925 +2 1918 1925 +2 1918 1925 +3 1919 1920 1930 +3 1919 1920 1930 +3 1919 1920 1930 +3 1919 1920 1930 +3 1919 1920 1930 +3 1919 1920 1930 +2 1919 1928 +2 1919 1928 +2 1919 1928 +2 1919 1928 +2 1919 1928 +2 1919 1928 +3 1920 1921 1932 +3 1920 1921 1932 +3 1920 1921 1932 +3 1920 1921 1932 +3 1920 1921 1932 +3 1920 1921 1932 +3 1921 1933 1936 +3 1921 1933 1936 +3 1921 1933 1936 +3 1921 1933 1936 +3 1921 1933 1936 +3 1921 1933 1936 +3 1922 1927 1939 +3 1922 1927 1939 +3 1922 1927 1939 +3 1922 1927 1939 +3 1922 1927 1939 +3 1922 1927 1939 +2 1922 1935 +2 1922 1935 +2 1922 1935 +2 1922 1935 +2 1922 1935 +2 1922 1935 +1 1924 +1 1924 +1 1924 +1 1924 +1 1924 +1 1924 +3 1924 1933 1940 +3 1924 1933 1940 +3 1924 1933 1940 +3 1924 1933 1940 +3 1924 1933 1940 +3 1924 1933 1940 +1 1925 +1 1925 +1 1925 +1 1925 +1 1925 +1 1925 +4 1927 2293 3113 3114 +4 1927 2293 3113 3114 +4 1927 2293 3113 3114 +4 1927 2293 3113 3114 +4 1927 2293 3113 3114 +4 1927 2293 3113 3114 +4 1941 3309 3311 3419 +4 1941 3309 3311 3419 +4 1941 3309 3311 3419 +4 1941 3309 3311 3419 +4 1941 3309 3311 3419 +4 1941 3309 3311 3419 +12 1941 1966 2325 3063 3308 3309 3310 3311 3321 3325 3418 3419 +12 1941 1966 2325 3063 3308 3309 3310 3311 3321 3325 3418 3419 +12 1941 1966 2325 3063 3308 3309 3310 3311 3321 3325 3418 3419 +12 1941 1966 2325 3063 3308 3309 3310 3311 3321 3325 3418 3419 +12 1941 1966 2325 3063 3308 3309 3310 3311 3321 3325 3418 3419 +12 1941 1966 2325 3063 3308 3309 3310 3311 3321 3325 3418 3419 +2 1941 1966 +2 1941 1966 +2 1941 1966 +2 1941 1966 +2 1941 1966 +2 1941 1966 +1 1941 +1 1941 +1 1941 +1 1941 +1 1941 +1 1941 +3 1942 2016 3066 +3 1942 2016 3066 +3 1942 2016 3066 +3 1942 2016 3066 +3 1942 2016 3066 +3 1942 2016 3066 +10 1942 1967 1968 2015 2016 2326 2327 3064 3065 3066 +10 1942 1967 1968 2015 2016 2326 2327 3064 3065 3066 +10 1942 1967 1968 2015 2016 2326 2327 3064 3065 3066 +10 1942 1967 1968 2015 2016 2326 2327 3064 3065 3066 +10 1942 1967 1968 2015 2016 2326 2327 3064 3065 3066 +10 1942 1967 1968 2015 2016 2326 2327 3064 3065 3066 +3 1942 1967 1968 +3 1942 1967 1968 +3 1942 1967 1968 +3 1942 1967 1968 +3 1942 1967 1968 +3 1942 1967 1968 +2 1942 2762 +2 1942 2762 +2 1942 2762 +2 1942 2762 +2 1942 2762 +2 1942 2762 +3 1943 2026 3066 +3 1943 2026 3066 +3 1943 2026 3066 +3 1943 2026 3066 +3 1943 2026 3066 +3 1943 2026 3066 +10 1943 1968 1969 2025 2026 2327 2328 3065 3066 3067 +10 1943 1968 1969 2025 2026 2327 2328 3065 3066 3067 +10 1943 1968 1969 2025 2026 2327 2328 3065 3066 3067 +10 1943 1968 1969 2025 2026 2327 2328 3065 3066 3067 +10 1943 1968 1969 2025 2026 2327 2328 3065 3066 3067 +10 1943 1968 1969 2025 2026 2327 2328 3065 3066 3067 +3 1943 1968 1969 +3 1943 1968 1969 +3 1943 1968 1969 +3 1943 1968 1969 +3 1943 1968 1969 +3 1943 1968 1969 +2 1943 2762 +2 1943 2762 +2 1943 2762 +2 1943 2762 +2 1943 2762 +2 1943 2762 +3 1944 2042 3070 +3 1944 2042 3070 +3 1944 2042 3070 +3 1944 2042 3070 +3 1944 2042 3070 +3 1944 2042 3070 +10 1944 1970 1971 2041 2042 2329 2330 3068 3069 3070 +10 1944 1970 1971 2041 2042 2329 2330 3068 3069 3070 +10 1944 1970 1971 2041 2042 2329 2330 3068 3069 3070 +10 1944 1970 1971 2041 2042 2329 2330 3068 3069 3070 +10 1944 1970 1971 2041 2042 2329 2330 3068 3069 3070 +10 1944 1970 1971 2041 2042 2329 2330 3068 3069 3070 +3 1944 1970 1971 +3 1944 1970 1971 +3 1944 1970 1971 +3 1944 1970 1971 +3 1944 1970 1971 +3 1944 1970 1971 +2 1944 2763 +2 1944 2763 +2 1944 2763 +2 1944 2763 +2 1944 2763 +2 1944 2763 +3 1945 2050 3070 +3 1945 2050 3070 +3 1945 2050 3070 +3 1945 2050 3070 +3 1945 2050 3070 +3 1945 2050 3070 +10 1945 1971 1972 2049 2050 2330 2331 3069 3070 3071 +10 1945 1971 1972 2049 2050 2330 2331 3069 3070 3071 +10 1945 1971 1972 2049 2050 2330 2331 3069 3070 3071 +10 1945 1971 1972 2049 2050 2330 2331 3069 3070 3071 +10 1945 1971 1972 2049 2050 2330 2331 3069 3070 3071 +10 1945 1971 1972 2049 2050 2330 2331 3069 3070 3071 +3 1945 1971 1972 +3 1945 1971 1972 +3 1945 1971 1972 +3 1945 1971 1972 +3 1945 1971 1972 +3 1945 1971 1972 +2 1945 2763 +2 1945 2763 +2 1945 2763 +2 1945 2763 +2 1945 2763 +2 1945 2763 +3 1946 2066 3074 +3 1946 2066 3074 +3 1946 2066 3074 +3 1946 2066 3074 +3 1946 2066 3074 +3 1946 2066 3074 +10 1946 1973 1974 2065 2066 2332 2333 3072 3073 3074 +10 1946 1973 1974 2065 2066 2332 2333 3072 3073 3074 +10 1946 1973 1974 2065 2066 2332 2333 3072 3073 3074 +10 1946 1973 1974 2065 2066 2332 2333 3072 3073 3074 +10 1946 1973 1974 2065 2066 2332 2333 3072 3073 3074 +10 1946 1973 1974 2065 2066 2332 2333 3072 3073 3074 +3 1946 1973 1974 +3 1946 1973 1974 +3 1946 1973 1974 +3 1946 1973 1974 +3 1946 1973 1974 +3 1946 1973 1974 +2 1946 2764 +2 1946 2764 +2 1946 2764 +2 1946 2764 +2 1946 2764 +2 1946 2764 +3 1947 2074 3074 +3 1947 2074 3074 +3 1947 2074 3074 +3 1947 2074 3074 +3 1947 2074 3074 +3 1947 2074 3074 +10 1947 1974 1975 2073 2074 2333 2334 3073 3074 3075 +10 1947 1974 1975 2073 2074 2333 2334 3073 3074 3075 +10 1947 1974 1975 2073 2074 2333 2334 3073 3074 3075 +10 1947 1974 1975 2073 2074 2333 2334 3073 3074 3075 +10 1947 1974 1975 2073 2074 2333 2334 3073 3074 3075 +10 1947 1974 1975 2073 2074 2333 2334 3073 3074 3075 +3 1947 1974 1975 +3 1947 1974 1975 +3 1947 1974 1975 +3 1947 1974 1975 +3 1947 1974 1975 +3 1947 1974 1975 +2 1947 2764 +2 1947 2764 +2 1947 2764 +2 1947 2764 +2 1947 2764 +2 1947 2764 +3 1948 2088 3078 +3 1948 2088 3078 +3 1948 2088 3078 +3 1948 2088 3078 +3 1948 2088 3078 +3 1948 2088 3078 +10 1948 1976 1977 2087 2088 2335 2336 3076 3077 3078 +10 1948 1976 1977 2087 2088 2335 2336 3076 3077 3078 +10 1948 1976 1977 2087 2088 2335 2336 3076 3077 3078 +10 1948 1976 1977 2087 2088 2335 2336 3076 3077 3078 +10 1948 1976 1977 2087 2088 2335 2336 3076 3077 3078 +10 1948 1976 1977 2087 2088 2335 2336 3076 3077 3078 +3 1948 1976 1977 +3 1948 1976 1977 +3 1948 1976 1977 +3 1948 1976 1977 +3 1948 1976 1977 +3 1948 1976 1977 +2 1948 2765 +2 1948 2765 +2 1948 2765 +2 1948 2765 +2 1948 2765 +2 1948 2765 +3 1949 2096 3078 +3 1949 2096 3078 +3 1949 2096 3078 +3 1949 2096 3078 +3 1949 2096 3078 +3 1949 2096 3078 +10 1949 1977 1978 2095 2096 2336 2337 3077 3078 3079 +10 1949 1977 1978 2095 2096 2336 2337 3077 3078 3079 +10 1949 1977 1978 2095 2096 2336 2337 3077 3078 3079 +10 1949 1977 1978 2095 2096 2336 2337 3077 3078 3079 +10 1949 1977 1978 2095 2096 2336 2337 3077 3078 3079 +10 1949 1977 1978 2095 2096 2336 2337 3077 3078 3079 +3 1949 1977 1978 +3 1949 1977 1978 +3 1949 1977 1978 +3 1949 1977 1978 +3 1949 1977 1978 +3 1949 1977 1978 +2 1949 2765 +2 1949 2765 +2 1949 2765 +2 1949 2765 +2 1949 2765 +2 1949 2765 +3 1950 2112 3082 +3 1950 2112 3082 +3 1950 2112 3082 +3 1950 2112 3082 +3 1950 2112 3082 +3 1950 2112 3082 +10 1950 1979 1980 2111 2112 2338 2339 3080 3081 3082 +10 1950 1979 1980 2111 2112 2338 2339 3080 3081 3082 +10 1950 1979 1980 2111 2112 2338 2339 3080 3081 3082 +10 1950 1979 1980 2111 2112 2338 2339 3080 3081 3082 +10 1950 1979 1980 2111 2112 2338 2339 3080 3081 3082 +10 1950 1979 1980 2111 2112 2338 2339 3080 3081 3082 +3 1950 1979 1980 +3 1950 1979 1980 +3 1950 1979 1980 +3 1950 1979 1980 +3 1950 1979 1980 +3 1950 1979 1980 +2 1950 2766 +2 1950 2766 +2 1950 2766 +2 1950 2766 +2 1950 2766 +2 1950 2766 +3 1951 2120 3082 +3 1951 2120 3082 +3 1951 2120 3082 +3 1951 2120 3082 +3 1951 2120 3082 +3 1951 2120 3082 +10 1951 1980 1981 2119 2120 2339 2340 3081 3082 3083 +10 1951 1980 1981 2119 2120 2339 2340 3081 3082 3083 +10 1951 1980 1981 2119 2120 2339 2340 3081 3082 3083 +10 1951 1980 1981 2119 2120 2339 2340 3081 3082 3083 +10 1951 1980 1981 2119 2120 2339 2340 3081 3082 3083 +10 1951 1980 1981 2119 2120 2339 2340 3081 3082 3083 +3 1951 1980 1981 +3 1951 1980 1981 +3 1951 1980 1981 +3 1951 1980 1981 +3 1951 1980 1981 +3 1951 1980 1981 +2 1951 2766 +2 1951 2766 +2 1951 2766 +2 1951 2766 +2 1951 2766 +2 1951 2766 +3 1952 2134 3086 +3 1952 2134 3086 +3 1952 2134 3086 +3 1952 2134 3086 +3 1952 2134 3086 +3 1952 2134 3086 +10 1952 1982 1983 2133 2134 2341 2342 3084 3085 3086 +10 1952 1982 1983 2133 2134 2341 2342 3084 3085 3086 +10 1952 1982 1983 2133 2134 2341 2342 3084 3085 3086 +10 1952 1982 1983 2133 2134 2341 2342 3084 3085 3086 +10 1952 1982 1983 2133 2134 2341 2342 3084 3085 3086 +10 1952 1982 1983 2133 2134 2341 2342 3084 3085 3086 +3 1952 1982 1983 +3 1952 1982 1983 +3 1952 1982 1983 +3 1952 1982 1983 +3 1952 1982 1983 +3 1952 1982 1983 +2 1952 2767 +2 1952 2767 +2 1952 2767 +2 1952 2767 +2 1952 2767 +2 1952 2767 +3 1953 2142 3086 +3 1953 2142 3086 +3 1953 2142 3086 +3 1953 2142 3086 +3 1953 2142 3086 +3 1953 2142 3086 +10 1953 1983 1984 2141 2142 2342 2343 3085 3086 3087 +10 1953 1983 1984 2141 2142 2342 2343 3085 3086 3087 +10 1953 1983 1984 2141 2142 2342 2343 3085 3086 3087 +10 1953 1983 1984 2141 2142 2342 2343 3085 3086 3087 +10 1953 1983 1984 2141 2142 2342 2343 3085 3086 3087 +10 1953 1983 1984 2141 2142 2342 2343 3085 3086 3087 +3 1953 1983 1984 +3 1953 1983 1984 +3 1953 1983 1984 +3 1953 1983 1984 +3 1953 1983 1984 +3 1953 1983 1984 +2 1953 2767 +2 1953 2767 +2 1953 2767 +2 1953 2767 +2 1953 2767 +2 1953 2767 +3 1954 2158 3090 +3 1954 2158 3090 +3 1954 2158 3090 +3 1954 2158 3090 +3 1954 2158 3090 +3 1954 2158 3090 +10 1954 1985 1986 2157 2158 2344 2345 3088 3089 3090 +10 1954 1985 1986 2157 2158 2344 2345 3088 3089 3090 +10 1954 1985 1986 2157 2158 2344 2345 3088 3089 3090 +10 1954 1985 1986 2157 2158 2344 2345 3088 3089 3090 +10 1954 1985 1986 2157 2158 2344 2345 3088 3089 3090 +10 1954 1985 1986 2157 2158 2344 2345 3088 3089 3090 +3 1954 1985 1986 +3 1954 1985 1986 +3 1954 1985 1986 +3 1954 1985 1986 +3 1954 1985 1986 +3 1954 1985 1986 +2 1954 2768 +2 1954 2768 +2 1954 2768 +2 1954 2768 +2 1954 2768 +2 1954 2768 +3 1955 2166 3090 +3 1955 2166 3090 +3 1955 2166 3090 +3 1955 2166 3090 +3 1955 2166 3090 +3 1955 2166 3090 +10 1955 1986 1987 2165 2166 2345 2346 3089 3090 3091 +10 1955 1986 1987 2165 2166 2345 2346 3089 3090 3091 +10 1955 1986 1987 2165 2166 2345 2346 3089 3090 3091 +10 1955 1986 1987 2165 2166 2345 2346 3089 3090 3091 +10 1955 1986 1987 2165 2166 2345 2346 3089 3090 3091 +10 1955 1986 1987 2165 2166 2345 2346 3089 3090 3091 +3 1955 1986 1987 +3 1955 1986 1987 +3 1955 1986 1987 +3 1955 1986 1987 +3 1955 1986 1987 +3 1955 1986 1987 +2 1955 2768 +2 1955 2768 +2 1955 2768 +2 1955 2768 +2 1955 2768 +2 1955 2768 +3 1956 2180 3094 +3 1956 2180 3094 +3 1956 2180 3094 +3 1956 2180 3094 +3 1956 2180 3094 +3 1956 2180 3094 +10 1956 1988 1989 2179 2180 2347 2348 3092 3093 3094 +10 1956 1988 1989 2179 2180 2347 2348 3092 3093 3094 +10 1956 1988 1989 2179 2180 2347 2348 3092 3093 3094 +10 1956 1988 1989 2179 2180 2347 2348 3092 3093 3094 +10 1956 1988 1989 2179 2180 2347 2348 3092 3093 3094 +10 1956 1988 1989 2179 2180 2347 2348 3092 3093 3094 +3 1956 1988 1989 +3 1956 1988 1989 +3 1956 1988 1989 +3 1956 1988 1989 +3 1956 1988 1989 +3 1956 1988 1989 +2 1956 2769 +2 1956 2769 +2 1956 2769 +2 1956 2769 +2 1956 2769 +2 1956 2769 +3 1957 2188 3094 +3 1957 2188 3094 +3 1957 2188 3094 +3 1957 2188 3094 +3 1957 2188 3094 +3 1957 2188 3094 +10 1957 1989 1990 2187 2188 2348 2349 3093 3094 3095 +10 1957 1989 1990 2187 2188 2348 2349 3093 3094 3095 +10 1957 1989 1990 2187 2188 2348 2349 3093 3094 3095 +10 1957 1989 1990 2187 2188 2348 2349 3093 3094 3095 +10 1957 1989 1990 2187 2188 2348 2349 3093 3094 3095 +10 1957 1989 1990 2187 2188 2348 2349 3093 3094 3095 +3 1957 1989 1990 +3 1957 1989 1990 +3 1957 1989 1990 +3 1957 1989 1990 +3 1957 1989 1990 +3 1957 1989 1990 +2 1957 2769 +2 1957 2769 +2 1957 2769 +2 1957 2769 +2 1957 2769 +2 1957 2769 +3 1958 2204 3098 +3 1958 2204 3098 +3 1958 2204 3098 +3 1958 2204 3098 +3 1958 2204 3098 +3 1958 2204 3098 +10 1958 1991 1992 2203 2204 2350 2351 3096 3097 3098 +10 1958 1991 1992 2203 2204 2350 2351 3096 3097 3098 +10 1958 1991 1992 2203 2204 2350 2351 3096 3097 3098 +10 1958 1991 1992 2203 2204 2350 2351 3096 3097 3098 +10 1958 1991 1992 2203 2204 2350 2351 3096 3097 3098 +10 1958 1991 1992 2203 2204 2350 2351 3096 3097 3098 +3 1958 1991 1992 +3 1958 1991 1992 +3 1958 1991 1992 +3 1958 1991 1992 +3 1958 1991 1992 +3 1958 1991 1992 +2 1958 2770 +2 1958 2770 +2 1958 2770 +2 1958 2770 +2 1958 2770 +2 1958 2770 +3 1959 2212 3098 +3 1959 2212 3098 +3 1959 2212 3098 +3 1959 2212 3098 +3 1959 2212 3098 +3 1959 2212 3098 +10 1959 1992 1993 2211 2212 2351 2352 3097 3098 3099 +10 1959 1992 1993 2211 2212 2351 2352 3097 3098 3099 +10 1959 1992 1993 2211 2212 2351 2352 3097 3098 3099 +10 1959 1992 1993 2211 2212 2351 2352 3097 3098 3099 +10 1959 1992 1993 2211 2212 2351 2352 3097 3098 3099 +10 1959 1992 1993 2211 2212 2351 2352 3097 3098 3099 +3 1959 1992 1993 +3 1959 1992 1993 +3 1959 1992 1993 +3 1959 1992 1993 +3 1959 1992 1993 +3 1959 1992 1993 +2 1959 2770 +2 1959 2770 +2 1959 2770 +2 1959 2770 +2 1959 2770 +2 1959 2770 +3 1960 2226 3102 +3 1960 2226 3102 +3 1960 2226 3102 +3 1960 2226 3102 +3 1960 2226 3102 +3 1960 2226 3102 +10 1960 1994 1995 2225 2226 2353 2354 3100 3101 3102 +10 1960 1994 1995 2225 2226 2353 2354 3100 3101 3102 +10 1960 1994 1995 2225 2226 2353 2354 3100 3101 3102 +10 1960 1994 1995 2225 2226 2353 2354 3100 3101 3102 +10 1960 1994 1995 2225 2226 2353 2354 3100 3101 3102 +10 1960 1994 1995 2225 2226 2353 2354 3100 3101 3102 +3 1960 1994 1995 +3 1960 1994 1995 +3 1960 1994 1995 +3 1960 1994 1995 +3 1960 1994 1995 +3 1960 1994 1995 +2 1960 2771 +2 1960 2771 +2 1960 2771 +2 1960 2771 +2 1960 2771 +2 1960 2771 +3 1961 2236 3102 +3 1961 2236 3102 +3 1961 2236 3102 +3 1961 2236 3102 +3 1961 2236 3102 +3 1961 2236 3102 +10 1961 1995 1996 2235 2236 2354 2355 3101 3102 3103 +10 1961 1995 1996 2235 2236 2354 2355 3101 3102 3103 +10 1961 1995 1996 2235 2236 2354 2355 3101 3102 3103 +10 1961 1995 1996 2235 2236 2354 2355 3101 3102 3103 +10 1961 1995 1996 2235 2236 2354 2355 3101 3102 3103 +10 1961 1995 1996 2235 2236 2354 2355 3101 3102 3103 +3 1961 1995 1996 +3 1961 1995 1996 +3 1961 1995 1996 +3 1961 1995 1996 +3 1961 1995 1996 +3 1961 1995 1996 +2 1961 2771 +2 1961 2771 +2 1961 2771 +2 1961 2771 +2 1961 2771 +2 1961 2771 +3 1962 2252 3106 +3 1962 2252 3106 +3 1962 2252 3106 +3 1962 2252 3106 +3 1962 2252 3106 +3 1962 2252 3106 +10 1962 1997 1998 2251 2252 2356 2357 3104 3105 3106 +10 1962 1997 1998 2251 2252 2356 2357 3104 3105 3106 +10 1962 1997 1998 2251 2252 2356 2357 3104 3105 3106 +10 1962 1997 1998 2251 2252 2356 2357 3104 3105 3106 +10 1962 1997 1998 2251 2252 2356 2357 3104 3105 3106 +10 1962 1997 1998 2251 2252 2356 2357 3104 3105 3106 +3 1962 1997 1998 +3 1962 1997 1998 +3 1962 1997 1998 +3 1962 1997 1998 +3 1962 1997 1998 +3 1962 1997 1998 +2 1962 2772 +2 1962 2772 +2 1962 2772 +2 1962 2772 +2 1962 2772 +2 1962 2772 +3 1963 2260 3106 +3 1963 2260 3106 +3 1963 2260 3106 +3 1963 2260 3106 +3 1963 2260 3106 +3 1963 2260 3106 +10 1963 1998 1999 2259 2260 2357 2358 3105 3106 3107 +10 1963 1998 1999 2259 2260 2357 2358 3105 3106 3107 +10 1963 1998 1999 2259 2260 2357 2358 3105 3106 3107 +10 1963 1998 1999 2259 2260 2357 2358 3105 3106 3107 +10 1963 1998 1999 2259 2260 2357 2358 3105 3106 3107 +10 1963 1998 1999 2259 2260 2357 2358 3105 3106 3107 +3 1963 1998 1999 +3 1963 1998 1999 +3 1963 1998 1999 +3 1963 1998 1999 +3 1963 1998 1999 +3 1963 1998 1999 +2 1963 2772 +2 1963 2772 +2 1963 2772 +2 1963 2772 +2 1963 2772 +2 1963 2772 +3 1964 2000 2001 +3 1964 2000 2001 +3 1964 2000 2001 +3 1964 2000 2001 +3 1964 2000 2001 +3 1964 2000 2001 +2 1964 2773 +2 1964 2773 +2 1964 2773 +2 1964 2773 +2 1964 2773 +2 1964 2773 +3 1965 2318 3110 +3 1965 2318 3110 +3 1965 2318 3110 +3 1965 2318 3110 +3 1965 2318 3110 +3 1965 2318 3110 +11 1965 2007 2008 2317 2318 2366 2367 3110 3112 3119 3120 +11 1965 2007 2008 2317 2318 2366 2367 3110 3112 3119 3120 +11 1965 2007 2008 2317 2318 2366 2367 3110 3112 3119 3120 +11 1965 2007 2008 2317 2318 2366 2367 3110 3112 3119 3120 +11 1965 2007 2008 2317 2318 2366 2367 3110 3112 3119 3120 +11 1965 2007 2008 2317 2318 2366 2367 3110 3112 3119 3120 +3 1965 2007 2008 +3 1965 2007 2008 +3 1965 2007 2008 +3 1965 2007 2008 +3 1965 2007 2008 +3 1965 2007 2008 +2 1965 2774 +2 1965 2774 +2 1965 2774 +2 1965 2774 +2 1965 2774 +2 1965 2774 +7 1966 1967 2009 2325 2326 3063 3064 +7 1966 1967 2009 2325 2326 3063 3064 +7 1966 1967 2009 2325 2326 3063 3064 +7 1966 1967 2009 2325 2326 3063 3064 +7 1966 1967 2009 2325 2326 3063 3064 +7 1966 1967 2009 2325 2326 3063 3064 +3 1966 2325 3063 +3 1966 2325 3063 +3 1966 2325 3063 +3 1966 2325 3063 +3 1966 2325 3063 +3 1966 2325 3063 +2 1966 1967 +2 1966 1967 +2 1966 1967 +2 1966 1967 +2 1966 1967 +2 1966 1967 +3 1967 2326 3064 +3 1967 2326 3064 +3 1967 2326 3064 +3 1967 2326 3064 +3 1967 2326 3064 +3 1967 2326 3064 +4 1968 2327 3065 3066 +4 1968 2327 3065 3066 +4 1968 2327 3065 3066 +4 1968 2327 3065 3066 +4 1968 2327 3065 3066 +4 1968 2327 3065 3066 +7 1969 1970 2035 2328 2329 3067 3068 +7 1969 1970 2035 2328 2329 3067 3068 +7 1969 1970 2035 2328 2329 3067 3068 +7 1969 1970 2035 2328 2329 3067 3068 +7 1969 1970 2035 2328 2329 3067 3068 +7 1969 1970 2035 2328 2329 3067 3068 +3 1969 2328 3067 +3 1969 2328 3067 +3 1969 2328 3067 +3 1969 2328 3067 +3 1969 2328 3067 +3 1969 2328 3067 +2 1969 1970 +2 1969 1970 +2 1969 1970 +2 1969 1970 +2 1969 1970 +2 1969 1970 +3 1970 2329 3068 +3 1970 2329 3068 +3 1970 2329 3068 +3 1970 2329 3068 +3 1970 2329 3068 +3 1970 2329 3068 +4 1971 2330 3069 3070 +4 1971 2330 3069 3070 +4 1971 2330 3069 3070 +4 1971 2330 3069 3070 +4 1971 2330 3069 3070 +4 1971 2330 3069 3070 +7 1972 1973 2059 2331 2332 3071 3072 +7 1972 1973 2059 2331 2332 3071 3072 +7 1972 1973 2059 2331 2332 3071 3072 +7 1972 1973 2059 2331 2332 3071 3072 +7 1972 1973 2059 2331 2332 3071 3072 +7 1972 1973 2059 2331 2332 3071 3072 +3 1972 2331 3071 +3 1972 2331 3071 +3 1972 2331 3071 +3 1972 2331 3071 +3 1972 2331 3071 +3 1972 2331 3071 +2 1972 1973 +2 1972 1973 +2 1972 1973 +2 1972 1973 +2 1972 1973 +2 1972 1973 +3 1973 2332 3072 +3 1973 2332 3072 +3 1973 2332 3072 +3 1973 2332 3072 +3 1973 2332 3072 +3 1973 2332 3072 +4 1974 2333 3073 3074 +4 1974 2333 3073 3074 +4 1974 2333 3073 3074 +4 1974 2333 3073 3074 +4 1974 2333 3073 3074 +4 1974 2333 3073 3074 +7 1975 1976 2081 2334 2335 3075 3076 +7 1975 1976 2081 2334 2335 3075 3076 +7 1975 1976 2081 2334 2335 3075 3076 +7 1975 1976 2081 2334 2335 3075 3076 +7 1975 1976 2081 2334 2335 3075 3076 +7 1975 1976 2081 2334 2335 3075 3076 +3 1975 2334 3075 +3 1975 2334 3075 +3 1975 2334 3075 +3 1975 2334 3075 +3 1975 2334 3075 +3 1975 2334 3075 +2 1975 1976 +2 1975 1976 +2 1975 1976 +2 1975 1976 +2 1975 1976 +2 1975 1976 +3 1976 2335 3076 +3 1976 2335 3076 +3 1976 2335 3076 +3 1976 2335 3076 +3 1976 2335 3076 +3 1976 2335 3076 +4 1977 2336 3077 3078 +4 1977 2336 3077 3078 +4 1977 2336 3077 3078 +4 1977 2336 3077 3078 +4 1977 2336 3077 3078 +4 1977 2336 3077 3078 +7 1978 1979 2105 2337 2338 3079 3080 +7 1978 1979 2105 2337 2338 3079 3080 +7 1978 1979 2105 2337 2338 3079 3080 +7 1978 1979 2105 2337 2338 3079 3080 +7 1978 1979 2105 2337 2338 3079 3080 +7 1978 1979 2105 2337 2338 3079 3080 +3 1978 2337 3079 +3 1978 2337 3079 +3 1978 2337 3079 +3 1978 2337 3079 +3 1978 2337 3079 +3 1978 2337 3079 +2 1978 1979 +2 1978 1979 +2 1978 1979 +2 1978 1979 +2 1978 1979 +2 1978 1979 +3 1979 2338 3080 +3 1979 2338 3080 +3 1979 2338 3080 +3 1979 2338 3080 +3 1979 2338 3080 +3 1979 2338 3080 +4 1980 2339 3081 3082 +4 1980 2339 3081 3082 +4 1980 2339 3081 3082 +4 1980 2339 3081 3082 +4 1980 2339 3081 3082 +4 1980 2339 3081 3082 +7 1981 1982 2127 2340 2341 3083 3084 +7 1981 1982 2127 2340 2341 3083 3084 +7 1981 1982 2127 2340 2341 3083 3084 +7 1981 1982 2127 2340 2341 3083 3084 +7 1981 1982 2127 2340 2341 3083 3084 +7 1981 1982 2127 2340 2341 3083 3084 +3 1981 2340 3083 +3 1981 2340 3083 +3 1981 2340 3083 +3 1981 2340 3083 +3 1981 2340 3083 +3 1981 2340 3083 +2 1981 1982 +2 1981 1982 +2 1981 1982 +2 1981 1982 +2 1981 1982 +2 1981 1982 +3 1982 2341 3084 +3 1982 2341 3084 +3 1982 2341 3084 +3 1982 2341 3084 +3 1982 2341 3084 +3 1982 2341 3084 +4 1983 2342 3085 3086 +4 1983 2342 3085 3086 +4 1983 2342 3085 3086 +4 1983 2342 3085 3086 +4 1983 2342 3085 3086 +4 1983 2342 3085 3086 +7 1984 1985 2151 2343 2344 3087 3088 +7 1984 1985 2151 2343 2344 3087 3088 +7 1984 1985 2151 2343 2344 3087 3088 +7 1984 1985 2151 2343 2344 3087 3088 +7 1984 1985 2151 2343 2344 3087 3088 +7 1984 1985 2151 2343 2344 3087 3088 +3 1984 2343 3087 +3 1984 2343 3087 +3 1984 2343 3087 +3 1984 2343 3087 +3 1984 2343 3087 +3 1984 2343 3087 +2 1984 1985 +2 1984 1985 +2 1984 1985 +2 1984 1985 +2 1984 1985 +2 1984 1985 +3 1985 2344 3088 +3 1985 2344 3088 +3 1985 2344 3088 +3 1985 2344 3088 +3 1985 2344 3088 +3 1985 2344 3088 +4 1986 2345 3089 3090 +4 1986 2345 3089 3090 +4 1986 2345 3089 3090 +4 1986 2345 3089 3090 +4 1986 2345 3089 3090 +4 1986 2345 3089 3090 +7 1987 1988 2173 2346 2347 3091 3092 +7 1987 1988 2173 2346 2347 3091 3092 +7 1987 1988 2173 2346 2347 3091 3092 +7 1987 1988 2173 2346 2347 3091 3092 +7 1987 1988 2173 2346 2347 3091 3092 +7 1987 1988 2173 2346 2347 3091 3092 +3 1987 2346 3091 +3 1987 2346 3091 +3 1987 2346 3091 +3 1987 2346 3091 +3 1987 2346 3091 +3 1987 2346 3091 +2 1987 1988 +2 1987 1988 +2 1987 1988 +2 1987 1988 +2 1987 1988 +2 1987 1988 +3 1988 2347 3092 +3 1988 2347 3092 +3 1988 2347 3092 +3 1988 2347 3092 +3 1988 2347 3092 +3 1988 2347 3092 +4 1989 2348 3093 3094 +4 1989 2348 3093 3094 +4 1989 2348 3093 3094 +4 1989 2348 3093 3094 +4 1989 2348 3093 3094 +4 1989 2348 3093 3094 +7 1990 1991 2197 2349 2350 3095 3096 +7 1990 1991 2197 2349 2350 3095 3096 +7 1990 1991 2197 2349 2350 3095 3096 +7 1990 1991 2197 2349 2350 3095 3096 +7 1990 1991 2197 2349 2350 3095 3096 +7 1990 1991 2197 2349 2350 3095 3096 +3 1990 2349 3095 +3 1990 2349 3095 +3 1990 2349 3095 +3 1990 2349 3095 +3 1990 2349 3095 +3 1990 2349 3095 +2 1990 1991 +2 1990 1991 +2 1990 1991 +2 1990 1991 +2 1990 1991 +2 1990 1991 +3 1991 2350 3096 +3 1991 2350 3096 +3 1991 2350 3096 +3 1991 2350 3096 +3 1991 2350 3096 +3 1991 2350 3096 +4 1992 2351 3097 3098 +4 1992 2351 3097 3098 +4 1992 2351 3097 3098 +4 1992 2351 3097 3098 +4 1992 2351 3097 3098 +4 1992 2351 3097 3098 +7 1993 1994 2219 2352 2353 3099 3100 +7 1993 1994 2219 2352 2353 3099 3100 +7 1993 1994 2219 2352 2353 3099 3100 +7 1993 1994 2219 2352 2353 3099 3100 +7 1993 1994 2219 2352 2353 3099 3100 +7 1993 1994 2219 2352 2353 3099 3100 +3 1993 2352 3099 +3 1993 2352 3099 +3 1993 2352 3099 +3 1993 2352 3099 +3 1993 2352 3099 +3 1993 2352 3099 +2 1993 1994 +2 1993 1994 +2 1993 1994 +2 1993 1994 +2 1993 1994 +2 1993 1994 +3 1994 2353 3100 +3 1994 2353 3100 +3 1994 2353 3100 +3 1994 2353 3100 +3 1994 2353 3100 +3 1994 2353 3100 +4 1995 2354 3101 3102 +4 1995 2354 3101 3102 +4 1995 2354 3101 3102 +4 1995 2354 3101 3102 +4 1995 2354 3101 3102 +4 1995 2354 3101 3102 +7 1996 1997 2245 2355 2356 3103 3104 +7 1996 1997 2245 2355 2356 3103 3104 +7 1996 1997 2245 2355 2356 3103 3104 +7 1996 1997 2245 2355 2356 3103 3104 +7 1996 1997 2245 2355 2356 3103 3104 +7 1996 1997 2245 2355 2356 3103 3104 +3 1996 2355 3103 +3 1996 2355 3103 +3 1996 2355 3103 +3 1996 2355 3103 +3 1996 2355 3103 +3 1996 2355 3103 +2 1996 1997 +2 1996 1997 +2 1996 1997 +2 1996 1997 +2 1996 1997 +2 1996 1997 +3 1997 2356 3104 +3 1997 2356 3104 +3 1997 2356 3104 +3 1997 2356 3104 +3 1997 2356 3104 +3 1997 2356 3104 +4 1998 2357 3105 3106 +4 1998 2357 3105 3106 +4 1998 2357 3105 3106 +4 1998 2357 3105 3106 +4 1998 2357 3105 3106 +4 1998 2357 3105 3106 +7 1999 2000 2267 2358 2359 3107 3108 +7 1999 2000 2267 2358 2359 3107 3108 +7 1999 2000 2267 2358 2359 3107 3108 +7 1999 2000 2267 2358 2359 3107 3108 +7 1999 2000 2267 2358 2359 3107 3108 +7 1999 2000 2267 2358 2359 3107 3108 +3 1999 2358 3107 +3 1999 2358 3107 +3 1999 2358 3107 +3 1999 2358 3107 +3 1999 2358 3107 +3 1999 2358 3107 +2 1999 2000 +2 1999 2000 +2 1999 2000 +2 1999 2000 +2 1999 2000 +2 1999 2000 +3 2000 2359 3108 +3 2000 2359 3108 +3 2000 2359 3108 +3 2000 2359 3108 +3 2000 2359 3108 +3 2000 2359 3108 +2 2001 2002 +2 2001 2002 +2 2001 2002 +2 2001 2002 +2 2001 2002 +2 2001 2002 +2 2002 2003 +2 2002 2003 +2 2002 2003 +2 2002 2003 +2 2002 2003 +2 2002 2003 +2 2003 2004 +2 2003 2004 +2 2003 2004 +2 2003 2004 +2 2003 2004 +2 2003 2004 +2 2004 2005 +2 2004 2005 +2 2004 2005 +2 2004 2005 +2 2004 2005 +2 2004 2005 +9 2005 2006 2305 2364 2365 3115 3116 3117 3118 +9 2005 2006 2305 2364 2365 3115 3116 3117 3118 +9 2005 2006 2305 2364 2365 3115 3116 3117 3118 +9 2005 2006 2305 2364 2365 3115 3116 3117 3118 +9 2005 2006 2305 2364 2365 3115 3116 3117 3118 +9 2005 2006 2305 2364 2365 3115 3116 3117 3118 +4 2005 2364 3116 3118 +4 2005 2364 3116 3118 +4 2005 2364 3116 3118 +4 2005 2364 3116 3118 +4 2005 2364 3116 3118 +4 2005 2364 3116 3118 +2 2005 2006 +2 2005 2006 +2 2005 2006 +2 2005 2006 +2 2005 2006 +2 2005 2006 +9 2006 2007 2311 2365 2366 3112 3115 3117 3119 +9 2006 2007 2311 2365 2366 3112 3115 3117 3119 +9 2006 2007 2311 2365 2366 3112 3115 3117 3119 +9 2006 2007 2311 2365 2366 3112 3115 3117 3119 +9 2006 2007 2311 2365 2366 3112 3115 3117 3119 +9 2006 2007 2311 2365 2366 3112 3115 3117 3119 +4 2006 2365 3115 3117 +4 2006 2365 3115 3117 +4 2006 2365 3115 3117 +4 2006 2365 3115 3117 +4 2006 2365 3115 3117 +4 2006 2365 3115 3117 +2 2006 2007 +2 2006 2007 +2 2006 2007 +2 2006 2007 +2 2006 2007 +2 2006 2007 +4 2007 2366 3112 3119 +4 2007 2366 3112 3119 +4 2007 2366 3112 3119 +4 2007 2366 3112 3119 +4 2007 2366 3112 3119 +4 2007 2366 3112 3119 +7 2008 2367 3120 3125 3130 3164 3243 +7 2008 2367 3120 3125 3130 3164 3243 +7 2008 2367 3120 3125 3130 3164 3243 +7 2008 2367 3120 3125 3130 3164 3243 +7 2008 2367 3120 3125 3130 3164 3243 +7 2008 2367 3120 3125 3130 3164 3243 +3 2008 2367 3120 +3 2008 2367 3120 +3 2008 2367 3120 +3 2008 2367 3120 +3 2008 2367 3120 +3 2008 2367 3120 +2 2008 3125 +2 2008 3125 +2 2008 3125 +2 2008 3125 +2 2008 3125 +2 2008 3125 +8 2009 2010 2325 2326 2368 2369 3005 3006 +8 2009 2010 2325 2326 2368 2369 3005 3006 +8 2009 2010 2325 2326 2368 2369 3005 3006 +8 2009 2010 2325 2326 2368 2369 3005 3006 +8 2009 2010 2325 2326 2368 2369 3005 3006 +8 2009 2010 2325 2326 2368 2369 3005 3006 +4 2009 2010 3005 3006 +4 2009 2010 3005 3006 +4 2009 2010 3005 3006 +4 2009 2010 3005 3006 +4 2009 2010 3005 3006 +4 2009 2010 3005 3006 +8 2009 2010 2541 2542 2584 2585 3005 3006 +8 2009 2010 2541 2542 2584 2585 3005 3006 +8 2009 2010 2541 2542 2584 2585 3005 3006 +8 2009 2010 2541 2542 2584 2585 3005 3006 +8 2009 2010 2541 2542 2584 2585 3005 3006 +8 2009 2010 2541 2542 2584 2585 3005 3006 +3 2009 2541 2542 +3 2009 2541 2542 +3 2009 2541 2542 +3 2009 2541 2542 +3 2009 2541 2542 +3 2009 2541 2542 +6 2009 2540 2541 2542 3063 3064 +6 2009 2540 2541 2542 3063 3064 +6 2009 2540 2541 2542 3063 3064 +6 2009 2540 2541 2542 3063 3064 +6 2009 2540 2541 2542 3063 3064 +6 2009 2540 2541 2542 3063 3064 +3 2009 3063 3064 +3 2009 3063 3064 +3 2009 3063 3064 +3 2009 3063 3064 +3 2009 3063 3064 +3 2009 3063 3064 +3 2009 2325 2326 +3 2009 2325 2326 +3 2009 2325 2326 +3 2009 2325 2326 +3 2009 2325 2326 +3 2009 2325 2326 +8 2010 2011 2368 2369 2411 2412 2956 2957 +8 2010 2011 2368 2369 2411 2412 2956 2957 +8 2010 2011 2368 2369 2411 2412 2956 2957 +8 2010 2011 2368 2369 2411 2412 2956 2957 +8 2010 2011 2368 2369 2411 2412 2956 2957 +8 2010 2011 2368 2369 2411 2412 2956 2957 +4 2010 2011 2956 2957 +4 2010 2011 2956 2957 +4 2010 2011 2956 2957 +4 2010 2011 2956 2957 +4 2010 2011 2956 2957 +4 2010 2011 2956 2957 +8 2010 2011 2584 2585 2627 2628 2956 2957 +8 2010 2011 2584 2585 2627 2628 2956 2957 +8 2010 2011 2584 2585 2627 2628 2956 2957 +8 2010 2011 2584 2585 2627 2628 2956 2957 +8 2010 2011 2584 2585 2627 2628 2956 2957 +8 2010 2011 2584 2585 2627 2628 2956 2957 +3 2010 2584 2585 +3 2010 2584 2585 +3 2010 2584 2585 +3 2010 2584 2585 +3 2010 2584 2585 +3 2010 2584 2585 +3 2010 2368 2369 +3 2010 2368 2369 +3 2010 2368 2369 +3 2010 2368 2369 +3 2010 2368 2369 +3 2010 2368 2369 +8 2011 2012 2411 2412 2454 2455 2756 2900 +8 2011 2012 2411 2412 2454 2455 2756 2900 +8 2011 2012 2411 2412 2454 2455 2756 2900 +8 2011 2012 2411 2412 2454 2455 2756 2900 +8 2011 2012 2411 2412 2454 2455 2756 2900 +8 2011 2012 2411 2412 2454 2455 2756 2900 +4 2011 2012 2756 2900 +4 2011 2012 2756 2900 +4 2011 2012 2756 2900 +4 2011 2012 2756 2900 +4 2011 2012 2756 2900 +4 2011 2012 2756 2900 +8 2011 2012 2627 2628 2670 2671 2756 2900 +8 2011 2012 2627 2628 2670 2671 2756 2900 +8 2011 2012 2627 2628 2670 2671 2756 2900 +8 2011 2012 2627 2628 2670 2671 2756 2900 +8 2011 2012 2627 2628 2670 2671 2756 2900 +8 2011 2012 2627 2628 2670 2671 2756 2900 +3 2011 2627 2628 +3 2011 2627 2628 +3 2011 2627 2628 +3 2011 2627 2628 +3 2011 2627 2628 +3 2011 2627 2628 +3 2011 2411 2412 +3 2011 2411 2412 +3 2011 2411 2412 +3 2011 2411 2412 +3 2011 2411 2412 +3 2011 2411 2412 +11 2012 2013 2014 2454 2455 2497 2498 2757 2758 2818 2819 +11 2012 2013 2014 2454 2455 2497 2498 2757 2758 2818 2819 +11 2012 2013 2014 2454 2455 2497 2498 2757 2758 2818 2819 +11 2012 2013 2014 2454 2455 2497 2498 2757 2758 2818 2819 +11 2012 2013 2014 2454 2455 2497 2498 2757 2758 2818 2819 +11 2012 2013 2014 2454 2455 2497 2498 2757 2758 2818 2819 +4 2012 2013 2757 2818 +4 2012 2013 2757 2818 +4 2012 2013 2757 2818 +4 2012 2013 2757 2818 +4 2012 2013 2757 2818 +4 2012 2013 2757 2818 +8 2012 2013 2670 2671 2713 2714 2757 2818 +8 2012 2013 2670 2671 2713 2714 2757 2818 +8 2012 2013 2670 2671 2713 2714 2757 2818 +8 2012 2013 2670 2671 2713 2714 2757 2818 +8 2012 2013 2670 2671 2713 2714 2757 2818 +8 2012 2013 2670 2671 2713 2714 2757 2818 +3 2012 2670 2671 +3 2012 2670 2671 +3 2012 2670 2671 +3 2012 2670 2671 +3 2012 2670 2671 +3 2012 2670 2671 +3 2012 2454 2455 +3 2012 2454 2455 +3 2012 2454 2455 +3 2012 2454 2455 +3 2012 2454 2455 +3 2012 2454 2455 +8 2013 2014 2497 2498 2713 2714 2775 2776 +8 2013 2014 2497 2498 2713 2714 2775 2776 +8 2013 2014 2497 2498 2713 2714 2775 2776 +8 2013 2014 2497 2498 2713 2714 2775 2776 +8 2013 2014 2497 2498 2713 2714 2775 2776 +8 2013 2014 2497 2498 2713 2714 2775 2776 +3 2013 2713 2714 +3 2013 2713 2714 +3 2013 2713 2714 +3 2013 2713 2714 +3 2013 2713 2714 +3 2013 2713 2714 +4 2013 2014 2497 2498 +4 2013 2014 2497 2498 +4 2013 2014 2497 2498 +4 2013 2014 2497 2498 +4 2013 2014 2497 2498 +4 2013 2014 2497 2498 +3 2014 2775 2776 +3 2014 2775 2776 +3 2014 2775 2776 +3 2014 2775 2776 +3 2014 2775 2776 +3 2014 2775 2776 +3 2014 2758 2819 +3 2014 2758 2819 +3 2014 2758 2819 +3 2014 2758 2819 +3 2014 2758 2819 +3 2014 2758 2819 +11 2015 2016 2017 2018 2326 2327 2369 2370 3006 3007 3008 +11 2015 2016 2017 2018 2326 2327 2369 2370 3006 3007 3008 +11 2015 2016 2017 2018 2326 2327 2369 2370 3006 3007 3008 +11 2015 2016 2017 2018 2326 2327 2369 2370 3006 3007 3008 +11 2015 2016 2017 2018 2326 2327 2369 2370 3006 3007 3008 +11 2015 2016 2017 2018 2326 2327 2369 2370 3006 3007 3008 +4 2015 2017 3006 3007 +4 2015 2017 3006 3007 +4 2015 2017 3006 3007 +4 2015 2017 3006 3007 +4 2015 2017 3006 3007 +4 2015 2017 3006 3007 +8 2015 2017 2542 2543 2585 2586 3006 3007 +8 2015 2017 2542 2543 2585 2586 3006 3007 +8 2015 2017 2542 2543 2585 2586 3006 3007 +8 2015 2017 2542 2543 2585 2586 3006 3007 +8 2015 2017 2542 2543 2585 2586 3006 3007 +8 2015 2017 2542 2543 2585 2586 3006 3007 +3 2015 2542 2543 +3 2015 2542 2543 +3 2015 2542 2543 +3 2015 2542 2543 +3 2015 2542 2543 +3 2015 2542 2543 +5 2015 2542 2543 3064 3065 +5 2015 2542 2543 3064 3065 +5 2015 2542 2543 3064 3065 +5 2015 2542 2543 3064 3065 +5 2015 2542 2543 3064 3065 +5 2015 2542 2543 3064 3065 +3 2015 3064 3065 +3 2015 3064 3065 +3 2015 3064 3065 +3 2015 3064 3065 +3 2015 3064 3065 +3 2015 3064 3065 +4 2015 2016 2326 2327 +4 2015 2016 2326 2327 +4 2015 2016 2326 2327 +4 2015 2016 2326 2327 +4 2015 2016 2326 2327 +4 2015 2016 2326 2327 +3 2016 2018 3008 +3 2016 2018 3008 +3 2016 2018 3008 +3 2016 2018 3008 +3 2016 2018 3008 +3 2016 2018 3008 +11 2017 2018 2019 2020 2369 2370 2412 2413 2957 2958 2959 +11 2017 2018 2019 2020 2369 2370 2412 2413 2957 2958 2959 +11 2017 2018 2019 2020 2369 2370 2412 2413 2957 2958 2959 +11 2017 2018 2019 2020 2369 2370 2412 2413 2957 2958 2959 +11 2017 2018 2019 2020 2369 2370 2412 2413 2957 2958 2959 +11 2017 2018 2019 2020 2369 2370 2412 2413 2957 2958 2959 +4 2017 2019 2957 2958 +4 2017 2019 2957 2958 +4 2017 2019 2957 2958 +4 2017 2019 2957 2958 +4 2017 2019 2957 2958 +4 2017 2019 2957 2958 +8 2017 2019 2585 2586 2628 2629 2957 2958 +8 2017 2019 2585 2586 2628 2629 2957 2958 +8 2017 2019 2585 2586 2628 2629 2957 2958 +8 2017 2019 2585 2586 2628 2629 2957 2958 +8 2017 2019 2585 2586 2628 2629 2957 2958 +8 2017 2019 2585 2586 2628 2629 2957 2958 +3 2017 2585 2586 +3 2017 2585 2586 +3 2017 2585 2586 +3 2017 2585 2586 +3 2017 2585 2586 +3 2017 2585 2586 +4 2017 2018 2369 2370 +4 2017 2018 2369 2370 +4 2017 2018 2369 2370 +4 2017 2018 2369 2370 +4 2017 2018 2369 2370 +4 2017 2018 2369 2370 +3 2018 2020 2959 +3 2018 2020 2959 +3 2018 2020 2959 +3 2018 2020 2959 +3 2018 2020 2959 +3 2018 2020 2959 +11 2019 2020 2021 2022 2412 2413 2455 2456 2900 2901 2902 +11 2019 2020 2021 2022 2412 2413 2455 2456 2900 2901 2902 +11 2019 2020 2021 2022 2412 2413 2455 2456 2900 2901 2902 +11 2019 2020 2021 2022 2412 2413 2455 2456 2900 2901 2902 +11 2019 2020 2021 2022 2412 2413 2455 2456 2900 2901 2902 +11 2019 2020 2021 2022 2412 2413 2455 2456 2900 2901 2902 +4 2019 2021 2900 2901 +4 2019 2021 2900 2901 +4 2019 2021 2900 2901 +4 2019 2021 2900 2901 +4 2019 2021 2900 2901 +4 2019 2021 2900 2901 +8 2019 2021 2628 2629 2671 2672 2900 2901 +8 2019 2021 2628 2629 2671 2672 2900 2901 +8 2019 2021 2628 2629 2671 2672 2900 2901 +8 2019 2021 2628 2629 2671 2672 2900 2901 +8 2019 2021 2628 2629 2671 2672 2900 2901 +8 2019 2021 2628 2629 2671 2672 2900 2901 +3 2019 2628 2629 +3 2019 2628 2629 +3 2019 2628 2629 +3 2019 2628 2629 +3 2019 2628 2629 +3 2019 2628 2629 +4 2019 2020 2412 2413 +4 2019 2020 2412 2413 +4 2019 2020 2412 2413 +4 2019 2020 2412 2413 +4 2019 2020 2412 2413 +4 2019 2020 2412 2413 +3 2020 2022 2902 +3 2020 2022 2902 +3 2020 2022 2902 +3 2020 2022 2902 +3 2020 2022 2902 +3 2020 2022 2902 +12 2021 2022 2023 2024 2455 2456 2498 2499 2818 2819 2820 2821 +12 2021 2022 2023 2024 2455 2456 2498 2499 2818 2819 2820 2821 +12 2021 2022 2023 2024 2455 2456 2498 2499 2818 2819 2820 2821 +12 2021 2022 2023 2024 2455 2456 2498 2499 2818 2819 2820 2821 +12 2021 2022 2023 2024 2455 2456 2498 2499 2818 2819 2820 2821 +12 2021 2022 2023 2024 2455 2456 2498 2499 2818 2819 2820 2821 +4 2021 2023 2818 2820 +4 2021 2023 2818 2820 +4 2021 2023 2818 2820 +4 2021 2023 2818 2820 +4 2021 2023 2818 2820 +4 2021 2023 2818 2820 +8 2021 2023 2671 2672 2714 2715 2818 2820 +8 2021 2023 2671 2672 2714 2715 2818 2820 +8 2021 2023 2671 2672 2714 2715 2818 2820 +8 2021 2023 2671 2672 2714 2715 2818 2820 +8 2021 2023 2671 2672 2714 2715 2818 2820 +8 2021 2023 2671 2672 2714 2715 2818 2820 +3 2021 2671 2672 +3 2021 2671 2672 +3 2021 2671 2672 +3 2021 2671 2672 +3 2021 2671 2672 +3 2021 2671 2672 +4 2021 2022 2455 2456 +4 2021 2022 2455 2456 +4 2021 2022 2455 2456 +4 2021 2022 2455 2456 +4 2021 2022 2455 2456 +4 2021 2022 2455 2456 +4 2022 2024 2819 2821 +4 2022 2024 2819 2821 +4 2022 2024 2819 2821 +4 2022 2024 2819 2821 +4 2022 2024 2819 2821 +4 2022 2024 2819 2821 +8 2023 2024 2498 2499 2714 2715 2776 2777 +8 2023 2024 2498 2499 2714 2715 2776 2777 +8 2023 2024 2498 2499 2714 2715 2776 2777 +8 2023 2024 2498 2499 2714 2715 2776 2777 +8 2023 2024 2498 2499 2714 2715 2776 2777 +8 2023 2024 2498 2499 2714 2715 2776 2777 +3 2023 2714 2715 +3 2023 2714 2715 +3 2023 2714 2715 +3 2023 2714 2715 +3 2023 2714 2715 +3 2023 2714 2715 +4 2023 2024 2498 2499 +4 2023 2024 2498 2499 +4 2023 2024 2498 2499 +4 2023 2024 2498 2499 +4 2023 2024 2498 2499 +4 2023 2024 2498 2499 +3 2024 2776 2777 +3 2024 2776 2777 +3 2024 2776 2777 +3 2024 2776 2777 +3 2024 2776 2777 +3 2024 2776 2777 +11 2025 2026 2027 2028 2327 2328 2370 2371 3007 3008 3009 +11 2025 2026 2027 2028 2327 2328 2370 2371 3007 3008 3009 +11 2025 2026 2027 2028 2327 2328 2370 2371 3007 3008 3009 +11 2025 2026 2027 2028 2327 2328 2370 2371 3007 3008 3009 +11 2025 2026 2027 2028 2327 2328 2370 2371 3007 3008 3009 +11 2025 2026 2027 2028 2327 2328 2370 2371 3007 3008 3009 +4 2025 2027 3007 3009 +4 2025 2027 3007 3009 +4 2025 2027 3007 3009 +4 2025 2027 3007 3009 +4 2025 2027 3007 3009 +4 2025 2027 3007 3009 +8 2025 2027 2543 2544 2586 2587 3007 3009 +8 2025 2027 2543 2544 2586 2587 3007 3009 +8 2025 2027 2543 2544 2586 2587 3007 3009 +8 2025 2027 2543 2544 2586 2587 3007 3009 +8 2025 2027 2543 2544 2586 2587 3007 3009 +8 2025 2027 2543 2544 2586 2587 3007 3009 +3 2025 2543 2544 +3 2025 2543 2544 +3 2025 2543 2544 +3 2025 2543 2544 +3 2025 2543 2544 +3 2025 2543 2544 +5 2025 2543 2544 3065 3067 +5 2025 2543 2544 3065 3067 +5 2025 2543 2544 3065 3067 +5 2025 2543 2544 3065 3067 +5 2025 2543 2544 3065 3067 +5 2025 2543 2544 3065 3067 +3 2025 3065 3067 +3 2025 3065 3067 +3 2025 3065 3067 +3 2025 3065 3067 +3 2025 3065 3067 +3 2025 3065 3067 +4 2025 2026 2327 2328 +4 2025 2026 2327 2328 +4 2025 2026 2327 2328 +4 2025 2026 2327 2328 +4 2025 2026 2327 2328 +4 2025 2026 2327 2328 +3 2026 2028 3008 +3 2026 2028 3008 +3 2026 2028 3008 +3 2026 2028 3008 +3 2026 2028 3008 +3 2026 2028 3008 +11 2027 2028 2029 2030 2370 2371 2413 2414 2958 2959 2960 +11 2027 2028 2029 2030 2370 2371 2413 2414 2958 2959 2960 +11 2027 2028 2029 2030 2370 2371 2413 2414 2958 2959 2960 +11 2027 2028 2029 2030 2370 2371 2413 2414 2958 2959 2960 +11 2027 2028 2029 2030 2370 2371 2413 2414 2958 2959 2960 +11 2027 2028 2029 2030 2370 2371 2413 2414 2958 2959 2960 +4 2027 2029 2958 2960 +4 2027 2029 2958 2960 +4 2027 2029 2958 2960 +4 2027 2029 2958 2960 +4 2027 2029 2958 2960 +4 2027 2029 2958 2960 +8 2027 2029 2586 2587 2629 2630 2958 2960 +8 2027 2029 2586 2587 2629 2630 2958 2960 +8 2027 2029 2586 2587 2629 2630 2958 2960 +8 2027 2029 2586 2587 2629 2630 2958 2960 +8 2027 2029 2586 2587 2629 2630 2958 2960 +8 2027 2029 2586 2587 2629 2630 2958 2960 +3 2027 2586 2587 +3 2027 2586 2587 +3 2027 2586 2587 +3 2027 2586 2587 +3 2027 2586 2587 +3 2027 2586 2587 +4 2027 2028 2370 2371 +4 2027 2028 2370 2371 +4 2027 2028 2370 2371 +4 2027 2028 2370 2371 +4 2027 2028 2370 2371 +4 2027 2028 2370 2371 +3 2028 2030 2959 +3 2028 2030 2959 +3 2028 2030 2959 +3 2028 2030 2959 +3 2028 2030 2959 +3 2028 2030 2959 +11 2029 2030 2031 2032 2413 2414 2456 2457 2901 2902 2903 +11 2029 2030 2031 2032 2413 2414 2456 2457 2901 2902 2903 +11 2029 2030 2031 2032 2413 2414 2456 2457 2901 2902 2903 +11 2029 2030 2031 2032 2413 2414 2456 2457 2901 2902 2903 +11 2029 2030 2031 2032 2413 2414 2456 2457 2901 2902 2903 +11 2029 2030 2031 2032 2413 2414 2456 2457 2901 2902 2903 +4 2029 2031 2901 2903 +4 2029 2031 2901 2903 +4 2029 2031 2901 2903 +4 2029 2031 2901 2903 +4 2029 2031 2901 2903 +4 2029 2031 2901 2903 +8 2029 2031 2629 2630 2672 2673 2901 2903 +8 2029 2031 2629 2630 2672 2673 2901 2903 +8 2029 2031 2629 2630 2672 2673 2901 2903 +8 2029 2031 2629 2630 2672 2673 2901 2903 +8 2029 2031 2629 2630 2672 2673 2901 2903 +8 2029 2031 2629 2630 2672 2673 2901 2903 +3 2029 2629 2630 +3 2029 2629 2630 +3 2029 2629 2630 +3 2029 2629 2630 +3 2029 2629 2630 +3 2029 2629 2630 +4 2029 2030 2413 2414 +4 2029 2030 2413 2414 +4 2029 2030 2413 2414 +4 2029 2030 2413 2414 +4 2029 2030 2413 2414 +4 2029 2030 2413 2414 +3 2030 2032 2902 +3 2030 2032 2902 +3 2030 2032 2902 +3 2030 2032 2902 +3 2030 2032 2902 +3 2030 2032 2902 +12 2031 2032 2033 2034 2456 2457 2499 2500 2820 2821 2822 2823 +12 2031 2032 2033 2034 2456 2457 2499 2500 2820 2821 2822 2823 +12 2031 2032 2033 2034 2456 2457 2499 2500 2820 2821 2822 2823 +12 2031 2032 2033 2034 2456 2457 2499 2500 2820 2821 2822 2823 +12 2031 2032 2033 2034 2456 2457 2499 2500 2820 2821 2822 2823 +12 2031 2032 2033 2034 2456 2457 2499 2500 2820 2821 2822 2823 +4 2031 2033 2820 2822 +4 2031 2033 2820 2822 +4 2031 2033 2820 2822 +4 2031 2033 2820 2822 +4 2031 2033 2820 2822 +4 2031 2033 2820 2822 +8 2031 2033 2672 2673 2715 2716 2820 2822 +8 2031 2033 2672 2673 2715 2716 2820 2822 +8 2031 2033 2672 2673 2715 2716 2820 2822 +8 2031 2033 2672 2673 2715 2716 2820 2822 +8 2031 2033 2672 2673 2715 2716 2820 2822 +8 2031 2033 2672 2673 2715 2716 2820 2822 +3 2031 2672 2673 +3 2031 2672 2673 +3 2031 2672 2673 +3 2031 2672 2673 +3 2031 2672 2673 +3 2031 2672 2673 +4 2031 2032 2456 2457 +4 2031 2032 2456 2457 +4 2031 2032 2456 2457 +4 2031 2032 2456 2457 +4 2031 2032 2456 2457 +4 2031 2032 2456 2457 +4 2032 2034 2821 2823 +4 2032 2034 2821 2823 +4 2032 2034 2821 2823 +4 2032 2034 2821 2823 +4 2032 2034 2821 2823 +4 2032 2034 2821 2823 +8 2033 2034 2499 2500 2715 2716 2777 2778 +8 2033 2034 2499 2500 2715 2716 2777 2778 +8 2033 2034 2499 2500 2715 2716 2777 2778 +8 2033 2034 2499 2500 2715 2716 2777 2778 +8 2033 2034 2499 2500 2715 2716 2777 2778 +8 2033 2034 2499 2500 2715 2716 2777 2778 +3 2033 2715 2716 +3 2033 2715 2716 +3 2033 2715 2716 +3 2033 2715 2716 +3 2033 2715 2716 +3 2033 2715 2716 +4 2033 2034 2499 2500 +4 2033 2034 2499 2500 +4 2033 2034 2499 2500 +4 2033 2034 2499 2500 +4 2033 2034 2499 2500 +4 2033 2034 2499 2500 +3 2034 2777 2778 +3 2034 2777 2778 +3 2034 2777 2778 +3 2034 2777 2778 +3 2034 2777 2778 +3 2034 2777 2778 +8 2035 2036 2328 2329 2371 2372 3009 3010 +8 2035 2036 2328 2329 2371 2372 3009 3010 +8 2035 2036 2328 2329 2371 2372 3009 3010 +8 2035 2036 2328 2329 2371 2372 3009 3010 +8 2035 2036 2328 2329 2371 2372 3009 3010 +8 2035 2036 2328 2329 2371 2372 3009 3010 +4 2035 2036 3009 3010 +4 2035 2036 3009 3010 +4 2035 2036 3009 3010 +4 2035 2036 3009 3010 +4 2035 2036 3009 3010 +4 2035 2036 3009 3010 +8 2035 2036 2544 2545 2587 2588 3009 3010 +8 2035 2036 2544 2545 2587 2588 3009 3010 +8 2035 2036 2544 2545 2587 2588 3009 3010 +8 2035 2036 2544 2545 2587 2588 3009 3010 +8 2035 2036 2544 2545 2587 2588 3009 3010 +8 2035 2036 2544 2545 2587 2588 3009 3010 +3 2035 2544 2545 +3 2035 2544 2545 +3 2035 2544 2545 +3 2035 2544 2545 +3 2035 2544 2545 +3 2035 2544 2545 +5 2035 2544 2545 3067 3068 +5 2035 2544 2545 3067 3068 +5 2035 2544 2545 3067 3068 +5 2035 2544 2545 3067 3068 +5 2035 2544 2545 3067 3068 +5 2035 2544 2545 3067 3068 +3 2035 3067 3068 +3 2035 3067 3068 +3 2035 3067 3068 +3 2035 3067 3068 +3 2035 3067 3068 +3 2035 3067 3068 +3 2035 2328 2329 +3 2035 2328 2329 +3 2035 2328 2329 +3 2035 2328 2329 +3 2035 2328 2329 +3 2035 2328 2329 +8 2036 2037 2371 2372 2414 2415 2960 2961 +8 2036 2037 2371 2372 2414 2415 2960 2961 +8 2036 2037 2371 2372 2414 2415 2960 2961 +8 2036 2037 2371 2372 2414 2415 2960 2961 +8 2036 2037 2371 2372 2414 2415 2960 2961 +8 2036 2037 2371 2372 2414 2415 2960 2961 +4 2036 2037 2960 2961 +4 2036 2037 2960 2961 +4 2036 2037 2960 2961 +4 2036 2037 2960 2961 +4 2036 2037 2960 2961 +4 2036 2037 2960 2961 +8 2036 2037 2587 2588 2630 2631 2960 2961 +8 2036 2037 2587 2588 2630 2631 2960 2961 +8 2036 2037 2587 2588 2630 2631 2960 2961 +8 2036 2037 2587 2588 2630 2631 2960 2961 +8 2036 2037 2587 2588 2630 2631 2960 2961 +8 2036 2037 2587 2588 2630 2631 2960 2961 +3 2036 2587 2588 +3 2036 2587 2588 +3 2036 2587 2588 +3 2036 2587 2588 +3 2036 2587 2588 +3 2036 2587 2588 +3 2036 2371 2372 +3 2036 2371 2372 +3 2036 2371 2372 +3 2036 2371 2372 +3 2036 2371 2372 +3 2036 2371 2372 +8 2037 2038 2414 2415 2457 2458 2903 2904 +8 2037 2038 2414 2415 2457 2458 2903 2904 +8 2037 2038 2414 2415 2457 2458 2903 2904 +8 2037 2038 2414 2415 2457 2458 2903 2904 +8 2037 2038 2414 2415 2457 2458 2903 2904 +8 2037 2038 2414 2415 2457 2458 2903 2904 +4 2037 2038 2903 2904 +4 2037 2038 2903 2904 +4 2037 2038 2903 2904 +4 2037 2038 2903 2904 +4 2037 2038 2903 2904 +4 2037 2038 2903 2904 +8 2037 2038 2630 2631 2673 2674 2903 2904 +8 2037 2038 2630 2631 2673 2674 2903 2904 +8 2037 2038 2630 2631 2673 2674 2903 2904 +8 2037 2038 2630 2631 2673 2674 2903 2904 +8 2037 2038 2630 2631 2673 2674 2903 2904 +8 2037 2038 2630 2631 2673 2674 2903 2904 +3 2037 2630 2631 +3 2037 2630 2631 +3 2037 2630 2631 +3 2037 2630 2631 +3 2037 2630 2631 +3 2037 2630 2631 +3 2037 2414 2415 +3 2037 2414 2415 +3 2037 2414 2415 +3 2037 2414 2415 +3 2037 2414 2415 +3 2037 2414 2415 +11 2038 2039 2040 2457 2458 2500 2501 2822 2823 2824 2825 +11 2038 2039 2040 2457 2458 2500 2501 2822 2823 2824 2825 +11 2038 2039 2040 2457 2458 2500 2501 2822 2823 2824 2825 +11 2038 2039 2040 2457 2458 2500 2501 2822 2823 2824 2825 +11 2038 2039 2040 2457 2458 2500 2501 2822 2823 2824 2825 +11 2038 2039 2040 2457 2458 2500 2501 2822 2823 2824 2825 +4 2038 2039 2822 2824 +4 2038 2039 2822 2824 +4 2038 2039 2822 2824 +4 2038 2039 2822 2824 +4 2038 2039 2822 2824 +4 2038 2039 2822 2824 +8 2038 2039 2673 2674 2716 2717 2822 2824 +8 2038 2039 2673 2674 2716 2717 2822 2824 +8 2038 2039 2673 2674 2716 2717 2822 2824 +8 2038 2039 2673 2674 2716 2717 2822 2824 +8 2038 2039 2673 2674 2716 2717 2822 2824 +8 2038 2039 2673 2674 2716 2717 2822 2824 +3 2038 2673 2674 +3 2038 2673 2674 +3 2038 2673 2674 +3 2038 2673 2674 +3 2038 2673 2674 +3 2038 2673 2674 +3 2038 2457 2458 +3 2038 2457 2458 +3 2038 2457 2458 +3 2038 2457 2458 +3 2038 2457 2458 +3 2038 2457 2458 +8 2039 2040 2500 2501 2716 2717 2778 2779 +8 2039 2040 2500 2501 2716 2717 2778 2779 +8 2039 2040 2500 2501 2716 2717 2778 2779 +8 2039 2040 2500 2501 2716 2717 2778 2779 +8 2039 2040 2500 2501 2716 2717 2778 2779 +8 2039 2040 2500 2501 2716 2717 2778 2779 +3 2039 2716 2717 +3 2039 2716 2717 +3 2039 2716 2717 +3 2039 2716 2717 +3 2039 2716 2717 +3 2039 2716 2717 +4 2039 2040 2500 2501 +4 2039 2040 2500 2501 +4 2039 2040 2500 2501 +4 2039 2040 2500 2501 +4 2039 2040 2500 2501 +4 2039 2040 2500 2501 +3 2040 2778 2779 +3 2040 2778 2779 +3 2040 2778 2779 +3 2040 2778 2779 +3 2040 2778 2779 +3 2040 2778 2779 +3 2040 2823 2825 +3 2040 2823 2825 +3 2040 2823 2825 +3 2040 2823 2825 +3 2040 2823 2825 +3 2040 2823 2825 +10 2041 2042 2043 2329 2330 2372 2373 3010 3011 3012 +10 2041 2042 2043 2329 2330 2372 2373 3010 3011 3012 +10 2041 2042 2043 2329 2330 2372 2373 3010 3011 3012 +10 2041 2042 2043 2329 2330 2372 2373 3010 3011 3012 +10 2041 2042 2043 2329 2330 2372 2373 3010 3011 3012 +10 2041 2042 2043 2329 2330 2372 2373 3010 3011 3012 +4 2041 2043 3010 3011 +4 2041 2043 3010 3011 +4 2041 2043 3010 3011 +4 2041 2043 3010 3011 +4 2041 2043 3010 3011 +4 2041 2043 3010 3011 +8 2041 2043 2545 2546 2588 2589 3010 3011 +8 2041 2043 2545 2546 2588 2589 3010 3011 +8 2041 2043 2545 2546 2588 2589 3010 3011 +8 2041 2043 2545 2546 2588 2589 3010 3011 +8 2041 2043 2545 2546 2588 2589 3010 3011 +8 2041 2043 2545 2546 2588 2589 3010 3011 +3 2041 2545 2546 +3 2041 2545 2546 +3 2041 2545 2546 +3 2041 2545 2546 +3 2041 2545 2546 +3 2041 2545 2546 +5 2041 2545 2546 3068 3069 +5 2041 2545 2546 3068 3069 +5 2041 2545 2546 3068 3069 +5 2041 2545 2546 3068 3069 +5 2041 2545 2546 3068 3069 +5 2041 2545 2546 3068 3069 +3 2041 3068 3069 +3 2041 3068 3069 +3 2041 3068 3069 +3 2041 3068 3069 +3 2041 3068 3069 +3 2041 3068 3069 +4 2041 2042 2329 2330 +4 2041 2042 2329 2330 +4 2041 2042 2329 2330 +4 2041 2042 2329 2330 +4 2041 2042 2329 2330 +4 2041 2042 2329 2330 +2 2042 3012 +2 2042 3012 +2 2042 3012 +2 2042 3012 +2 2042 3012 +2 2042 3012 +8 2043 2044 2372 2373 2415 2416 2961 2962 +8 2043 2044 2372 2373 2415 2416 2961 2962 +8 2043 2044 2372 2373 2415 2416 2961 2962 +8 2043 2044 2372 2373 2415 2416 2961 2962 +8 2043 2044 2372 2373 2415 2416 2961 2962 +8 2043 2044 2372 2373 2415 2416 2961 2962 +4 2043 2044 2961 2962 +4 2043 2044 2961 2962 +4 2043 2044 2961 2962 +4 2043 2044 2961 2962 +4 2043 2044 2961 2962 +4 2043 2044 2961 2962 +8 2043 2044 2588 2589 2631 2632 2961 2962 +8 2043 2044 2588 2589 2631 2632 2961 2962 +8 2043 2044 2588 2589 2631 2632 2961 2962 +8 2043 2044 2588 2589 2631 2632 2961 2962 +8 2043 2044 2588 2589 2631 2632 2961 2962 +8 2043 2044 2588 2589 2631 2632 2961 2962 +3 2043 2588 2589 +3 2043 2588 2589 +3 2043 2588 2589 +3 2043 2588 2589 +3 2043 2588 2589 +3 2043 2588 2589 +3 2043 2372 2373 +3 2043 2372 2373 +3 2043 2372 2373 +3 2043 2372 2373 +3 2043 2372 2373 +3 2043 2372 2373 +10 2044 2045 2046 2415 2416 2458 2459 2904 2905 2906 +10 2044 2045 2046 2415 2416 2458 2459 2904 2905 2906 +10 2044 2045 2046 2415 2416 2458 2459 2904 2905 2906 +10 2044 2045 2046 2415 2416 2458 2459 2904 2905 2906 +10 2044 2045 2046 2415 2416 2458 2459 2904 2905 2906 +10 2044 2045 2046 2415 2416 2458 2459 2904 2905 2906 +4 2044 2045 2904 2905 +4 2044 2045 2904 2905 +4 2044 2045 2904 2905 +4 2044 2045 2904 2905 +4 2044 2045 2904 2905 +4 2044 2045 2904 2905 +8 2044 2045 2631 2632 2674 2675 2904 2905 +8 2044 2045 2631 2632 2674 2675 2904 2905 +8 2044 2045 2631 2632 2674 2675 2904 2905 +8 2044 2045 2631 2632 2674 2675 2904 2905 +8 2044 2045 2631 2632 2674 2675 2904 2905 +8 2044 2045 2631 2632 2674 2675 2904 2905 +3 2044 2631 2632 +3 2044 2631 2632 +3 2044 2631 2632 +3 2044 2631 2632 +3 2044 2631 2632 +3 2044 2631 2632 +3 2044 2415 2416 +3 2044 2415 2416 +3 2044 2415 2416 +3 2044 2415 2416 +3 2044 2415 2416 +3 2044 2415 2416 +12 2045 2046 2047 2048 2458 2459 2501 2502 2824 2825 2826 2827 +12 2045 2046 2047 2048 2458 2459 2501 2502 2824 2825 2826 2827 +12 2045 2046 2047 2048 2458 2459 2501 2502 2824 2825 2826 2827 +12 2045 2046 2047 2048 2458 2459 2501 2502 2824 2825 2826 2827 +12 2045 2046 2047 2048 2458 2459 2501 2502 2824 2825 2826 2827 +12 2045 2046 2047 2048 2458 2459 2501 2502 2824 2825 2826 2827 +4 2045 2047 2824 2826 +4 2045 2047 2824 2826 +4 2045 2047 2824 2826 +4 2045 2047 2824 2826 +4 2045 2047 2824 2826 +4 2045 2047 2824 2826 +8 2045 2047 2674 2675 2717 2718 2824 2826 +8 2045 2047 2674 2675 2717 2718 2824 2826 +8 2045 2047 2674 2675 2717 2718 2824 2826 +8 2045 2047 2674 2675 2717 2718 2824 2826 +8 2045 2047 2674 2675 2717 2718 2824 2826 +8 2045 2047 2674 2675 2717 2718 2824 2826 +3 2045 2674 2675 +3 2045 2674 2675 +3 2045 2674 2675 +3 2045 2674 2675 +3 2045 2674 2675 +3 2045 2674 2675 +4 2045 2046 2458 2459 +4 2045 2046 2458 2459 +4 2045 2046 2458 2459 +4 2045 2046 2458 2459 +4 2045 2046 2458 2459 +4 2045 2046 2458 2459 +4 2046 2048 2825 2827 +4 2046 2048 2825 2827 +4 2046 2048 2825 2827 +4 2046 2048 2825 2827 +4 2046 2048 2825 2827 +4 2046 2048 2825 2827 +2 2046 2906 +2 2046 2906 +2 2046 2906 +2 2046 2906 +2 2046 2906 +2 2046 2906 +8 2047 2048 2501 2502 2717 2718 2779 2780 +8 2047 2048 2501 2502 2717 2718 2779 2780 +8 2047 2048 2501 2502 2717 2718 2779 2780 +8 2047 2048 2501 2502 2717 2718 2779 2780 +8 2047 2048 2501 2502 2717 2718 2779 2780 +8 2047 2048 2501 2502 2717 2718 2779 2780 +3 2047 2717 2718 +3 2047 2717 2718 +3 2047 2717 2718 +3 2047 2717 2718 +3 2047 2717 2718 +3 2047 2717 2718 +4 2047 2048 2501 2502 +4 2047 2048 2501 2502 +4 2047 2048 2501 2502 +4 2047 2048 2501 2502 +4 2047 2048 2501 2502 +4 2047 2048 2501 2502 +3 2048 2779 2780 +3 2048 2779 2780 +3 2048 2779 2780 +3 2048 2779 2780 +3 2048 2779 2780 +3 2048 2779 2780 +11 2049 2050 2051 2052 2330 2331 2373 2374 3011 3012 3013 +11 2049 2050 2051 2052 2330 2331 2373 2374 3011 3012 3013 +11 2049 2050 2051 2052 2330 2331 2373 2374 3011 3012 3013 +11 2049 2050 2051 2052 2330 2331 2373 2374 3011 3012 3013 +11 2049 2050 2051 2052 2330 2331 2373 2374 3011 3012 3013 +11 2049 2050 2051 2052 2330 2331 2373 2374 3011 3012 3013 +4 2049 2051 3011 3013 +4 2049 2051 3011 3013 +4 2049 2051 3011 3013 +4 2049 2051 3011 3013 +4 2049 2051 3011 3013 +4 2049 2051 3011 3013 +8 2049 2051 2546 2547 2589 2590 3011 3013 +8 2049 2051 2546 2547 2589 2590 3011 3013 +8 2049 2051 2546 2547 2589 2590 3011 3013 +8 2049 2051 2546 2547 2589 2590 3011 3013 +8 2049 2051 2546 2547 2589 2590 3011 3013 +8 2049 2051 2546 2547 2589 2590 3011 3013 +3 2049 2546 2547 +3 2049 2546 2547 +3 2049 2546 2547 +3 2049 2546 2547 +3 2049 2546 2547 +3 2049 2546 2547 +5 2049 2546 2547 3069 3071 +5 2049 2546 2547 3069 3071 +5 2049 2546 2547 3069 3071 +5 2049 2546 2547 3069 3071 +5 2049 2546 2547 3069 3071 +5 2049 2546 2547 3069 3071 +3 2049 3069 3071 +3 2049 3069 3071 +3 2049 3069 3071 +3 2049 3069 3071 +3 2049 3069 3071 +3 2049 3069 3071 +4 2049 2050 2330 2331 +4 2049 2050 2330 2331 +4 2049 2050 2330 2331 +4 2049 2050 2330 2331 +4 2049 2050 2330 2331 +4 2049 2050 2330 2331 +3 2050 2052 3012 +3 2050 2052 3012 +3 2050 2052 3012 +3 2050 2052 3012 +3 2050 2052 3012 +3 2050 2052 3012 +10 2051 2052 2053 2054 2373 2374 2416 2417 2962 2963 +10 2051 2052 2053 2054 2373 2374 2416 2417 2962 2963 +10 2051 2052 2053 2054 2373 2374 2416 2417 2962 2963 +10 2051 2052 2053 2054 2373 2374 2416 2417 2962 2963 +10 2051 2052 2053 2054 2373 2374 2416 2417 2962 2963 +10 2051 2052 2053 2054 2373 2374 2416 2417 2962 2963 +4 2051 2053 2962 2963 +4 2051 2053 2962 2963 +4 2051 2053 2962 2963 +4 2051 2053 2962 2963 +4 2051 2053 2962 2963 +4 2051 2053 2962 2963 +8 2051 2053 2589 2590 2632 2633 2962 2963 +8 2051 2053 2589 2590 2632 2633 2962 2963 +8 2051 2053 2589 2590 2632 2633 2962 2963 +8 2051 2053 2589 2590 2632 2633 2962 2963 +8 2051 2053 2589 2590 2632 2633 2962 2963 +8 2051 2053 2589 2590 2632 2633 2962 2963 +3 2051 2589 2590 +3 2051 2589 2590 +3 2051 2589 2590 +3 2051 2589 2590 +3 2051 2589 2590 +3 2051 2589 2590 +4 2051 2052 2373 2374 +4 2051 2052 2373 2374 +4 2051 2052 2373 2374 +4 2051 2052 2373 2374 +4 2051 2052 2373 2374 +4 2051 2052 2373 2374 +2 2052 2054 +2 2052 2054 +2 2052 2054 +2 2052 2054 +2 2052 2054 +2 2052 2054 +11 2053 2054 2055 2056 2416 2417 2459 2460 2905 2906 2907 +11 2053 2054 2055 2056 2416 2417 2459 2460 2905 2906 2907 +11 2053 2054 2055 2056 2416 2417 2459 2460 2905 2906 2907 +11 2053 2054 2055 2056 2416 2417 2459 2460 2905 2906 2907 +11 2053 2054 2055 2056 2416 2417 2459 2460 2905 2906 2907 +11 2053 2054 2055 2056 2416 2417 2459 2460 2905 2906 2907 +4 2053 2055 2905 2907 +4 2053 2055 2905 2907 +4 2053 2055 2905 2907 +4 2053 2055 2905 2907 +4 2053 2055 2905 2907 +4 2053 2055 2905 2907 +8 2053 2055 2632 2633 2675 2676 2905 2907 +8 2053 2055 2632 2633 2675 2676 2905 2907 +8 2053 2055 2632 2633 2675 2676 2905 2907 +8 2053 2055 2632 2633 2675 2676 2905 2907 +8 2053 2055 2632 2633 2675 2676 2905 2907 +8 2053 2055 2632 2633 2675 2676 2905 2907 +3 2053 2632 2633 +3 2053 2632 2633 +3 2053 2632 2633 +3 2053 2632 2633 +3 2053 2632 2633 +3 2053 2632 2633 +4 2053 2054 2416 2417 +4 2053 2054 2416 2417 +4 2053 2054 2416 2417 +4 2053 2054 2416 2417 +4 2053 2054 2416 2417 +4 2053 2054 2416 2417 +3 2054 2056 2906 +3 2054 2056 2906 +3 2054 2056 2906 +3 2054 2056 2906 +3 2054 2056 2906 +3 2054 2056 2906 +12 2055 2056 2057 2058 2459 2460 2502 2503 2826 2827 2828 2829 +12 2055 2056 2057 2058 2459 2460 2502 2503 2826 2827 2828 2829 +12 2055 2056 2057 2058 2459 2460 2502 2503 2826 2827 2828 2829 +12 2055 2056 2057 2058 2459 2460 2502 2503 2826 2827 2828 2829 +12 2055 2056 2057 2058 2459 2460 2502 2503 2826 2827 2828 2829 +12 2055 2056 2057 2058 2459 2460 2502 2503 2826 2827 2828 2829 +4 2055 2057 2826 2828 +4 2055 2057 2826 2828 +4 2055 2057 2826 2828 +4 2055 2057 2826 2828 +4 2055 2057 2826 2828 +4 2055 2057 2826 2828 +8 2055 2057 2675 2676 2718 2719 2826 2828 +8 2055 2057 2675 2676 2718 2719 2826 2828 +8 2055 2057 2675 2676 2718 2719 2826 2828 +8 2055 2057 2675 2676 2718 2719 2826 2828 +8 2055 2057 2675 2676 2718 2719 2826 2828 +8 2055 2057 2675 2676 2718 2719 2826 2828 +3 2055 2675 2676 +3 2055 2675 2676 +3 2055 2675 2676 +3 2055 2675 2676 +3 2055 2675 2676 +3 2055 2675 2676 +4 2055 2056 2459 2460 +4 2055 2056 2459 2460 +4 2055 2056 2459 2460 +4 2055 2056 2459 2460 +4 2055 2056 2459 2460 +4 2055 2056 2459 2460 +4 2056 2058 2827 2829 +4 2056 2058 2827 2829 +4 2056 2058 2827 2829 +4 2056 2058 2827 2829 +4 2056 2058 2827 2829 +4 2056 2058 2827 2829 +8 2057 2058 2502 2503 2718 2719 2780 2781 +8 2057 2058 2502 2503 2718 2719 2780 2781 +8 2057 2058 2502 2503 2718 2719 2780 2781 +8 2057 2058 2502 2503 2718 2719 2780 2781 +8 2057 2058 2502 2503 2718 2719 2780 2781 +8 2057 2058 2502 2503 2718 2719 2780 2781 +3 2057 2718 2719 +3 2057 2718 2719 +3 2057 2718 2719 +3 2057 2718 2719 +3 2057 2718 2719 +3 2057 2718 2719 +4 2057 2058 2502 2503 +4 2057 2058 2502 2503 +4 2057 2058 2502 2503 +4 2057 2058 2502 2503 +4 2057 2058 2502 2503 +4 2057 2058 2502 2503 +3 2058 2780 2781 +3 2058 2780 2781 +3 2058 2780 2781 +3 2058 2780 2781 +3 2058 2780 2781 +3 2058 2780 2781 +8 2059 2060 2331 2332 2374 2375 3013 3014 +8 2059 2060 2331 2332 2374 2375 3013 3014 +8 2059 2060 2331 2332 2374 2375 3013 3014 +8 2059 2060 2331 2332 2374 2375 3013 3014 +8 2059 2060 2331 2332 2374 2375 3013 3014 +8 2059 2060 2331 2332 2374 2375 3013 3014 +4 2059 2060 3013 3014 +4 2059 2060 3013 3014 +4 2059 2060 3013 3014 +4 2059 2060 3013 3014 +4 2059 2060 3013 3014 +4 2059 2060 3013 3014 +8 2059 2060 2547 2548 2590 2591 3013 3014 +8 2059 2060 2547 2548 2590 2591 3013 3014 +8 2059 2060 2547 2548 2590 2591 3013 3014 +8 2059 2060 2547 2548 2590 2591 3013 3014 +8 2059 2060 2547 2548 2590 2591 3013 3014 +8 2059 2060 2547 2548 2590 2591 3013 3014 +3 2059 2547 2548 +3 2059 2547 2548 +3 2059 2547 2548 +3 2059 2547 2548 +3 2059 2547 2548 +3 2059 2547 2548 +5 2059 2547 2548 3071 3072 +5 2059 2547 2548 3071 3072 +5 2059 2547 2548 3071 3072 +5 2059 2547 2548 3071 3072 +5 2059 2547 2548 3071 3072 +5 2059 2547 2548 3071 3072 +3 2059 3071 3072 +3 2059 3071 3072 +3 2059 3071 3072 +3 2059 3071 3072 +3 2059 3071 3072 +3 2059 3071 3072 +3 2059 2331 2332 +3 2059 2331 2332 +3 2059 2331 2332 +3 2059 2331 2332 +3 2059 2331 2332 +3 2059 2331 2332 +8 2060 2061 2374 2375 2417 2418 2963 2964 +8 2060 2061 2374 2375 2417 2418 2963 2964 +8 2060 2061 2374 2375 2417 2418 2963 2964 +8 2060 2061 2374 2375 2417 2418 2963 2964 +8 2060 2061 2374 2375 2417 2418 2963 2964 +8 2060 2061 2374 2375 2417 2418 2963 2964 +4 2060 2061 2963 2964 +4 2060 2061 2963 2964 +4 2060 2061 2963 2964 +4 2060 2061 2963 2964 +4 2060 2061 2963 2964 +4 2060 2061 2963 2964 +8 2060 2061 2590 2591 2633 2634 2963 2964 +8 2060 2061 2590 2591 2633 2634 2963 2964 +8 2060 2061 2590 2591 2633 2634 2963 2964 +8 2060 2061 2590 2591 2633 2634 2963 2964 +8 2060 2061 2590 2591 2633 2634 2963 2964 +8 2060 2061 2590 2591 2633 2634 2963 2964 +3 2060 2590 2591 +3 2060 2590 2591 +3 2060 2590 2591 +3 2060 2590 2591 +3 2060 2590 2591 +3 2060 2590 2591 +3 2060 2374 2375 +3 2060 2374 2375 +3 2060 2374 2375 +3 2060 2374 2375 +3 2060 2374 2375 +3 2060 2374 2375 +8 2061 2062 2417 2418 2460 2461 2907 2908 +8 2061 2062 2417 2418 2460 2461 2907 2908 +8 2061 2062 2417 2418 2460 2461 2907 2908 +8 2061 2062 2417 2418 2460 2461 2907 2908 +8 2061 2062 2417 2418 2460 2461 2907 2908 +8 2061 2062 2417 2418 2460 2461 2907 2908 +4 2061 2062 2907 2908 +4 2061 2062 2907 2908 +4 2061 2062 2907 2908 +4 2061 2062 2907 2908 +4 2061 2062 2907 2908 +4 2061 2062 2907 2908 +8 2061 2062 2633 2634 2676 2677 2907 2908 +8 2061 2062 2633 2634 2676 2677 2907 2908 +8 2061 2062 2633 2634 2676 2677 2907 2908 +8 2061 2062 2633 2634 2676 2677 2907 2908 +8 2061 2062 2633 2634 2676 2677 2907 2908 +8 2061 2062 2633 2634 2676 2677 2907 2908 +3 2061 2633 2634 +3 2061 2633 2634 +3 2061 2633 2634 +3 2061 2633 2634 +3 2061 2633 2634 +3 2061 2633 2634 +3 2061 2417 2418 +3 2061 2417 2418 +3 2061 2417 2418 +3 2061 2417 2418 +3 2061 2417 2418 +3 2061 2417 2418 +11 2062 2063 2064 2460 2461 2503 2504 2828 2829 2830 2831 +11 2062 2063 2064 2460 2461 2503 2504 2828 2829 2830 2831 +11 2062 2063 2064 2460 2461 2503 2504 2828 2829 2830 2831 +11 2062 2063 2064 2460 2461 2503 2504 2828 2829 2830 2831 +11 2062 2063 2064 2460 2461 2503 2504 2828 2829 2830 2831 +11 2062 2063 2064 2460 2461 2503 2504 2828 2829 2830 2831 +4 2062 2063 2828 2830 +4 2062 2063 2828 2830 +4 2062 2063 2828 2830 +4 2062 2063 2828 2830 +4 2062 2063 2828 2830 +4 2062 2063 2828 2830 +8 2062 2063 2676 2677 2719 2720 2828 2830 +8 2062 2063 2676 2677 2719 2720 2828 2830 +8 2062 2063 2676 2677 2719 2720 2828 2830 +8 2062 2063 2676 2677 2719 2720 2828 2830 +8 2062 2063 2676 2677 2719 2720 2828 2830 +8 2062 2063 2676 2677 2719 2720 2828 2830 +3 2062 2676 2677 +3 2062 2676 2677 +3 2062 2676 2677 +3 2062 2676 2677 +3 2062 2676 2677 +3 2062 2676 2677 +3 2062 2460 2461 +3 2062 2460 2461 +3 2062 2460 2461 +3 2062 2460 2461 +3 2062 2460 2461 +3 2062 2460 2461 +8 2063 2064 2503 2504 2719 2720 2781 2782 +8 2063 2064 2503 2504 2719 2720 2781 2782 +8 2063 2064 2503 2504 2719 2720 2781 2782 +8 2063 2064 2503 2504 2719 2720 2781 2782 +8 2063 2064 2503 2504 2719 2720 2781 2782 +8 2063 2064 2503 2504 2719 2720 2781 2782 +3 2063 2719 2720 +3 2063 2719 2720 +3 2063 2719 2720 +3 2063 2719 2720 +3 2063 2719 2720 +3 2063 2719 2720 +4 2063 2064 2503 2504 +4 2063 2064 2503 2504 +4 2063 2064 2503 2504 +4 2063 2064 2503 2504 +4 2063 2064 2503 2504 +4 2063 2064 2503 2504 +3 2064 2781 2782 +3 2064 2781 2782 +3 2064 2781 2782 +3 2064 2781 2782 +3 2064 2781 2782 +3 2064 2781 2782 +3 2064 2829 2831 +3 2064 2829 2831 +3 2064 2829 2831 +3 2064 2829 2831 +3 2064 2829 2831 +3 2064 2829 2831 +10 2065 2066 2067 2332 2333 2375 2376 3014 3015 3016 +10 2065 2066 2067 2332 2333 2375 2376 3014 3015 3016 +10 2065 2066 2067 2332 2333 2375 2376 3014 3015 3016 +10 2065 2066 2067 2332 2333 2375 2376 3014 3015 3016 +10 2065 2066 2067 2332 2333 2375 2376 3014 3015 3016 +10 2065 2066 2067 2332 2333 2375 2376 3014 3015 3016 +4 2065 2067 3014 3015 +4 2065 2067 3014 3015 +4 2065 2067 3014 3015 +4 2065 2067 3014 3015 +4 2065 2067 3014 3015 +4 2065 2067 3014 3015 +8 2065 2067 2548 2549 2591 2592 3014 3015 +8 2065 2067 2548 2549 2591 2592 3014 3015 +8 2065 2067 2548 2549 2591 2592 3014 3015 +8 2065 2067 2548 2549 2591 2592 3014 3015 +8 2065 2067 2548 2549 2591 2592 3014 3015 +8 2065 2067 2548 2549 2591 2592 3014 3015 +3 2065 2548 2549 +3 2065 2548 2549 +3 2065 2548 2549 +3 2065 2548 2549 +3 2065 2548 2549 +3 2065 2548 2549 +5 2065 2548 2549 3072 3073 +5 2065 2548 2549 3072 3073 +5 2065 2548 2549 3072 3073 +5 2065 2548 2549 3072 3073 +5 2065 2548 2549 3072 3073 +5 2065 2548 2549 3072 3073 +3 2065 3072 3073 +3 2065 3072 3073 +3 2065 3072 3073 +3 2065 3072 3073 +3 2065 3072 3073 +3 2065 3072 3073 +4 2065 2066 2332 2333 +4 2065 2066 2332 2333 +4 2065 2066 2332 2333 +4 2065 2066 2332 2333 +4 2065 2066 2332 2333 +4 2065 2066 2332 2333 +2 2066 3016 +2 2066 3016 +2 2066 3016 +2 2066 3016 +2 2066 3016 +2 2066 3016 +8 2067 2068 2375 2376 2418 2419 2964 2965 +8 2067 2068 2375 2376 2418 2419 2964 2965 +8 2067 2068 2375 2376 2418 2419 2964 2965 +8 2067 2068 2375 2376 2418 2419 2964 2965 +8 2067 2068 2375 2376 2418 2419 2964 2965 +8 2067 2068 2375 2376 2418 2419 2964 2965 +4 2067 2068 2964 2965 +4 2067 2068 2964 2965 +4 2067 2068 2964 2965 +4 2067 2068 2964 2965 +4 2067 2068 2964 2965 +4 2067 2068 2964 2965 +8 2067 2068 2591 2592 2634 2635 2964 2965 +8 2067 2068 2591 2592 2634 2635 2964 2965 +8 2067 2068 2591 2592 2634 2635 2964 2965 +8 2067 2068 2591 2592 2634 2635 2964 2965 +8 2067 2068 2591 2592 2634 2635 2964 2965 +8 2067 2068 2591 2592 2634 2635 2964 2965 +3 2067 2591 2592 +3 2067 2591 2592 +3 2067 2591 2592 +3 2067 2591 2592 +3 2067 2591 2592 +3 2067 2591 2592 +3 2067 2375 2376 +3 2067 2375 2376 +3 2067 2375 2376 +3 2067 2375 2376 +3 2067 2375 2376 +3 2067 2375 2376 +10 2068 2069 2070 2418 2419 2461 2462 2908 2909 2910 +10 2068 2069 2070 2418 2419 2461 2462 2908 2909 2910 +10 2068 2069 2070 2418 2419 2461 2462 2908 2909 2910 +10 2068 2069 2070 2418 2419 2461 2462 2908 2909 2910 +10 2068 2069 2070 2418 2419 2461 2462 2908 2909 2910 +10 2068 2069 2070 2418 2419 2461 2462 2908 2909 2910 +4 2068 2069 2908 2909 +4 2068 2069 2908 2909 +4 2068 2069 2908 2909 +4 2068 2069 2908 2909 +4 2068 2069 2908 2909 +4 2068 2069 2908 2909 +8 2068 2069 2634 2635 2677 2678 2908 2909 +8 2068 2069 2634 2635 2677 2678 2908 2909 +8 2068 2069 2634 2635 2677 2678 2908 2909 +8 2068 2069 2634 2635 2677 2678 2908 2909 +8 2068 2069 2634 2635 2677 2678 2908 2909 +8 2068 2069 2634 2635 2677 2678 2908 2909 +3 2068 2634 2635 +3 2068 2634 2635 +3 2068 2634 2635 +3 2068 2634 2635 +3 2068 2634 2635 +3 2068 2634 2635 +3 2068 2418 2419 +3 2068 2418 2419 +3 2068 2418 2419 +3 2068 2418 2419 +3 2068 2418 2419 +3 2068 2418 2419 +12 2069 2070 2071 2072 2461 2462 2504 2505 2830 2831 2832 2833 +12 2069 2070 2071 2072 2461 2462 2504 2505 2830 2831 2832 2833 +12 2069 2070 2071 2072 2461 2462 2504 2505 2830 2831 2832 2833 +12 2069 2070 2071 2072 2461 2462 2504 2505 2830 2831 2832 2833 +12 2069 2070 2071 2072 2461 2462 2504 2505 2830 2831 2832 2833 +12 2069 2070 2071 2072 2461 2462 2504 2505 2830 2831 2832 2833 +4 2069 2071 2830 2832 +4 2069 2071 2830 2832 +4 2069 2071 2830 2832 +4 2069 2071 2830 2832 +4 2069 2071 2830 2832 +4 2069 2071 2830 2832 +8 2069 2071 2677 2678 2720 2721 2830 2832 +8 2069 2071 2677 2678 2720 2721 2830 2832 +8 2069 2071 2677 2678 2720 2721 2830 2832 +8 2069 2071 2677 2678 2720 2721 2830 2832 +8 2069 2071 2677 2678 2720 2721 2830 2832 +8 2069 2071 2677 2678 2720 2721 2830 2832 +3 2069 2677 2678 +3 2069 2677 2678 +3 2069 2677 2678 +3 2069 2677 2678 +3 2069 2677 2678 +3 2069 2677 2678 +4 2069 2070 2461 2462 +4 2069 2070 2461 2462 +4 2069 2070 2461 2462 +4 2069 2070 2461 2462 +4 2069 2070 2461 2462 +4 2069 2070 2461 2462 +4 2070 2072 2831 2833 +4 2070 2072 2831 2833 +4 2070 2072 2831 2833 +4 2070 2072 2831 2833 +4 2070 2072 2831 2833 +4 2070 2072 2831 2833 +2 2070 2910 +2 2070 2910 +2 2070 2910 +2 2070 2910 +2 2070 2910 +2 2070 2910 +8 2071 2072 2504 2505 2720 2721 2782 2783 +8 2071 2072 2504 2505 2720 2721 2782 2783 +8 2071 2072 2504 2505 2720 2721 2782 2783 +8 2071 2072 2504 2505 2720 2721 2782 2783 +8 2071 2072 2504 2505 2720 2721 2782 2783 +8 2071 2072 2504 2505 2720 2721 2782 2783 +3 2071 2720 2721 +3 2071 2720 2721 +3 2071 2720 2721 +3 2071 2720 2721 +3 2071 2720 2721 +3 2071 2720 2721 +4 2071 2072 2504 2505 +4 2071 2072 2504 2505 +4 2071 2072 2504 2505 +4 2071 2072 2504 2505 +4 2071 2072 2504 2505 +4 2071 2072 2504 2505 +3 2072 2782 2783 +3 2072 2782 2783 +3 2072 2782 2783 +3 2072 2782 2783 +3 2072 2782 2783 +3 2072 2782 2783 +10 2073 2074 2075 2333 2334 2376 2377 3015 3016 3017 +10 2073 2074 2075 2333 2334 2376 2377 3015 3016 3017 +10 2073 2074 2075 2333 2334 2376 2377 3015 3016 3017 +10 2073 2074 2075 2333 2334 2376 2377 3015 3016 3017 +10 2073 2074 2075 2333 2334 2376 2377 3015 3016 3017 +10 2073 2074 2075 2333 2334 2376 2377 3015 3016 3017 +4 2073 2075 3015 3017 +4 2073 2075 3015 3017 +4 2073 2075 3015 3017 +4 2073 2075 3015 3017 +4 2073 2075 3015 3017 +4 2073 2075 3015 3017 +8 2073 2075 2549 2550 2592 2593 3015 3017 +8 2073 2075 2549 2550 2592 2593 3015 3017 +8 2073 2075 2549 2550 2592 2593 3015 3017 +8 2073 2075 2549 2550 2592 2593 3015 3017 +8 2073 2075 2549 2550 2592 2593 3015 3017 +8 2073 2075 2549 2550 2592 2593 3015 3017 +3 2073 2549 2550 +3 2073 2549 2550 +3 2073 2549 2550 +3 2073 2549 2550 +3 2073 2549 2550 +3 2073 2549 2550 +5 2073 2549 2550 3073 3075 +5 2073 2549 2550 3073 3075 +5 2073 2549 2550 3073 3075 +5 2073 2549 2550 3073 3075 +5 2073 2549 2550 3073 3075 +5 2073 2549 2550 3073 3075 +3 2073 3073 3075 +3 2073 3073 3075 +3 2073 3073 3075 +3 2073 3073 3075 +3 2073 3073 3075 +3 2073 3073 3075 +4 2073 2074 2333 2334 +4 2073 2074 2333 2334 +4 2073 2074 2333 2334 +4 2073 2074 2333 2334 +4 2073 2074 2333 2334 +4 2073 2074 2333 2334 +2 2074 3016 +2 2074 3016 +2 2074 3016 +2 2074 3016 +2 2074 3016 +2 2074 3016 +8 2075 2076 2376 2377 2419 2420 2965 2966 +8 2075 2076 2376 2377 2419 2420 2965 2966 +8 2075 2076 2376 2377 2419 2420 2965 2966 +8 2075 2076 2376 2377 2419 2420 2965 2966 +8 2075 2076 2376 2377 2419 2420 2965 2966 +8 2075 2076 2376 2377 2419 2420 2965 2966 +4 2075 2076 2965 2966 +4 2075 2076 2965 2966 +4 2075 2076 2965 2966 +4 2075 2076 2965 2966 +4 2075 2076 2965 2966 +4 2075 2076 2965 2966 +8 2075 2076 2592 2593 2635 2636 2965 2966 +8 2075 2076 2592 2593 2635 2636 2965 2966 +8 2075 2076 2592 2593 2635 2636 2965 2966 +8 2075 2076 2592 2593 2635 2636 2965 2966 +8 2075 2076 2592 2593 2635 2636 2965 2966 +8 2075 2076 2592 2593 2635 2636 2965 2966 +3 2075 2592 2593 +3 2075 2592 2593 +3 2075 2592 2593 +3 2075 2592 2593 +3 2075 2592 2593 +3 2075 2592 2593 +3 2075 2376 2377 +3 2075 2376 2377 +3 2075 2376 2377 +3 2075 2376 2377 +3 2075 2376 2377 +3 2075 2376 2377 +10 2076 2077 2078 2419 2420 2462 2463 2909 2910 2911 +10 2076 2077 2078 2419 2420 2462 2463 2909 2910 2911 +10 2076 2077 2078 2419 2420 2462 2463 2909 2910 2911 +10 2076 2077 2078 2419 2420 2462 2463 2909 2910 2911 +10 2076 2077 2078 2419 2420 2462 2463 2909 2910 2911 +10 2076 2077 2078 2419 2420 2462 2463 2909 2910 2911 +4 2076 2077 2909 2911 +4 2076 2077 2909 2911 +4 2076 2077 2909 2911 +4 2076 2077 2909 2911 +4 2076 2077 2909 2911 +4 2076 2077 2909 2911 +8 2076 2077 2635 2636 2678 2679 2909 2911 +8 2076 2077 2635 2636 2678 2679 2909 2911 +8 2076 2077 2635 2636 2678 2679 2909 2911 +8 2076 2077 2635 2636 2678 2679 2909 2911 +8 2076 2077 2635 2636 2678 2679 2909 2911 +8 2076 2077 2635 2636 2678 2679 2909 2911 +3 2076 2635 2636 +3 2076 2635 2636 +3 2076 2635 2636 +3 2076 2635 2636 +3 2076 2635 2636 +3 2076 2635 2636 +3 2076 2419 2420 +3 2076 2419 2420 +3 2076 2419 2420 +3 2076 2419 2420 +3 2076 2419 2420 +3 2076 2419 2420 +12 2077 2078 2079 2080 2462 2463 2505 2506 2832 2833 2834 2835 +12 2077 2078 2079 2080 2462 2463 2505 2506 2832 2833 2834 2835 +12 2077 2078 2079 2080 2462 2463 2505 2506 2832 2833 2834 2835 +12 2077 2078 2079 2080 2462 2463 2505 2506 2832 2833 2834 2835 +12 2077 2078 2079 2080 2462 2463 2505 2506 2832 2833 2834 2835 +12 2077 2078 2079 2080 2462 2463 2505 2506 2832 2833 2834 2835 +4 2077 2079 2832 2834 +4 2077 2079 2832 2834 +4 2077 2079 2832 2834 +4 2077 2079 2832 2834 +4 2077 2079 2832 2834 +4 2077 2079 2832 2834 +8 2077 2079 2678 2679 2721 2722 2832 2834 +8 2077 2079 2678 2679 2721 2722 2832 2834 +8 2077 2079 2678 2679 2721 2722 2832 2834 +8 2077 2079 2678 2679 2721 2722 2832 2834 +8 2077 2079 2678 2679 2721 2722 2832 2834 +8 2077 2079 2678 2679 2721 2722 2832 2834 +3 2077 2678 2679 +3 2077 2678 2679 +3 2077 2678 2679 +3 2077 2678 2679 +3 2077 2678 2679 +3 2077 2678 2679 +4 2077 2078 2462 2463 +4 2077 2078 2462 2463 +4 2077 2078 2462 2463 +4 2077 2078 2462 2463 +4 2077 2078 2462 2463 +4 2077 2078 2462 2463 +4 2078 2080 2833 2835 +4 2078 2080 2833 2835 +4 2078 2080 2833 2835 +4 2078 2080 2833 2835 +4 2078 2080 2833 2835 +4 2078 2080 2833 2835 +2 2078 2910 +2 2078 2910 +2 2078 2910 +2 2078 2910 +2 2078 2910 +2 2078 2910 +8 2079 2080 2505 2506 2721 2722 2783 2784 +8 2079 2080 2505 2506 2721 2722 2783 2784 +8 2079 2080 2505 2506 2721 2722 2783 2784 +8 2079 2080 2505 2506 2721 2722 2783 2784 +8 2079 2080 2505 2506 2721 2722 2783 2784 +8 2079 2080 2505 2506 2721 2722 2783 2784 +3 2079 2721 2722 +3 2079 2721 2722 +3 2079 2721 2722 +3 2079 2721 2722 +3 2079 2721 2722 +3 2079 2721 2722 +4 2079 2080 2505 2506 +4 2079 2080 2505 2506 +4 2079 2080 2505 2506 +4 2079 2080 2505 2506 +4 2079 2080 2505 2506 +4 2079 2080 2505 2506 +3 2080 2783 2784 +3 2080 2783 2784 +3 2080 2783 2784 +3 2080 2783 2784 +3 2080 2783 2784 +3 2080 2783 2784 +8 2081 2082 2334 2335 2377 2378 3017 3018 +8 2081 2082 2334 2335 2377 2378 3017 3018 +8 2081 2082 2334 2335 2377 2378 3017 3018 +8 2081 2082 2334 2335 2377 2378 3017 3018 +8 2081 2082 2334 2335 2377 2378 3017 3018 +8 2081 2082 2334 2335 2377 2378 3017 3018 +4 2081 2082 3017 3018 +4 2081 2082 3017 3018 +4 2081 2082 3017 3018 +4 2081 2082 3017 3018 +4 2081 2082 3017 3018 +4 2081 2082 3017 3018 +8 2081 2082 2550 2551 2593 2594 3017 3018 +8 2081 2082 2550 2551 2593 2594 3017 3018 +8 2081 2082 2550 2551 2593 2594 3017 3018 +8 2081 2082 2550 2551 2593 2594 3017 3018 +8 2081 2082 2550 2551 2593 2594 3017 3018 +8 2081 2082 2550 2551 2593 2594 3017 3018 +3 2081 2550 2551 +3 2081 2550 2551 +3 2081 2550 2551 +3 2081 2550 2551 +3 2081 2550 2551 +3 2081 2550 2551 +5 2081 2550 2551 3075 3076 +5 2081 2550 2551 3075 3076 +5 2081 2550 2551 3075 3076 +5 2081 2550 2551 3075 3076 +5 2081 2550 2551 3075 3076 +5 2081 2550 2551 3075 3076 +3 2081 3075 3076 +3 2081 3075 3076 +3 2081 3075 3076 +3 2081 3075 3076 +3 2081 3075 3076 +3 2081 3075 3076 +3 2081 2334 2335 +3 2081 2334 2335 +3 2081 2334 2335 +3 2081 2334 2335 +3 2081 2334 2335 +3 2081 2334 2335 +8 2082 2083 2377 2378 2420 2421 2966 2967 +8 2082 2083 2377 2378 2420 2421 2966 2967 +8 2082 2083 2377 2378 2420 2421 2966 2967 +8 2082 2083 2377 2378 2420 2421 2966 2967 +8 2082 2083 2377 2378 2420 2421 2966 2967 +8 2082 2083 2377 2378 2420 2421 2966 2967 +4 2082 2083 2966 2967 +4 2082 2083 2966 2967 +4 2082 2083 2966 2967 +4 2082 2083 2966 2967 +4 2082 2083 2966 2967 +4 2082 2083 2966 2967 +8 2082 2083 2593 2594 2636 2637 2966 2967 +8 2082 2083 2593 2594 2636 2637 2966 2967 +8 2082 2083 2593 2594 2636 2637 2966 2967 +8 2082 2083 2593 2594 2636 2637 2966 2967 +8 2082 2083 2593 2594 2636 2637 2966 2967 +8 2082 2083 2593 2594 2636 2637 2966 2967 +3 2082 2593 2594 +3 2082 2593 2594 +3 2082 2593 2594 +3 2082 2593 2594 +3 2082 2593 2594 +3 2082 2593 2594 +3 2082 2377 2378 +3 2082 2377 2378 +3 2082 2377 2378 +3 2082 2377 2378 +3 2082 2377 2378 +3 2082 2377 2378 +8 2083 2084 2420 2421 2463 2464 2911 2912 +8 2083 2084 2420 2421 2463 2464 2911 2912 +8 2083 2084 2420 2421 2463 2464 2911 2912 +8 2083 2084 2420 2421 2463 2464 2911 2912 +8 2083 2084 2420 2421 2463 2464 2911 2912 +8 2083 2084 2420 2421 2463 2464 2911 2912 +4 2083 2084 2911 2912 +4 2083 2084 2911 2912 +4 2083 2084 2911 2912 +4 2083 2084 2911 2912 +4 2083 2084 2911 2912 +4 2083 2084 2911 2912 +8 2083 2084 2636 2637 2679 2680 2911 2912 +8 2083 2084 2636 2637 2679 2680 2911 2912 +8 2083 2084 2636 2637 2679 2680 2911 2912 +8 2083 2084 2636 2637 2679 2680 2911 2912 +8 2083 2084 2636 2637 2679 2680 2911 2912 +8 2083 2084 2636 2637 2679 2680 2911 2912 +3 2083 2636 2637 +3 2083 2636 2637 +3 2083 2636 2637 +3 2083 2636 2637 +3 2083 2636 2637 +3 2083 2636 2637 +3 2083 2420 2421 +3 2083 2420 2421 +3 2083 2420 2421 +3 2083 2420 2421 +3 2083 2420 2421 +3 2083 2420 2421 +11 2084 2085 2086 2463 2464 2506 2507 2834 2835 2836 2837 +11 2084 2085 2086 2463 2464 2506 2507 2834 2835 2836 2837 +11 2084 2085 2086 2463 2464 2506 2507 2834 2835 2836 2837 +11 2084 2085 2086 2463 2464 2506 2507 2834 2835 2836 2837 +11 2084 2085 2086 2463 2464 2506 2507 2834 2835 2836 2837 +11 2084 2085 2086 2463 2464 2506 2507 2834 2835 2836 2837 +4 2084 2085 2834 2836 +4 2084 2085 2834 2836 +4 2084 2085 2834 2836 +4 2084 2085 2834 2836 +4 2084 2085 2834 2836 +4 2084 2085 2834 2836 +8 2084 2085 2679 2680 2722 2723 2834 2836 +8 2084 2085 2679 2680 2722 2723 2834 2836 +8 2084 2085 2679 2680 2722 2723 2834 2836 +8 2084 2085 2679 2680 2722 2723 2834 2836 +8 2084 2085 2679 2680 2722 2723 2834 2836 +8 2084 2085 2679 2680 2722 2723 2834 2836 +3 2084 2679 2680 +3 2084 2679 2680 +3 2084 2679 2680 +3 2084 2679 2680 +3 2084 2679 2680 +3 2084 2679 2680 +3 2084 2463 2464 +3 2084 2463 2464 +3 2084 2463 2464 +3 2084 2463 2464 +3 2084 2463 2464 +3 2084 2463 2464 +8 2085 2086 2506 2507 2722 2723 2784 2785 +8 2085 2086 2506 2507 2722 2723 2784 2785 +8 2085 2086 2506 2507 2722 2723 2784 2785 +8 2085 2086 2506 2507 2722 2723 2784 2785 +8 2085 2086 2506 2507 2722 2723 2784 2785 +8 2085 2086 2506 2507 2722 2723 2784 2785 +3 2085 2722 2723 +3 2085 2722 2723 +3 2085 2722 2723 +3 2085 2722 2723 +3 2085 2722 2723 +3 2085 2722 2723 +4 2085 2086 2506 2507 +4 2085 2086 2506 2507 +4 2085 2086 2506 2507 +4 2085 2086 2506 2507 +4 2085 2086 2506 2507 +4 2085 2086 2506 2507 +3 2086 2784 2785 +3 2086 2784 2785 +3 2086 2784 2785 +3 2086 2784 2785 +3 2086 2784 2785 +3 2086 2784 2785 +3 2086 2835 2837 +3 2086 2835 2837 +3 2086 2835 2837 +3 2086 2835 2837 +3 2086 2835 2837 +3 2086 2835 2837 +10 2087 2088 2089 2335 2336 2378 2379 3018 3019 3020 +10 2087 2088 2089 2335 2336 2378 2379 3018 3019 3020 +10 2087 2088 2089 2335 2336 2378 2379 3018 3019 3020 +10 2087 2088 2089 2335 2336 2378 2379 3018 3019 3020 +10 2087 2088 2089 2335 2336 2378 2379 3018 3019 3020 +10 2087 2088 2089 2335 2336 2378 2379 3018 3019 3020 +4 2087 2089 3018 3019 +4 2087 2089 3018 3019 +4 2087 2089 3018 3019 +4 2087 2089 3018 3019 +4 2087 2089 3018 3019 +4 2087 2089 3018 3019 +8 2087 2089 2551 2552 2594 2595 3018 3019 +8 2087 2089 2551 2552 2594 2595 3018 3019 +8 2087 2089 2551 2552 2594 2595 3018 3019 +8 2087 2089 2551 2552 2594 2595 3018 3019 +8 2087 2089 2551 2552 2594 2595 3018 3019 +8 2087 2089 2551 2552 2594 2595 3018 3019 +3 2087 2551 2552 +3 2087 2551 2552 +3 2087 2551 2552 +3 2087 2551 2552 +3 2087 2551 2552 +3 2087 2551 2552 +5 2087 2551 2552 3076 3077 +5 2087 2551 2552 3076 3077 +5 2087 2551 2552 3076 3077 +5 2087 2551 2552 3076 3077 +5 2087 2551 2552 3076 3077 +5 2087 2551 2552 3076 3077 +3 2087 3076 3077 +3 2087 3076 3077 +3 2087 3076 3077 +3 2087 3076 3077 +3 2087 3076 3077 +3 2087 3076 3077 +4 2087 2088 2335 2336 +4 2087 2088 2335 2336 +4 2087 2088 2335 2336 +4 2087 2088 2335 2336 +4 2087 2088 2335 2336 +4 2087 2088 2335 2336 +2 2088 3020 +2 2088 3020 +2 2088 3020 +2 2088 3020 +2 2088 3020 +2 2088 3020 +8 2089 2090 2378 2379 2421 2422 2967 2968 +8 2089 2090 2378 2379 2421 2422 2967 2968 +8 2089 2090 2378 2379 2421 2422 2967 2968 +8 2089 2090 2378 2379 2421 2422 2967 2968 +8 2089 2090 2378 2379 2421 2422 2967 2968 +8 2089 2090 2378 2379 2421 2422 2967 2968 +4 2089 2090 2967 2968 +4 2089 2090 2967 2968 +4 2089 2090 2967 2968 +4 2089 2090 2967 2968 +4 2089 2090 2967 2968 +4 2089 2090 2967 2968 +8 2089 2090 2594 2595 2637 2638 2967 2968 +8 2089 2090 2594 2595 2637 2638 2967 2968 +8 2089 2090 2594 2595 2637 2638 2967 2968 +8 2089 2090 2594 2595 2637 2638 2967 2968 +8 2089 2090 2594 2595 2637 2638 2967 2968 +8 2089 2090 2594 2595 2637 2638 2967 2968 +3 2089 2594 2595 +3 2089 2594 2595 +3 2089 2594 2595 +3 2089 2594 2595 +3 2089 2594 2595 +3 2089 2594 2595 +3 2089 2378 2379 +3 2089 2378 2379 +3 2089 2378 2379 +3 2089 2378 2379 +3 2089 2378 2379 +3 2089 2378 2379 +10 2090 2091 2092 2421 2422 2464 2465 2912 2913 2914 +10 2090 2091 2092 2421 2422 2464 2465 2912 2913 2914 +10 2090 2091 2092 2421 2422 2464 2465 2912 2913 2914 +10 2090 2091 2092 2421 2422 2464 2465 2912 2913 2914 +10 2090 2091 2092 2421 2422 2464 2465 2912 2913 2914 +10 2090 2091 2092 2421 2422 2464 2465 2912 2913 2914 +4 2090 2091 2912 2913 +4 2090 2091 2912 2913 +4 2090 2091 2912 2913 +4 2090 2091 2912 2913 +4 2090 2091 2912 2913 +4 2090 2091 2912 2913 +8 2090 2091 2637 2638 2680 2681 2912 2913 +8 2090 2091 2637 2638 2680 2681 2912 2913 +8 2090 2091 2637 2638 2680 2681 2912 2913 +8 2090 2091 2637 2638 2680 2681 2912 2913 +8 2090 2091 2637 2638 2680 2681 2912 2913 +8 2090 2091 2637 2638 2680 2681 2912 2913 +3 2090 2637 2638 +3 2090 2637 2638 +3 2090 2637 2638 +3 2090 2637 2638 +3 2090 2637 2638 +3 2090 2637 2638 +3 2090 2421 2422 +3 2090 2421 2422 +3 2090 2421 2422 +3 2090 2421 2422 +3 2090 2421 2422 +3 2090 2421 2422 +12 2091 2092 2093 2094 2464 2465 2507 2508 2836 2837 2838 2839 +12 2091 2092 2093 2094 2464 2465 2507 2508 2836 2837 2838 2839 +12 2091 2092 2093 2094 2464 2465 2507 2508 2836 2837 2838 2839 +12 2091 2092 2093 2094 2464 2465 2507 2508 2836 2837 2838 2839 +12 2091 2092 2093 2094 2464 2465 2507 2508 2836 2837 2838 2839 +12 2091 2092 2093 2094 2464 2465 2507 2508 2836 2837 2838 2839 +4 2091 2093 2836 2838 +4 2091 2093 2836 2838 +4 2091 2093 2836 2838 +4 2091 2093 2836 2838 +4 2091 2093 2836 2838 +4 2091 2093 2836 2838 +8 2091 2093 2680 2681 2723 2724 2836 2838 +8 2091 2093 2680 2681 2723 2724 2836 2838 +8 2091 2093 2680 2681 2723 2724 2836 2838 +8 2091 2093 2680 2681 2723 2724 2836 2838 +8 2091 2093 2680 2681 2723 2724 2836 2838 +8 2091 2093 2680 2681 2723 2724 2836 2838 +3 2091 2680 2681 +3 2091 2680 2681 +3 2091 2680 2681 +3 2091 2680 2681 +3 2091 2680 2681 +3 2091 2680 2681 +4 2091 2092 2464 2465 +4 2091 2092 2464 2465 +4 2091 2092 2464 2465 +4 2091 2092 2464 2465 +4 2091 2092 2464 2465 +4 2091 2092 2464 2465 +4 2092 2094 2837 2839 +4 2092 2094 2837 2839 +4 2092 2094 2837 2839 +4 2092 2094 2837 2839 +4 2092 2094 2837 2839 +4 2092 2094 2837 2839 +2 2092 2914 +2 2092 2914 +2 2092 2914 +2 2092 2914 +2 2092 2914 +2 2092 2914 +8 2093 2094 2507 2508 2723 2724 2785 2786 +8 2093 2094 2507 2508 2723 2724 2785 2786 +8 2093 2094 2507 2508 2723 2724 2785 2786 +8 2093 2094 2507 2508 2723 2724 2785 2786 +8 2093 2094 2507 2508 2723 2724 2785 2786 +8 2093 2094 2507 2508 2723 2724 2785 2786 +3 2093 2723 2724 +3 2093 2723 2724 +3 2093 2723 2724 +3 2093 2723 2724 +3 2093 2723 2724 +3 2093 2723 2724 +4 2093 2094 2507 2508 +4 2093 2094 2507 2508 +4 2093 2094 2507 2508 +4 2093 2094 2507 2508 +4 2093 2094 2507 2508 +4 2093 2094 2507 2508 +3 2094 2785 2786 +3 2094 2785 2786 +3 2094 2785 2786 +3 2094 2785 2786 +3 2094 2785 2786 +3 2094 2785 2786 +11 2095 2096 2097 2098 2336 2337 2379 2380 3019 3020 3021 +11 2095 2096 2097 2098 2336 2337 2379 2380 3019 3020 3021 +11 2095 2096 2097 2098 2336 2337 2379 2380 3019 3020 3021 +11 2095 2096 2097 2098 2336 2337 2379 2380 3019 3020 3021 +11 2095 2096 2097 2098 2336 2337 2379 2380 3019 3020 3021 +11 2095 2096 2097 2098 2336 2337 2379 2380 3019 3020 3021 +4 2095 2097 3019 3021 +4 2095 2097 3019 3021 +4 2095 2097 3019 3021 +4 2095 2097 3019 3021 +4 2095 2097 3019 3021 +4 2095 2097 3019 3021 +8 2095 2097 2552 2553 2595 2596 3019 3021 +8 2095 2097 2552 2553 2595 2596 3019 3021 +8 2095 2097 2552 2553 2595 2596 3019 3021 +8 2095 2097 2552 2553 2595 2596 3019 3021 +8 2095 2097 2552 2553 2595 2596 3019 3021 +8 2095 2097 2552 2553 2595 2596 3019 3021 +3 2095 2552 2553 +3 2095 2552 2553 +3 2095 2552 2553 +3 2095 2552 2553 +3 2095 2552 2553 +3 2095 2552 2553 +5 2095 2552 2553 3077 3079 +5 2095 2552 2553 3077 3079 +5 2095 2552 2553 3077 3079 +5 2095 2552 2553 3077 3079 +5 2095 2552 2553 3077 3079 +5 2095 2552 2553 3077 3079 +3 2095 3077 3079 +3 2095 3077 3079 +3 2095 3077 3079 +3 2095 3077 3079 +3 2095 3077 3079 +3 2095 3077 3079 +4 2095 2096 2336 2337 +4 2095 2096 2336 2337 +4 2095 2096 2336 2337 +4 2095 2096 2336 2337 +4 2095 2096 2336 2337 +4 2095 2096 2336 2337 +3 2096 2098 3020 +3 2096 2098 3020 +3 2096 2098 3020 +3 2096 2098 3020 +3 2096 2098 3020 +3 2096 2098 3020 +10 2097 2098 2099 2100 2379 2380 2422 2423 2968 2969 +10 2097 2098 2099 2100 2379 2380 2422 2423 2968 2969 +10 2097 2098 2099 2100 2379 2380 2422 2423 2968 2969 +10 2097 2098 2099 2100 2379 2380 2422 2423 2968 2969 +10 2097 2098 2099 2100 2379 2380 2422 2423 2968 2969 +10 2097 2098 2099 2100 2379 2380 2422 2423 2968 2969 +4 2097 2099 2968 2969 +4 2097 2099 2968 2969 +4 2097 2099 2968 2969 +4 2097 2099 2968 2969 +4 2097 2099 2968 2969 +4 2097 2099 2968 2969 +8 2097 2099 2595 2596 2638 2639 2968 2969 +8 2097 2099 2595 2596 2638 2639 2968 2969 +8 2097 2099 2595 2596 2638 2639 2968 2969 +8 2097 2099 2595 2596 2638 2639 2968 2969 +8 2097 2099 2595 2596 2638 2639 2968 2969 +8 2097 2099 2595 2596 2638 2639 2968 2969 +3 2097 2595 2596 +3 2097 2595 2596 +3 2097 2595 2596 +3 2097 2595 2596 +3 2097 2595 2596 +3 2097 2595 2596 +4 2097 2098 2379 2380 +4 2097 2098 2379 2380 +4 2097 2098 2379 2380 +4 2097 2098 2379 2380 +4 2097 2098 2379 2380 +4 2097 2098 2379 2380 +2 2098 2100 +2 2098 2100 +2 2098 2100 +2 2098 2100 +2 2098 2100 +2 2098 2100 +11 2099 2100 2101 2102 2422 2423 2465 2466 2913 2914 2915 +11 2099 2100 2101 2102 2422 2423 2465 2466 2913 2914 2915 +11 2099 2100 2101 2102 2422 2423 2465 2466 2913 2914 2915 +11 2099 2100 2101 2102 2422 2423 2465 2466 2913 2914 2915 +11 2099 2100 2101 2102 2422 2423 2465 2466 2913 2914 2915 +11 2099 2100 2101 2102 2422 2423 2465 2466 2913 2914 2915 +4 2099 2101 2913 2915 +4 2099 2101 2913 2915 +4 2099 2101 2913 2915 +4 2099 2101 2913 2915 +4 2099 2101 2913 2915 +4 2099 2101 2913 2915 +8 2099 2101 2638 2639 2681 2682 2913 2915 +8 2099 2101 2638 2639 2681 2682 2913 2915 +8 2099 2101 2638 2639 2681 2682 2913 2915 +8 2099 2101 2638 2639 2681 2682 2913 2915 +8 2099 2101 2638 2639 2681 2682 2913 2915 +8 2099 2101 2638 2639 2681 2682 2913 2915 +3 2099 2638 2639 +3 2099 2638 2639 +3 2099 2638 2639 +3 2099 2638 2639 +3 2099 2638 2639 +3 2099 2638 2639 +4 2099 2100 2422 2423 +4 2099 2100 2422 2423 +4 2099 2100 2422 2423 +4 2099 2100 2422 2423 +4 2099 2100 2422 2423 +4 2099 2100 2422 2423 +3 2100 2102 2914 +3 2100 2102 2914 +3 2100 2102 2914 +3 2100 2102 2914 +3 2100 2102 2914 +3 2100 2102 2914 +12 2101 2102 2103 2104 2465 2466 2508 2509 2838 2839 2840 2841 +12 2101 2102 2103 2104 2465 2466 2508 2509 2838 2839 2840 2841 +12 2101 2102 2103 2104 2465 2466 2508 2509 2838 2839 2840 2841 +12 2101 2102 2103 2104 2465 2466 2508 2509 2838 2839 2840 2841 +12 2101 2102 2103 2104 2465 2466 2508 2509 2838 2839 2840 2841 +12 2101 2102 2103 2104 2465 2466 2508 2509 2838 2839 2840 2841 +4 2101 2103 2838 2840 +4 2101 2103 2838 2840 +4 2101 2103 2838 2840 +4 2101 2103 2838 2840 +4 2101 2103 2838 2840 +4 2101 2103 2838 2840 +8 2101 2103 2681 2682 2724 2725 2838 2840 +8 2101 2103 2681 2682 2724 2725 2838 2840 +8 2101 2103 2681 2682 2724 2725 2838 2840 +8 2101 2103 2681 2682 2724 2725 2838 2840 +8 2101 2103 2681 2682 2724 2725 2838 2840 +8 2101 2103 2681 2682 2724 2725 2838 2840 +3 2101 2681 2682 +3 2101 2681 2682 +3 2101 2681 2682 +3 2101 2681 2682 +3 2101 2681 2682 +3 2101 2681 2682 +4 2101 2102 2465 2466 +4 2101 2102 2465 2466 +4 2101 2102 2465 2466 +4 2101 2102 2465 2466 +4 2101 2102 2465 2466 +4 2101 2102 2465 2466 +4 2102 2104 2839 2841 +4 2102 2104 2839 2841 +4 2102 2104 2839 2841 +4 2102 2104 2839 2841 +4 2102 2104 2839 2841 +4 2102 2104 2839 2841 +8 2103 2104 2508 2509 2724 2725 2786 2787 +8 2103 2104 2508 2509 2724 2725 2786 2787 +8 2103 2104 2508 2509 2724 2725 2786 2787 +8 2103 2104 2508 2509 2724 2725 2786 2787 +8 2103 2104 2508 2509 2724 2725 2786 2787 +8 2103 2104 2508 2509 2724 2725 2786 2787 +3 2103 2724 2725 +3 2103 2724 2725 +3 2103 2724 2725 +3 2103 2724 2725 +3 2103 2724 2725 +3 2103 2724 2725 +4 2103 2104 2508 2509 +4 2103 2104 2508 2509 +4 2103 2104 2508 2509 +4 2103 2104 2508 2509 +4 2103 2104 2508 2509 +4 2103 2104 2508 2509 +3 2104 2786 2787 +3 2104 2786 2787 +3 2104 2786 2787 +3 2104 2786 2787 +3 2104 2786 2787 +3 2104 2786 2787 +8 2105 2106 2337 2338 2380 2381 3021 3022 +8 2105 2106 2337 2338 2380 2381 3021 3022 +8 2105 2106 2337 2338 2380 2381 3021 3022 +8 2105 2106 2337 2338 2380 2381 3021 3022 +8 2105 2106 2337 2338 2380 2381 3021 3022 +8 2105 2106 2337 2338 2380 2381 3021 3022 +4 2105 2106 3021 3022 +4 2105 2106 3021 3022 +4 2105 2106 3021 3022 +4 2105 2106 3021 3022 +4 2105 2106 3021 3022 +4 2105 2106 3021 3022 +8 2105 2106 2553 2554 2596 2597 3021 3022 +8 2105 2106 2553 2554 2596 2597 3021 3022 +8 2105 2106 2553 2554 2596 2597 3021 3022 +8 2105 2106 2553 2554 2596 2597 3021 3022 +8 2105 2106 2553 2554 2596 2597 3021 3022 +8 2105 2106 2553 2554 2596 2597 3021 3022 +3 2105 2553 2554 +3 2105 2553 2554 +3 2105 2553 2554 +3 2105 2553 2554 +3 2105 2553 2554 +3 2105 2553 2554 +5 2105 2553 2554 3079 3080 +5 2105 2553 2554 3079 3080 +5 2105 2553 2554 3079 3080 +5 2105 2553 2554 3079 3080 +5 2105 2553 2554 3079 3080 +5 2105 2553 2554 3079 3080 +3 2105 3079 3080 +3 2105 3079 3080 +3 2105 3079 3080 +3 2105 3079 3080 +3 2105 3079 3080 +3 2105 3079 3080 +3 2105 2337 2338 +3 2105 2337 2338 +3 2105 2337 2338 +3 2105 2337 2338 +3 2105 2337 2338 +3 2105 2337 2338 +8 2106 2107 2380 2381 2423 2424 2969 2970 +8 2106 2107 2380 2381 2423 2424 2969 2970 +8 2106 2107 2380 2381 2423 2424 2969 2970 +8 2106 2107 2380 2381 2423 2424 2969 2970 +8 2106 2107 2380 2381 2423 2424 2969 2970 +8 2106 2107 2380 2381 2423 2424 2969 2970 +4 2106 2107 2969 2970 +4 2106 2107 2969 2970 +4 2106 2107 2969 2970 +4 2106 2107 2969 2970 +4 2106 2107 2969 2970 +4 2106 2107 2969 2970 +8 2106 2107 2596 2597 2639 2640 2969 2970 +8 2106 2107 2596 2597 2639 2640 2969 2970 +8 2106 2107 2596 2597 2639 2640 2969 2970 +8 2106 2107 2596 2597 2639 2640 2969 2970 +8 2106 2107 2596 2597 2639 2640 2969 2970 +8 2106 2107 2596 2597 2639 2640 2969 2970 +3 2106 2596 2597 +3 2106 2596 2597 +3 2106 2596 2597 +3 2106 2596 2597 +3 2106 2596 2597 +3 2106 2596 2597 +3 2106 2380 2381 +3 2106 2380 2381 +3 2106 2380 2381 +3 2106 2380 2381 +3 2106 2380 2381 +3 2106 2380 2381 +8 2107 2108 2423 2424 2466 2467 2915 2916 +8 2107 2108 2423 2424 2466 2467 2915 2916 +8 2107 2108 2423 2424 2466 2467 2915 2916 +8 2107 2108 2423 2424 2466 2467 2915 2916 +8 2107 2108 2423 2424 2466 2467 2915 2916 +8 2107 2108 2423 2424 2466 2467 2915 2916 +4 2107 2108 2915 2916 +4 2107 2108 2915 2916 +4 2107 2108 2915 2916 +4 2107 2108 2915 2916 +4 2107 2108 2915 2916 +4 2107 2108 2915 2916 +8 2107 2108 2639 2640 2682 2683 2915 2916 +8 2107 2108 2639 2640 2682 2683 2915 2916 +8 2107 2108 2639 2640 2682 2683 2915 2916 +8 2107 2108 2639 2640 2682 2683 2915 2916 +8 2107 2108 2639 2640 2682 2683 2915 2916 +8 2107 2108 2639 2640 2682 2683 2915 2916 +3 2107 2639 2640 +3 2107 2639 2640 +3 2107 2639 2640 +3 2107 2639 2640 +3 2107 2639 2640 +3 2107 2639 2640 +3 2107 2423 2424 +3 2107 2423 2424 +3 2107 2423 2424 +3 2107 2423 2424 +3 2107 2423 2424 +3 2107 2423 2424 +11 2108 2109 2110 2466 2467 2509 2510 2840 2841 2842 2843 +11 2108 2109 2110 2466 2467 2509 2510 2840 2841 2842 2843 +11 2108 2109 2110 2466 2467 2509 2510 2840 2841 2842 2843 +11 2108 2109 2110 2466 2467 2509 2510 2840 2841 2842 2843 +11 2108 2109 2110 2466 2467 2509 2510 2840 2841 2842 2843 +11 2108 2109 2110 2466 2467 2509 2510 2840 2841 2842 2843 +4 2108 2109 2840 2842 +4 2108 2109 2840 2842 +4 2108 2109 2840 2842 +4 2108 2109 2840 2842 +4 2108 2109 2840 2842 +4 2108 2109 2840 2842 +8 2108 2109 2682 2683 2725 2726 2840 2842 +8 2108 2109 2682 2683 2725 2726 2840 2842 +8 2108 2109 2682 2683 2725 2726 2840 2842 +8 2108 2109 2682 2683 2725 2726 2840 2842 +8 2108 2109 2682 2683 2725 2726 2840 2842 +8 2108 2109 2682 2683 2725 2726 2840 2842 +3 2108 2682 2683 +3 2108 2682 2683 +3 2108 2682 2683 +3 2108 2682 2683 +3 2108 2682 2683 +3 2108 2682 2683 +3 2108 2466 2467 +3 2108 2466 2467 +3 2108 2466 2467 +3 2108 2466 2467 +3 2108 2466 2467 +3 2108 2466 2467 +8 2109 2110 2509 2510 2725 2726 2787 2788 +8 2109 2110 2509 2510 2725 2726 2787 2788 +8 2109 2110 2509 2510 2725 2726 2787 2788 +8 2109 2110 2509 2510 2725 2726 2787 2788 +8 2109 2110 2509 2510 2725 2726 2787 2788 +8 2109 2110 2509 2510 2725 2726 2787 2788 +3 2109 2725 2726 +3 2109 2725 2726 +3 2109 2725 2726 +3 2109 2725 2726 +3 2109 2725 2726 +3 2109 2725 2726 +4 2109 2110 2509 2510 +4 2109 2110 2509 2510 +4 2109 2110 2509 2510 +4 2109 2110 2509 2510 +4 2109 2110 2509 2510 +4 2109 2110 2509 2510 +3 2110 2787 2788 +3 2110 2787 2788 +3 2110 2787 2788 +3 2110 2787 2788 +3 2110 2787 2788 +3 2110 2787 2788 +3 2110 2841 2843 +3 2110 2841 2843 +3 2110 2841 2843 +3 2110 2841 2843 +3 2110 2841 2843 +3 2110 2841 2843 +10 2111 2112 2113 2338 2339 2381 2382 3022 3023 3024 +10 2111 2112 2113 2338 2339 2381 2382 3022 3023 3024 +10 2111 2112 2113 2338 2339 2381 2382 3022 3023 3024 +10 2111 2112 2113 2338 2339 2381 2382 3022 3023 3024 +10 2111 2112 2113 2338 2339 2381 2382 3022 3023 3024 +10 2111 2112 2113 2338 2339 2381 2382 3022 3023 3024 +4 2111 2113 3022 3023 +4 2111 2113 3022 3023 +4 2111 2113 3022 3023 +4 2111 2113 3022 3023 +4 2111 2113 3022 3023 +4 2111 2113 3022 3023 +8 2111 2113 2554 2555 2597 2598 3022 3023 +8 2111 2113 2554 2555 2597 2598 3022 3023 +8 2111 2113 2554 2555 2597 2598 3022 3023 +8 2111 2113 2554 2555 2597 2598 3022 3023 +8 2111 2113 2554 2555 2597 2598 3022 3023 +8 2111 2113 2554 2555 2597 2598 3022 3023 +3 2111 2554 2555 +3 2111 2554 2555 +3 2111 2554 2555 +3 2111 2554 2555 +3 2111 2554 2555 +3 2111 2554 2555 +5 2111 2554 2555 3080 3081 +5 2111 2554 2555 3080 3081 +5 2111 2554 2555 3080 3081 +5 2111 2554 2555 3080 3081 +5 2111 2554 2555 3080 3081 +5 2111 2554 2555 3080 3081 +3 2111 3080 3081 +3 2111 3080 3081 +3 2111 3080 3081 +3 2111 3080 3081 +3 2111 3080 3081 +3 2111 3080 3081 +4 2111 2112 2338 2339 +4 2111 2112 2338 2339 +4 2111 2112 2338 2339 +4 2111 2112 2338 2339 +4 2111 2112 2338 2339 +4 2111 2112 2338 2339 +2 2112 3024 +2 2112 3024 +2 2112 3024 +2 2112 3024 +2 2112 3024 +2 2112 3024 +8 2113 2114 2381 2382 2424 2425 2970 2971 +8 2113 2114 2381 2382 2424 2425 2970 2971 +8 2113 2114 2381 2382 2424 2425 2970 2971 +8 2113 2114 2381 2382 2424 2425 2970 2971 +8 2113 2114 2381 2382 2424 2425 2970 2971 +8 2113 2114 2381 2382 2424 2425 2970 2971 +4 2113 2114 2970 2971 +4 2113 2114 2970 2971 +4 2113 2114 2970 2971 +4 2113 2114 2970 2971 +4 2113 2114 2970 2971 +4 2113 2114 2970 2971 +8 2113 2114 2597 2598 2640 2641 2970 2971 +8 2113 2114 2597 2598 2640 2641 2970 2971 +8 2113 2114 2597 2598 2640 2641 2970 2971 +8 2113 2114 2597 2598 2640 2641 2970 2971 +8 2113 2114 2597 2598 2640 2641 2970 2971 +8 2113 2114 2597 2598 2640 2641 2970 2971 +3 2113 2597 2598 +3 2113 2597 2598 +3 2113 2597 2598 +3 2113 2597 2598 +3 2113 2597 2598 +3 2113 2597 2598 +3 2113 2381 2382 +3 2113 2381 2382 +3 2113 2381 2382 +3 2113 2381 2382 +3 2113 2381 2382 +3 2113 2381 2382 +10 2114 2115 2116 2424 2425 2467 2468 2916 2917 2918 +10 2114 2115 2116 2424 2425 2467 2468 2916 2917 2918 +10 2114 2115 2116 2424 2425 2467 2468 2916 2917 2918 +10 2114 2115 2116 2424 2425 2467 2468 2916 2917 2918 +10 2114 2115 2116 2424 2425 2467 2468 2916 2917 2918 +10 2114 2115 2116 2424 2425 2467 2468 2916 2917 2918 +4 2114 2115 2916 2917 +4 2114 2115 2916 2917 +4 2114 2115 2916 2917 +4 2114 2115 2916 2917 +4 2114 2115 2916 2917 +4 2114 2115 2916 2917 +8 2114 2115 2640 2641 2683 2684 2916 2917 +8 2114 2115 2640 2641 2683 2684 2916 2917 +8 2114 2115 2640 2641 2683 2684 2916 2917 +8 2114 2115 2640 2641 2683 2684 2916 2917 +8 2114 2115 2640 2641 2683 2684 2916 2917 +8 2114 2115 2640 2641 2683 2684 2916 2917 +3 2114 2640 2641 +3 2114 2640 2641 +3 2114 2640 2641 +3 2114 2640 2641 +3 2114 2640 2641 +3 2114 2640 2641 +3 2114 2424 2425 +3 2114 2424 2425 +3 2114 2424 2425 +3 2114 2424 2425 +3 2114 2424 2425 +3 2114 2424 2425 +12 2115 2116 2117 2118 2467 2468 2510 2511 2842 2843 2844 2845 +12 2115 2116 2117 2118 2467 2468 2510 2511 2842 2843 2844 2845 +12 2115 2116 2117 2118 2467 2468 2510 2511 2842 2843 2844 2845 +12 2115 2116 2117 2118 2467 2468 2510 2511 2842 2843 2844 2845 +12 2115 2116 2117 2118 2467 2468 2510 2511 2842 2843 2844 2845 +12 2115 2116 2117 2118 2467 2468 2510 2511 2842 2843 2844 2845 +4 2115 2117 2842 2844 +4 2115 2117 2842 2844 +4 2115 2117 2842 2844 +4 2115 2117 2842 2844 +4 2115 2117 2842 2844 +4 2115 2117 2842 2844 +8 2115 2117 2683 2684 2726 2727 2842 2844 +8 2115 2117 2683 2684 2726 2727 2842 2844 +8 2115 2117 2683 2684 2726 2727 2842 2844 +8 2115 2117 2683 2684 2726 2727 2842 2844 +8 2115 2117 2683 2684 2726 2727 2842 2844 +8 2115 2117 2683 2684 2726 2727 2842 2844 +3 2115 2683 2684 +3 2115 2683 2684 +3 2115 2683 2684 +3 2115 2683 2684 +3 2115 2683 2684 +3 2115 2683 2684 +4 2115 2116 2467 2468 +4 2115 2116 2467 2468 +4 2115 2116 2467 2468 +4 2115 2116 2467 2468 +4 2115 2116 2467 2468 +4 2115 2116 2467 2468 +4 2116 2118 2843 2845 +4 2116 2118 2843 2845 +4 2116 2118 2843 2845 +4 2116 2118 2843 2845 +4 2116 2118 2843 2845 +4 2116 2118 2843 2845 +2 2116 2918 +2 2116 2918 +2 2116 2918 +2 2116 2918 +2 2116 2918 +2 2116 2918 +8 2117 2118 2510 2511 2726 2727 2788 2789 +8 2117 2118 2510 2511 2726 2727 2788 2789 +8 2117 2118 2510 2511 2726 2727 2788 2789 +8 2117 2118 2510 2511 2726 2727 2788 2789 +8 2117 2118 2510 2511 2726 2727 2788 2789 +8 2117 2118 2510 2511 2726 2727 2788 2789 +3 2117 2726 2727 +3 2117 2726 2727 +3 2117 2726 2727 +3 2117 2726 2727 +3 2117 2726 2727 +3 2117 2726 2727 +4 2117 2118 2510 2511 +4 2117 2118 2510 2511 +4 2117 2118 2510 2511 +4 2117 2118 2510 2511 +4 2117 2118 2510 2511 +4 2117 2118 2510 2511 +3 2118 2788 2789 +3 2118 2788 2789 +3 2118 2788 2789 +3 2118 2788 2789 +3 2118 2788 2789 +3 2118 2788 2789 +10 2119 2120 2121 2339 2340 2382 2383 3023 3024 3025 +10 2119 2120 2121 2339 2340 2382 2383 3023 3024 3025 +10 2119 2120 2121 2339 2340 2382 2383 3023 3024 3025 +10 2119 2120 2121 2339 2340 2382 2383 3023 3024 3025 +10 2119 2120 2121 2339 2340 2382 2383 3023 3024 3025 +10 2119 2120 2121 2339 2340 2382 2383 3023 3024 3025 +4 2119 2121 3023 3025 +4 2119 2121 3023 3025 +4 2119 2121 3023 3025 +4 2119 2121 3023 3025 +4 2119 2121 3023 3025 +4 2119 2121 3023 3025 +8 2119 2121 2555 2556 2598 2599 3023 3025 +8 2119 2121 2555 2556 2598 2599 3023 3025 +8 2119 2121 2555 2556 2598 2599 3023 3025 +8 2119 2121 2555 2556 2598 2599 3023 3025 +8 2119 2121 2555 2556 2598 2599 3023 3025 +8 2119 2121 2555 2556 2598 2599 3023 3025 +3 2119 2555 2556 +3 2119 2555 2556 +3 2119 2555 2556 +3 2119 2555 2556 +3 2119 2555 2556 +3 2119 2555 2556 +5 2119 2555 2556 3081 3083 +5 2119 2555 2556 3081 3083 +5 2119 2555 2556 3081 3083 +5 2119 2555 2556 3081 3083 +5 2119 2555 2556 3081 3083 +5 2119 2555 2556 3081 3083 +3 2119 3081 3083 +3 2119 3081 3083 +3 2119 3081 3083 +3 2119 3081 3083 +3 2119 3081 3083 +3 2119 3081 3083 +4 2119 2120 2339 2340 +4 2119 2120 2339 2340 +4 2119 2120 2339 2340 +4 2119 2120 2339 2340 +4 2119 2120 2339 2340 +4 2119 2120 2339 2340 +2 2120 3024 +2 2120 3024 +2 2120 3024 +2 2120 3024 +2 2120 3024 +2 2120 3024 +8 2121 2122 2382 2383 2425 2426 2971 2972 +8 2121 2122 2382 2383 2425 2426 2971 2972 +8 2121 2122 2382 2383 2425 2426 2971 2972 +8 2121 2122 2382 2383 2425 2426 2971 2972 +8 2121 2122 2382 2383 2425 2426 2971 2972 +8 2121 2122 2382 2383 2425 2426 2971 2972 +4 2121 2122 2971 2972 +4 2121 2122 2971 2972 +4 2121 2122 2971 2972 +4 2121 2122 2971 2972 +4 2121 2122 2971 2972 +4 2121 2122 2971 2972 +8 2121 2122 2598 2599 2641 2642 2971 2972 +8 2121 2122 2598 2599 2641 2642 2971 2972 +8 2121 2122 2598 2599 2641 2642 2971 2972 +8 2121 2122 2598 2599 2641 2642 2971 2972 +8 2121 2122 2598 2599 2641 2642 2971 2972 +8 2121 2122 2598 2599 2641 2642 2971 2972 +3 2121 2598 2599 +3 2121 2598 2599 +3 2121 2598 2599 +3 2121 2598 2599 +3 2121 2598 2599 +3 2121 2598 2599 +3 2121 2382 2383 +3 2121 2382 2383 +3 2121 2382 2383 +3 2121 2382 2383 +3 2121 2382 2383 +3 2121 2382 2383 +10 2122 2123 2124 2425 2426 2468 2469 2917 2918 2919 +10 2122 2123 2124 2425 2426 2468 2469 2917 2918 2919 +10 2122 2123 2124 2425 2426 2468 2469 2917 2918 2919 +10 2122 2123 2124 2425 2426 2468 2469 2917 2918 2919 +10 2122 2123 2124 2425 2426 2468 2469 2917 2918 2919 +10 2122 2123 2124 2425 2426 2468 2469 2917 2918 2919 +4 2122 2123 2917 2919 +4 2122 2123 2917 2919 +4 2122 2123 2917 2919 +4 2122 2123 2917 2919 +4 2122 2123 2917 2919 +4 2122 2123 2917 2919 +8 2122 2123 2641 2642 2684 2685 2917 2919 +8 2122 2123 2641 2642 2684 2685 2917 2919 +8 2122 2123 2641 2642 2684 2685 2917 2919 +8 2122 2123 2641 2642 2684 2685 2917 2919 +8 2122 2123 2641 2642 2684 2685 2917 2919 +8 2122 2123 2641 2642 2684 2685 2917 2919 +3 2122 2641 2642 +3 2122 2641 2642 +3 2122 2641 2642 +3 2122 2641 2642 +3 2122 2641 2642 +3 2122 2641 2642 +3 2122 2425 2426 +3 2122 2425 2426 +3 2122 2425 2426 +3 2122 2425 2426 +3 2122 2425 2426 +3 2122 2425 2426 +12 2123 2124 2125 2126 2468 2469 2511 2512 2844 2845 2846 2847 +12 2123 2124 2125 2126 2468 2469 2511 2512 2844 2845 2846 2847 +12 2123 2124 2125 2126 2468 2469 2511 2512 2844 2845 2846 2847 +12 2123 2124 2125 2126 2468 2469 2511 2512 2844 2845 2846 2847 +12 2123 2124 2125 2126 2468 2469 2511 2512 2844 2845 2846 2847 +12 2123 2124 2125 2126 2468 2469 2511 2512 2844 2845 2846 2847 +4 2123 2125 2844 2846 +4 2123 2125 2844 2846 +4 2123 2125 2844 2846 +4 2123 2125 2844 2846 +4 2123 2125 2844 2846 +4 2123 2125 2844 2846 +8 2123 2125 2684 2685 2727 2728 2844 2846 +8 2123 2125 2684 2685 2727 2728 2844 2846 +8 2123 2125 2684 2685 2727 2728 2844 2846 +8 2123 2125 2684 2685 2727 2728 2844 2846 +8 2123 2125 2684 2685 2727 2728 2844 2846 +8 2123 2125 2684 2685 2727 2728 2844 2846 +3 2123 2684 2685 +3 2123 2684 2685 +3 2123 2684 2685 +3 2123 2684 2685 +3 2123 2684 2685 +3 2123 2684 2685 +4 2123 2124 2468 2469 +4 2123 2124 2468 2469 +4 2123 2124 2468 2469 +4 2123 2124 2468 2469 +4 2123 2124 2468 2469 +4 2123 2124 2468 2469 +4 2124 2126 2845 2847 +4 2124 2126 2845 2847 +4 2124 2126 2845 2847 +4 2124 2126 2845 2847 +4 2124 2126 2845 2847 +4 2124 2126 2845 2847 +2 2124 2918 +2 2124 2918 +2 2124 2918 +2 2124 2918 +2 2124 2918 +2 2124 2918 +8 2125 2126 2511 2512 2727 2728 2789 2790 +8 2125 2126 2511 2512 2727 2728 2789 2790 +8 2125 2126 2511 2512 2727 2728 2789 2790 +8 2125 2126 2511 2512 2727 2728 2789 2790 +8 2125 2126 2511 2512 2727 2728 2789 2790 +8 2125 2126 2511 2512 2727 2728 2789 2790 +3 2125 2727 2728 +3 2125 2727 2728 +3 2125 2727 2728 +3 2125 2727 2728 +3 2125 2727 2728 +3 2125 2727 2728 +4 2125 2126 2511 2512 +4 2125 2126 2511 2512 +4 2125 2126 2511 2512 +4 2125 2126 2511 2512 +4 2125 2126 2511 2512 +4 2125 2126 2511 2512 +3 2126 2789 2790 +3 2126 2789 2790 +3 2126 2789 2790 +3 2126 2789 2790 +3 2126 2789 2790 +3 2126 2789 2790 +8 2127 2128 2340 2341 2383 2384 3025 3026 +8 2127 2128 2340 2341 2383 2384 3025 3026 +8 2127 2128 2340 2341 2383 2384 3025 3026 +8 2127 2128 2340 2341 2383 2384 3025 3026 +8 2127 2128 2340 2341 2383 2384 3025 3026 +8 2127 2128 2340 2341 2383 2384 3025 3026 +4 2127 2128 3025 3026 +4 2127 2128 3025 3026 +4 2127 2128 3025 3026 +4 2127 2128 3025 3026 +4 2127 2128 3025 3026 +4 2127 2128 3025 3026 +8 2127 2128 2556 2557 2599 2600 3025 3026 +8 2127 2128 2556 2557 2599 2600 3025 3026 +8 2127 2128 2556 2557 2599 2600 3025 3026 +8 2127 2128 2556 2557 2599 2600 3025 3026 +8 2127 2128 2556 2557 2599 2600 3025 3026 +8 2127 2128 2556 2557 2599 2600 3025 3026 +3 2127 2556 2557 +3 2127 2556 2557 +3 2127 2556 2557 +3 2127 2556 2557 +3 2127 2556 2557 +3 2127 2556 2557 +5 2127 2556 2557 3083 3084 +5 2127 2556 2557 3083 3084 +5 2127 2556 2557 3083 3084 +5 2127 2556 2557 3083 3084 +5 2127 2556 2557 3083 3084 +5 2127 2556 2557 3083 3084 +3 2127 3083 3084 +3 2127 3083 3084 +3 2127 3083 3084 +3 2127 3083 3084 +3 2127 3083 3084 +3 2127 3083 3084 +3 2127 2340 2341 +3 2127 2340 2341 +3 2127 2340 2341 +3 2127 2340 2341 +3 2127 2340 2341 +3 2127 2340 2341 +8 2128 2129 2383 2384 2426 2427 2972 2973 +8 2128 2129 2383 2384 2426 2427 2972 2973 +8 2128 2129 2383 2384 2426 2427 2972 2973 +8 2128 2129 2383 2384 2426 2427 2972 2973 +8 2128 2129 2383 2384 2426 2427 2972 2973 +8 2128 2129 2383 2384 2426 2427 2972 2973 +4 2128 2129 2972 2973 +4 2128 2129 2972 2973 +4 2128 2129 2972 2973 +4 2128 2129 2972 2973 +4 2128 2129 2972 2973 +4 2128 2129 2972 2973 +8 2128 2129 2599 2600 2642 2643 2972 2973 +8 2128 2129 2599 2600 2642 2643 2972 2973 +8 2128 2129 2599 2600 2642 2643 2972 2973 +8 2128 2129 2599 2600 2642 2643 2972 2973 +8 2128 2129 2599 2600 2642 2643 2972 2973 +8 2128 2129 2599 2600 2642 2643 2972 2973 +3 2128 2599 2600 +3 2128 2599 2600 +3 2128 2599 2600 +3 2128 2599 2600 +3 2128 2599 2600 +3 2128 2599 2600 +3 2128 2383 2384 +3 2128 2383 2384 +3 2128 2383 2384 +3 2128 2383 2384 +3 2128 2383 2384 +3 2128 2383 2384 +8 2129 2130 2426 2427 2469 2470 2919 2920 +8 2129 2130 2426 2427 2469 2470 2919 2920 +8 2129 2130 2426 2427 2469 2470 2919 2920 +8 2129 2130 2426 2427 2469 2470 2919 2920 +8 2129 2130 2426 2427 2469 2470 2919 2920 +8 2129 2130 2426 2427 2469 2470 2919 2920 +4 2129 2130 2919 2920 +4 2129 2130 2919 2920 +4 2129 2130 2919 2920 +4 2129 2130 2919 2920 +4 2129 2130 2919 2920 +4 2129 2130 2919 2920 +8 2129 2130 2642 2643 2685 2686 2919 2920 +8 2129 2130 2642 2643 2685 2686 2919 2920 +8 2129 2130 2642 2643 2685 2686 2919 2920 +8 2129 2130 2642 2643 2685 2686 2919 2920 +8 2129 2130 2642 2643 2685 2686 2919 2920 +8 2129 2130 2642 2643 2685 2686 2919 2920 +3 2129 2642 2643 +3 2129 2642 2643 +3 2129 2642 2643 +3 2129 2642 2643 +3 2129 2642 2643 +3 2129 2642 2643 +3 2129 2426 2427 +3 2129 2426 2427 +3 2129 2426 2427 +3 2129 2426 2427 +3 2129 2426 2427 +3 2129 2426 2427 +11 2130 2131 2132 2469 2470 2512 2513 2846 2847 2848 2849 +11 2130 2131 2132 2469 2470 2512 2513 2846 2847 2848 2849 +11 2130 2131 2132 2469 2470 2512 2513 2846 2847 2848 2849 +11 2130 2131 2132 2469 2470 2512 2513 2846 2847 2848 2849 +11 2130 2131 2132 2469 2470 2512 2513 2846 2847 2848 2849 +11 2130 2131 2132 2469 2470 2512 2513 2846 2847 2848 2849 +4 2130 2131 2846 2848 +4 2130 2131 2846 2848 +4 2130 2131 2846 2848 +4 2130 2131 2846 2848 +4 2130 2131 2846 2848 +4 2130 2131 2846 2848 +8 2130 2131 2685 2686 2728 2729 2846 2848 +8 2130 2131 2685 2686 2728 2729 2846 2848 +8 2130 2131 2685 2686 2728 2729 2846 2848 +8 2130 2131 2685 2686 2728 2729 2846 2848 +8 2130 2131 2685 2686 2728 2729 2846 2848 +8 2130 2131 2685 2686 2728 2729 2846 2848 +3 2130 2685 2686 +3 2130 2685 2686 +3 2130 2685 2686 +3 2130 2685 2686 +3 2130 2685 2686 +3 2130 2685 2686 +3 2130 2469 2470 +3 2130 2469 2470 +3 2130 2469 2470 +3 2130 2469 2470 +3 2130 2469 2470 +3 2130 2469 2470 +8 2131 2132 2512 2513 2728 2729 2790 2791 +8 2131 2132 2512 2513 2728 2729 2790 2791 +8 2131 2132 2512 2513 2728 2729 2790 2791 +8 2131 2132 2512 2513 2728 2729 2790 2791 +8 2131 2132 2512 2513 2728 2729 2790 2791 +8 2131 2132 2512 2513 2728 2729 2790 2791 +3 2131 2728 2729 +3 2131 2728 2729 +3 2131 2728 2729 +3 2131 2728 2729 +3 2131 2728 2729 +3 2131 2728 2729 +4 2131 2132 2512 2513 +4 2131 2132 2512 2513 +4 2131 2132 2512 2513 +4 2131 2132 2512 2513 +4 2131 2132 2512 2513 +4 2131 2132 2512 2513 +3 2132 2790 2791 +3 2132 2790 2791 +3 2132 2790 2791 +3 2132 2790 2791 +3 2132 2790 2791 +3 2132 2790 2791 +3 2132 2847 2849 +3 2132 2847 2849 +3 2132 2847 2849 +3 2132 2847 2849 +3 2132 2847 2849 +3 2132 2847 2849 +10 2133 2134 2135 2341 2342 2384 2385 3026 3027 3028 +10 2133 2134 2135 2341 2342 2384 2385 3026 3027 3028 +10 2133 2134 2135 2341 2342 2384 2385 3026 3027 3028 +10 2133 2134 2135 2341 2342 2384 2385 3026 3027 3028 +10 2133 2134 2135 2341 2342 2384 2385 3026 3027 3028 +10 2133 2134 2135 2341 2342 2384 2385 3026 3027 3028 +4 2133 2135 3026 3027 +4 2133 2135 3026 3027 +4 2133 2135 3026 3027 +4 2133 2135 3026 3027 +4 2133 2135 3026 3027 +4 2133 2135 3026 3027 +8 2133 2135 2557 2558 2600 2601 3026 3027 +8 2133 2135 2557 2558 2600 2601 3026 3027 +8 2133 2135 2557 2558 2600 2601 3026 3027 +8 2133 2135 2557 2558 2600 2601 3026 3027 +8 2133 2135 2557 2558 2600 2601 3026 3027 +8 2133 2135 2557 2558 2600 2601 3026 3027 +3 2133 2557 2558 +3 2133 2557 2558 +3 2133 2557 2558 +3 2133 2557 2558 +3 2133 2557 2558 +3 2133 2557 2558 +5 2133 2557 2558 3084 3085 +5 2133 2557 2558 3084 3085 +5 2133 2557 2558 3084 3085 +5 2133 2557 2558 3084 3085 +5 2133 2557 2558 3084 3085 +5 2133 2557 2558 3084 3085 +3 2133 3084 3085 +3 2133 3084 3085 +3 2133 3084 3085 +3 2133 3084 3085 +3 2133 3084 3085 +3 2133 3084 3085 +4 2133 2134 2341 2342 +4 2133 2134 2341 2342 +4 2133 2134 2341 2342 +4 2133 2134 2341 2342 +4 2133 2134 2341 2342 +4 2133 2134 2341 2342 +2 2134 3028 +2 2134 3028 +2 2134 3028 +2 2134 3028 +2 2134 3028 +2 2134 3028 +8 2135 2136 2384 2385 2427 2428 2973 2974 +8 2135 2136 2384 2385 2427 2428 2973 2974 +8 2135 2136 2384 2385 2427 2428 2973 2974 +8 2135 2136 2384 2385 2427 2428 2973 2974 +8 2135 2136 2384 2385 2427 2428 2973 2974 +8 2135 2136 2384 2385 2427 2428 2973 2974 +4 2135 2136 2973 2974 +4 2135 2136 2973 2974 +4 2135 2136 2973 2974 +4 2135 2136 2973 2974 +4 2135 2136 2973 2974 +4 2135 2136 2973 2974 +8 2135 2136 2600 2601 2643 2644 2973 2974 +8 2135 2136 2600 2601 2643 2644 2973 2974 +8 2135 2136 2600 2601 2643 2644 2973 2974 +8 2135 2136 2600 2601 2643 2644 2973 2974 +8 2135 2136 2600 2601 2643 2644 2973 2974 +8 2135 2136 2600 2601 2643 2644 2973 2974 +3 2135 2600 2601 +3 2135 2600 2601 +3 2135 2600 2601 +3 2135 2600 2601 +3 2135 2600 2601 +3 2135 2600 2601 +3 2135 2384 2385 +3 2135 2384 2385 +3 2135 2384 2385 +3 2135 2384 2385 +3 2135 2384 2385 +3 2135 2384 2385 +10 2136 2137 2138 2427 2428 2470 2471 2920 2921 2922 +10 2136 2137 2138 2427 2428 2470 2471 2920 2921 2922 +10 2136 2137 2138 2427 2428 2470 2471 2920 2921 2922 +10 2136 2137 2138 2427 2428 2470 2471 2920 2921 2922 +10 2136 2137 2138 2427 2428 2470 2471 2920 2921 2922 +10 2136 2137 2138 2427 2428 2470 2471 2920 2921 2922 +4 2136 2137 2920 2921 +4 2136 2137 2920 2921 +4 2136 2137 2920 2921 +4 2136 2137 2920 2921 +4 2136 2137 2920 2921 +4 2136 2137 2920 2921 +8 2136 2137 2643 2644 2686 2687 2920 2921 +8 2136 2137 2643 2644 2686 2687 2920 2921 +8 2136 2137 2643 2644 2686 2687 2920 2921 +8 2136 2137 2643 2644 2686 2687 2920 2921 +8 2136 2137 2643 2644 2686 2687 2920 2921 +8 2136 2137 2643 2644 2686 2687 2920 2921 +3 2136 2643 2644 +3 2136 2643 2644 +3 2136 2643 2644 +3 2136 2643 2644 +3 2136 2643 2644 +3 2136 2643 2644 +3 2136 2427 2428 +3 2136 2427 2428 +3 2136 2427 2428 +3 2136 2427 2428 +3 2136 2427 2428 +3 2136 2427 2428 +12 2137 2138 2139 2140 2470 2471 2513 2514 2848 2849 2850 2851 +12 2137 2138 2139 2140 2470 2471 2513 2514 2848 2849 2850 2851 +12 2137 2138 2139 2140 2470 2471 2513 2514 2848 2849 2850 2851 +12 2137 2138 2139 2140 2470 2471 2513 2514 2848 2849 2850 2851 +12 2137 2138 2139 2140 2470 2471 2513 2514 2848 2849 2850 2851 +12 2137 2138 2139 2140 2470 2471 2513 2514 2848 2849 2850 2851 +4 2137 2139 2848 2850 +4 2137 2139 2848 2850 +4 2137 2139 2848 2850 +4 2137 2139 2848 2850 +4 2137 2139 2848 2850 +4 2137 2139 2848 2850 +8 2137 2139 2686 2687 2729 2730 2848 2850 +8 2137 2139 2686 2687 2729 2730 2848 2850 +8 2137 2139 2686 2687 2729 2730 2848 2850 +8 2137 2139 2686 2687 2729 2730 2848 2850 +8 2137 2139 2686 2687 2729 2730 2848 2850 +8 2137 2139 2686 2687 2729 2730 2848 2850 +3 2137 2686 2687 +3 2137 2686 2687 +3 2137 2686 2687 +3 2137 2686 2687 +3 2137 2686 2687 +3 2137 2686 2687 +4 2137 2138 2470 2471 +4 2137 2138 2470 2471 +4 2137 2138 2470 2471 +4 2137 2138 2470 2471 +4 2137 2138 2470 2471 +4 2137 2138 2470 2471 +4 2138 2140 2849 2851 +4 2138 2140 2849 2851 +4 2138 2140 2849 2851 +4 2138 2140 2849 2851 +4 2138 2140 2849 2851 +4 2138 2140 2849 2851 +2 2138 2922 +2 2138 2922 +2 2138 2922 +2 2138 2922 +2 2138 2922 +2 2138 2922 +8 2139 2140 2513 2514 2729 2730 2791 2792 +8 2139 2140 2513 2514 2729 2730 2791 2792 +8 2139 2140 2513 2514 2729 2730 2791 2792 +8 2139 2140 2513 2514 2729 2730 2791 2792 +8 2139 2140 2513 2514 2729 2730 2791 2792 +8 2139 2140 2513 2514 2729 2730 2791 2792 +3 2139 2729 2730 +3 2139 2729 2730 +3 2139 2729 2730 +3 2139 2729 2730 +3 2139 2729 2730 +3 2139 2729 2730 +4 2139 2140 2513 2514 +4 2139 2140 2513 2514 +4 2139 2140 2513 2514 +4 2139 2140 2513 2514 +4 2139 2140 2513 2514 +4 2139 2140 2513 2514 +3 2140 2791 2792 +3 2140 2791 2792 +3 2140 2791 2792 +3 2140 2791 2792 +3 2140 2791 2792 +3 2140 2791 2792 +11 2141 2142 2143 2144 2342 2343 2385 2386 3027 3028 3029 +11 2141 2142 2143 2144 2342 2343 2385 2386 3027 3028 3029 +11 2141 2142 2143 2144 2342 2343 2385 2386 3027 3028 3029 +11 2141 2142 2143 2144 2342 2343 2385 2386 3027 3028 3029 +11 2141 2142 2143 2144 2342 2343 2385 2386 3027 3028 3029 +11 2141 2142 2143 2144 2342 2343 2385 2386 3027 3028 3029 +4 2141 2143 3027 3029 +4 2141 2143 3027 3029 +4 2141 2143 3027 3029 +4 2141 2143 3027 3029 +4 2141 2143 3027 3029 +4 2141 2143 3027 3029 +8 2141 2143 2558 2559 2601 2602 3027 3029 +8 2141 2143 2558 2559 2601 2602 3027 3029 +8 2141 2143 2558 2559 2601 2602 3027 3029 +8 2141 2143 2558 2559 2601 2602 3027 3029 +8 2141 2143 2558 2559 2601 2602 3027 3029 +8 2141 2143 2558 2559 2601 2602 3027 3029 +3 2141 2558 2559 +3 2141 2558 2559 +3 2141 2558 2559 +3 2141 2558 2559 +3 2141 2558 2559 +3 2141 2558 2559 +5 2141 2558 2559 3085 3087 +5 2141 2558 2559 3085 3087 +5 2141 2558 2559 3085 3087 +5 2141 2558 2559 3085 3087 +5 2141 2558 2559 3085 3087 +5 2141 2558 2559 3085 3087 +3 2141 3085 3087 +3 2141 3085 3087 +3 2141 3085 3087 +3 2141 3085 3087 +3 2141 3085 3087 +3 2141 3085 3087 +4 2141 2142 2342 2343 +4 2141 2142 2342 2343 +4 2141 2142 2342 2343 +4 2141 2142 2342 2343 +4 2141 2142 2342 2343 +4 2141 2142 2342 2343 +3 2142 2144 3028 +3 2142 2144 3028 +3 2142 2144 3028 +3 2142 2144 3028 +3 2142 2144 3028 +3 2142 2144 3028 +10 2143 2144 2145 2146 2385 2386 2428 2429 2974 2975 +10 2143 2144 2145 2146 2385 2386 2428 2429 2974 2975 +10 2143 2144 2145 2146 2385 2386 2428 2429 2974 2975 +10 2143 2144 2145 2146 2385 2386 2428 2429 2974 2975 +10 2143 2144 2145 2146 2385 2386 2428 2429 2974 2975 +10 2143 2144 2145 2146 2385 2386 2428 2429 2974 2975 +4 2143 2145 2974 2975 +4 2143 2145 2974 2975 +4 2143 2145 2974 2975 +4 2143 2145 2974 2975 +4 2143 2145 2974 2975 +4 2143 2145 2974 2975 +8 2143 2145 2601 2602 2644 2645 2974 2975 +8 2143 2145 2601 2602 2644 2645 2974 2975 +8 2143 2145 2601 2602 2644 2645 2974 2975 +8 2143 2145 2601 2602 2644 2645 2974 2975 +8 2143 2145 2601 2602 2644 2645 2974 2975 +8 2143 2145 2601 2602 2644 2645 2974 2975 +3 2143 2601 2602 +3 2143 2601 2602 +3 2143 2601 2602 +3 2143 2601 2602 +3 2143 2601 2602 +3 2143 2601 2602 +4 2143 2144 2385 2386 +4 2143 2144 2385 2386 +4 2143 2144 2385 2386 +4 2143 2144 2385 2386 +4 2143 2144 2385 2386 +4 2143 2144 2385 2386 +2 2144 2146 +2 2144 2146 +2 2144 2146 +2 2144 2146 +2 2144 2146 +2 2144 2146 +11 2145 2146 2147 2148 2428 2429 2471 2472 2921 2922 2923 +11 2145 2146 2147 2148 2428 2429 2471 2472 2921 2922 2923 +11 2145 2146 2147 2148 2428 2429 2471 2472 2921 2922 2923 +11 2145 2146 2147 2148 2428 2429 2471 2472 2921 2922 2923 +11 2145 2146 2147 2148 2428 2429 2471 2472 2921 2922 2923 +11 2145 2146 2147 2148 2428 2429 2471 2472 2921 2922 2923 +4 2145 2147 2921 2923 +4 2145 2147 2921 2923 +4 2145 2147 2921 2923 +4 2145 2147 2921 2923 +4 2145 2147 2921 2923 +4 2145 2147 2921 2923 +8 2145 2147 2644 2645 2687 2688 2921 2923 +8 2145 2147 2644 2645 2687 2688 2921 2923 +8 2145 2147 2644 2645 2687 2688 2921 2923 +8 2145 2147 2644 2645 2687 2688 2921 2923 +8 2145 2147 2644 2645 2687 2688 2921 2923 +8 2145 2147 2644 2645 2687 2688 2921 2923 +3 2145 2644 2645 +3 2145 2644 2645 +3 2145 2644 2645 +3 2145 2644 2645 +3 2145 2644 2645 +3 2145 2644 2645 +4 2145 2146 2428 2429 +4 2145 2146 2428 2429 +4 2145 2146 2428 2429 +4 2145 2146 2428 2429 +4 2145 2146 2428 2429 +4 2145 2146 2428 2429 +3 2146 2148 2922 +3 2146 2148 2922 +3 2146 2148 2922 +3 2146 2148 2922 +3 2146 2148 2922 +3 2146 2148 2922 +12 2147 2148 2149 2150 2471 2472 2514 2515 2850 2851 2852 2853 +12 2147 2148 2149 2150 2471 2472 2514 2515 2850 2851 2852 2853 +12 2147 2148 2149 2150 2471 2472 2514 2515 2850 2851 2852 2853 +12 2147 2148 2149 2150 2471 2472 2514 2515 2850 2851 2852 2853 +12 2147 2148 2149 2150 2471 2472 2514 2515 2850 2851 2852 2853 +12 2147 2148 2149 2150 2471 2472 2514 2515 2850 2851 2852 2853 +4 2147 2149 2850 2852 +4 2147 2149 2850 2852 +4 2147 2149 2850 2852 +4 2147 2149 2850 2852 +4 2147 2149 2850 2852 +4 2147 2149 2850 2852 +8 2147 2149 2687 2688 2730 2731 2850 2852 +8 2147 2149 2687 2688 2730 2731 2850 2852 +8 2147 2149 2687 2688 2730 2731 2850 2852 +8 2147 2149 2687 2688 2730 2731 2850 2852 +8 2147 2149 2687 2688 2730 2731 2850 2852 +8 2147 2149 2687 2688 2730 2731 2850 2852 +3 2147 2687 2688 +3 2147 2687 2688 +3 2147 2687 2688 +3 2147 2687 2688 +3 2147 2687 2688 +3 2147 2687 2688 +4 2147 2148 2471 2472 +4 2147 2148 2471 2472 +4 2147 2148 2471 2472 +4 2147 2148 2471 2472 +4 2147 2148 2471 2472 +4 2147 2148 2471 2472 +4 2148 2150 2851 2853 +4 2148 2150 2851 2853 +4 2148 2150 2851 2853 +4 2148 2150 2851 2853 +4 2148 2150 2851 2853 +4 2148 2150 2851 2853 +8 2149 2150 2514 2515 2730 2731 2792 2793 +8 2149 2150 2514 2515 2730 2731 2792 2793 +8 2149 2150 2514 2515 2730 2731 2792 2793 +8 2149 2150 2514 2515 2730 2731 2792 2793 +8 2149 2150 2514 2515 2730 2731 2792 2793 +8 2149 2150 2514 2515 2730 2731 2792 2793 +3 2149 2730 2731 +3 2149 2730 2731 +3 2149 2730 2731 +3 2149 2730 2731 +3 2149 2730 2731 +3 2149 2730 2731 +4 2149 2150 2514 2515 +4 2149 2150 2514 2515 +4 2149 2150 2514 2515 +4 2149 2150 2514 2515 +4 2149 2150 2514 2515 +4 2149 2150 2514 2515 +3 2150 2792 2793 +3 2150 2792 2793 +3 2150 2792 2793 +3 2150 2792 2793 +3 2150 2792 2793 +3 2150 2792 2793 +8 2151 2152 2343 2344 2386 2387 3029 3030 +8 2151 2152 2343 2344 2386 2387 3029 3030 +8 2151 2152 2343 2344 2386 2387 3029 3030 +8 2151 2152 2343 2344 2386 2387 3029 3030 +8 2151 2152 2343 2344 2386 2387 3029 3030 +8 2151 2152 2343 2344 2386 2387 3029 3030 +4 2151 2152 3029 3030 +4 2151 2152 3029 3030 +4 2151 2152 3029 3030 +4 2151 2152 3029 3030 +4 2151 2152 3029 3030 +4 2151 2152 3029 3030 +8 2151 2152 2559 2560 2602 2603 3029 3030 +8 2151 2152 2559 2560 2602 2603 3029 3030 +8 2151 2152 2559 2560 2602 2603 3029 3030 +8 2151 2152 2559 2560 2602 2603 3029 3030 +8 2151 2152 2559 2560 2602 2603 3029 3030 +8 2151 2152 2559 2560 2602 2603 3029 3030 +3 2151 2559 2560 +3 2151 2559 2560 +3 2151 2559 2560 +3 2151 2559 2560 +3 2151 2559 2560 +3 2151 2559 2560 +5 2151 2559 2560 3087 3088 +5 2151 2559 2560 3087 3088 +5 2151 2559 2560 3087 3088 +5 2151 2559 2560 3087 3088 +5 2151 2559 2560 3087 3088 +5 2151 2559 2560 3087 3088 +3 2151 3087 3088 +3 2151 3087 3088 +3 2151 3087 3088 +3 2151 3087 3088 +3 2151 3087 3088 +3 2151 3087 3088 +3 2151 2343 2344 +3 2151 2343 2344 +3 2151 2343 2344 +3 2151 2343 2344 +3 2151 2343 2344 +3 2151 2343 2344 +8 2152 2153 2386 2387 2429 2430 2975 2976 +8 2152 2153 2386 2387 2429 2430 2975 2976 +8 2152 2153 2386 2387 2429 2430 2975 2976 +8 2152 2153 2386 2387 2429 2430 2975 2976 +8 2152 2153 2386 2387 2429 2430 2975 2976 +8 2152 2153 2386 2387 2429 2430 2975 2976 +4 2152 2153 2975 2976 +4 2152 2153 2975 2976 +4 2152 2153 2975 2976 +4 2152 2153 2975 2976 +4 2152 2153 2975 2976 +4 2152 2153 2975 2976 +8 2152 2153 2602 2603 2645 2646 2975 2976 +8 2152 2153 2602 2603 2645 2646 2975 2976 +8 2152 2153 2602 2603 2645 2646 2975 2976 +8 2152 2153 2602 2603 2645 2646 2975 2976 +8 2152 2153 2602 2603 2645 2646 2975 2976 +8 2152 2153 2602 2603 2645 2646 2975 2976 +3 2152 2602 2603 +3 2152 2602 2603 +3 2152 2602 2603 +3 2152 2602 2603 +3 2152 2602 2603 +3 2152 2602 2603 +3 2152 2386 2387 +3 2152 2386 2387 +3 2152 2386 2387 +3 2152 2386 2387 +3 2152 2386 2387 +3 2152 2386 2387 +8 2153 2154 2429 2430 2472 2473 2923 2924 +8 2153 2154 2429 2430 2472 2473 2923 2924 +8 2153 2154 2429 2430 2472 2473 2923 2924 +8 2153 2154 2429 2430 2472 2473 2923 2924 +8 2153 2154 2429 2430 2472 2473 2923 2924 +8 2153 2154 2429 2430 2472 2473 2923 2924 +4 2153 2154 2923 2924 +4 2153 2154 2923 2924 +4 2153 2154 2923 2924 +4 2153 2154 2923 2924 +4 2153 2154 2923 2924 +4 2153 2154 2923 2924 +8 2153 2154 2645 2646 2688 2689 2923 2924 +8 2153 2154 2645 2646 2688 2689 2923 2924 +8 2153 2154 2645 2646 2688 2689 2923 2924 +8 2153 2154 2645 2646 2688 2689 2923 2924 +8 2153 2154 2645 2646 2688 2689 2923 2924 +8 2153 2154 2645 2646 2688 2689 2923 2924 +3 2153 2645 2646 +3 2153 2645 2646 +3 2153 2645 2646 +3 2153 2645 2646 +3 2153 2645 2646 +3 2153 2645 2646 +3 2153 2429 2430 +3 2153 2429 2430 +3 2153 2429 2430 +3 2153 2429 2430 +3 2153 2429 2430 +3 2153 2429 2430 +11 2154 2155 2156 2472 2473 2515 2516 2852 2853 2854 2855 +11 2154 2155 2156 2472 2473 2515 2516 2852 2853 2854 2855 +11 2154 2155 2156 2472 2473 2515 2516 2852 2853 2854 2855 +11 2154 2155 2156 2472 2473 2515 2516 2852 2853 2854 2855 +11 2154 2155 2156 2472 2473 2515 2516 2852 2853 2854 2855 +11 2154 2155 2156 2472 2473 2515 2516 2852 2853 2854 2855 +4 2154 2155 2852 2854 +4 2154 2155 2852 2854 +4 2154 2155 2852 2854 +4 2154 2155 2852 2854 +4 2154 2155 2852 2854 +4 2154 2155 2852 2854 +8 2154 2155 2688 2689 2731 2732 2852 2854 +8 2154 2155 2688 2689 2731 2732 2852 2854 +8 2154 2155 2688 2689 2731 2732 2852 2854 +8 2154 2155 2688 2689 2731 2732 2852 2854 +8 2154 2155 2688 2689 2731 2732 2852 2854 +8 2154 2155 2688 2689 2731 2732 2852 2854 +3 2154 2688 2689 +3 2154 2688 2689 +3 2154 2688 2689 +3 2154 2688 2689 +3 2154 2688 2689 +3 2154 2688 2689 +3 2154 2472 2473 +3 2154 2472 2473 +3 2154 2472 2473 +3 2154 2472 2473 +3 2154 2472 2473 +3 2154 2472 2473 +8 2155 2156 2515 2516 2731 2732 2793 2794 +8 2155 2156 2515 2516 2731 2732 2793 2794 +8 2155 2156 2515 2516 2731 2732 2793 2794 +8 2155 2156 2515 2516 2731 2732 2793 2794 +8 2155 2156 2515 2516 2731 2732 2793 2794 +8 2155 2156 2515 2516 2731 2732 2793 2794 +3 2155 2731 2732 +3 2155 2731 2732 +3 2155 2731 2732 +3 2155 2731 2732 +3 2155 2731 2732 +3 2155 2731 2732 +4 2155 2156 2515 2516 +4 2155 2156 2515 2516 +4 2155 2156 2515 2516 +4 2155 2156 2515 2516 +4 2155 2156 2515 2516 +4 2155 2156 2515 2516 +3 2156 2793 2794 +3 2156 2793 2794 +3 2156 2793 2794 +3 2156 2793 2794 +3 2156 2793 2794 +3 2156 2793 2794 +3 2156 2853 2855 +3 2156 2853 2855 +3 2156 2853 2855 +3 2156 2853 2855 +3 2156 2853 2855 +3 2156 2853 2855 +10 2157 2158 2159 2344 2345 2387 2388 3030 3031 3032 +10 2157 2158 2159 2344 2345 2387 2388 3030 3031 3032 +10 2157 2158 2159 2344 2345 2387 2388 3030 3031 3032 +10 2157 2158 2159 2344 2345 2387 2388 3030 3031 3032 +10 2157 2158 2159 2344 2345 2387 2388 3030 3031 3032 +10 2157 2158 2159 2344 2345 2387 2388 3030 3031 3032 +4 2157 2159 3030 3031 +4 2157 2159 3030 3031 +4 2157 2159 3030 3031 +4 2157 2159 3030 3031 +4 2157 2159 3030 3031 +4 2157 2159 3030 3031 +8 2157 2159 2560 2561 2603 2604 3030 3031 +8 2157 2159 2560 2561 2603 2604 3030 3031 +8 2157 2159 2560 2561 2603 2604 3030 3031 +8 2157 2159 2560 2561 2603 2604 3030 3031 +8 2157 2159 2560 2561 2603 2604 3030 3031 +8 2157 2159 2560 2561 2603 2604 3030 3031 +3 2157 2560 2561 +3 2157 2560 2561 +3 2157 2560 2561 +3 2157 2560 2561 +3 2157 2560 2561 +3 2157 2560 2561 +5 2157 2560 2561 3088 3089 +5 2157 2560 2561 3088 3089 +5 2157 2560 2561 3088 3089 +5 2157 2560 2561 3088 3089 +5 2157 2560 2561 3088 3089 +5 2157 2560 2561 3088 3089 +3 2157 3088 3089 +3 2157 3088 3089 +3 2157 3088 3089 +3 2157 3088 3089 +3 2157 3088 3089 +3 2157 3088 3089 +4 2157 2158 2344 2345 +4 2157 2158 2344 2345 +4 2157 2158 2344 2345 +4 2157 2158 2344 2345 +4 2157 2158 2344 2345 +4 2157 2158 2344 2345 +2 2158 3032 +2 2158 3032 +2 2158 3032 +2 2158 3032 +2 2158 3032 +2 2158 3032 +8 2159 2160 2387 2388 2430 2431 2976 2977 +8 2159 2160 2387 2388 2430 2431 2976 2977 +8 2159 2160 2387 2388 2430 2431 2976 2977 +8 2159 2160 2387 2388 2430 2431 2976 2977 +8 2159 2160 2387 2388 2430 2431 2976 2977 +8 2159 2160 2387 2388 2430 2431 2976 2977 +4 2159 2160 2976 2977 +4 2159 2160 2976 2977 +4 2159 2160 2976 2977 +4 2159 2160 2976 2977 +4 2159 2160 2976 2977 +4 2159 2160 2976 2977 +8 2159 2160 2603 2604 2646 2647 2976 2977 +8 2159 2160 2603 2604 2646 2647 2976 2977 +8 2159 2160 2603 2604 2646 2647 2976 2977 +8 2159 2160 2603 2604 2646 2647 2976 2977 +8 2159 2160 2603 2604 2646 2647 2976 2977 +8 2159 2160 2603 2604 2646 2647 2976 2977 +3 2159 2603 2604 +3 2159 2603 2604 +3 2159 2603 2604 +3 2159 2603 2604 +3 2159 2603 2604 +3 2159 2603 2604 +3 2159 2387 2388 +3 2159 2387 2388 +3 2159 2387 2388 +3 2159 2387 2388 +3 2159 2387 2388 +3 2159 2387 2388 +10 2160 2161 2162 2430 2431 2473 2474 2924 2925 2926 +10 2160 2161 2162 2430 2431 2473 2474 2924 2925 2926 +10 2160 2161 2162 2430 2431 2473 2474 2924 2925 2926 +10 2160 2161 2162 2430 2431 2473 2474 2924 2925 2926 +10 2160 2161 2162 2430 2431 2473 2474 2924 2925 2926 +10 2160 2161 2162 2430 2431 2473 2474 2924 2925 2926 +4 2160 2161 2924 2925 +4 2160 2161 2924 2925 +4 2160 2161 2924 2925 +4 2160 2161 2924 2925 +4 2160 2161 2924 2925 +4 2160 2161 2924 2925 +8 2160 2161 2646 2647 2689 2690 2924 2925 +8 2160 2161 2646 2647 2689 2690 2924 2925 +8 2160 2161 2646 2647 2689 2690 2924 2925 +8 2160 2161 2646 2647 2689 2690 2924 2925 +8 2160 2161 2646 2647 2689 2690 2924 2925 +8 2160 2161 2646 2647 2689 2690 2924 2925 +3 2160 2646 2647 +3 2160 2646 2647 +3 2160 2646 2647 +3 2160 2646 2647 +3 2160 2646 2647 +3 2160 2646 2647 +3 2160 2430 2431 +3 2160 2430 2431 +3 2160 2430 2431 +3 2160 2430 2431 +3 2160 2430 2431 +3 2160 2430 2431 +12 2161 2162 2163 2164 2473 2474 2516 2517 2854 2855 2856 2857 +12 2161 2162 2163 2164 2473 2474 2516 2517 2854 2855 2856 2857 +12 2161 2162 2163 2164 2473 2474 2516 2517 2854 2855 2856 2857 +12 2161 2162 2163 2164 2473 2474 2516 2517 2854 2855 2856 2857 +12 2161 2162 2163 2164 2473 2474 2516 2517 2854 2855 2856 2857 +12 2161 2162 2163 2164 2473 2474 2516 2517 2854 2855 2856 2857 +4 2161 2163 2854 2856 +4 2161 2163 2854 2856 +4 2161 2163 2854 2856 +4 2161 2163 2854 2856 +4 2161 2163 2854 2856 +4 2161 2163 2854 2856 +8 2161 2163 2689 2690 2732 2733 2854 2856 +8 2161 2163 2689 2690 2732 2733 2854 2856 +8 2161 2163 2689 2690 2732 2733 2854 2856 +8 2161 2163 2689 2690 2732 2733 2854 2856 +8 2161 2163 2689 2690 2732 2733 2854 2856 +8 2161 2163 2689 2690 2732 2733 2854 2856 +3 2161 2689 2690 +3 2161 2689 2690 +3 2161 2689 2690 +3 2161 2689 2690 +3 2161 2689 2690 +3 2161 2689 2690 +4 2161 2162 2473 2474 +4 2161 2162 2473 2474 +4 2161 2162 2473 2474 +4 2161 2162 2473 2474 +4 2161 2162 2473 2474 +4 2161 2162 2473 2474 +4 2162 2164 2855 2857 +4 2162 2164 2855 2857 +4 2162 2164 2855 2857 +4 2162 2164 2855 2857 +4 2162 2164 2855 2857 +4 2162 2164 2855 2857 +2 2162 2926 +2 2162 2926 +2 2162 2926 +2 2162 2926 +2 2162 2926 +2 2162 2926 +8 2163 2164 2516 2517 2732 2733 2794 2795 +8 2163 2164 2516 2517 2732 2733 2794 2795 +8 2163 2164 2516 2517 2732 2733 2794 2795 +8 2163 2164 2516 2517 2732 2733 2794 2795 +8 2163 2164 2516 2517 2732 2733 2794 2795 +8 2163 2164 2516 2517 2732 2733 2794 2795 +3 2163 2732 2733 +3 2163 2732 2733 +3 2163 2732 2733 +3 2163 2732 2733 +3 2163 2732 2733 +3 2163 2732 2733 +4 2163 2164 2516 2517 +4 2163 2164 2516 2517 +4 2163 2164 2516 2517 +4 2163 2164 2516 2517 +4 2163 2164 2516 2517 +4 2163 2164 2516 2517 +3 2164 2794 2795 +3 2164 2794 2795 +3 2164 2794 2795 +3 2164 2794 2795 +3 2164 2794 2795 +3 2164 2794 2795 +10 2165 2166 2167 2345 2346 2388 2389 3031 3032 3033 +10 2165 2166 2167 2345 2346 2388 2389 3031 3032 3033 +10 2165 2166 2167 2345 2346 2388 2389 3031 3032 3033 +10 2165 2166 2167 2345 2346 2388 2389 3031 3032 3033 +10 2165 2166 2167 2345 2346 2388 2389 3031 3032 3033 +10 2165 2166 2167 2345 2346 2388 2389 3031 3032 3033 +4 2165 2167 3031 3033 +4 2165 2167 3031 3033 +4 2165 2167 3031 3033 +4 2165 2167 3031 3033 +4 2165 2167 3031 3033 +4 2165 2167 3031 3033 +8 2165 2167 2561 2562 2604 2605 3031 3033 +8 2165 2167 2561 2562 2604 2605 3031 3033 +8 2165 2167 2561 2562 2604 2605 3031 3033 +8 2165 2167 2561 2562 2604 2605 3031 3033 +8 2165 2167 2561 2562 2604 2605 3031 3033 +8 2165 2167 2561 2562 2604 2605 3031 3033 +3 2165 2561 2562 +3 2165 2561 2562 +3 2165 2561 2562 +3 2165 2561 2562 +3 2165 2561 2562 +3 2165 2561 2562 +5 2165 2561 2562 3089 3091 +5 2165 2561 2562 3089 3091 +5 2165 2561 2562 3089 3091 +5 2165 2561 2562 3089 3091 +5 2165 2561 2562 3089 3091 +5 2165 2561 2562 3089 3091 +3 2165 3089 3091 +3 2165 3089 3091 +3 2165 3089 3091 +3 2165 3089 3091 +3 2165 3089 3091 +3 2165 3089 3091 +4 2165 2166 2345 2346 +4 2165 2166 2345 2346 +4 2165 2166 2345 2346 +4 2165 2166 2345 2346 +4 2165 2166 2345 2346 +4 2165 2166 2345 2346 +2 2166 3032 +2 2166 3032 +2 2166 3032 +2 2166 3032 +2 2166 3032 +2 2166 3032 +8 2167 2168 2388 2389 2431 2432 2977 2978 +8 2167 2168 2388 2389 2431 2432 2977 2978 +8 2167 2168 2388 2389 2431 2432 2977 2978 +8 2167 2168 2388 2389 2431 2432 2977 2978 +8 2167 2168 2388 2389 2431 2432 2977 2978 +8 2167 2168 2388 2389 2431 2432 2977 2978 +4 2167 2168 2977 2978 +4 2167 2168 2977 2978 +4 2167 2168 2977 2978 +4 2167 2168 2977 2978 +4 2167 2168 2977 2978 +4 2167 2168 2977 2978 +8 2167 2168 2604 2605 2647 2648 2977 2978 +8 2167 2168 2604 2605 2647 2648 2977 2978 +8 2167 2168 2604 2605 2647 2648 2977 2978 +8 2167 2168 2604 2605 2647 2648 2977 2978 +8 2167 2168 2604 2605 2647 2648 2977 2978 +8 2167 2168 2604 2605 2647 2648 2977 2978 +3 2167 2604 2605 +3 2167 2604 2605 +3 2167 2604 2605 +3 2167 2604 2605 +3 2167 2604 2605 +3 2167 2604 2605 +3 2167 2388 2389 +3 2167 2388 2389 +3 2167 2388 2389 +3 2167 2388 2389 +3 2167 2388 2389 +3 2167 2388 2389 +10 2168 2169 2170 2431 2432 2474 2475 2925 2926 2927 +10 2168 2169 2170 2431 2432 2474 2475 2925 2926 2927 +10 2168 2169 2170 2431 2432 2474 2475 2925 2926 2927 +10 2168 2169 2170 2431 2432 2474 2475 2925 2926 2927 +10 2168 2169 2170 2431 2432 2474 2475 2925 2926 2927 +10 2168 2169 2170 2431 2432 2474 2475 2925 2926 2927 +4 2168 2169 2925 2927 +4 2168 2169 2925 2927 +4 2168 2169 2925 2927 +4 2168 2169 2925 2927 +4 2168 2169 2925 2927 +4 2168 2169 2925 2927 +8 2168 2169 2647 2648 2690 2691 2925 2927 +8 2168 2169 2647 2648 2690 2691 2925 2927 +8 2168 2169 2647 2648 2690 2691 2925 2927 +8 2168 2169 2647 2648 2690 2691 2925 2927 +8 2168 2169 2647 2648 2690 2691 2925 2927 +8 2168 2169 2647 2648 2690 2691 2925 2927 +3 2168 2647 2648 +3 2168 2647 2648 +3 2168 2647 2648 +3 2168 2647 2648 +3 2168 2647 2648 +3 2168 2647 2648 +3 2168 2431 2432 +3 2168 2431 2432 +3 2168 2431 2432 +3 2168 2431 2432 +3 2168 2431 2432 +3 2168 2431 2432 +12 2169 2170 2171 2172 2474 2475 2517 2518 2856 2857 2858 2859 +12 2169 2170 2171 2172 2474 2475 2517 2518 2856 2857 2858 2859 +12 2169 2170 2171 2172 2474 2475 2517 2518 2856 2857 2858 2859 +12 2169 2170 2171 2172 2474 2475 2517 2518 2856 2857 2858 2859 +12 2169 2170 2171 2172 2474 2475 2517 2518 2856 2857 2858 2859 +12 2169 2170 2171 2172 2474 2475 2517 2518 2856 2857 2858 2859 +4 2169 2171 2856 2858 +4 2169 2171 2856 2858 +4 2169 2171 2856 2858 +4 2169 2171 2856 2858 +4 2169 2171 2856 2858 +4 2169 2171 2856 2858 +8 2169 2171 2690 2691 2733 2734 2856 2858 +8 2169 2171 2690 2691 2733 2734 2856 2858 +8 2169 2171 2690 2691 2733 2734 2856 2858 +8 2169 2171 2690 2691 2733 2734 2856 2858 +8 2169 2171 2690 2691 2733 2734 2856 2858 +8 2169 2171 2690 2691 2733 2734 2856 2858 +3 2169 2690 2691 +3 2169 2690 2691 +3 2169 2690 2691 +3 2169 2690 2691 +3 2169 2690 2691 +3 2169 2690 2691 +4 2169 2170 2474 2475 +4 2169 2170 2474 2475 +4 2169 2170 2474 2475 +4 2169 2170 2474 2475 +4 2169 2170 2474 2475 +4 2169 2170 2474 2475 +4 2170 2172 2857 2859 +4 2170 2172 2857 2859 +4 2170 2172 2857 2859 +4 2170 2172 2857 2859 +4 2170 2172 2857 2859 +4 2170 2172 2857 2859 +2 2170 2926 +2 2170 2926 +2 2170 2926 +2 2170 2926 +2 2170 2926 +2 2170 2926 +8 2171 2172 2517 2518 2733 2734 2795 2796 +8 2171 2172 2517 2518 2733 2734 2795 2796 +8 2171 2172 2517 2518 2733 2734 2795 2796 +8 2171 2172 2517 2518 2733 2734 2795 2796 +8 2171 2172 2517 2518 2733 2734 2795 2796 +8 2171 2172 2517 2518 2733 2734 2795 2796 +3 2171 2733 2734 +3 2171 2733 2734 +3 2171 2733 2734 +3 2171 2733 2734 +3 2171 2733 2734 +3 2171 2733 2734 +4 2171 2172 2517 2518 +4 2171 2172 2517 2518 +4 2171 2172 2517 2518 +4 2171 2172 2517 2518 +4 2171 2172 2517 2518 +4 2171 2172 2517 2518 +3 2172 2795 2796 +3 2172 2795 2796 +3 2172 2795 2796 +3 2172 2795 2796 +3 2172 2795 2796 +3 2172 2795 2796 +8 2173 2174 2346 2347 2389 2390 3033 3034 +8 2173 2174 2346 2347 2389 2390 3033 3034 +8 2173 2174 2346 2347 2389 2390 3033 3034 +8 2173 2174 2346 2347 2389 2390 3033 3034 +8 2173 2174 2346 2347 2389 2390 3033 3034 +8 2173 2174 2346 2347 2389 2390 3033 3034 +4 2173 2174 3033 3034 +4 2173 2174 3033 3034 +4 2173 2174 3033 3034 +4 2173 2174 3033 3034 +4 2173 2174 3033 3034 +4 2173 2174 3033 3034 +8 2173 2174 2562 2563 2605 2606 3033 3034 +8 2173 2174 2562 2563 2605 2606 3033 3034 +8 2173 2174 2562 2563 2605 2606 3033 3034 +8 2173 2174 2562 2563 2605 2606 3033 3034 +8 2173 2174 2562 2563 2605 2606 3033 3034 +8 2173 2174 2562 2563 2605 2606 3033 3034 +3 2173 2562 2563 +3 2173 2562 2563 +3 2173 2562 2563 +3 2173 2562 2563 +3 2173 2562 2563 +3 2173 2562 2563 +5 2173 2562 2563 3091 3092 +5 2173 2562 2563 3091 3092 +5 2173 2562 2563 3091 3092 +5 2173 2562 2563 3091 3092 +5 2173 2562 2563 3091 3092 +5 2173 2562 2563 3091 3092 +3 2173 3091 3092 +3 2173 3091 3092 +3 2173 3091 3092 +3 2173 3091 3092 +3 2173 3091 3092 +3 2173 3091 3092 +3 2173 2346 2347 +3 2173 2346 2347 +3 2173 2346 2347 +3 2173 2346 2347 +3 2173 2346 2347 +3 2173 2346 2347 +8 2174 2175 2389 2390 2432 2433 2978 2979 +8 2174 2175 2389 2390 2432 2433 2978 2979 +8 2174 2175 2389 2390 2432 2433 2978 2979 +8 2174 2175 2389 2390 2432 2433 2978 2979 +8 2174 2175 2389 2390 2432 2433 2978 2979 +8 2174 2175 2389 2390 2432 2433 2978 2979 +4 2174 2175 2978 2979 +4 2174 2175 2978 2979 +4 2174 2175 2978 2979 +4 2174 2175 2978 2979 +4 2174 2175 2978 2979 +4 2174 2175 2978 2979 +8 2174 2175 2605 2606 2648 2649 2978 2979 +8 2174 2175 2605 2606 2648 2649 2978 2979 +8 2174 2175 2605 2606 2648 2649 2978 2979 +8 2174 2175 2605 2606 2648 2649 2978 2979 +8 2174 2175 2605 2606 2648 2649 2978 2979 +8 2174 2175 2605 2606 2648 2649 2978 2979 +3 2174 2605 2606 +3 2174 2605 2606 +3 2174 2605 2606 +3 2174 2605 2606 +3 2174 2605 2606 +3 2174 2605 2606 +3 2174 2389 2390 +3 2174 2389 2390 +3 2174 2389 2390 +3 2174 2389 2390 +3 2174 2389 2390 +3 2174 2389 2390 +8 2175 2176 2432 2433 2475 2476 2927 2928 +8 2175 2176 2432 2433 2475 2476 2927 2928 +8 2175 2176 2432 2433 2475 2476 2927 2928 +8 2175 2176 2432 2433 2475 2476 2927 2928 +8 2175 2176 2432 2433 2475 2476 2927 2928 +8 2175 2176 2432 2433 2475 2476 2927 2928 +4 2175 2176 2927 2928 +4 2175 2176 2927 2928 +4 2175 2176 2927 2928 +4 2175 2176 2927 2928 +4 2175 2176 2927 2928 +4 2175 2176 2927 2928 +8 2175 2176 2648 2649 2691 2692 2927 2928 +8 2175 2176 2648 2649 2691 2692 2927 2928 +8 2175 2176 2648 2649 2691 2692 2927 2928 +8 2175 2176 2648 2649 2691 2692 2927 2928 +8 2175 2176 2648 2649 2691 2692 2927 2928 +8 2175 2176 2648 2649 2691 2692 2927 2928 +3 2175 2648 2649 +3 2175 2648 2649 +3 2175 2648 2649 +3 2175 2648 2649 +3 2175 2648 2649 +3 2175 2648 2649 +3 2175 2432 2433 +3 2175 2432 2433 +3 2175 2432 2433 +3 2175 2432 2433 +3 2175 2432 2433 +3 2175 2432 2433 +11 2176 2177 2178 2475 2476 2518 2519 2858 2859 2860 2861 +11 2176 2177 2178 2475 2476 2518 2519 2858 2859 2860 2861 +11 2176 2177 2178 2475 2476 2518 2519 2858 2859 2860 2861 +11 2176 2177 2178 2475 2476 2518 2519 2858 2859 2860 2861 +11 2176 2177 2178 2475 2476 2518 2519 2858 2859 2860 2861 +11 2176 2177 2178 2475 2476 2518 2519 2858 2859 2860 2861 +4 2176 2177 2858 2860 +4 2176 2177 2858 2860 +4 2176 2177 2858 2860 +4 2176 2177 2858 2860 +4 2176 2177 2858 2860 +4 2176 2177 2858 2860 +8 2176 2177 2691 2692 2734 2735 2858 2860 +8 2176 2177 2691 2692 2734 2735 2858 2860 +8 2176 2177 2691 2692 2734 2735 2858 2860 +8 2176 2177 2691 2692 2734 2735 2858 2860 +8 2176 2177 2691 2692 2734 2735 2858 2860 +8 2176 2177 2691 2692 2734 2735 2858 2860 +3 2176 2691 2692 +3 2176 2691 2692 +3 2176 2691 2692 +3 2176 2691 2692 +3 2176 2691 2692 +3 2176 2691 2692 +3 2176 2475 2476 +3 2176 2475 2476 +3 2176 2475 2476 +3 2176 2475 2476 +3 2176 2475 2476 +3 2176 2475 2476 +8 2177 2178 2518 2519 2734 2735 2796 2797 +8 2177 2178 2518 2519 2734 2735 2796 2797 +8 2177 2178 2518 2519 2734 2735 2796 2797 +8 2177 2178 2518 2519 2734 2735 2796 2797 +8 2177 2178 2518 2519 2734 2735 2796 2797 +8 2177 2178 2518 2519 2734 2735 2796 2797 +3 2177 2734 2735 +3 2177 2734 2735 +3 2177 2734 2735 +3 2177 2734 2735 +3 2177 2734 2735 +3 2177 2734 2735 +4 2177 2178 2518 2519 +4 2177 2178 2518 2519 +4 2177 2178 2518 2519 +4 2177 2178 2518 2519 +4 2177 2178 2518 2519 +4 2177 2178 2518 2519 +3 2178 2796 2797 +3 2178 2796 2797 +3 2178 2796 2797 +3 2178 2796 2797 +3 2178 2796 2797 +3 2178 2796 2797 +3 2178 2859 2861 +3 2178 2859 2861 +3 2178 2859 2861 +3 2178 2859 2861 +3 2178 2859 2861 +3 2178 2859 2861 +10 2179 2180 2181 2347 2348 2390 2391 3034 3035 3036 +10 2179 2180 2181 2347 2348 2390 2391 3034 3035 3036 +10 2179 2180 2181 2347 2348 2390 2391 3034 3035 3036 +10 2179 2180 2181 2347 2348 2390 2391 3034 3035 3036 +10 2179 2180 2181 2347 2348 2390 2391 3034 3035 3036 +10 2179 2180 2181 2347 2348 2390 2391 3034 3035 3036 +4 2179 2181 3034 3035 +4 2179 2181 3034 3035 +4 2179 2181 3034 3035 +4 2179 2181 3034 3035 +4 2179 2181 3034 3035 +4 2179 2181 3034 3035 +8 2179 2181 2563 2564 2606 2607 3034 3035 +8 2179 2181 2563 2564 2606 2607 3034 3035 +8 2179 2181 2563 2564 2606 2607 3034 3035 +8 2179 2181 2563 2564 2606 2607 3034 3035 +8 2179 2181 2563 2564 2606 2607 3034 3035 +8 2179 2181 2563 2564 2606 2607 3034 3035 +3 2179 2563 2564 +3 2179 2563 2564 +3 2179 2563 2564 +3 2179 2563 2564 +3 2179 2563 2564 +3 2179 2563 2564 +5 2179 2563 2564 3092 3093 +5 2179 2563 2564 3092 3093 +5 2179 2563 2564 3092 3093 +5 2179 2563 2564 3092 3093 +5 2179 2563 2564 3092 3093 +5 2179 2563 2564 3092 3093 +3 2179 3092 3093 +3 2179 3092 3093 +3 2179 3092 3093 +3 2179 3092 3093 +3 2179 3092 3093 +3 2179 3092 3093 +4 2179 2180 2347 2348 +4 2179 2180 2347 2348 +4 2179 2180 2347 2348 +4 2179 2180 2347 2348 +4 2179 2180 2347 2348 +4 2179 2180 2347 2348 +2 2180 3036 +2 2180 3036 +2 2180 3036 +2 2180 3036 +2 2180 3036 +2 2180 3036 +8 2181 2182 2390 2391 2433 2434 2979 2980 +8 2181 2182 2390 2391 2433 2434 2979 2980 +8 2181 2182 2390 2391 2433 2434 2979 2980 +8 2181 2182 2390 2391 2433 2434 2979 2980 +8 2181 2182 2390 2391 2433 2434 2979 2980 +8 2181 2182 2390 2391 2433 2434 2979 2980 +4 2181 2182 2979 2980 +4 2181 2182 2979 2980 +4 2181 2182 2979 2980 +4 2181 2182 2979 2980 +4 2181 2182 2979 2980 +4 2181 2182 2979 2980 +8 2181 2182 2606 2607 2649 2650 2979 2980 +8 2181 2182 2606 2607 2649 2650 2979 2980 +8 2181 2182 2606 2607 2649 2650 2979 2980 +8 2181 2182 2606 2607 2649 2650 2979 2980 +8 2181 2182 2606 2607 2649 2650 2979 2980 +8 2181 2182 2606 2607 2649 2650 2979 2980 +3 2181 2606 2607 +3 2181 2606 2607 +3 2181 2606 2607 +3 2181 2606 2607 +3 2181 2606 2607 +3 2181 2606 2607 +3 2181 2390 2391 +3 2181 2390 2391 +3 2181 2390 2391 +3 2181 2390 2391 +3 2181 2390 2391 +3 2181 2390 2391 +10 2182 2183 2184 2433 2434 2476 2477 2928 2929 2930 +10 2182 2183 2184 2433 2434 2476 2477 2928 2929 2930 +10 2182 2183 2184 2433 2434 2476 2477 2928 2929 2930 +10 2182 2183 2184 2433 2434 2476 2477 2928 2929 2930 +10 2182 2183 2184 2433 2434 2476 2477 2928 2929 2930 +10 2182 2183 2184 2433 2434 2476 2477 2928 2929 2930 +4 2182 2183 2928 2929 +4 2182 2183 2928 2929 +4 2182 2183 2928 2929 +4 2182 2183 2928 2929 +4 2182 2183 2928 2929 +4 2182 2183 2928 2929 +8 2182 2183 2649 2650 2692 2693 2928 2929 +8 2182 2183 2649 2650 2692 2693 2928 2929 +8 2182 2183 2649 2650 2692 2693 2928 2929 +8 2182 2183 2649 2650 2692 2693 2928 2929 +8 2182 2183 2649 2650 2692 2693 2928 2929 +8 2182 2183 2649 2650 2692 2693 2928 2929 +3 2182 2649 2650 +3 2182 2649 2650 +3 2182 2649 2650 +3 2182 2649 2650 +3 2182 2649 2650 +3 2182 2649 2650 +3 2182 2433 2434 +3 2182 2433 2434 +3 2182 2433 2434 +3 2182 2433 2434 +3 2182 2433 2434 +3 2182 2433 2434 +12 2183 2184 2185 2186 2476 2477 2519 2520 2860 2861 2862 2863 +12 2183 2184 2185 2186 2476 2477 2519 2520 2860 2861 2862 2863 +12 2183 2184 2185 2186 2476 2477 2519 2520 2860 2861 2862 2863 +12 2183 2184 2185 2186 2476 2477 2519 2520 2860 2861 2862 2863 +12 2183 2184 2185 2186 2476 2477 2519 2520 2860 2861 2862 2863 +12 2183 2184 2185 2186 2476 2477 2519 2520 2860 2861 2862 2863 +4 2183 2185 2860 2862 +4 2183 2185 2860 2862 +4 2183 2185 2860 2862 +4 2183 2185 2860 2862 +4 2183 2185 2860 2862 +4 2183 2185 2860 2862 +8 2183 2185 2692 2693 2735 2736 2860 2862 +8 2183 2185 2692 2693 2735 2736 2860 2862 +8 2183 2185 2692 2693 2735 2736 2860 2862 +8 2183 2185 2692 2693 2735 2736 2860 2862 +8 2183 2185 2692 2693 2735 2736 2860 2862 +8 2183 2185 2692 2693 2735 2736 2860 2862 +3 2183 2692 2693 +3 2183 2692 2693 +3 2183 2692 2693 +3 2183 2692 2693 +3 2183 2692 2693 +3 2183 2692 2693 +4 2183 2184 2476 2477 +4 2183 2184 2476 2477 +4 2183 2184 2476 2477 +4 2183 2184 2476 2477 +4 2183 2184 2476 2477 +4 2183 2184 2476 2477 +4 2184 2186 2861 2863 +4 2184 2186 2861 2863 +4 2184 2186 2861 2863 +4 2184 2186 2861 2863 +4 2184 2186 2861 2863 +4 2184 2186 2861 2863 +2 2184 2930 +2 2184 2930 +2 2184 2930 +2 2184 2930 +2 2184 2930 +2 2184 2930 +8 2185 2186 2519 2520 2735 2736 2797 2798 +8 2185 2186 2519 2520 2735 2736 2797 2798 +8 2185 2186 2519 2520 2735 2736 2797 2798 +8 2185 2186 2519 2520 2735 2736 2797 2798 +8 2185 2186 2519 2520 2735 2736 2797 2798 +8 2185 2186 2519 2520 2735 2736 2797 2798 +3 2185 2735 2736 +3 2185 2735 2736 +3 2185 2735 2736 +3 2185 2735 2736 +3 2185 2735 2736 +3 2185 2735 2736 +4 2185 2186 2519 2520 +4 2185 2186 2519 2520 +4 2185 2186 2519 2520 +4 2185 2186 2519 2520 +4 2185 2186 2519 2520 +4 2185 2186 2519 2520 +3 2186 2797 2798 +3 2186 2797 2798 +3 2186 2797 2798 +3 2186 2797 2798 +3 2186 2797 2798 +3 2186 2797 2798 +11 2187 2188 2189 2190 2348 2349 2391 2392 3035 3036 3037 +11 2187 2188 2189 2190 2348 2349 2391 2392 3035 3036 3037 +11 2187 2188 2189 2190 2348 2349 2391 2392 3035 3036 3037 +11 2187 2188 2189 2190 2348 2349 2391 2392 3035 3036 3037 +11 2187 2188 2189 2190 2348 2349 2391 2392 3035 3036 3037 +11 2187 2188 2189 2190 2348 2349 2391 2392 3035 3036 3037 +4 2187 2189 3035 3037 +4 2187 2189 3035 3037 +4 2187 2189 3035 3037 +4 2187 2189 3035 3037 +4 2187 2189 3035 3037 +4 2187 2189 3035 3037 +8 2187 2189 2564 2565 2607 2608 3035 3037 +8 2187 2189 2564 2565 2607 2608 3035 3037 +8 2187 2189 2564 2565 2607 2608 3035 3037 +8 2187 2189 2564 2565 2607 2608 3035 3037 +8 2187 2189 2564 2565 2607 2608 3035 3037 +8 2187 2189 2564 2565 2607 2608 3035 3037 +3 2187 2564 2565 +3 2187 2564 2565 +3 2187 2564 2565 +3 2187 2564 2565 +3 2187 2564 2565 +3 2187 2564 2565 +5 2187 2564 2565 3093 3095 +5 2187 2564 2565 3093 3095 +5 2187 2564 2565 3093 3095 +5 2187 2564 2565 3093 3095 +5 2187 2564 2565 3093 3095 +5 2187 2564 2565 3093 3095 +3 2187 3093 3095 +3 2187 3093 3095 +3 2187 3093 3095 +3 2187 3093 3095 +3 2187 3093 3095 +3 2187 3093 3095 +4 2187 2188 2348 2349 +4 2187 2188 2348 2349 +4 2187 2188 2348 2349 +4 2187 2188 2348 2349 +4 2187 2188 2348 2349 +4 2187 2188 2348 2349 +3 2188 2190 3036 +3 2188 2190 3036 +3 2188 2190 3036 +3 2188 2190 3036 +3 2188 2190 3036 +3 2188 2190 3036 +10 2189 2190 2191 2192 2391 2392 2434 2435 2980 2981 +10 2189 2190 2191 2192 2391 2392 2434 2435 2980 2981 +10 2189 2190 2191 2192 2391 2392 2434 2435 2980 2981 +10 2189 2190 2191 2192 2391 2392 2434 2435 2980 2981 +10 2189 2190 2191 2192 2391 2392 2434 2435 2980 2981 +10 2189 2190 2191 2192 2391 2392 2434 2435 2980 2981 +4 2189 2191 2980 2981 +4 2189 2191 2980 2981 +4 2189 2191 2980 2981 +4 2189 2191 2980 2981 +4 2189 2191 2980 2981 +4 2189 2191 2980 2981 +8 2189 2191 2607 2608 2650 2651 2980 2981 +8 2189 2191 2607 2608 2650 2651 2980 2981 +8 2189 2191 2607 2608 2650 2651 2980 2981 +8 2189 2191 2607 2608 2650 2651 2980 2981 +8 2189 2191 2607 2608 2650 2651 2980 2981 +8 2189 2191 2607 2608 2650 2651 2980 2981 +3 2189 2607 2608 +3 2189 2607 2608 +3 2189 2607 2608 +3 2189 2607 2608 +3 2189 2607 2608 +3 2189 2607 2608 +4 2189 2190 2391 2392 +4 2189 2190 2391 2392 +4 2189 2190 2391 2392 +4 2189 2190 2391 2392 +4 2189 2190 2391 2392 +4 2189 2190 2391 2392 +2 2190 2192 +2 2190 2192 +2 2190 2192 +2 2190 2192 +2 2190 2192 +2 2190 2192 +11 2191 2192 2193 2194 2434 2435 2477 2478 2929 2930 2931 +11 2191 2192 2193 2194 2434 2435 2477 2478 2929 2930 2931 +11 2191 2192 2193 2194 2434 2435 2477 2478 2929 2930 2931 +11 2191 2192 2193 2194 2434 2435 2477 2478 2929 2930 2931 +11 2191 2192 2193 2194 2434 2435 2477 2478 2929 2930 2931 +11 2191 2192 2193 2194 2434 2435 2477 2478 2929 2930 2931 +4 2191 2193 2929 2931 +4 2191 2193 2929 2931 +4 2191 2193 2929 2931 +4 2191 2193 2929 2931 +4 2191 2193 2929 2931 +4 2191 2193 2929 2931 +8 2191 2193 2650 2651 2693 2694 2929 2931 +8 2191 2193 2650 2651 2693 2694 2929 2931 +8 2191 2193 2650 2651 2693 2694 2929 2931 +8 2191 2193 2650 2651 2693 2694 2929 2931 +8 2191 2193 2650 2651 2693 2694 2929 2931 +8 2191 2193 2650 2651 2693 2694 2929 2931 +3 2191 2650 2651 +3 2191 2650 2651 +3 2191 2650 2651 +3 2191 2650 2651 +3 2191 2650 2651 +3 2191 2650 2651 +4 2191 2192 2434 2435 +4 2191 2192 2434 2435 +4 2191 2192 2434 2435 +4 2191 2192 2434 2435 +4 2191 2192 2434 2435 +4 2191 2192 2434 2435 +3 2192 2194 2930 +3 2192 2194 2930 +3 2192 2194 2930 +3 2192 2194 2930 +3 2192 2194 2930 +3 2192 2194 2930 +12 2193 2194 2195 2196 2477 2478 2520 2521 2862 2863 2864 2865 +12 2193 2194 2195 2196 2477 2478 2520 2521 2862 2863 2864 2865 +12 2193 2194 2195 2196 2477 2478 2520 2521 2862 2863 2864 2865 +12 2193 2194 2195 2196 2477 2478 2520 2521 2862 2863 2864 2865 +12 2193 2194 2195 2196 2477 2478 2520 2521 2862 2863 2864 2865 +12 2193 2194 2195 2196 2477 2478 2520 2521 2862 2863 2864 2865 +4 2193 2195 2862 2864 +4 2193 2195 2862 2864 +4 2193 2195 2862 2864 +4 2193 2195 2862 2864 +4 2193 2195 2862 2864 +4 2193 2195 2862 2864 +8 2193 2195 2693 2694 2736 2737 2862 2864 +8 2193 2195 2693 2694 2736 2737 2862 2864 +8 2193 2195 2693 2694 2736 2737 2862 2864 +8 2193 2195 2693 2694 2736 2737 2862 2864 +8 2193 2195 2693 2694 2736 2737 2862 2864 +8 2193 2195 2693 2694 2736 2737 2862 2864 +3 2193 2693 2694 +3 2193 2693 2694 +3 2193 2693 2694 +3 2193 2693 2694 +3 2193 2693 2694 +3 2193 2693 2694 +4 2193 2194 2477 2478 +4 2193 2194 2477 2478 +4 2193 2194 2477 2478 +4 2193 2194 2477 2478 +4 2193 2194 2477 2478 +4 2193 2194 2477 2478 +4 2194 2196 2863 2865 +4 2194 2196 2863 2865 +4 2194 2196 2863 2865 +4 2194 2196 2863 2865 +4 2194 2196 2863 2865 +4 2194 2196 2863 2865 +8 2195 2196 2520 2521 2736 2737 2798 2799 +8 2195 2196 2520 2521 2736 2737 2798 2799 +8 2195 2196 2520 2521 2736 2737 2798 2799 +8 2195 2196 2520 2521 2736 2737 2798 2799 +8 2195 2196 2520 2521 2736 2737 2798 2799 +8 2195 2196 2520 2521 2736 2737 2798 2799 +3 2195 2736 2737 +3 2195 2736 2737 +3 2195 2736 2737 +3 2195 2736 2737 +3 2195 2736 2737 +3 2195 2736 2737 +4 2195 2196 2520 2521 +4 2195 2196 2520 2521 +4 2195 2196 2520 2521 +4 2195 2196 2520 2521 +4 2195 2196 2520 2521 +4 2195 2196 2520 2521 +3 2196 2798 2799 +3 2196 2798 2799 +3 2196 2798 2799 +3 2196 2798 2799 +3 2196 2798 2799 +3 2196 2798 2799 +8 2197 2198 2349 2350 2392 2393 3037 3038 +8 2197 2198 2349 2350 2392 2393 3037 3038 +8 2197 2198 2349 2350 2392 2393 3037 3038 +8 2197 2198 2349 2350 2392 2393 3037 3038 +8 2197 2198 2349 2350 2392 2393 3037 3038 +8 2197 2198 2349 2350 2392 2393 3037 3038 +4 2197 2198 3037 3038 +4 2197 2198 3037 3038 +4 2197 2198 3037 3038 +4 2197 2198 3037 3038 +4 2197 2198 3037 3038 +4 2197 2198 3037 3038 +8 2197 2198 2565 2566 2608 2609 3037 3038 +8 2197 2198 2565 2566 2608 2609 3037 3038 +8 2197 2198 2565 2566 2608 2609 3037 3038 +8 2197 2198 2565 2566 2608 2609 3037 3038 +8 2197 2198 2565 2566 2608 2609 3037 3038 +8 2197 2198 2565 2566 2608 2609 3037 3038 +3 2197 2565 2566 +3 2197 2565 2566 +3 2197 2565 2566 +3 2197 2565 2566 +3 2197 2565 2566 +3 2197 2565 2566 +5 2197 2565 2566 3095 3096 +5 2197 2565 2566 3095 3096 +5 2197 2565 2566 3095 3096 +5 2197 2565 2566 3095 3096 +5 2197 2565 2566 3095 3096 +5 2197 2565 2566 3095 3096 +3 2197 3095 3096 +3 2197 3095 3096 +3 2197 3095 3096 +3 2197 3095 3096 +3 2197 3095 3096 +3 2197 3095 3096 +3 2197 2349 2350 +3 2197 2349 2350 +3 2197 2349 2350 +3 2197 2349 2350 +3 2197 2349 2350 +3 2197 2349 2350 +8 2198 2199 2392 2393 2435 2436 2981 2982 +8 2198 2199 2392 2393 2435 2436 2981 2982 +8 2198 2199 2392 2393 2435 2436 2981 2982 +8 2198 2199 2392 2393 2435 2436 2981 2982 +8 2198 2199 2392 2393 2435 2436 2981 2982 +8 2198 2199 2392 2393 2435 2436 2981 2982 +4 2198 2199 2981 2982 +4 2198 2199 2981 2982 +4 2198 2199 2981 2982 +4 2198 2199 2981 2982 +4 2198 2199 2981 2982 +4 2198 2199 2981 2982 +8 2198 2199 2608 2609 2651 2652 2981 2982 +8 2198 2199 2608 2609 2651 2652 2981 2982 +8 2198 2199 2608 2609 2651 2652 2981 2982 +8 2198 2199 2608 2609 2651 2652 2981 2982 +8 2198 2199 2608 2609 2651 2652 2981 2982 +8 2198 2199 2608 2609 2651 2652 2981 2982 +3 2198 2608 2609 +3 2198 2608 2609 +3 2198 2608 2609 +3 2198 2608 2609 +3 2198 2608 2609 +3 2198 2608 2609 +3 2198 2392 2393 +3 2198 2392 2393 +3 2198 2392 2393 +3 2198 2392 2393 +3 2198 2392 2393 +3 2198 2392 2393 +8 2199 2200 2435 2436 2478 2479 2931 2932 +8 2199 2200 2435 2436 2478 2479 2931 2932 +8 2199 2200 2435 2436 2478 2479 2931 2932 +8 2199 2200 2435 2436 2478 2479 2931 2932 +8 2199 2200 2435 2436 2478 2479 2931 2932 +8 2199 2200 2435 2436 2478 2479 2931 2932 +4 2199 2200 2931 2932 +4 2199 2200 2931 2932 +4 2199 2200 2931 2932 +4 2199 2200 2931 2932 +4 2199 2200 2931 2932 +4 2199 2200 2931 2932 +8 2199 2200 2651 2652 2694 2695 2931 2932 +8 2199 2200 2651 2652 2694 2695 2931 2932 +8 2199 2200 2651 2652 2694 2695 2931 2932 +8 2199 2200 2651 2652 2694 2695 2931 2932 +8 2199 2200 2651 2652 2694 2695 2931 2932 +8 2199 2200 2651 2652 2694 2695 2931 2932 +3 2199 2651 2652 +3 2199 2651 2652 +3 2199 2651 2652 +3 2199 2651 2652 +3 2199 2651 2652 +3 2199 2651 2652 +3 2199 2435 2436 +3 2199 2435 2436 +3 2199 2435 2436 +3 2199 2435 2436 +3 2199 2435 2436 +3 2199 2435 2436 +11 2200 2201 2202 2478 2479 2521 2522 2864 2865 2866 2867 +11 2200 2201 2202 2478 2479 2521 2522 2864 2865 2866 2867 +11 2200 2201 2202 2478 2479 2521 2522 2864 2865 2866 2867 +11 2200 2201 2202 2478 2479 2521 2522 2864 2865 2866 2867 +11 2200 2201 2202 2478 2479 2521 2522 2864 2865 2866 2867 +11 2200 2201 2202 2478 2479 2521 2522 2864 2865 2866 2867 +4 2200 2201 2864 2866 +4 2200 2201 2864 2866 +4 2200 2201 2864 2866 +4 2200 2201 2864 2866 +4 2200 2201 2864 2866 +4 2200 2201 2864 2866 +8 2200 2201 2694 2695 2737 2738 2864 2866 +8 2200 2201 2694 2695 2737 2738 2864 2866 +8 2200 2201 2694 2695 2737 2738 2864 2866 +8 2200 2201 2694 2695 2737 2738 2864 2866 +8 2200 2201 2694 2695 2737 2738 2864 2866 +8 2200 2201 2694 2695 2737 2738 2864 2866 +3 2200 2694 2695 +3 2200 2694 2695 +3 2200 2694 2695 +3 2200 2694 2695 +3 2200 2694 2695 +3 2200 2694 2695 +3 2200 2478 2479 +3 2200 2478 2479 +3 2200 2478 2479 +3 2200 2478 2479 +3 2200 2478 2479 +3 2200 2478 2479 +8 2201 2202 2521 2522 2737 2738 2799 2800 +8 2201 2202 2521 2522 2737 2738 2799 2800 +8 2201 2202 2521 2522 2737 2738 2799 2800 +8 2201 2202 2521 2522 2737 2738 2799 2800 +8 2201 2202 2521 2522 2737 2738 2799 2800 +8 2201 2202 2521 2522 2737 2738 2799 2800 +3 2201 2737 2738 +3 2201 2737 2738 +3 2201 2737 2738 +3 2201 2737 2738 +3 2201 2737 2738 +3 2201 2737 2738 +4 2201 2202 2521 2522 +4 2201 2202 2521 2522 +4 2201 2202 2521 2522 +4 2201 2202 2521 2522 +4 2201 2202 2521 2522 +4 2201 2202 2521 2522 +3 2202 2799 2800 +3 2202 2799 2800 +3 2202 2799 2800 +3 2202 2799 2800 +3 2202 2799 2800 +3 2202 2799 2800 +3 2202 2865 2867 +3 2202 2865 2867 +3 2202 2865 2867 +3 2202 2865 2867 +3 2202 2865 2867 +3 2202 2865 2867 +10 2203 2204 2205 2350 2351 2393 2394 3038 3039 3040 +10 2203 2204 2205 2350 2351 2393 2394 3038 3039 3040 +10 2203 2204 2205 2350 2351 2393 2394 3038 3039 3040 +10 2203 2204 2205 2350 2351 2393 2394 3038 3039 3040 +10 2203 2204 2205 2350 2351 2393 2394 3038 3039 3040 +10 2203 2204 2205 2350 2351 2393 2394 3038 3039 3040 +4 2203 2205 3038 3039 +4 2203 2205 3038 3039 +4 2203 2205 3038 3039 +4 2203 2205 3038 3039 +4 2203 2205 3038 3039 +4 2203 2205 3038 3039 +8 2203 2205 2566 2567 2609 2610 3038 3039 +8 2203 2205 2566 2567 2609 2610 3038 3039 +8 2203 2205 2566 2567 2609 2610 3038 3039 +8 2203 2205 2566 2567 2609 2610 3038 3039 +8 2203 2205 2566 2567 2609 2610 3038 3039 +8 2203 2205 2566 2567 2609 2610 3038 3039 +3 2203 2566 2567 +3 2203 2566 2567 +3 2203 2566 2567 +3 2203 2566 2567 +3 2203 2566 2567 +3 2203 2566 2567 +5 2203 2566 2567 3096 3097 +5 2203 2566 2567 3096 3097 +5 2203 2566 2567 3096 3097 +5 2203 2566 2567 3096 3097 +5 2203 2566 2567 3096 3097 +5 2203 2566 2567 3096 3097 +3 2203 3096 3097 +3 2203 3096 3097 +3 2203 3096 3097 +3 2203 3096 3097 +3 2203 3096 3097 +3 2203 3096 3097 +4 2203 2204 2350 2351 +4 2203 2204 2350 2351 +4 2203 2204 2350 2351 +4 2203 2204 2350 2351 +4 2203 2204 2350 2351 +4 2203 2204 2350 2351 +2 2204 3040 +2 2204 3040 +2 2204 3040 +2 2204 3040 +2 2204 3040 +2 2204 3040 +8 2205 2206 2393 2394 2436 2437 2982 2983 +8 2205 2206 2393 2394 2436 2437 2982 2983 +8 2205 2206 2393 2394 2436 2437 2982 2983 +8 2205 2206 2393 2394 2436 2437 2982 2983 +8 2205 2206 2393 2394 2436 2437 2982 2983 +8 2205 2206 2393 2394 2436 2437 2982 2983 +4 2205 2206 2982 2983 +4 2205 2206 2982 2983 +4 2205 2206 2982 2983 +4 2205 2206 2982 2983 +4 2205 2206 2982 2983 +4 2205 2206 2982 2983 +8 2205 2206 2609 2610 2652 2653 2982 2983 +8 2205 2206 2609 2610 2652 2653 2982 2983 +8 2205 2206 2609 2610 2652 2653 2982 2983 +8 2205 2206 2609 2610 2652 2653 2982 2983 +8 2205 2206 2609 2610 2652 2653 2982 2983 +8 2205 2206 2609 2610 2652 2653 2982 2983 +3 2205 2609 2610 +3 2205 2609 2610 +3 2205 2609 2610 +3 2205 2609 2610 +3 2205 2609 2610 +3 2205 2609 2610 +3 2205 2393 2394 +3 2205 2393 2394 +3 2205 2393 2394 +3 2205 2393 2394 +3 2205 2393 2394 +3 2205 2393 2394 +10 2206 2207 2208 2436 2437 2479 2480 2932 2933 2934 +10 2206 2207 2208 2436 2437 2479 2480 2932 2933 2934 +10 2206 2207 2208 2436 2437 2479 2480 2932 2933 2934 +10 2206 2207 2208 2436 2437 2479 2480 2932 2933 2934 +10 2206 2207 2208 2436 2437 2479 2480 2932 2933 2934 +10 2206 2207 2208 2436 2437 2479 2480 2932 2933 2934 +4 2206 2207 2932 2933 +4 2206 2207 2932 2933 +4 2206 2207 2932 2933 +4 2206 2207 2932 2933 +4 2206 2207 2932 2933 +4 2206 2207 2932 2933 +8 2206 2207 2652 2653 2695 2696 2932 2933 +8 2206 2207 2652 2653 2695 2696 2932 2933 +8 2206 2207 2652 2653 2695 2696 2932 2933 +8 2206 2207 2652 2653 2695 2696 2932 2933 +8 2206 2207 2652 2653 2695 2696 2932 2933 +8 2206 2207 2652 2653 2695 2696 2932 2933 +3 2206 2652 2653 +3 2206 2652 2653 +3 2206 2652 2653 +3 2206 2652 2653 +3 2206 2652 2653 +3 2206 2652 2653 +3 2206 2436 2437 +3 2206 2436 2437 +3 2206 2436 2437 +3 2206 2436 2437 +3 2206 2436 2437 +3 2206 2436 2437 +12 2207 2208 2209 2210 2479 2480 2522 2523 2866 2867 2868 2869 +12 2207 2208 2209 2210 2479 2480 2522 2523 2866 2867 2868 2869 +12 2207 2208 2209 2210 2479 2480 2522 2523 2866 2867 2868 2869 +12 2207 2208 2209 2210 2479 2480 2522 2523 2866 2867 2868 2869 +12 2207 2208 2209 2210 2479 2480 2522 2523 2866 2867 2868 2869 +12 2207 2208 2209 2210 2479 2480 2522 2523 2866 2867 2868 2869 +4 2207 2209 2866 2868 +4 2207 2209 2866 2868 +4 2207 2209 2866 2868 +4 2207 2209 2866 2868 +4 2207 2209 2866 2868 +4 2207 2209 2866 2868 +8 2207 2209 2695 2696 2738 2739 2866 2868 +8 2207 2209 2695 2696 2738 2739 2866 2868 +8 2207 2209 2695 2696 2738 2739 2866 2868 +8 2207 2209 2695 2696 2738 2739 2866 2868 +8 2207 2209 2695 2696 2738 2739 2866 2868 +8 2207 2209 2695 2696 2738 2739 2866 2868 +3 2207 2695 2696 +3 2207 2695 2696 +3 2207 2695 2696 +3 2207 2695 2696 +3 2207 2695 2696 +3 2207 2695 2696 +4 2207 2208 2479 2480 +4 2207 2208 2479 2480 +4 2207 2208 2479 2480 +4 2207 2208 2479 2480 +4 2207 2208 2479 2480 +4 2207 2208 2479 2480 +4 2208 2210 2867 2869 +4 2208 2210 2867 2869 +4 2208 2210 2867 2869 +4 2208 2210 2867 2869 +4 2208 2210 2867 2869 +4 2208 2210 2867 2869 +2 2208 2934 +2 2208 2934 +2 2208 2934 +2 2208 2934 +2 2208 2934 +2 2208 2934 +8 2209 2210 2522 2523 2738 2739 2800 2801 +8 2209 2210 2522 2523 2738 2739 2800 2801 +8 2209 2210 2522 2523 2738 2739 2800 2801 +8 2209 2210 2522 2523 2738 2739 2800 2801 +8 2209 2210 2522 2523 2738 2739 2800 2801 +8 2209 2210 2522 2523 2738 2739 2800 2801 +3 2209 2738 2739 +3 2209 2738 2739 +3 2209 2738 2739 +3 2209 2738 2739 +3 2209 2738 2739 +3 2209 2738 2739 +4 2209 2210 2522 2523 +4 2209 2210 2522 2523 +4 2209 2210 2522 2523 +4 2209 2210 2522 2523 +4 2209 2210 2522 2523 +4 2209 2210 2522 2523 +3 2210 2800 2801 +3 2210 2800 2801 +3 2210 2800 2801 +3 2210 2800 2801 +3 2210 2800 2801 +3 2210 2800 2801 +10 2211 2212 2213 2351 2352 2394 2395 3039 3040 3041 +10 2211 2212 2213 2351 2352 2394 2395 3039 3040 3041 +10 2211 2212 2213 2351 2352 2394 2395 3039 3040 3041 +10 2211 2212 2213 2351 2352 2394 2395 3039 3040 3041 +10 2211 2212 2213 2351 2352 2394 2395 3039 3040 3041 +10 2211 2212 2213 2351 2352 2394 2395 3039 3040 3041 +4 2211 2213 3039 3041 +4 2211 2213 3039 3041 +4 2211 2213 3039 3041 +4 2211 2213 3039 3041 +4 2211 2213 3039 3041 +4 2211 2213 3039 3041 +8 2211 2213 2567 2568 2610 2611 3039 3041 +8 2211 2213 2567 2568 2610 2611 3039 3041 +8 2211 2213 2567 2568 2610 2611 3039 3041 +8 2211 2213 2567 2568 2610 2611 3039 3041 +8 2211 2213 2567 2568 2610 2611 3039 3041 +8 2211 2213 2567 2568 2610 2611 3039 3041 +3 2211 2567 2568 +3 2211 2567 2568 +3 2211 2567 2568 +3 2211 2567 2568 +3 2211 2567 2568 +3 2211 2567 2568 +5 2211 2567 2568 3097 3099 +5 2211 2567 2568 3097 3099 +5 2211 2567 2568 3097 3099 +5 2211 2567 2568 3097 3099 +5 2211 2567 2568 3097 3099 +5 2211 2567 2568 3097 3099 +3 2211 3097 3099 +3 2211 3097 3099 +3 2211 3097 3099 +3 2211 3097 3099 +3 2211 3097 3099 +3 2211 3097 3099 +4 2211 2212 2351 2352 +4 2211 2212 2351 2352 +4 2211 2212 2351 2352 +4 2211 2212 2351 2352 +4 2211 2212 2351 2352 +4 2211 2212 2351 2352 +2 2212 3040 +2 2212 3040 +2 2212 3040 +2 2212 3040 +2 2212 3040 +2 2212 3040 +8 2213 2214 2394 2395 2437 2438 2983 2984 +8 2213 2214 2394 2395 2437 2438 2983 2984 +8 2213 2214 2394 2395 2437 2438 2983 2984 +8 2213 2214 2394 2395 2437 2438 2983 2984 +8 2213 2214 2394 2395 2437 2438 2983 2984 +8 2213 2214 2394 2395 2437 2438 2983 2984 +4 2213 2214 2983 2984 +4 2213 2214 2983 2984 +4 2213 2214 2983 2984 +4 2213 2214 2983 2984 +4 2213 2214 2983 2984 +4 2213 2214 2983 2984 +8 2213 2214 2610 2611 2653 2654 2983 2984 +8 2213 2214 2610 2611 2653 2654 2983 2984 +8 2213 2214 2610 2611 2653 2654 2983 2984 +8 2213 2214 2610 2611 2653 2654 2983 2984 +8 2213 2214 2610 2611 2653 2654 2983 2984 +8 2213 2214 2610 2611 2653 2654 2983 2984 +3 2213 2610 2611 +3 2213 2610 2611 +3 2213 2610 2611 +3 2213 2610 2611 +3 2213 2610 2611 +3 2213 2610 2611 +3 2213 2394 2395 +3 2213 2394 2395 +3 2213 2394 2395 +3 2213 2394 2395 +3 2213 2394 2395 +3 2213 2394 2395 +10 2214 2215 2216 2437 2438 2480 2481 2933 2934 2935 +10 2214 2215 2216 2437 2438 2480 2481 2933 2934 2935 +10 2214 2215 2216 2437 2438 2480 2481 2933 2934 2935 +10 2214 2215 2216 2437 2438 2480 2481 2933 2934 2935 +10 2214 2215 2216 2437 2438 2480 2481 2933 2934 2935 +10 2214 2215 2216 2437 2438 2480 2481 2933 2934 2935 +4 2214 2215 2933 2935 +4 2214 2215 2933 2935 +4 2214 2215 2933 2935 +4 2214 2215 2933 2935 +4 2214 2215 2933 2935 +4 2214 2215 2933 2935 +8 2214 2215 2653 2654 2696 2697 2933 2935 +8 2214 2215 2653 2654 2696 2697 2933 2935 +8 2214 2215 2653 2654 2696 2697 2933 2935 +8 2214 2215 2653 2654 2696 2697 2933 2935 +8 2214 2215 2653 2654 2696 2697 2933 2935 +8 2214 2215 2653 2654 2696 2697 2933 2935 +3 2214 2653 2654 +3 2214 2653 2654 +3 2214 2653 2654 +3 2214 2653 2654 +3 2214 2653 2654 +3 2214 2653 2654 +3 2214 2437 2438 +3 2214 2437 2438 +3 2214 2437 2438 +3 2214 2437 2438 +3 2214 2437 2438 +3 2214 2437 2438 +12 2215 2216 2217 2218 2480 2481 2523 2524 2868 2869 2870 2871 +12 2215 2216 2217 2218 2480 2481 2523 2524 2868 2869 2870 2871 +12 2215 2216 2217 2218 2480 2481 2523 2524 2868 2869 2870 2871 +12 2215 2216 2217 2218 2480 2481 2523 2524 2868 2869 2870 2871 +12 2215 2216 2217 2218 2480 2481 2523 2524 2868 2869 2870 2871 +12 2215 2216 2217 2218 2480 2481 2523 2524 2868 2869 2870 2871 +4 2215 2217 2868 2870 +4 2215 2217 2868 2870 +4 2215 2217 2868 2870 +4 2215 2217 2868 2870 +4 2215 2217 2868 2870 +4 2215 2217 2868 2870 +8 2215 2217 2696 2697 2739 2740 2868 2870 +8 2215 2217 2696 2697 2739 2740 2868 2870 +8 2215 2217 2696 2697 2739 2740 2868 2870 +8 2215 2217 2696 2697 2739 2740 2868 2870 +8 2215 2217 2696 2697 2739 2740 2868 2870 +8 2215 2217 2696 2697 2739 2740 2868 2870 +3 2215 2696 2697 +3 2215 2696 2697 +3 2215 2696 2697 +3 2215 2696 2697 +3 2215 2696 2697 +3 2215 2696 2697 +4 2215 2216 2480 2481 +4 2215 2216 2480 2481 +4 2215 2216 2480 2481 +4 2215 2216 2480 2481 +4 2215 2216 2480 2481 +4 2215 2216 2480 2481 +4 2216 2218 2869 2871 +4 2216 2218 2869 2871 +4 2216 2218 2869 2871 +4 2216 2218 2869 2871 +4 2216 2218 2869 2871 +4 2216 2218 2869 2871 +2 2216 2934 +2 2216 2934 +2 2216 2934 +2 2216 2934 +2 2216 2934 +2 2216 2934 +8 2217 2218 2523 2524 2739 2740 2801 2802 +8 2217 2218 2523 2524 2739 2740 2801 2802 +8 2217 2218 2523 2524 2739 2740 2801 2802 +8 2217 2218 2523 2524 2739 2740 2801 2802 +8 2217 2218 2523 2524 2739 2740 2801 2802 +8 2217 2218 2523 2524 2739 2740 2801 2802 +3 2217 2739 2740 +3 2217 2739 2740 +3 2217 2739 2740 +3 2217 2739 2740 +3 2217 2739 2740 +3 2217 2739 2740 +4 2217 2218 2523 2524 +4 2217 2218 2523 2524 +4 2217 2218 2523 2524 +4 2217 2218 2523 2524 +4 2217 2218 2523 2524 +4 2217 2218 2523 2524 +3 2218 2801 2802 +3 2218 2801 2802 +3 2218 2801 2802 +3 2218 2801 2802 +3 2218 2801 2802 +3 2218 2801 2802 +8 2219 2220 2352 2353 2395 2396 3041 3042 +8 2219 2220 2352 2353 2395 2396 3041 3042 +8 2219 2220 2352 2353 2395 2396 3041 3042 +8 2219 2220 2352 2353 2395 2396 3041 3042 +8 2219 2220 2352 2353 2395 2396 3041 3042 +8 2219 2220 2352 2353 2395 2396 3041 3042 +4 2219 2220 3041 3042 +4 2219 2220 3041 3042 +4 2219 2220 3041 3042 +4 2219 2220 3041 3042 +4 2219 2220 3041 3042 +4 2219 2220 3041 3042 +8 2219 2220 2568 2569 2611 2612 3041 3042 +8 2219 2220 2568 2569 2611 2612 3041 3042 +8 2219 2220 2568 2569 2611 2612 3041 3042 +8 2219 2220 2568 2569 2611 2612 3041 3042 +8 2219 2220 2568 2569 2611 2612 3041 3042 +8 2219 2220 2568 2569 2611 2612 3041 3042 +3 2219 2568 2569 +3 2219 2568 2569 +3 2219 2568 2569 +3 2219 2568 2569 +3 2219 2568 2569 +3 2219 2568 2569 +5 2219 2568 2569 3099 3100 +5 2219 2568 2569 3099 3100 +5 2219 2568 2569 3099 3100 +5 2219 2568 2569 3099 3100 +5 2219 2568 2569 3099 3100 +5 2219 2568 2569 3099 3100 +3 2219 3099 3100 +3 2219 3099 3100 +3 2219 3099 3100 +3 2219 3099 3100 +3 2219 3099 3100 +3 2219 3099 3100 +3 2219 2352 2353 +3 2219 2352 2353 +3 2219 2352 2353 +3 2219 2352 2353 +3 2219 2352 2353 +3 2219 2352 2353 +8 2220 2221 2395 2396 2438 2439 2984 2985 +8 2220 2221 2395 2396 2438 2439 2984 2985 +8 2220 2221 2395 2396 2438 2439 2984 2985 +8 2220 2221 2395 2396 2438 2439 2984 2985 +8 2220 2221 2395 2396 2438 2439 2984 2985 +8 2220 2221 2395 2396 2438 2439 2984 2985 +4 2220 2221 2984 2985 +4 2220 2221 2984 2985 +4 2220 2221 2984 2985 +4 2220 2221 2984 2985 +4 2220 2221 2984 2985 +4 2220 2221 2984 2985 +8 2220 2221 2611 2612 2654 2655 2984 2985 +8 2220 2221 2611 2612 2654 2655 2984 2985 +8 2220 2221 2611 2612 2654 2655 2984 2985 +8 2220 2221 2611 2612 2654 2655 2984 2985 +8 2220 2221 2611 2612 2654 2655 2984 2985 +8 2220 2221 2611 2612 2654 2655 2984 2985 +3 2220 2611 2612 +3 2220 2611 2612 +3 2220 2611 2612 +3 2220 2611 2612 +3 2220 2611 2612 +3 2220 2611 2612 +3 2220 2395 2396 +3 2220 2395 2396 +3 2220 2395 2396 +3 2220 2395 2396 +3 2220 2395 2396 +3 2220 2395 2396 +8 2221 2222 2438 2439 2481 2482 2935 2936 +8 2221 2222 2438 2439 2481 2482 2935 2936 +8 2221 2222 2438 2439 2481 2482 2935 2936 +8 2221 2222 2438 2439 2481 2482 2935 2936 +8 2221 2222 2438 2439 2481 2482 2935 2936 +8 2221 2222 2438 2439 2481 2482 2935 2936 +4 2221 2222 2935 2936 +4 2221 2222 2935 2936 +4 2221 2222 2935 2936 +4 2221 2222 2935 2936 +4 2221 2222 2935 2936 +4 2221 2222 2935 2936 +8 2221 2222 2654 2655 2697 2698 2935 2936 +8 2221 2222 2654 2655 2697 2698 2935 2936 +8 2221 2222 2654 2655 2697 2698 2935 2936 +8 2221 2222 2654 2655 2697 2698 2935 2936 +8 2221 2222 2654 2655 2697 2698 2935 2936 +8 2221 2222 2654 2655 2697 2698 2935 2936 +3 2221 2654 2655 +3 2221 2654 2655 +3 2221 2654 2655 +3 2221 2654 2655 +3 2221 2654 2655 +3 2221 2654 2655 +3 2221 2438 2439 +3 2221 2438 2439 +3 2221 2438 2439 +3 2221 2438 2439 +3 2221 2438 2439 +3 2221 2438 2439 +11 2222 2223 2224 2481 2482 2524 2525 2870 2871 2872 2873 +11 2222 2223 2224 2481 2482 2524 2525 2870 2871 2872 2873 +11 2222 2223 2224 2481 2482 2524 2525 2870 2871 2872 2873 +11 2222 2223 2224 2481 2482 2524 2525 2870 2871 2872 2873 +11 2222 2223 2224 2481 2482 2524 2525 2870 2871 2872 2873 +11 2222 2223 2224 2481 2482 2524 2525 2870 2871 2872 2873 +4 2222 2223 2870 2872 +4 2222 2223 2870 2872 +4 2222 2223 2870 2872 +4 2222 2223 2870 2872 +4 2222 2223 2870 2872 +4 2222 2223 2870 2872 +8 2222 2223 2697 2698 2740 2741 2870 2872 +8 2222 2223 2697 2698 2740 2741 2870 2872 +8 2222 2223 2697 2698 2740 2741 2870 2872 +8 2222 2223 2697 2698 2740 2741 2870 2872 +8 2222 2223 2697 2698 2740 2741 2870 2872 +8 2222 2223 2697 2698 2740 2741 2870 2872 +3 2222 2697 2698 +3 2222 2697 2698 +3 2222 2697 2698 +3 2222 2697 2698 +3 2222 2697 2698 +3 2222 2697 2698 +3 2222 2481 2482 +3 2222 2481 2482 +3 2222 2481 2482 +3 2222 2481 2482 +3 2222 2481 2482 +3 2222 2481 2482 +8 2223 2224 2524 2525 2740 2741 2802 2803 +8 2223 2224 2524 2525 2740 2741 2802 2803 +8 2223 2224 2524 2525 2740 2741 2802 2803 +8 2223 2224 2524 2525 2740 2741 2802 2803 +8 2223 2224 2524 2525 2740 2741 2802 2803 +8 2223 2224 2524 2525 2740 2741 2802 2803 +3 2223 2740 2741 +3 2223 2740 2741 +3 2223 2740 2741 +3 2223 2740 2741 +3 2223 2740 2741 +3 2223 2740 2741 +4 2223 2224 2524 2525 +4 2223 2224 2524 2525 +4 2223 2224 2524 2525 +4 2223 2224 2524 2525 +4 2223 2224 2524 2525 +4 2223 2224 2524 2525 +3 2224 2802 2803 +3 2224 2802 2803 +3 2224 2802 2803 +3 2224 2802 2803 +3 2224 2802 2803 +3 2224 2802 2803 +3 2224 2871 2873 +3 2224 2871 2873 +3 2224 2871 2873 +3 2224 2871 2873 +3 2224 2871 2873 +3 2224 2871 2873 +11 2225 2226 2227 2228 2353 2354 2396 2397 3042 3043 3044 +11 2225 2226 2227 2228 2353 2354 2396 2397 3042 3043 3044 +11 2225 2226 2227 2228 2353 2354 2396 2397 3042 3043 3044 +11 2225 2226 2227 2228 2353 2354 2396 2397 3042 3043 3044 +11 2225 2226 2227 2228 2353 2354 2396 2397 3042 3043 3044 +11 2225 2226 2227 2228 2353 2354 2396 2397 3042 3043 3044 +4 2225 2227 3042 3043 +4 2225 2227 3042 3043 +4 2225 2227 3042 3043 +4 2225 2227 3042 3043 +4 2225 2227 3042 3043 +4 2225 2227 3042 3043 +8 2225 2227 2569 2570 2612 2613 3042 3043 +8 2225 2227 2569 2570 2612 2613 3042 3043 +8 2225 2227 2569 2570 2612 2613 3042 3043 +8 2225 2227 2569 2570 2612 2613 3042 3043 +8 2225 2227 2569 2570 2612 2613 3042 3043 +8 2225 2227 2569 2570 2612 2613 3042 3043 +3 2225 2569 2570 +3 2225 2569 2570 +3 2225 2569 2570 +3 2225 2569 2570 +3 2225 2569 2570 +3 2225 2569 2570 +5 2225 2569 2570 3100 3101 +5 2225 2569 2570 3100 3101 +5 2225 2569 2570 3100 3101 +5 2225 2569 2570 3100 3101 +5 2225 2569 2570 3100 3101 +5 2225 2569 2570 3100 3101 +3 2225 3100 3101 +3 2225 3100 3101 +3 2225 3100 3101 +3 2225 3100 3101 +3 2225 3100 3101 +3 2225 3100 3101 +4 2225 2226 2353 2354 +4 2225 2226 2353 2354 +4 2225 2226 2353 2354 +4 2225 2226 2353 2354 +4 2225 2226 2353 2354 +4 2225 2226 2353 2354 +3 2226 2228 3044 +3 2226 2228 3044 +3 2226 2228 3044 +3 2226 2228 3044 +3 2226 2228 3044 +3 2226 2228 3044 +11 2227 2228 2229 2230 2396 2397 2439 2440 2985 2986 2987 +11 2227 2228 2229 2230 2396 2397 2439 2440 2985 2986 2987 +11 2227 2228 2229 2230 2396 2397 2439 2440 2985 2986 2987 +11 2227 2228 2229 2230 2396 2397 2439 2440 2985 2986 2987 +11 2227 2228 2229 2230 2396 2397 2439 2440 2985 2986 2987 +11 2227 2228 2229 2230 2396 2397 2439 2440 2985 2986 2987 +4 2227 2229 2985 2986 +4 2227 2229 2985 2986 +4 2227 2229 2985 2986 +4 2227 2229 2985 2986 +4 2227 2229 2985 2986 +4 2227 2229 2985 2986 +8 2227 2229 2612 2613 2655 2656 2985 2986 +8 2227 2229 2612 2613 2655 2656 2985 2986 +8 2227 2229 2612 2613 2655 2656 2985 2986 +8 2227 2229 2612 2613 2655 2656 2985 2986 +8 2227 2229 2612 2613 2655 2656 2985 2986 +8 2227 2229 2612 2613 2655 2656 2985 2986 +3 2227 2612 2613 +3 2227 2612 2613 +3 2227 2612 2613 +3 2227 2612 2613 +3 2227 2612 2613 +3 2227 2612 2613 +4 2227 2228 2396 2397 +4 2227 2228 2396 2397 +4 2227 2228 2396 2397 +4 2227 2228 2396 2397 +4 2227 2228 2396 2397 +4 2227 2228 2396 2397 +3 2228 2230 2987 +3 2228 2230 2987 +3 2228 2230 2987 +3 2228 2230 2987 +3 2228 2230 2987 +3 2228 2230 2987 +11 2229 2230 2231 2232 2439 2440 2482 2483 2936 2937 2938 +11 2229 2230 2231 2232 2439 2440 2482 2483 2936 2937 2938 +11 2229 2230 2231 2232 2439 2440 2482 2483 2936 2937 2938 +11 2229 2230 2231 2232 2439 2440 2482 2483 2936 2937 2938 +11 2229 2230 2231 2232 2439 2440 2482 2483 2936 2937 2938 +11 2229 2230 2231 2232 2439 2440 2482 2483 2936 2937 2938 +4 2229 2231 2936 2937 +4 2229 2231 2936 2937 +4 2229 2231 2936 2937 +4 2229 2231 2936 2937 +4 2229 2231 2936 2937 +4 2229 2231 2936 2937 +8 2229 2231 2655 2656 2698 2699 2936 2937 +8 2229 2231 2655 2656 2698 2699 2936 2937 +8 2229 2231 2655 2656 2698 2699 2936 2937 +8 2229 2231 2655 2656 2698 2699 2936 2937 +8 2229 2231 2655 2656 2698 2699 2936 2937 +8 2229 2231 2655 2656 2698 2699 2936 2937 +3 2229 2655 2656 +3 2229 2655 2656 +3 2229 2655 2656 +3 2229 2655 2656 +3 2229 2655 2656 +3 2229 2655 2656 +4 2229 2230 2439 2440 +4 2229 2230 2439 2440 +4 2229 2230 2439 2440 +4 2229 2230 2439 2440 +4 2229 2230 2439 2440 +4 2229 2230 2439 2440 +3 2230 2232 2938 +3 2230 2232 2938 +3 2230 2232 2938 +3 2230 2232 2938 +3 2230 2232 2938 +3 2230 2232 2938 +12 2231 2232 2233 2234 2482 2483 2525 2526 2872 2873 2874 2875 +12 2231 2232 2233 2234 2482 2483 2525 2526 2872 2873 2874 2875 +12 2231 2232 2233 2234 2482 2483 2525 2526 2872 2873 2874 2875 +12 2231 2232 2233 2234 2482 2483 2525 2526 2872 2873 2874 2875 +12 2231 2232 2233 2234 2482 2483 2525 2526 2872 2873 2874 2875 +12 2231 2232 2233 2234 2482 2483 2525 2526 2872 2873 2874 2875 +4 2231 2233 2872 2874 +4 2231 2233 2872 2874 +4 2231 2233 2872 2874 +4 2231 2233 2872 2874 +4 2231 2233 2872 2874 +4 2231 2233 2872 2874 +8 2231 2233 2698 2699 2741 2742 2872 2874 +8 2231 2233 2698 2699 2741 2742 2872 2874 +8 2231 2233 2698 2699 2741 2742 2872 2874 +8 2231 2233 2698 2699 2741 2742 2872 2874 +8 2231 2233 2698 2699 2741 2742 2872 2874 +8 2231 2233 2698 2699 2741 2742 2872 2874 +3 2231 2698 2699 +3 2231 2698 2699 +3 2231 2698 2699 +3 2231 2698 2699 +3 2231 2698 2699 +3 2231 2698 2699 +4 2231 2232 2482 2483 +4 2231 2232 2482 2483 +4 2231 2232 2482 2483 +4 2231 2232 2482 2483 +4 2231 2232 2482 2483 +4 2231 2232 2482 2483 +4 2232 2234 2873 2875 +4 2232 2234 2873 2875 +4 2232 2234 2873 2875 +4 2232 2234 2873 2875 +4 2232 2234 2873 2875 +4 2232 2234 2873 2875 +8 2233 2234 2525 2526 2741 2742 2803 2804 +8 2233 2234 2525 2526 2741 2742 2803 2804 +8 2233 2234 2525 2526 2741 2742 2803 2804 +8 2233 2234 2525 2526 2741 2742 2803 2804 +8 2233 2234 2525 2526 2741 2742 2803 2804 +8 2233 2234 2525 2526 2741 2742 2803 2804 +3 2233 2741 2742 +3 2233 2741 2742 +3 2233 2741 2742 +3 2233 2741 2742 +3 2233 2741 2742 +3 2233 2741 2742 +4 2233 2234 2525 2526 +4 2233 2234 2525 2526 +4 2233 2234 2525 2526 +4 2233 2234 2525 2526 +4 2233 2234 2525 2526 +4 2233 2234 2525 2526 +3 2234 2803 2804 +3 2234 2803 2804 +3 2234 2803 2804 +3 2234 2803 2804 +3 2234 2803 2804 +3 2234 2803 2804 +11 2235 2236 2237 2238 2354 2355 2397 2398 3043 3044 3045 +11 2235 2236 2237 2238 2354 2355 2397 2398 3043 3044 3045 +11 2235 2236 2237 2238 2354 2355 2397 2398 3043 3044 3045 +11 2235 2236 2237 2238 2354 2355 2397 2398 3043 3044 3045 +11 2235 2236 2237 2238 2354 2355 2397 2398 3043 3044 3045 +11 2235 2236 2237 2238 2354 2355 2397 2398 3043 3044 3045 +4 2235 2237 3043 3045 +4 2235 2237 3043 3045 +4 2235 2237 3043 3045 +4 2235 2237 3043 3045 +4 2235 2237 3043 3045 +4 2235 2237 3043 3045 +8 2235 2237 2570 2571 2613 2614 3043 3045 +8 2235 2237 2570 2571 2613 2614 3043 3045 +8 2235 2237 2570 2571 2613 2614 3043 3045 +8 2235 2237 2570 2571 2613 2614 3043 3045 +8 2235 2237 2570 2571 2613 2614 3043 3045 +8 2235 2237 2570 2571 2613 2614 3043 3045 +3 2235 2570 2571 +3 2235 2570 2571 +3 2235 2570 2571 +3 2235 2570 2571 +3 2235 2570 2571 +3 2235 2570 2571 +5 2235 2570 2571 3101 3103 +5 2235 2570 2571 3101 3103 +5 2235 2570 2571 3101 3103 +5 2235 2570 2571 3101 3103 +5 2235 2570 2571 3101 3103 +5 2235 2570 2571 3101 3103 +3 2235 3101 3103 +3 2235 3101 3103 +3 2235 3101 3103 +3 2235 3101 3103 +3 2235 3101 3103 +3 2235 3101 3103 +4 2235 2236 2354 2355 +4 2235 2236 2354 2355 +4 2235 2236 2354 2355 +4 2235 2236 2354 2355 +4 2235 2236 2354 2355 +4 2235 2236 2354 2355 +3 2236 2238 3044 +3 2236 2238 3044 +3 2236 2238 3044 +3 2236 2238 3044 +3 2236 2238 3044 +3 2236 2238 3044 +11 2237 2238 2239 2240 2397 2398 2440 2441 2986 2987 2988 +11 2237 2238 2239 2240 2397 2398 2440 2441 2986 2987 2988 +11 2237 2238 2239 2240 2397 2398 2440 2441 2986 2987 2988 +11 2237 2238 2239 2240 2397 2398 2440 2441 2986 2987 2988 +11 2237 2238 2239 2240 2397 2398 2440 2441 2986 2987 2988 +11 2237 2238 2239 2240 2397 2398 2440 2441 2986 2987 2988 +4 2237 2239 2986 2988 +4 2237 2239 2986 2988 +4 2237 2239 2986 2988 +4 2237 2239 2986 2988 +4 2237 2239 2986 2988 +4 2237 2239 2986 2988 +8 2237 2239 2613 2614 2656 2657 2986 2988 +8 2237 2239 2613 2614 2656 2657 2986 2988 +8 2237 2239 2613 2614 2656 2657 2986 2988 +8 2237 2239 2613 2614 2656 2657 2986 2988 +8 2237 2239 2613 2614 2656 2657 2986 2988 +8 2237 2239 2613 2614 2656 2657 2986 2988 +3 2237 2613 2614 +3 2237 2613 2614 +3 2237 2613 2614 +3 2237 2613 2614 +3 2237 2613 2614 +3 2237 2613 2614 +4 2237 2238 2397 2398 +4 2237 2238 2397 2398 +4 2237 2238 2397 2398 +4 2237 2238 2397 2398 +4 2237 2238 2397 2398 +4 2237 2238 2397 2398 +3 2238 2240 2987 +3 2238 2240 2987 +3 2238 2240 2987 +3 2238 2240 2987 +3 2238 2240 2987 +3 2238 2240 2987 +11 2239 2240 2241 2242 2440 2441 2483 2484 2937 2938 2939 +11 2239 2240 2241 2242 2440 2441 2483 2484 2937 2938 2939 +11 2239 2240 2241 2242 2440 2441 2483 2484 2937 2938 2939 +11 2239 2240 2241 2242 2440 2441 2483 2484 2937 2938 2939 +11 2239 2240 2241 2242 2440 2441 2483 2484 2937 2938 2939 +11 2239 2240 2241 2242 2440 2441 2483 2484 2937 2938 2939 +4 2239 2241 2937 2939 +4 2239 2241 2937 2939 +4 2239 2241 2937 2939 +4 2239 2241 2937 2939 +4 2239 2241 2937 2939 +4 2239 2241 2937 2939 +8 2239 2241 2656 2657 2699 2700 2937 2939 +8 2239 2241 2656 2657 2699 2700 2937 2939 +8 2239 2241 2656 2657 2699 2700 2937 2939 +8 2239 2241 2656 2657 2699 2700 2937 2939 +8 2239 2241 2656 2657 2699 2700 2937 2939 +8 2239 2241 2656 2657 2699 2700 2937 2939 +3 2239 2656 2657 +3 2239 2656 2657 +3 2239 2656 2657 +3 2239 2656 2657 +3 2239 2656 2657 +3 2239 2656 2657 +4 2239 2240 2440 2441 +4 2239 2240 2440 2441 +4 2239 2240 2440 2441 +4 2239 2240 2440 2441 +4 2239 2240 2440 2441 +4 2239 2240 2440 2441 +3 2240 2242 2938 +3 2240 2242 2938 +3 2240 2242 2938 +3 2240 2242 2938 +3 2240 2242 2938 +3 2240 2242 2938 +12 2241 2242 2243 2244 2483 2484 2526 2527 2874 2875 2876 2877 +12 2241 2242 2243 2244 2483 2484 2526 2527 2874 2875 2876 2877 +12 2241 2242 2243 2244 2483 2484 2526 2527 2874 2875 2876 2877 +12 2241 2242 2243 2244 2483 2484 2526 2527 2874 2875 2876 2877 +12 2241 2242 2243 2244 2483 2484 2526 2527 2874 2875 2876 2877 +12 2241 2242 2243 2244 2483 2484 2526 2527 2874 2875 2876 2877 +4 2241 2243 2874 2876 +4 2241 2243 2874 2876 +4 2241 2243 2874 2876 +4 2241 2243 2874 2876 +4 2241 2243 2874 2876 +4 2241 2243 2874 2876 +8 2241 2243 2699 2700 2742 2743 2874 2876 +8 2241 2243 2699 2700 2742 2743 2874 2876 +8 2241 2243 2699 2700 2742 2743 2874 2876 +8 2241 2243 2699 2700 2742 2743 2874 2876 +8 2241 2243 2699 2700 2742 2743 2874 2876 +8 2241 2243 2699 2700 2742 2743 2874 2876 +3 2241 2699 2700 +3 2241 2699 2700 +3 2241 2699 2700 +3 2241 2699 2700 +3 2241 2699 2700 +3 2241 2699 2700 +4 2241 2242 2483 2484 +4 2241 2242 2483 2484 +4 2241 2242 2483 2484 +4 2241 2242 2483 2484 +4 2241 2242 2483 2484 +4 2241 2242 2483 2484 +4 2242 2244 2875 2877 +4 2242 2244 2875 2877 +4 2242 2244 2875 2877 +4 2242 2244 2875 2877 +4 2242 2244 2875 2877 +4 2242 2244 2875 2877 +8 2243 2244 2526 2527 2742 2743 2804 2805 +8 2243 2244 2526 2527 2742 2743 2804 2805 +8 2243 2244 2526 2527 2742 2743 2804 2805 +8 2243 2244 2526 2527 2742 2743 2804 2805 +8 2243 2244 2526 2527 2742 2743 2804 2805 +8 2243 2244 2526 2527 2742 2743 2804 2805 +3 2243 2742 2743 +3 2243 2742 2743 +3 2243 2742 2743 +3 2243 2742 2743 +3 2243 2742 2743 +3 2243 2742 2743 +4 2243 2244 2526 2527 +4 2243 2244 2526 2527 +4 2243 2244 2526 2527 +4 2243 2244 2526 2527 +4 2243 2244 2526 2527 +4 2243 2244 2526 2527 +3 2244 2804 2805 +3 2244 2804 2805 +3 2244 2804 2805 +3 2244 2804 2805 +3 2244 2804 2805 +3 2244 2804 2805 +8 2245 2246 2355 2356 2398 2399 3045 3046 +8 2245 2246 2355 2356 2398 2399 3045 3046 +8 2245 2246 2355 2356 2398 2399 3045 3046 +8 2245 2246 2355 2356 2398 2399 3045 3046 +8 2245 2246 2355 2356 2398 2399 3045 3046 +8 2245 2246 2355 2356 2398 2399 3045 3046 +4 2245 2246 3045 3046 +4 2245 2246 3045 3046 +4 2245 2246 3045 3046 +4 2245 2246 3045 3046 +4 2245 2246 3045 3046 +4 2245 2246 3045 3046 +8 2245 2246 2571 2572 2614 2615 3045 3046 +8 2245 2246 2571 2572 2614 2615 3045 3046 +8 2245 2246 2571 2572 2614 2615 3045 3046 +8 2245 2246 2571 2572 2614 2615 3045 3046 +8 2245 2246 2571 2572 2614 2615 3045 3046 +8 2245 2246 2571 2572 2614 2615 3045 3046 +3 2245 2571 2572 +3 2245 2571 2572 +3 2245 2571 2572 +3 2245 2571 2572 +3 2245 2571 2572 +3 2245 2571 2572 +5 2245 2571 2572 3103 3104 +5 2245 2571 2572 3103 3104 +5 2245 2571 2572 3103 3104 +5 2245 2571 2572 3103 3104 +5 2245 2571 2572 3103 3104 +5 2245 2571 2572 3103 3104 +3 2245 3103 3104 +3 2245 3103 3104 +3 2245 3103 3104 +3 2245 3103 3104 +3 2245 3103 3104 +3 2245 3103 3104 +3 2245 2355 2356 +3 2245 2355 2356 +3 2245 2355 2356 +3 2245 2355 2356 +3 2245 2355 2356 +3 2245 2355 2356 +8 2246 2247 2398 2399 2441 2442 2988 2989 +8 2246 2247 2398 2399 2441 2442 2988 2989 +8 2246 2247 2398 2399 2441 2442 2988 2989 +8 2246 2247 2398 2399 2441 2442 2988 2989 +8 2246 2247 2398 2399 2441 2442 2988 2989 +8 2246 2247 2398 2399 2441 2442 2988 2989 +4 2246 2247 2988 2989 +4 2246 2247 2988 2989 +4 2246 2247 2988 2989 +4 2246 2247 2988 2989 +4 2246 2247 2988 2989 +4 2246 2247 2988 2989 +8 2246 2247 2614 2615 2657 2658 2988 2989 +8 2246 2247 2614 2615 2657 2658 2988 2989 +8 2246 2247 2614 2615 2657 2658 2988 2989 +8 2246 2247 2614 2615 2657 2658 2988 2989 +8 2246 2247 2614 2615 2657 2658 2988 2989 +8 2246 2247 2614 2615 2657 2658 2988 2989 +3 2246 2614 2615 +3 2246 2614 2615 +3 2246 2614 2615 +3 2246 2614 2615 +3 2246 2614 2615 +3 2246 2614 2615 +3 2246 2398 2399 +3 2246 2398 2399 +3 2246 2398 2399 +3 2246 2398 2399 +3 2246 2398 2399 +3 2246 2398 2399 +8 2247 2248 2441 2442 2484 2485 2939 2940 +8 2247 2248 2441 2442 2484 2485 2939 2940 +8 2247 2248 2441 2442 2484 2485 2939 2940 +8 2247 2248 2441 2442 2484 2485 2939 2940 +8 2247 2248 2441 2442 2484 2485 2939 2940 +8 2247 2248 2441 2442 2484 2485 2939 2940 +4 2247 2248 2939 2940 +4 2247 2248 2939 2940 +4 2247 2248 2939 2940 +4 2247 2248 2939 2940 +4 2247 2248 2939 2940 +4 2247 2248 2939 2940 +8 2247 2248 2657 2658 2700 2701 2939 2940 +8 2247 2248 2657 2658 2700 2701 2939 2940 +8 2247 2248 2657 2658 2700 2701 2939 2940 +8 2247 2248 2657 2658 2700 2701 2939 2940 +8 2247 2248 2657 2658 2700 2701 2939 2940 +8 2247 2248 2657 2658 2700 2701 2939 2940 +3 2247 2657 2658 +3 2247 2657 2658 +3 2247 2657 2658 +3 2247 2657 2658 +3 2247 2657 2658 +3 2247 2657 2658 +3 2247 2441 2442 +3 2247 2441 2442 +3 2247 2441 2442 +3 2247 2441 2442 +3 2247 2441 2442 +3 2247 2441 2442 +11 2248 2249 2250 2484 2485 2527 2528 2876 2877 2878 2879 +11 2248 2249 2250 2484 2485 2527 2528 2876 2877 2878 2879 +11 2248 2249 2250 2484 2485 2527 2528 2876 2877 2878 2879 +11 2248 2249 2250 2484 2485 2527 2528 2876 2877 2878 2879 +11 2248 2249 2250 2484 2485 2527 2528 2876 2877 2878 2879 +11 2248 2249 2250 2484 2485 2527 2528 2876 2877 2878 2879 +4 2248 2249 2876 2878 +4 2248 2249 2876 2878 +4 2248 2249 2876 2878 +4 2248 2249 2876 2878 +4 2248 2249 2876 2878 +4 2248 2249 2876 2878 +8 2248 2249 2700 2701 2743 2744 2876 2878 +8 2248 2249 2700 2701 2743 2744 2876 2878 +8 2248 2249 2700 2701 2743 2744 2876 2878 +8 2248 2249 2700 2701 2743 2744 2876 2878 +8 2248 2249 2700 2701 2743 2744 2876 2878 +8 2248 2249 2700 2701 2743 2744 2876 2878 +3 2248 2700 2701 +3 2248 2700 2701 +3 2248 2700 2701 +3 2248 2700 2701 +3 2248 2700 2701 +3 2248 2700 2701 +3 2248 2484 2485 +3 2248 2484 2485 +3 2248 2484 2485 +3 2248 2484 2485 +3 2248 2484 2485 +3 2248 2484 2485 +8 2249 2250 2527 2528 2743 2744 2805 2806 +8 2249 2250 2527 2528 2743 2744 2805 2806 +8 2249 2250 2527 2528 2743 2744 2805 2806 +8 2249 2250 2527 2528 2743 2744 2805 2806 +8 2249 2250 2527 2528 2743 2744 2805 2806 +8 2249 2250 2527 2528 2743 2744 2805 2806 +3 2249 2743 2744 +3 2249 2743 2744 +3 2249 2743 2744 +3 2249 2743 2744 +3 2249 2743 2744 +3 2249 2743 2744 +4 2249 2250 2527 2528 +4 2249 2250 2527 2528 +4 2249 2250 2527 2528 +4 2249 2250 2527 2528 +4 2249 2250 2527 2528 +4 2249 2250 2527 2528 +3 2250 2805 2806 +3 2250 2805 2806 +3 2250 2805 2806 +3 2250 2805 2806 +3 2250 2805 2806 +3 2250 2805 2806 +3 2250 2877 2879 +3 2250 2877 2879 +3 2250 2877 2879 +3 2250 2877 2879 +3 2250 2877 2879 +3 2250 2877 2879 +10 2251 2252 2253 2356 2357 2399 2400 3046 3047 3048 +10 2251 2252 2253 2356 2357 2399 2400 3046 3047 3048 +10 2251 2252 2253 2356 2357 2399 2400 3046 3047 3048 +10 2251 2252 2253 2356 2357 2399 2400 3046 3047 3048 +10 2251 2252 2253 2356 2357 2399 2400 3046 3047 3048 +10 2251 2252 2253 2356 2357 2399 2400 3046 3047 3048 +4 2251 2253 3046 3047 +4 2251 2253 3046 3047 +4 2251 2253 3046 3047 +4 2251 2253 3046 3047 +4 2251 2253 3046 3047 +4 2251 2253 3046 3047 +8 2251 2253 2572 2573 2615 2616 3046 3047 +8 2251 2253 2572 2573 2615 2616 3046 3047 +8 2251 2253 2572 2573 2615 2616 3046 3047 +8 2251 2253 2572 2573 2615 2616 3046 3047 +8 2251 2253 2572 2573 2615 2616 3046 3047 +8 2251 2253 2572 2573 2615 2616 3046 3047 +3 2251 2572 2573 +3 2251 2572 2573 +3 2251 2572 2573 +3 2251 2572 2573 +3 2251 2572 2573 +3 2251 2572 2573 +5 2251 2572 2573 3104 3105 +5 2251 2572 2573 3104 3105 +5 2251 2572 2573 3104 3105 +5 2251 2572 2573 3104 3105 +5 2251 2572 2573 3104 3105 +5 2251 2572 2573 3104 3105 +3 2251 3104 3105 +3 2251 3104 3105 +3 2251 3104 3105 +3 2251 3104 3105 +3 2251 3104 3105 +3 2251 3104 3105 +4 2251 2252 2356 2357 +4 2251 2252 2356 2357 +4 2251 2252 2356 2357 +4 2251 2252 2356 2357 +4 2251 2252 2356 2357 +4 2251 2252 2356 2357 +2 2252 3048 +2 2252 3048 +2 2252 3048 +2 2252 3048 +2 2252 3048 +2 2252 3048 +8 2253 2254 2399 2400 2442 2443 2989 2990 +8 2253 2254 2399 2400 2442 2443 2989 2990 +8 2253 2254 2399 2400 2442 2443 2989 2990 +8 2253 2254 2399 2400 2442 2443 2989 2990 +8 2253 2254 2399 2400 2442 2443 2989 2990 +8 2253 2254 2399 2400 2442 2443 2989 2990 +4 2253 2254 2989 2990 +4 2253 2254 2989 2990 +4 2253 2254 2989 2990 +4 2253 2254 2989 2990 +4 2253 2254 2989 2990 +4 2253 2254 2989 2990 +8 2253 2254 2615 2616 2658 2659 2989 2990 +8 2253 2254 2615 2616 2658 2659 2989 2990 +8 2253 2254 2615 2616 2658 2659 2989 2990 +8 2253 2254 2615 2616 2658 2659 2989 2990 +8 2253 2254 2615 2616 2658 2659 2989 2990 +8 2253 2254 2615 2616 2658 2659 2989 2990 +3 2253 2615 2616 +3 2253 2615 2616 +3 2253 2615 2616 +3 2253 2615 2616 +3 2253 2615 2616 +3 2253 2615 2616 +3 2253 2399 2400 +3 2253 2399 2400 +3 2253 2399 2400 +3 2253 2399 2400 +3 2253 2399 2400 +3 2253 2399 2400 +10 2254 2255 2256 2442 2443 2485 2486 2940 2941 2942 +10 2254 2255 2256 2442 2443 2485 2486 2940 2941 2942 +10 2254 2255 2256 2442 2443 2485 2486 2940 2941 2942 +10 2254 2255 2256 2442 2443 2485 2486 2940 2941 2942 +10 2254 2255 2256 2442 2443 2485 2486 2940 2941 2942 +10 2254 2255 2256 2442 2443 2485 2486 2940 2941 2942 +4 2254 2255 2940 2941 +4 2254 2255 2940 2941 +4 2254 2255 2940 2941 +4 2254 2255 2940 2941 +4 2254 2255 2940 2941 +4 2254 2255 2940 2941 +8 2254 2255 2658 2659 2701 2702 2940 2941 +8 2254 2255 2658 2659 2701 2702 2940 2941 +8 2254 2255 2658 2659 2701 2702 2940 2941 +8 2254 2255 2658 2659 2701 2702 2940 2941 +8 2254 2255 2658 2659 2701 2702 2940 2941 +8 2254 2255 2658 2659 2701 2702 2940 2941 +3 2254 2658 2659 +3 2254 2658 2659 +3 2254 2658 2659 +3 2254 2658 2659 +3 2254 2658 2659 +3 2254 2658 2659 +3 2254 2442 2443 +3 2254 2442 2443 +3 2254 2442 2443 +3 2254 2442 2443 +3 2254 2442 2443 +3 2254 2442 2443 +12 2255 2256 2257 2258 2485 2486 2528 2529 2878 2879 2880 2881 +12 2255 2256 2257 2258 2485 2486 2528 2529 2878 2879 2880 2881 +12 2255 2256 2257 2258 2485 2486 2528 2529 2878 2879 2880 2881 +12 2255 2256 2257 2258 2485 2486 2528 2529 2878 2879 2880 2881 +12 2255 2256 2257 2258 2485 2486 2528 2529 2878 2879 2880 2881 +12 2255 2256 2257 2258 2485 2486 2528 2529 2878 2879 2880 2881 +4 2255 2257 2878 2880 +4 2255 2257 2878 2880 +4 2255 2257 2878 2880 +4 2255 2257 2878 2880 +4 2255 2257 2878 2880 +4 2255 2257 2878 2880 +8 2255 2257 2701 2702 2744 2745 2878 2880 +8 2255 2257 2701 2702 2744 2745 2878 2880 +8 2255 2257 2701 2702 2744 2745 2878 2880 +8 2255 2257 2701 2702 2744 2745 2878 2880 +8 2255 2257 2701 2702 2744 2745 2878 2880 +8 2255 2257 2701 2702 2744 2745 2878 2880 +3 2255 2701 2702 +3 2255 2701 2702 +3 2255 2701 2702 +3 2255 2701 2702 +3 2255 2701 2702 +3 2255 2701 2702 +4 2255 2256 2485 2486 +4 2255 2256 2485 2486 +4 2255 2256 2485 2486 +4 2255 2256 2485 2486 +4 2255 2256 2485 2486 +4 2255 2256 2485 2486 +4 2256 2258 2879 2881 +4 2256 2258 2879 2881 +4 2256 2258 2879 2881 +4 2256 2258 2879 2881 +4 2256 2258 2879 2881 +4 2256 2258 2879 2881 +2 2256 2942 +2 2256 2942 +2 2256 2942 +2 2256 2942 +2 2256 2942 +2 2256 2942 +8 2257 2258 2528 2529 2744 2745 2806 2807 +8 2257 2258 2528 2529 2744 2745 2806 2807 +8 2257 2258 2528 2529 2744 2745 2806 2807 +8 2257 2258 2528 2529 2744 2745 2806 2807 +8 2257 2258 2528 2529 2744 2745 2806 2807 +8 2257 2258 2528 2529 2744 2745 2806 2807 +3 2257 2744 2745 +3 2257 2744 2745 +3 2257 2744 2745 +3 2257 2744 2745 +3 2257 2744 2745 +3 2257 2744 2745 +4 2257 2258 2528 2529 +4 2257 2258 2528 2529 +4 2257 2258 2528 2529 +4 2257 2258 2528 2529 +4 2257 2258 2528 2529 +4 2257 2258 2528 2529 +3 2258 2806 2807 +3 2258 2806 2807 +3 2258 2806 2807 +3 2258 2806 2807 +3 2258 2806 2807 +3 2258 2806 2807 +10 2259 2260 2261 2357 2358 2400 2401 3047 3048 3049 +10 2259 2260 2261 2357 2358 2400 2401 3047 3048 3049 +10 2259 2260 2261 2357 2358 2400 2401 3047 3048 3049 +10 2259 2260 2261 2357 2358 2400 2401 3047 3048 3049 +10 2259 2260 2261 2357 2358 2400 2401 3047 3048 3049 +10 2259 2260 2261 2357 2358 2400 2401 3047 3048 3049 +4 2259 2261 3047 3049 +4 2259 2261 3047 3049 +4 2259 2261 3047 3049 +4 2259 2261 3047 3049 +4 2259 2261 3047 3049 +4 2259 2261 3047 3049 +8 2259 2261 2573 2574 2616 2617 3047 3049 +8 2259 2261 2573 2574 2616 2617 3047 3049 +8 2259 2261 2573 2574 2616 2617 3047 3049 +8 2259 2261 2573 2574 2616 2617 3047 3049 +8 2259 2261 2573 2574 2616 2617 3047 3049 +8 2259 2261 2573 2574 2616 2617 3047 3049 +3 2259 2573 2574 +3 2259 2573 2574 +3 2259 2573 2574 +3 2259 2573 2574 +3 2259 2573 2574 +3 2259 2573 2574 +5 2259 2573 2574 3105 3107 +5 2259 2573 2574 3105 3107 +5 2259 2573 2574 3105 3107 +5 2259 2573 2574 3105 3107 +5 2259 2573 2574 3105 3107 +5 2259 2573 2574 3105 3107 +3 2259 3105 3107 +3 2259 3105 3107 +3 2259 3105 3107 +3 2259 3105 3107 +3 2259 3105 3107 +3 2259 3105 3107 +4 2259 2260 2357 2358 +4 2259 2260 2357 2358 +4 2259 2260 2357 2358 +4 2259 2260 2357 2358 +4 2259 2260 2357 2358 +4 2259 2260 2357 2358 +2 2260 3048 +2 2260 3048 +2 2260 3048 +2 2260 3048 +2 2260 3048 +2 2260 3048 +8 2261 2262 2400 2401 2443 2444 2990 2991 +8 2261 2262 2400 2401 2443 2444 2990 2991 +8 2261 2262 2400 2401 2443 2444 2990 2991 +8 2261 2262 2400 2401 2443 2444 2990 2991 +8 2261 2262 2400 2401 2443 2444 2990 2991 +8 2261 2262 2400 2401 2443 2444 2990 2991 +4 2261 2262 2990 2991 +4 2261 2262 2990 2991 +4 2261 2262 2990 2991 +4 2261 2262 2990 2991 +4 2261 2262 2990 2991 +4 2261 2262 2990 2991 +8 2261 2262 2616 2617 2659 2660 2990 2991 +8 2261 2262 2616 2617 2659 2660 2990 2991 +8 2261 2262 2616 2617 2659 2660 2990 2991 +8 2261 2262 2616 2617 2659 2660 2990 2991 +8 2261 2262 2616 2617 2659 2660 2990 2991 +8 2261 2262 2616 2617 2659 2660 2990 2991 +3 2261 2616 2617 +3 2261 2616 2617 +3 2261 2616 2617 +3 2261 2616 2617 +3 2261 2616 2617 +3 2261 2616 2617 +3 2261 2400 2401 +3 2261 2400 2401 +3 2261 2400 2401 +3 2261 2400 2401 +3 2261 2400 2401 +3 2261 2400 2401 +10 2262 2263 2264 2443 2444 2486 2487 2941 2942 2943 +10 2262 2263 2264 2443 2444 2486 2487 2941 2942 2943 +10 2262 2263 2264 2443 2444 2486 2487 2941 2942 2943 +10 2262 2263 2264 2443 2444 2486 2487 2941 2942 2943 +10 2262 2263 2264 2443 2444 2486 2487 2941 2942 2943 +10 2262 2263 2264 2443 2444 2486 2487 2941 2942 2943 +4 2262 2263 2941 2943 +4 2262 2263 2941 2943 +4 2262 2263 2941 2943 +4 2262 2263 2941 2943 +4 2262 2263 2941 2943 +4 2262 2263 2941 2943 +8 2262 2263 2659 2660 2702 2703 2941 2943 +8 2262 2263 2659 2660 2702 2703 2941 2943 +8 2262 2263 2659 2660 2702 2703 2941 2943 +8 2262 2263 2659 2660 2702 2703 2941 2943 +8 2262 2263 2659 2660 2702 2703 2941 2943 +8 2262 2263 2659 2660 2702 2703 2941 2943 +3 2262 2659 2660 +3 2262 2659 2660 +3 2262 2659 2660 +3 2262 2659 2660 +3 2262 2659 2660 +3 2262 2659 2660 +3 2262 2443 2444 +3 2262 2443 2444 +3 2262 2443 2444 +3 2262 2443 2444 +3 2262 2443 2444 +3 2262 2443 2444 +12 2263 2264 2265 2266 2486 2487 2529 2530 2880 2881 2882 2883 +12 2263 2264 2265 2266 2486 2487 2529 2530 2880 2881 2882 2883 +12 2263 2264 2265 2266 2486 2487 2529 2530 2880 2881 2882 2883 +12 2263 2264 2265 2266 2486 2487 2529 2530 2880 2881 2882 2883 +12 2263 2264 2265 2266 2486 2487 2529 2530 2880 2881 2882 2883 +12 2263 2264 2265 2266 2486 2487 2529 2530 2880 2881 2882 2883 +4 2263 2265 2880 2882 +4 2263 2265 2880 2882 +4 2263 2265 2880 2882 +4 2263 2265 2880 2882 +4 2263 2265 2880 2882 +4 2263 2265 2880 2882 +8 2263 2265 2702 2703 2745 2746 2880 2882 +8 2263 2265 2702 2703 2745 2746 2880 2882 +8 2263 2265 2702 2703 2745 2746 2880 2882 +8 2263 2265 2702 2703 2745 2746 2880 2882 +8 2263 2265 2702 2703 2745 2746 2880 2882 +8 2263 2265 2702 2703 2745 2746 2880 2882 +3 2263 2702 2703 +3 2263 2702 2703 +3 2263 2702 2703 +3 2263 2702 2703 +3 2263 2702 2703 +3 2263 2702 2703 +4 2263 2264 2486 2487 +4 2263 2264 2486 2487 +4 2263 2264 2486 2487 +4 2263 2264 2486 2487 +4 2263 2264 2486 2487 +4 2263 2264 2486 2487 +4 2264 2266 2881 2883 +4 2264 2266 2881 2883 +4 2264 2266 2881 2883 +4 2264 2266 2881 2883 +4 2264 2266 2881 2883 +4 2264 2266 2881 2883 +2 2264 2942 +2 2264 2942 +2 2264 2942 +2 2264 2942 +2 2264 2942 +2 2264 2942 +8 2265 2266 2529 2530 2745 2746 2807 2808 +8 2265 2266 2529 2530 2745 2746 2807 2808 +8 2265 2266 2529 2530 2745 2746 2807 2808 +8 2265 2266 2529 2530 2745 2746 2807 2808 +8 2265 2266 2529 2530 2745 2746 2807 2808 +8 2265 2266 2529 2530 2745 2746 2807 2808 +3 2265 2745 2746 +3 2265 2745 2746 +3 2265 2745 2746 +3 2265 2745 2746 +3 2265 2745 2746 +3 2265 2745 2746 +4 2265 2266 2529 2530 +4 2265 2266 2529 2530 +4 2265 2266 2529 2530 +4 2265 2266 2529 2530 +4 2265 2266 2529 2530 +4 2265 2266 2529 2530 +3 2266 2807 2808 +3 2266 2807 2808 +3 2266 2807 2808 +3 2266 2807 2808 +3 2266 2807 2808 +3 2266 2807 2808 +8 2267 2268 2358 2359 2401 2402 3049 3050 +8 2267 2268 2358 2359 2401 2402 3049 3050 +8 2267 2268 2358 2359 2401 2402 3049 3050 +8 2267 2268 2358 2359 2401 2402 3049 3050 +8 2267 2268 2358 2359 2401 2402 3049 3050 +8 2267 2268 2358 2359 2401 2402 3049 3050 +4 2267 2268 3049 3050 +4 2267 2268 3049 3050 +4 2267 2268 3049 3050 +4 2267 2268 3049 3050 +4 2267 2268 3049 3050 +4 2267 2268 3049 3050 +8 2267 2268 2574 2575 2617 2618 3049 3050 +8 2267 2268 2574 2575 2617 2618 3049 3050 +8 2267 2268 2574 2575 2617 2618 3049 3050 +8 2267 2268 2574 2575 2617 2618 3049 3050 +8 2267 2268 2574 2575 2617 2618 3049 3050 +8 2267 2268 2574 2575 2617 2618 3049 3050 +3 2267 2574 2575 +3 2267 2574 2575 +3 2267 2574 2575 +3 2267 2574 2575 +3 2267 2574 2575 +3 2267 2574 2575 +5 2267 2574 2575 3107 3108 +5 2267 2574 2575 3107 3108 +5 2267 2574 2575 3107 3108 +5 2267 2574 2575 3107 3108 +5 2267 2574 2575 3107 3108 +5 2267 2574 2575 3107 3108 +3 2267 3107 3108 +3 2267 3107 3108 +3 2267 3107 3108 +3 2267 3107 3108 +3 2267 3107 3108 +3 2267 3107 3108 +3 2267 2358 2359 +3 2267 2358 2359 +3 2267 2358 2359 +3 2267 2358 2359 +3 2267 2358 2359 +3 2267 2358 2359 +8 2268 2269 2401 2402 2444 2445 2991 2992 +8 2268 2269 2401 2402 2444 2445 2991 2992 +8 2268 2269 2401 2402 2444 2445 2991 2992 +8 2268 2269 2401 2402 2444 2445 2991 2992 +8 2268 2269 2401 2402 2444 2445 2991 2992 +8 2268 2269 2401 2402 2444 2445 2991 2992 +4 2268 2269 2991 2992 +4 2268 2269 2991 2992 +4 2268 2269 2991 2992 +4 2268 2269 2991 2992 +4 2268 2269 2991 2992 +4 2268 2269 2991 2992 +8 2268 2269 2617 2618 2660 2661 2991 2992 +8 2268 2269 2617 2618 2660 2661 2991 2992 +8 2268 2269 2617 2618 2660 2661 2991 2992 +8 2268 2269 2617 2618 2660 2661 2991 2992 +8 2268 2269 2617 2618 2660 2661 2991 2992 +8 2268 2269 2617 2618 2660 2661 2991 2992 +3 2268 2617 2618 +3 2268 2617 2618 +3 2268 2617 2618 +3 2268 2617 2618 +3 2268 2617 2618 +3 2268 2617 2618 +3 2268 2401 2402 +3 2268 2401 2402 +3 2268 2401 2402 +3 2268 2401 2402 +3 2268 2401 2402 +3 2268 2401 2402 +8 2269 2270 2444 2445 2487 2488 2943 2944 +8 2269 2270 2444 2445 2487 2488 2943 2944 +8 2269 2270 2444 2445 2487 2488 2943 2944 +8 2269 2270 2444 2445 2487 2488 2943 2944 +8 2269 2270 2444 2445 2487 2488 2943 2944 +8 2269 2270 2444 2445 2487 2488 2943 2944 +4 2269 2270 2943 2944 +4 2269 2270 2943 2944 +4 2269 2270 2943 2944 +4 2269 2270 2943 2944 +4 2269 2270 2943 2944 +4 2269 2270 2943 2944 +8 2269 2270 2660 2661 2703 2704 2943 2944 +8 2269 2270 2660 2661 2703 2704 2943 2944 +8 2269 2270 2660 2661 2703 2704 2943 2944 +8 2269 2270 2660 2661 2703 2704 2943 2944 +8 2269 2270 2660 2661 2703 2704 2943 2944 +8 2269 2270 2660 2661 2703 2704 2943 2944 +3 2269 2660 2661 +3 2269 2660 2661 +3 2269 2660 2661 +3 2269 2660 2661 +3 2269 2660 2661 +3 2269 2660 2661 +3 2269 2444 2445 +3 2269 2444 2445 +3 2269 2444 2445 +3 2269 2444 2445 +3 2269 2444 2445 +3 2269 2444 2445 +11 2270 2271 2272 2487 2488 2530 2531 2882 2883 2884 2885 +11 2270 2271 2272 2487 2488 2530 2531 2882 2883 2884 2885 +11 2270 2271 2272 2487 2488 2530 2531 2882 2883 2884 2885 +11 2270 2271 2272 2487 2488 2530 2531 2882 2883 2884 2885 +11 2270 2271 2272 2487 2488 2530 2531 2882 2883 2884 2885 +11 2270 2271 2272 2487 2488 2530 2531 2882 2883 2884 2885 +4 2270 2271 2882 2884 +4 2270 2271 2882 2884 +4 2270 2271 2882 2884 +4 2270 2271 2882 2884 +4 2270 2271 2882 2884 +4 2270 2271 2882 2884 +8 2270 2271 2703 2704 2746 2747 2882 2884 +8 2270 2271 2703 2704 2746 2747 2882 2884 +8 2270 2271 2703 2704 2746 2747 2882 2884 +8 2270 2271 2703 2704 2746 2747 2882 2884 +8 2270 2271 2703 2704 2746 2747 2882 2884 +8 2270 2271 2703 2704 2746 2747 2882 2884 +3 2270 2703 2704 +3 2270 2703 2704 +3 2270 2703 2704 +3 2270 2703 2704 +3 2270 2703 2704 +3 2270 2703 2704 +3 2270 2487 2488 +3 2270 2487 2488 +3 2270 2487 2488 +3 2270 2487 2488 +3 2270 2487 2488 +3 2270 2487 2488 +8 2271 2272 2530 2531 2746 2747 2808 2809 +8 2271 2272 2530 2531 2746 2747 2808 2809 +8 2271 2272 2530 2531 2746 2747 2808 2809 +8 2271 2272 2530 2531 2746 2747 2808 2809 +8 2271 2272 2530 2531 2746 2747 2808 2809 +8 2271 2272 2530 2531 2746 2747 2808 2809 +3 2271 2746 2747 +3 2271 2746 2747 +3 2271 2746 2747 +3 2271 2746 2747 +3 2271 2746 2747 +3 2271 2746 2747 +4 2271 2272 2530 2531 +4 2271 2272 2530 2531 +4 2271 2272 2530 2531 +4 2271 2272 2530 2531 +4 2271 2272 2530 2531 +4 2271 2272 2530 2531 +3 2272 2808 2809 +3 2272 2808 2809 +3 2272 2808 2809 +3 2272 2808 2809 +3 2272 2808 2809 +3 2272 2808 2809 +3 2272 2883 2885 +3 2272 2883 2885 +3 2272 2883 2885 +3 2272 2883 2885 +3 2272 2883 2885 +3 2272 2883 2885 +4 2273 2275 3050 3051 +4 2273 2275 3050 3051 +4 2273 2275 3050 3051 +4 2273 2275 3050 3051 +4 2273 2275 3050 3051 +4 2273 2275 3050 3051 +8 2273 2275 2575 2576 2618 2619 3050 3051 +8 2273 2275 2575 2576 2618 2619 3050 3051 +8 2273 2275 2575 2576 2618 2619 3050 3051 +8 2273 2275 2575 2576 2618 2619 3050 3051 +8 2273 2275 2575 2576 2618 2619 3050 3051 +8 2273 2275 2575 2576 2618 2619 3050 3051 +3 2273 2575 2576 +3 2273 2575 2576 +3 2273 2575 2576 +3 2273 2575 2576 +3 2273 2575 2576 +3 2273 2575 2576 +5 2273 2575 2576 3108 3109 +5 2273 2575 2576 3108 3109 +5 2273 2575 2576 3108 3109 +5 2273 2575 2576 3108 3109 +5 2273 2575 2576 3108 3109 +5 2273 2575 2576 3108 3109 +3 2273 3108 3109 +3 2273 3108 3109 +3 2273 3108 3109 +3 2273 3108 3109 +3 2273 3108 3109 +3 2273 3108 3109 +4 2273 2274 2359 2360 +4 2273 2274 2359 2360 +4 2273 2274 2359 2360 +4 2273 2274 2359 2360 +4 2273 2274 2359 2360 +4 2273 2274 2359 2360 +4 2275 2276 2992 2993 +4 2275 2276 2992 2993 +4 2275 2276 2992 2993 +4 2275 2276 2992 2993 +4 2275 2276 2992 2993 +4 2275 2276 2992 2993 +8 2275 2276 2618 2619 2661 2662 2992 2993 +8 2275 2276 2618 2619 2661 2662 2992 2993 +8 2275 2276 2618 2619 2661 2662 2992 2993 +8 2275 2276 2618 2619 2661 2662 2992 2993 +8 2275 2276 2618 2619 2661 2662 2992 2993 +8 2275 2276 2618 2619 2661 2662 2992 2993 +3 2275 2618 2619 +3 2275 2618 2619 +3 2275 2618 2619 +3 2275 2618 2619 +3 2275 2618 2619 +3 2275 2618 2619 +3 2275 2402 2403 +3 2275 2402 2403 +3 2275 2402 2403 +3 2275 2402 2403 +3 2275 2402 2403 +3 2275 2402 2403 +4 2276 2277 2944 2945 +4 2276 2277 2944 2945 +4 2276 2277 2944 2945 +4 2276 2277 2944 2945 +4 2276 2277 2944 2945 +4 2276 2277 2944 2945 +8 2276 2277 2661 2662 2704 2705 2944 2945 +8 2276 2277 2661 2662 2704 2705 2944 2945 +8 2276 2277 2661 2662 2704 2705 2944 2945 +8 2276 2277 2661 2662 2704 2705 2944 2945 +8 2276 2277 2661 2662 2704 2705 2944 2945 +8 2276 2277 2661 2662 2704 2705 2944 2945 +3 2276 2661 2662 +3 2276 2661 2662 +3 2276 2661 2662 +3 2276 2661 2662 +3 2276 2661 2662 +3 2276 2661 2662 +3 2276 2445 2446 +3 2276 2445 2446 +3 2276 2445 2446 +3 2276 2445 2446 +3 2276 2445 2446 +3 2276 2445 2446 +12 2277 2278 2279 2280 2488 2489 2531 2532 2884 2885 2886 2887 +12 2277 2278 2279 2280 2488 2489 2531 2532 2884 2885 2886 2887 +12 2277 2278 2279 2280 2488 2489 2531 2532 2884 2885 2886 2887 +12 2277 2278 2279 2280 2488 2489 2531 2532 2884 2885 2886 2887 +12 2277 2278 2279 2280 2488 2489 2531 2532 2884 2885 2886 2887 +12 2277 2278 2279 2280 2488 2489 2531 2532 2884 2885 2886 2887 +4 2277 2279 2884 2886 +4 2277 2279 2884 2886 +4 2277 2279 2884 2886 +4 2277 2279 2884 2886 +4 2277 2279 2884 2886 +4 2277 2279 2884 2886 +8 2277 2279 2704 2705 2747 2748 2884 2886 +8 2277 2279 2704 2705 2747 2748 2884 2886 +8 2277 2279 2704 2705 2747 2748 2884 2886 +8 2277 2279 2704 2705 2747 2748 2884 2886 +8 2277 2279 2704 2705 2747 2748 2884 2886 +8 2277 2279 2704 2705 2747 2748 2884 2886 +3 2277 2704 2705 +3 2277 2704 2705 +3 2277 2704 2705 +3 2277 2704 2705 +3 2277 2704 2705 +3 2277 2704 2705 +4 2277 2278 2488 2489 +4 2277 2278 2488 2489 +4 2277 2278 2488 2489 +4 2277 2278 2488 2489 +4 2277 2278 2488 2489 +4 2277 2278 2488 2489 +4 2278 2280 2885 2887 +4 2278 2280 2885 2887 +4 2278 2280 2885 2887 +4 2278 2280 2885 2887 +4 2278 2280 2885 2887 +4 2278 2280 2885 2887 +8 2279 2280 2531 2532 2747 2748 2809 2810 +8 2279 2280 2531 2532 2747 2748 2809 2810 +8 2279 2280 2531 2532 2747 2748 2809 2810 +8 2279 2280 2531 2532 2747 2748 2809 2810 +8 2279 2280 2531 2532 2747 2748 2809 2810 +8 2279 2280 2531 2532 2747 2748 2809 2810 +3 2279 2747 2748 +3 2279 2747 2748 +3 2279 2747 2748 +3 2279 2747 2748 +3 2279 2747 2748 +3 2279 2747 2748 +4 2279 2280 2531 2532 +4 2279 2280 2531 2532 +4 2279 2280 2531 2532 +4 2279 2280 2531 2532 +4 2279 2280 2531 2532 +4 2279 2280 2531 2532 +3 2280 2809 2810 +3 2280 2809 2810 +3 2280 2809 2810 +3 2280 2809 2810 +3 2280 2809 2810 +3 2280 2809 2810 +4 2281 2282 3051 3053 +4 2281 2282 3051 3053 +4 2281 2282 3051 3053 +4 2281 2282 3051 3053 +4 2281 2282 3051 3053 +4 2281 2282 3051 3053 +8 2281 2282 2576 2577 2619 2620 3051 3053 +8 2281 2282 2576 2577 2619 2620 3051 3053 +8 2281 2282 2576 2577 2619 2620 3051 3053 +8 2281 2282 2576 2577 2619 2620 3051 3053 +8 2281 2282 2576 2577 2619 2620 3051 3053 +8 2281 2282 2576 2577 2619 2620 3051 3053 +3 2281 2576 2577 +3 2281 2576 2577 +3 2281 2576 2577 +3 2281 2576 2577 +3 2281 2576 2577 +3 2281 2576 2577 +3 2281 2360 2361 +3 2281 2360 2361 +3 2281 2360 2361 +3 2281 2360 2361 +3 2281 2360 2361 +3 2281 2360 2361 +4 2282 2283 2993 2995 +4 2282 2283 2993 2995 +4 2282 2283 2993 2995 +4 2282 2283 2993 2995 +4 2282 2283 2993 2995 +4 2282 2283 2993 2995 +8 2282 2283 2619 2620 2662 2663 2993 2995 +8 2282 2283 2619 2620 2662 2663 2993 2995 +8 2282 2283 2619 2620 2662 2663 2993 2995 +8 2282 2283 2619 2620 2662 2663 2993 2995 +8 2282 2283 2619 2620 2662 2663 2993 2995 +8 2282 2283 2619 2620 2662 2663 2993 2995 +3 2282 2619 2620 +3 2282 2619 2620 +3 2282 2619 2620 +3 2282 2619 2620 +3 2282 2619 2620 +3 2282 2619 2620 +3 2282 2403 2404 +3 2282 2403 2404 +3 2282 2403 2404 +3 2282 2403 2404 +3 2282 2403 2404 +3 2282 2403 2404 +4 2283 2284 2945 2947 +4 2283 2284 2945 2947 +4 2283 2284 2945 2947 +4 2283 2284 2945 2947 +4 2283 2284 2945 2947 +4 2283 2284 2945 2947 +8 2283 2284 2662 2663 2705 2706 2945 2947 +8 2283 2284 2662 2663 2705 2706 2945 2947 +8 2283 2284 2662 2663 2705 2706 2945 2947 +8 2283 2284 2662 2663 2705 2706 2945 2947 +8 2283 2284 2662 2663 2705 2706 2945 2947 +8 2283 2284 2662 2663 2705 2706 2945 2947 +3 2283 2662 2663 +3 2283 2662 2663 +3 2283 2662 2663 +3 2283 2662 2663 +3 2283 2662 2663 +3 2283 2662 2663 +3 2283 2446 2447 +3 2283 2446 2447 +3 2283 2446 2447 +3 2283 2446 2447 +3 2283 2446 2447 +3 2283 2446 2447 +4 2284 2285 2886 2888 +4 2284 2285 2886 2888 +4 2284 2285 2886 2888 +4 2284 2285 2886 2888 +4 2284 2285 2886 2888 +4 2284 2285 2886 2888 +8 2284 2285 2705 2706 2748 2749 2886 2888 +8 2284 2285 2705 2706 2748 2749 2886 2888 +8 2284 2285 2705 2706 2748 2749 2886 2888 +8 2284 2285 2705 2706 2748 2749 2886 2888 +8 2284 2285 2705 2706 2748 2749 2886 2888 +8 2284 2285 2705 2706 2748 2749 2886 2888 +3 2284 2705 2706 +3 2284 2705 2706 +3 2284 2705 2706 +3 2284 2705 2706 +3 2284 2705 2706 +3 2284 2705 2706 +3 2284 2489 2490 +3 2284 2489 2490 +3 2284 2489 2490 +3 2284 2489 2490 +3 2284 2489 2490 +3 2284 2489 2490 +8 2285 2286 2532 2533 2748 2749 2810 2811 +8 2285 2286 2532 2533 2748 2749 2810 2811 +8 2285 2286 2532 2533 2748 2749 2810 2811 +8 2285 2286 2532 2533 2748 2749 2810 2811 +8 2285 2286 2532 2533 2748 2749 2810 2811 +8 2285 2286 2532 2533 2748 2749 2810 2811 +3 2285 2748 2749 +3 2285 2748 2749 +3 2285 2748 2749 +3 2285 2748 2749 +3 2285 2748 2749 +3 2285 2748 2749 +4 2285 2286 2532 2533 +4 2285 2286 2532 2533 +4 2285 2286 2532 2533 +4 2285 2286 2532 2533 +4 2285 2286 2532 2533 +4 2285 2286 2532 2533 +3 2286 2810 2811 +3 2286 2810 2811 +3 2286 2810 2811 +3 2286 2810 2811 +3 2286 2810 2811 +3 2286 2810 2811 +3 2286 2887 2889 +3 2286 2887 2889 +3 2286 2887 2889 +3 2286 2887 2889 +3 2286 2887 2889 +3 2286 2887 2889 +4 2287 2288 3053 3055 +4 2287 2288 3053 3055 +4 2287 2288 3053 3055 +4 2287 2288 3053 3055 +4 2287 2288 3053 3055 +4 2287 2288 3053 3055 +8 2287 2288 2577 2578 2620 2621 3053 3055 +8 2287 2288 2577 2578 2620 2621 3053 3055 +8 2287 2288 2577 2578 2620 2621 3053 3055 +8 2287 2288 2577 2578 2620 2621 3053 3055 +8 2287 2288 2577 2578 2620 2621 3053 3055 +8 2287 2288 2577 2578 2620 2621 3053 3055 +3 2287 2577 2578 +3 2287 2577 2578 +3 2287 2577 2578 +3 2287 2577 2578 +3 2287 2577 2578 +3 2287 2577 2578 +3 2287 2361 2362 +3 2287 2361 2362 +3 2287 2361 2362 +3 2287 2361 2362 +3 2287 2361 2362 +3 2287 2361 2362 +4 2288 2289 2995 2997 +4 2288 2289 2995 2997 +4 2288 2289 2995 2997 +4 2288 2289 2995 2997 +4 2288 2289 2995 2997 +4 2288 2289 2995 2997 +8 2288 2289 2620 2621 2663 2664 2995 2997 +8 2288 2289 2620 2621 2663 2664 2995 2997 +8 2288 2289 2620 2621 2663 2664 2995 2997 +8 2288 2289 2620 2621 2663 2664 2995 2997 +8 2288 2289 2620 2621 2663 2664 2995 2997 +8 2288 2289 2620 2621 2663 2664 2995 2997 +3 2288 2620 2621 +3 2288 2620 2621 +3 2288 2620 2621 +3 2288 2620 2621 +3 2288 2620 2621 +3 2288 2620 2621 +3 2288 2404 2405 +3 2288 2404 2405 +3 2288 2404 2405 +3 2288 2404 2405 +3 2288 2404 2405 +3 2288 2404 2405 +4 2289 2290 2947 2949 +4 2289 2290 2947 2949 +4 2289 2290 2947 2949 +4 2289 2290 2947 2949 +4 2289 2290 2947 2949 +4 2289 2290 2947 2949 +8 2289 2290 2663 2664 2706 2707 2947 2949 +8 2289 2290 2663 2664 2706 2707 2947 2949 +8 2289 2290 2663 2664 2706 2707 2947 2949 +8 2289 2290 2663 2664 2706 2707 2947 2949 +8 2289 2290 2663 2664 2706 2707 2947 2949 +8 2289 2290 2663 2664 2706 2707 2947 2949 +3 2289 2663 2664 +3 2289 2663 2664 +3 2289 2663 2664 +3 2289 2663 2664 +3 2289 2663 2664 +3 2289 2663 2664 +3 2289 2447 2448 +3 2289 2447 2448 +3 2289 2447 2448 +3 2289 2447 2448 +3 2289 2447 2448 +3 2289 2447 2448 +4 2290 2291 2888 2890 +4 2290 2291 2888 2890 +4 2290 2291 2888 2890 +4 2290 2291 2888 2890 +4 2290 2291 2888 2890 +4 2290 2291 2888 2890 +8 2290 2291 2706 2707 2749 2750 2888 2890 +8 2290 2291 2706 2707 2749 2750 2888 2890 +8 2290 2291 2706 2707 2749 2750 2888 2890 +8 2290 2291 2706 2707 2749 2750 2888 2890 +8 2290 2291 2706 2707 2749 2750 2888 2890 +8 2290 2291 2706 2707 2749 2750 2888 2890 +3 2290 2706 2707 +3 2290 2706 2707 +3 2290 2706 2707 +3 2290 2706 2707 +3 2290 2706 2707 +3 2290 2706 2707 +3 2290 2490 2491 +3 2290 2490 2491 +3 2290 2490 2491 +3 2290 2490 2491 +3 2290 2490 2491 +3 2290 2490 2491 +8 2291 2292 2533 2534 2749 2750 2811 2812 +8 2291 2292 2533 2534 2749 2750 2811 2812 +8 2291 2292 2533 2534 2749 2750 2811 2812 +8 2291 2292 2533 2534 2749 2750 2811 2812 +8 2291 2292 2533 2534 2749 2750 2811 2812 +8 2291 2292 2533 2534 2749 2750 2811 2812 +3 2291 2749 2750 +3 2291 2749 2750 +3 2291 2749 2750 +3 2291 2749 2750 +3 2291 2749 2750 +3 2291 2749 2750 +4 2291 2292 2533 2534 +4 2291 2292 2533 2534 +4 2291 2292 2533 2534 +4 2291 2292 2533 2534 +4 2291 2292 2533 2534 +4 2291 2292 2533 2534 +3 2292 2811 2812 +3 2292 2811 2812 +3 2292 2811 2812 +3 2292 2811 2812 +3 2292 2811 2812 +3 2292 2811 2812 +3 2292 2889 2891 +3 2292 2889 2891 +3 2292 2889 2891 +3 2292 2889 2891 +3 2292 2889 2891 +3 2292 2889 2891 +4 2293 2294 3055 3056 +4 2293 2294 3055 3056 +4 2293 2294 3055 3056 +4 2293 2294 3055 3056 +4 2293 2294 3055 3056 +4 2293 2294 3055 3056 +8 2293 2294 2578 2579 2621 2622 3055 3056 +8 2293 2294 2578 2579 2621 2622 3055 3056 +8 2293 2294 2578 2579 2621 2622 3055 3056 +8 2293 2294 2578 2579 2621 2622 3055 3056 +8 2293 2294 2578 2579 2621 2622 3055 3056 +8 2293 2294 2578 2579 2621 2622 3055 3056 +3 2293 2578 2579 +3 2293 2578 2579 +3 2293 2578 2579 +3 2293 2578 2579 +3 2293 2578 2579 +3 2293 2578 2579 +3 2293 2362 2363 +3 2293 2362 2363 +3 2293 2362 2363 +3 2293 2362 2363 +3 2293 2362 2363 +3 2293 2362 2363 +4 2294 2295 2997 2998 +4 2294 2295 2997 2998 +4 2294 2295 2997 2998 +4 2294 2295 2997 2998 +4 2294 2295 2997 2998 +4 2294 2295 2997 2998 +8 2294 2295 2621 2622 2664 2665 2997 2998 +8 2294 2295 2621 2622 2664 2665 2997 2998 +8 2294 2295 2621 2622 2664 2665 2997 2998 +8 2294 2295 2621 2622 2664 2665 2997 2998 +8 2294 2295 2621 2622 2664 2665 2997 2998 +8 2294 2295 2621 2622 2664 2665 2997 2998 +3 2294 2621 2622 +3 2294 2621 2622 +3 2294 2621 2622 +3 2294 2621 2622 +3 2294 2621 2622 +3 2294 2621 2622 +3 2294 2405 2406 +3 2294 2405 2406 +3 2294 2405 2406 +3 2294 2405 2406 +3 2294 2405 2406 +3 2294 2405 2406 +4 2295 2296 2949 2950 +4 2295 2296 2949 2950 +4 2295 2296 2949 2950 +4 2295 2296 2949 2950 +4 2295 2296 2949 2950 +4 2295 2296 2949 2950 +8 2295 2296 2664 2665 2707 2708 2949 2950 +8 2295 2296 2664 2665 2707 2708 2949 2950 +8 2295 2296 2664 2665 2707 2708 2949 2950 +8 2295 2296 2664 2665 2707 2708 2949 2950 +8 2295 2296 2664 2665 2707 2708 2949 2950 +8 2295 2296 2664 2665 2707 2708 2949 2950 +3 2295 2664 2665 +3 2295 2664 2665 +3 2295 2664 2665 +3 2295 2664 2665 +3 2295 2664 2665 +3 2295 2664 2665 +3 2295 2448 2449 +3 2295 2448 2449 +3 2295 2448 2449 +3 2295 2448 2449 +3 2295 2448 2449 +3 2295 2448 2449 +4 2296 2297 2890 2892 +4 2296 2297 2890 2892 +4 2296 2297 2890 2892 +4 2296 2297 2890 2892 +4 2296 2297 2890 2892 +4 2296 2297 2890 2892 +8 2296 2297 2707 2708 2750 2751 2890 2892 +8 2296 2297 2707 2708 2750 2751 2890 2892 +8 2296 2297 2707 2708 2750 2751 2890 2892 +8 2296 2297 2707 2708 2750 2751 2890 2892 +8 2296 2297 2707 2708 2750 2751 2890 2892 +8 2296 2297 2707 2708 2750 2751 2890 2892 +3 2296 2707 2708 +3 2296 2707 2708 +3 2296 2707 2708 +3 2296 2707 2708 +3 2296 2707 2708 +3 2296 2707 2708 +3 2296 2491 2492 +3 2296 2491 2492 +3 2296 2491 2492 +3 2296 2491 2492 +3 2296 2491 2492 +3 2296 2491 2492 +8 2297 2298 2534 2535 2750 2751 2812 2813 +8 2297 2298 2534 2535 2750 2751 2812 2813 +8 2297 2298 2534 2535 2750 2751 2812 2813 +8 2297 2298 2534 2535 2750 2751 2812 2813 +8 2297 2298 2534 2535 2750 2751 2812 2813 +8 2297 2298 2534 2535 2750 2751 2812 2813 +3 2297 2750 2751 +3 2297 2750 2751 +3 2297 2750 2751 +3 2297 2750 2751 +3 2297 2750 2751 +3 2297 2750 2751 +4 2297 2298 2534 2535 +4 2297 2298 2534 2535 +4 2297 2298 2534 2535 +4 2297 2298 2534 2535 +4 2297 2298 2534 2535 +4 2297 2298 2534 2535 +3 2298 2812 2813 +3 2298 2812 2813 +3 2298 2812 2813 +3 2298 2812 2813 +3 2298 2812 2813 +3 2298 2812 2813 +3 2298 2891 2893 +3 2298 2891 2893 +3 2298 2891 2893 +3 2298 2891 2893 +3 2298 2891 2893 +3 2298 2891 2893 +4 2299 2300 3056 3058 +4 2299 2300 3056 3058 +4 2299 2300 3056 3058 +4 2299 2300 3056 3058 +4 2299 2300 3056 3058 +4 2299 2300 3056 3058 +8 2299 2300 2579 2580 2622 2623 3056 3058 +8 2299 2300 2579 2580 2622 2623 3056 3058 +8 2299 2300 2579 2580 2622 2623 3056 3058 +8 2299 2300 2579 2580 2622 2623 3056 3058 +8 2299 2300 2579 2580 2622 2623 3056 3058 +8 2299 2300 2579 2580 2622 2623 3056 3058 +3 2299 2579 2580 +3 2299 2579 2580 +3 2299 2579 2580 +3 2299 2579 2580 +3 2299 2579 2580 +3 2299 2579 2580 +5 2299 2579 2580 3114 3116 +5 2299 2579 2580 3114 3116 +5 2299 2579 2580 3114 3116 +5 2299 2579 2580 3114 3116 +5 2299 2579 2580 3114 3116 +5 2299 2579 2580 3114 3116 +3 2299 3114 3116 +3 2299 3114 3116 +3 2299 3114 3116 +3 2299 3114 3116 +3 2299 3114 3116 +3 2299 3114 3116 +3 2299 2363 2364 +3 2299 2363 2364 +3 2299 2363 2364 +3 2299 2363 2364 +3 2299 2363 2364 +3 2299 2363 2364 +4 2300 2301 2998 3000 +4 2300 2301 2998 3000 +4 2300 2301 2998 3000 +4 2300 2301 2998 3000 +4 2300 2301 2998 3000 +4 2300 2301 2998 3000 +8 2300 2301 2622 2623 2665 2666 2998 3000 +8 2300 2301 2622 2623 2665 2666 2998 3000 +8 2300 2301 2622 2623 2665 2666 2998 3000 +8 2300 2301 2622 2623 2665 2666 2998 3000 +8 2300 2301 2622 2623 2665 2666 2998 3000 +8 2300 2301 2622 2623 2665 2666 2998 3000 +3 2300 2622 2623 +3 2300 2622 2623 +3 2300 2622 2623 +3 2300 2622 2623 +3 2300 2622 2623 +3 2300 2622 2623 +3 2300 2406 2407 +3 2300 2406 2407 +3 2300 2406 2407 +3 2300 2406 2407 +3 2300 2406 2407 +3 2300 2406 2407 +4 2301 2302 2950 2952 +4 2301 2302 2950 2952 +4 2301 2302 2950 2952 +4 2301 2302 2950 2952 +4 2301 2302 2950 2952 +4 2301 2302 2950 2952 +8 2301 2302 2665 2666 2708 2709 2950 2952 +8 2301 2302 2665 2666 2708 2709 2950 2952 +8 2301 2302 2665 2666 2708 2709 2950 2952 +8 2301 2302 2665 2666 2708 2709 2950 2952 +8 2301 2302 2665 2666 2708 2709 2950 2952 +8 2301 2302 2665 2666 2708 2709 2950 2952 +3 2301 2665 2666 +3 2301 2665 2666 +3 2301 2665 2666 +3 2301 2665 2666 +3 2301 2665 2666 +3 2301 2665 2666 +3 2301 2449 2450 +3 2301 2449 2450 +3 2301 2449 2450 +3 2301 2449 2450 +3 2301 2449 2450 +3 2301 2449 2450 +4 2302 2303 2892 2894 +4 2302 2303 2892 2894 +4 2302 2303 2892 2894 +4 2302 2303 2892 2894 +4 2302 2303 2892 2894 +4 2302 2303 2892 2894 +8 2302 2303 2708 2709 2751 2752 2892 2894 +8 2302 2303 2708 2709 2751 2752 2892 2894 +8 2302 2303 2708 2709 2751 2752 2892 2894 +8 2302 2303 2708 2709 2751 2752 2892 2894 +8 2302 2303 2708 2709 2751 2752 2892 2894 +8 2302 2303 2708 2709 2751 2752 2892 2894 +3 2302 2708 2709 +3 2302 2708 2709 +3 2302 2708 2709 +3 2302 2708 2709 +3 2302 2708 2709 +3 2302 2708 2709 +3 2302 2492 2493 +3 2302 2492 2493 +3 2302 2492 2493 +3 2302 2492 2493 +3 2302 2492 2493 +3 2302 2492 2493 +8 2303 2304 2535 2536 2751 2752 2813 2814 +8 2303 2304 2535 2536 2751 2752 2813 2814 +8 2303 2304 2535 2536 2751 2752 2813 2814 +8 2303 2304 2535 2536 2751 2752 2813 2814 +8 2303 2304 2535 2536 2751 2752 2813 2814 +8 2303 2304 2535 2536 2751 2752 2813 2814 +3 2303 2751 2752 +3 2303 2751 2752 +3 2303 2751 2752 +3 2303 2751 2752 +3 2303 2751 2752 +3 2303 2751 2752 +4 2303 2304 2535 2536 +4 2303 2304 2535 2536 +4 2303 2304 2535 2536 +4 2303 2304 2535 2536 +4 2303 2304 2535 2536 +4 2303 2304 2535 2536 +3 2304 2813 2814 +3 2304 2813 2814 +3 2304 2813 2814 +3 2304 2813 2814 +3 2304 2813 2814 +3 2304 2813 2814 +3 2304 2893 2895 +3 2304 2893 2895 +3 2304 2893 2895 +3 2304 2893 2895 +3 2304 2893 2895 +3 2304 2893 2895 +10 2305 2306 2364 2365 2407 2408 3057 3058 3059 3060 +10 2305 2306 2364 2365 2407 2408 3057 3058 3059 3060 +10 2305 2306 2364 2365 2407 2408 3057 3058 3059 3060 +10 2305 2306 2364 2365 2407 2408 3057 3058 3059 3060 +10 2305 2306 2364 2365 2407 2408 3057 3058 3059 3060 +10 2305 2306 2364 2365 2407 2408 3057 3058 3059 3060 +4 2305 2306 3058 3059 +4 2305 2306 3058 3059 +4 2305 2306 3058 3059 +4 2305 2306 3058 3059 +4 2305 2306 3058 3059 +4 2305 2306 3058 3059 +8 2305 2306 2580 2581 2623 2624 3058 3059 +8 2305 2306 2580 2581 2623 2624 3058 3059 +8 2305 2306 2580 2581 2623 2624 3058 3059 +8 2305 2306 2580 2581 2623 2624 3058 3059 +8 2305 2306 2580 2581 2623 2624 3058 3059 +8 2305 2306 2580 2581 2623 2624 3058 3059 +3 2305 2580 2581 +3 2305 2580 2581 +3 2305 2580 2581 +3 2305 2580 2581 +3 2305 2580 2581 +3 2305 2580 2581 +5 2305 2580 2581 3116 3117 +5 2305 2580 2581 3116 3117 +5 2305 2580 2581 3116 3117 +5 2305 2580 2581 3116 3117 +5 2305 2580 2581 3116 3117 +5 2305 2580 2581 3116 3117 +3 2305 3116 3117 +3 2305 3116 3117 +3 2305 3116 3117 +3 2305 3116 3117 +3 2305 3116 3117 +3 2305 3116 3117 +3 2305 2364 2365 +3 2305 2364 2365 +3 2305 2364 2365 +3 2305 2364 2365 +3 2305 2364 2365 +3 2305 2364 2365 +10 2306 2307 2407 2408 2450 2451 2999 3000 3001 3002 +10 2306 2307 2407 2408 2450 2451 2999 3000 3001 3002 +10 2306 2307 2407 2408 2450 2451 2999 3000 3001 3002 +10 2306 2307 2407 2408 2450 2451 2999 3000 3001 3002 +10 2306 2307 2407 2408 2450 2451 2999 3000 3001 3002 +10 2306 2307 2407 2408 2450 2451 2999 3000 3001 3002 +4 2306 2307 3000 3001 +4 2306 2307 3000 3001 +4 2306 2307 3000 3001 +4 2306 2307 3000 3001 +4 2306 2307 3000 3001 +4 2306 2307 3000 3001 +8 2306 2307 2623 2624 2666 2667 3000 3001 +8 2306 2307 2623 2624 2666 2667 3000 3001 +8 2306 2307 2623 2624 2666 2667 3000 3001 +8 2306 2307 2623 2624 2666 2667 3000 3001 +8 2306 2307 2623 2624 2666 2667 3000 3001 +8 2306 2307 2623 2624 2666 2667 3000 3001 +3 2306 2623 2624 +3 2306 2623 2624 +3 2306 2623 2624 +3 2306 2623 2624 +3 2306 2623 2624 +3 2306 2623 2624 +3 2306 2407 2408 +3 2306 2407 2408 +3 2306 2407 2408 +3 2306 2407 2408 +3 2306 2407 2408 +3 2306 2407 2408 +10 2307 2308 2450 2451 2493 2494 2951 2952 2953 2954 +10 2307 2308 2450 2451 2493 2494 2951 2952 2953 2954 +10 2307 2308 2450 2451 2493 2494 2951 2952 2953 2954 +10 2307 2308 2450 2451 2493 2494 2951 2952 2953 2954 +10 2307 2308 2450 2451 2493 2494 2951 2952 2953 2954 +10 2307 2308 2450 2451 2493 2494 2951 2952 2953 2954 +4 2307 2308 2952 2953 +4 2307 2308 2952 2953 +4 2307 2308 2952 2953 +4 2307 2308 2952 2953 +4 2307 2308 2952 2953 +4 2307 2308 2952 2953 +8 2307 2308 2666 2667 2709 2710 2952 2953 +8 2307 2308 2666 2667 2709 2710 2952 2953 +8 2307 2308 2666 2667 2709 2710 2952 2953 +8 2307 2308 2666 2667 2709 2710 2952 2953 +8 2307 2308 2666 2667 2709 2710 2952 2953 +8 2307 2308 2666 2667 2709 2710 2952 2953 +3 2307 2666 2667 +3 2307 2666 2667 +3 2307 2666 2667 +3 2307 2666 2667 +3 2307 2666 2667 +3 2307 2666 2667 +3 2307 2450 2451 +3 2307 2450 2451 +3 2307 2450 2451 +3 2307 2450 2451 +3 2307 2450 2451 +3 2307 2450 2451 +4 2308 2309 2894 2896 +4 2308 2309 2894 2896 +4 2308 2309 2894 2896 +4 2308 2309 2894 2896 +4 2308 2309 2894 2896 +4 2308 2309 2894 2896 +8 2308 2309 2709 2710 2752 2753 2894 2896 +8 2308 2309 2709 2710 2752 2753 2894 2896 +8 2308 2309 2709 2710 2752 2753 2894 2896 +8 2308 2309 2709 2710 2752 2753 2894 2896 +8 2308 2309 2709 2710 2752 2753 2894 2896 +8 2308 2309 2709 2710 2752 2753 2894 2896 +3 2308 2709 2710 +3 2308 2709 2710 +3 2308 2709 2710 +3 2308 2709 2710 +3 2308 2709 2710 +3 2308 2709 2710 +3 2308 2493 2494 +3 2308 2493 2494 +3 2308 2493 2494 +3 2308 2493 2494 +3 2308 2493 2494 +3 2308 2493 2494 +8 2309 2310 2536 2537 2752 2753 2814 2815 +8 2309 2310 2536 2537 2752 2753 2814 2815 +8 2309 2310 2536 2537 2752 2753 2814 2815 +8 2309 2310 2536 2537 2752 2753 2814 2815 +8 2309 2310 2536 2537 2752 2753 2814 2815 +8 2309 2310 2536 2537 2752 2753 2814 2815 +3 2309 2752 2753 +3 2309 2752 2753 +3 2309 2752 2753 +3 2309 2752 2753 +3 2309 2752 2753 +3 2309 2752 2753 +4 2309 2310 2536 2537 +4 2309 2310 2536 2537 +4 2309 2310 2536 2537 +4 2309 2310 2536 2537 +4 2309 2310 2536 2537 +4 2309 2310 2536 2537 +3 2310 2814 2815 +3 2310 2814 2815 +3 2310 2814 2815 +3 2310 2814 2815 +3 2310 2814 2815 +3 2310 2814 2815 +3 2310 2895 2897 +3 2310 2895 2897 +3 2310 2895 2897 +3 2310 2895 2897 +3 2310 2895 2897 +3 2310 2895 2897 +10 2311 2312 2365 2366 2408 2409 3054 3057 3059 3061 +10 2311 2312 2365 2366 2408 2409 3054 3057 3059 3061 +10 2311 2312 2365 2366 2408 2409 3054 3057 3059 3061 +10 2311 2312 2365 2366 2408 2409 3054 3057 3059 3061 +10 2311 2312 2365 2366 2408 2409 3054 3057 3059 3061 +10 2311 2312 2365 2366 2408 2409 3054 3057 3059 3061 +4 2311 2312 3059 3061 +4 2311 2312 3059 3061 +4 2311 2312 3059 3061 +4 2311 2312 3059 3061 +4 2311 2312 3059 3061 +4 2311 2312 3059 3061 +8 2311 2312 2581 2582 2624 2625 3059 3061 +8 2311 2312 2581 2582 2624 2625 3059 3061 +8 2311 2312 2581 2582 2624 2625 3059 3061 +8 2311 2312 2581 2582 2624 2625 3059 3061 +8 2311 2312 2581 2582 2624 2625 3059 3061 +8 2311 2312 2581 2582 2624 2625 3059 3061 +3 2311 2581 2582 +3 2311 2581 2582 +3 2311 2581 2582 +3 2311 2581 2582 +3 2311 2581 2582 +3 2311 2581 2582 +5 2311 2581 2582 3117 3119 +5 2311 2581 2582 3117 3119 +5 2311 2581 2582 3117 3119 +5 2311 2581 2582 3117 3119 +5 2311 2581 2582 3117 3119 +5 2311 2581 2582 3117 3119 +3 2311 3117 3119 +3 2311 3117 3119 +3 2311 3117 3119 +3 2311 3117 3119 +3 2311 3117 3119 +3 2311 3117 3119 +3 2311 2365 2366 +3 2311 2365 2366 +3 2311 2365 2366 +3 2311 2365 2366 +3 2311 2365 2366 +3 2311 2365 2366 +10 2312 2313 2408 2409 2451 2452 2996 2999 3001 3003 +10 2312 2313 2408 2409 2451 2452 2996 2999 3001 3003 +10 2312 2313 2408 2409 2451 2452 2996 2999 3001 3003 +10 2312 2313 2408 2409 2451 2452 2996 2999 3001 3003 +10 2312 2313 2408 2409 2451 2452 2996 2999 3001 3003 +10 2312 2313 2408 2409 2451 2452 2996 2999 3001 3003 +4 2312 2313 3001 3003 +4 2312 2313 3001 3003 +4 2312 2313 3001 3003 +4 2312 2313 3001 3003 +4 2312 2313 3001 3003 +4 2312 2313 3001 3003 +8 2312 2313 2624 2625 2667 2668 3001 3003 +8 2312 2313 2624 2625 2667 2668 3001 3003 +8 2312 2313 2624 2625 2667 2668 3001 3003 +8 2312 2313 2624 2625 2667 2668 3001 3003 +8 2312 2313 2624 2625 2667 2668 3001 3003 +8 2312 2313 2624 2625 2667 2668 3001 3003 +3 2312 2624 2625 +3 2312 2624 2625 +3 2312 2624 2625 +3 2312 2624 2625 +3 2312 2624 2625 +3 2312 2624 2625 +3 2312 2408 2409 +3 2312 2408 2409 +3 2312 2408 2409 +3 2312 2408 2409 +3 2312 2408 2409 +3 2312 2408 2409 +10 2313 2314 2451 2452 2494 2495 2948 2951 2953 2955 +10 2313 2314 2451 2452 2494 2495 2948 2951 2953 2955 +10 2313 2314 2451 2452 2494 2495 2948 2951 2953 2955 +10 2313 2314 2451 2452 2494 2495 2948 2951 2953 2955 +10 2313 2314 2451 2452 2494 2495 2948 2951 2953 2955 +10 2313 2314 2451 2452 2494 2495 2948 2951 2953 2955 +4 2313 2314 2953 2955 +4 2313 2314 2953 2955 +4 2313 2314 2953 2955 +4 2313 2314 2953 2955 +4 2313 2314 2953 2955 +4 2313 2314 2953 2955 +8 2313 2314 2667 2668 2710 2711 2953 2955 +8 2313 2314 2667 2668 2710 2711 2953 2955 +8 2313 2314 2667 2668 2710 2711 2953 2955 +8 2313 2314 2667 2668 2710 2711 2953 2955 +8 2313 2314 2667 2668 2710 2711 2953 2955 +8 2313 2314 2667 2668 2710 2711 2953 2955 +3 2313 2667 2668 +3 2313 2667 2668 +3 2313 2667 2668 +3 2313 2667 2668 +3 2313 2667 2668 +3 2313 2667 2668 +3 2313 2451 2452 +3 2313 2451 2452 +3 2313 2451 2452 +3 2313 2451 2452 +3 2313 2451 2452 +3 2313 2451 2452 +4 2314 2315 2896 2898 +4 2314 2315 2896 2898 +4 2314 2315 2896 2898 +4 2314 2315 2896 2898 +4 2314 2315 2896 2898 +4 2314 2315 2896 2898 +8 2314 2315 2710 2711 2753 2754 2896 2898 +8 2314 2315 2710 2711 2753 2754 2896 2898 +8 2314 2315 2710 2711 2753 2754 2896 2898 +8 2314 2315 2710 2711 2753 2754 2896 2898 +8 2314 2315 2710 2711 2753 2754 2896 2898 +8 2314 2315 2710 2711 2753 2754 2896 2898 +3 2314 2710 2711 +3 2314 2710 2711 +3 2314 2710 2711 +3 2314 2710 2711 +3 2314 2710 2711 +3 2314 2710 2711 +3 2314 2494 2495 +3 2314 2494 2495 +3 2314 2494 2495 +3 2314 2494 2495 +3 2314 2494 2495 +3 2314 2494 2495 +8 2315 2316 2537 2538 2753 2754 2815 2816 +8 2315 2316 2537 2538 2753 2754 2815 2816 +8 2315 2316 2537 2538 2753 2754 2815 2816 +8 2315 2316 2537 2538 2753 2754 2815 2816 +8 2315 2316 2537 2538 2753 2754 2815 2816 +8 2315 2316 2537 2538 2753 2754 2815 2816 +3 2315 2753 2754 +3 2315 2753 2754 +3 2315 2753 2754 +3 2315 2753 2754 +3 2315 2753 2754 +3 2315 2753 2754 +4 2315 2316 2537 2538 +4 2315 2316 2537 2538 +4 2315 2316 2537 2538 +4 2315 2316 2537 2538 +4 2315 2316 2537 2538 +4 2315 2316 2537 2538 +3 2316 2815 2816 +3 2316 2815 2816 +3 2316 2815 2816 +3 2316 2815 2816 +3 2316 2815 2816 +3 2316 2815 2816 +3 2316 2897 2899 +3 2316 2897 2899 +3 2316 2897 2899 +3 2316 2897 2899 +3 2316 2897 2899 +3 2316 2897 2899 +11 2317 2318 2319 2366 2367 2409 2410 3052 3054 3061 3062 +11 2317 2318 2319 2366 2367 2409 2410 3052 3054 3061 3062 +11 2317 2318 2319 2366 2367 2409 2410 3052 3054 3061 3062 +11 2317 2318 2319 2366 2367 2409 2410 3052 3054 3061 3062 +11 2317 2318 2319 2366 2367 2409 2410 3052 3054 3061 3062 +11 2317 2318 2319 2366 2367 2409 2410 3052 3054 3061 3062 +4 2317 2319 3061 3062 +4 2317 2319 3061 3062 +4 2317 2319 3061 3062 +4 2317 2319 3061 3062 +4 2317 2319 3061 3062 +4 2317 2319 3061 3062 +8 2317 2319 2582 2583 2625 2626 3061 3062 +8 2317 2319 2582 2583 2625 2626 3061 3062 +8 2317 2319 2582 2583 2625 2626 3061 3062 +8 2317 2319 2582 2583 2625 2626 3061 3062 +8 2317 2319 2582 2583 2625 2626 3061 3062 +8 2317 2319 2582 2583 2625 2626 3061 3062 +3 2317 2582 2583 +3 2317 2582 2583 +3 2317 2582 2583 +3 2317 2582 2583 +3 2317 2582 2583 +3 2317 2582 2583 +5 2317 2582 2583 3119 3120 +5 2317 2582 2583 3119 3120 +5 2317 2582 2583 3119 3120 +5 2317 2582 2583 3119 3120 +5 2317 2582 2583 3119 3120 +5 2317 2582 2583 3119 3120 +3 2317 3119 3120 +3 2317 3119 3120 +3 2317 3119 3120 +3 2317 3119 3120 +3 2317 3119 3120 +3 2317 3119 3120 +4 2317 2318 2366 2367 +4 2317 2318 2366 2367 +4 2317 2318 2366 2367 +4 2317 2318 2366 2367 +4 2317 2318 2366 2367 +4 2317 2318 2366 2367 +2 2318 3052 +2 2318 3052 +2 2318 3052 +2 2318 3052 +2 2318 3052 +2 2318 3052 +10 2319 2320 2409 2410 2452 2453 2994 2996 3003 3004 +10 2319 2320 2409 2410 2452 2453 2994 2996 3003 3004 +10 2319 2320 2409 2410 2452 2453 2994 2996 3003 3004 +10 2319 2320 2409 2410 2452 2453 2994 2996 3003 3004 +10 2319 2320 2409 2410 2452 2453 2994 2996 3003 3004 +10 2319 2320 2409 2410 2452 2453 2994 2996 3003 3004 +4 2319 2320 3003 3004 +4 2319 2320 3003 3004 +4 2319 2320 3003 3004 +4 2319 2320 3003 3004 +4 2319 2320 3003 3004 +4 2319 2320 3003 3004 +8 2319 2320 2625 2626 2668 2669 3003 3004 +8 2319 2320 2625 2626 2668 2669 3003 3004 +8 2319 2320 2625 2626 2668 2669 3003 3004 +8 2319 2320 2625 2626 2668 2669 3003 3004 +8 2319 2320 2625 2626 2668 2669 3003 3004 +8 2319 2320 2625 2626 2668 2669 3003 3004 +3 2319 2625 2626 +3 2319 2625 2626 +3 2319 2625 2626 +3 2319 2625 2626 +3 2319 2625 2626 +3 2319 2625 2626 +3 2319 2409 2410 +3 2319 2409 2410 +3 2319 2409 2410 +3 2319 2409 2410 +3 2319 2409 2410 +3 2319 2409 2410 +11 2320 2321 2322 2452 2453 2495 2496 2759 2946 2948 2955 +11 2320 2321 2322 2452 2453 2495 2496 2759 2946 2948 2955 +11 2320 2321 2322 2452 2453 2495 2496 2759 2946 2948 2955 +11 2320 2321 2322 2452 2453 2495 2496 2759 2946 2948 2955 +11 2320 2321 2322 2452 2453 2495 2496 2759 2946 2948 2955 +11 2320 2321 2322 2452 2453 2495 2496 2759 2946 2948 2955 +4 2320 2321 2759 2955 +4 2320 2321 2759 2955 +4 2320 2321 2759 2955 +4 2320 2321 2759 2955 +4 2320 2321 2759 2955 +4 2320 2321 2759 2955 +8 2320 2321 2668 2669 2711 2712 2759 2955 +8 2320 2321 2668 2669 2711 2712 2759 2955 +8 2320 2321 2668 2669 2711 2712 2759 2955 +8 2320 2321 2668 2669 2711 2712 2759 2955 +8 2320 2321 2668 2669 2711 2712 2759 2955 +8 2320 2321 2668 2669 2711 2712 2759 2955 +3 2320 2668 2669 +3 2320 2668 2669 +3 2320 2668 2669 +3 2320 2668 2669 +3 2320 2668 2669 +3 2320 2668 2669 +3 2320 2452 2453 +3 2320 2452 2453 +3 2320 2452 2453 +3 2320 2452 2453 +3 2320 2452 2453 +3 2320 2452 2453 +12 2321 2322 2323 2324 2495 2496 2538 2539 2760 2761 2898 2899 +12 2321 2322 2323 2324 2495 2496 2538 2539 2760 2761 2898 2899 +12 2321 2322 2323 2324 2495 2496 2538 2539 2760 2761 2898 2899 +12 2321 2322 2323 2324 2495 2496 2538 2539 2760 2761 2898 2899 +12 2321 2322 2323 2324 2495 2496 2538 2539 2760 2761 2898 2899 +12 2321 2322 2323 2324 2495 2496 2538 2539 2760 2761 2898 2899 +4 2321 2323 2760 2898 +4 2321 2323 2760 2898 +4 2321 2323 2760 2898 +4 2321 2323 2760 2898 +4 2321 2323 2760 2898 +4 2321 2323 2760 2898 +8 2321 2323 2711 2712 2754 2755 2760 2898 +8 2321 2323 2711 2712 2754 2755 2760 2898 +8 2321 2323 2711 2712 2754 2755 2760 2898 +8 2321 2323 2711 2712 2754 2755 2760 2898 +8 2321 2323 2711 2712 2754 2755 2760 2898 +8 2321 2323 2711 2712 2754 2755 2760 2898 +3 2321 2711 2712 +3 2321 2711 2712 +3 2321 2711 2712 +3 2321 2711 2712 +3 2321 2711 2712 +3 2321 2711 2712 +4 2321 2322 2495 2496 +4 2321 2322 2495 2496 +4 2321 2322 2495 2496 +4 2321 2322 2495 2496 +4 2321 2322 2495 2496 +4 2321 2322 2495 2496 +4 2322 2324 2761 2899 +4 2322 2324 2761 2899 +4 2322 2324 2761 2899 +4 2322 2324 2761 2899 +4 2322 2324 2761 2899 +4 2322 2324 2761 2899 +2 2322 2946 +2 2322 2946 +2 2322 2946 +2 2322 2946 +2 2322 2946 +2 2322 2946 +8 2323 2324 2538 2539 2754 2755 2816 2817 +8 2323 2324 2538 2539 2754 2755 2816 2817 +8 2323 2324 2538 2539 2754 2755 2816 2817 +8 2323 2324 2538 2539 2754 2755 2816 2817 +8 2323 2324 2538 2539 2754 2755 2816 2817 +8 2323 2324 2538 2539 2754 2755 2816 2817 +3 2323 2754 2755 +3 2323 2754 2755 +3 2323 2754 2755 +3 2323 2754 2755 +3 2323 2754 2755 +3 2323 2754 2755 +4 2323 2324 2538 2539 +4 2323 2324 2538 2539 +4 2323 2324 2538 2539 +4 2323 2324 2538 2539 +4 2323 2324 2538 2539 +4 2323 2324 2538 2539 +3 2324 2816 2817 +3 2324 2816 2817 +3 2324 2816 2817 +3 2324 2816 2817 +3 2324 2816 2817 +3 2324 2816 2817 +3 2325 2368 3005 +3 2325 2368 3005 +3 2325 2368 3005 +3 2325 2368 3005 +3 2325 2368 3005 +3 2325 2368 3005 +11 2325 2368 3005 3310 3311 3312 3313 3325 3329 3407 3411 +11 2325 2368 3005 3310 3311 3312 3313 3325 3329 3407 3411 +11 2325 2368 3005 3310 3311 3312 3313 3325 3329 3407 3411 +11 2325 2368 3005 3310 3311 3312 3313 3325 3329 3407 3411 +11 2325 2368 3005 3310 3311 3312 3313 3325 3329 3407 3411 +11 2325 2368 3005 3310 3311 3312 3313 3325 3329 3407 3411 +4 2325 3310 3311 3325 +4 2325 3310 3311 3325 +4 2325 3310 3311 3325 +4 2325 3310 3311 3325 +4 2325 3310 3311 3325 +4 2325 3310 3311 3325 +3 2326 2369 3006 +3 2326 2369 3006 +3 2326 2369 3006 +3 2326 2369 3006 +3 2326 2369 3006 +3 2326 2369 3006 +4 2327 2370 3007 3008 +4 2327 2370 3007 3008 +4 2327 2370 3007 3008 +4 2327 2370 3007 3008 +4 2327 2370 3007 3008 +4 2327 2370 3007 3008 +3 2328 2371 3009 +3 2328 2371 3009 +3 2328 2371 3009 +3 2328 2371 3009 +3 2328 2371 3009 +3 2328 2371 3009 +3 2329 2372 3010 +3 2329 2372 3010 +3 2329 2372 3010 +3 2329 2372 3010 +3 2329 2372 3010 +3 2329 2372 3010 +4 2330 2373 3011 3012 +4 2330 2373 3011 3012 +4 2330 2373 3011 3012 +4 2330 2373 3011 3012 +4 2330 2373 3011 3012 +4 2330 2373 3011 3012 +3 2331 2374 3013 +3 2331 2374 3013 +3 2331 2374 3013 +3 2331 2374 3013 +3 2331 2374 3013 +3 2331 2374 3013 +3 2332 2375 3014 +3 2332 2375 3014 +3 2332 2375 3014 +3 2332 2375 3014 +3 2332 2375 3014 +3 2332 2375 3014 +4 2333 2376 3015 3016 +4 2333 2376 3015 3016 +4 2333 2376 3015 3016 +4 2333 2376 3015 3016 +4 2333 2376 3015 3016 +4 2333 2376 3015 3016 +3 2334 2377 3017 +3 2334 2377 3017 +3 2334 2377 3017 +3 2334 2377 3017 +3 2334 2377 3017 +3 2334 2377 3017 +3 2335 2378 3018 +3 2335 2378 3018 +3 2335 2378 3018 +3 2335 2378 3018 +3 2335 2378 3018 +3 2335 2378 3018 +4 2336 2379 3019 3020 +4 2336 2379 3019 3020 +4 2336 2379 3019 3020 +4 2336 2379 3019 3020 +4 2336 2379 3019 3020 +4 2336 2379 3019 3020 +3 2337 2380 3021 +3 2337 2380 3021 +3 2337 2380 3021 +3 2337 2380 3021 +3 2337 2380 3021 +3 2337 2380 3021 +3 2338 2381 3022 +3 2338 2381 3022 +3 2338 2381 3022 +3 2338 2381 3022 +3 2338 2381 3022 +3 2338 2381 3022 +4 2339 2382 3023 3024 +4 2339 2382 3023 3024 +4 2339 2382 3023 3024 +4 2339 2382 3023 3024 +4 2339 2382 3023 3024 +4 2339 2382 3023 3024 +3 2340 2383 3025 +3 2340 2383 3025 +3 2340 2383 3025 +3 2340 2383 3025 +3 2340 2383 3025 +3 2340 2383 3025 +3 2341 2384 3026 +3 2341 2384 3026 +3 2341 2384 3026 +3 2341 2384 3026 +3 2341 2384 3026 +3 2341 2384 3026 +4 2342 2385 3027 3028 +4 2342 2385 3027 3028 +4 2342 2385 3027 3028 +4 2342 2385 3027 3028 +4 2342 2385 3027 3028 +4 2342 2385 3027 3028 +3 2343 2386 3029 +3 2343 2386 3029 +3 2343 2386 3029 +3 2343 2386 3029 +3 2343 2386 3029 +3 2343 2386 3029 +3 2344 2387 3030 +3 2344 2387 3030 +3 2344 2387 3030 +3 2344 2387 3030 +3 2344 2387 3030 +3 2344 2387 3030 +4 2345 2388 3031 3032 +4 2345 2388 3031 3032 +4 2345 2388 3031 3032 +4 2345 2388 3031 3032 +4 2345 2388 3031 3032 +4 2345 2388 3031 3032 +3 2346 2389 3033 +3 2346 2389 3033 +3 2346 2389 3033 +3 2346 2389 3033 +3 2346 2389 3033 +3 2346 2389 3033 +3 2347 2390 3034 +3 2347 2390 3034 +3 2347 2390 3034 +3 2347 2390 3034 +3 2347 2390 3034 +3 2347 2390 3034 +4 2348 2391 3035 3036 +4 2348 2391 3035 3036 +4 2348 2391 3035 3036 +4 2348 2391 3035 3036 +4 2348 2391 3035 3036 +4 2348 2391 3035 3036 +3 2349 2392 3037 +3 2349 2392 3037 +3 2349 2392 3037 +3 2349 2392 3037 +3 2349 2392 3037 +3 2349 2392 3037 +3 2350 2393 3038 +3 2350 2393 3038 +3 2350 2393 3038 +3 2350 2393 3038 +3 2350 2393 3038 +3 2350 2393 3038 +4 2351 2394 3039 3040 +4 2351 2394 3039 3040 +4 2351 2394 3039 3040 +4 2351 2394 3039 3040 +4 2351 2394 3039 3040 +4 2351 2394 3039 3040 +3 2352 2395 3041 +3 2352 2395 3041 +3 2352 2395 3041 +3 2352 2395 3041 +3 2352 2395 3041 +3 2352 2395 3041 +3 2353 2396 3042 +3 2353 2396 3042 +3 2353 2396 3042 +3 2353 2396 3042 +3 2353 2396 3042 +3 2353 2396 3042 +4 2354 2397 3043 3044 +4 2354 2397 3043 3044 +4 2354 2397 3043 3044 +4 2354 2397 3043 3044 +4 2354 2397 3043 3044 +4 2354 2397 3043 3044 +3 2355 2398 3045 +3 2355 2398 3045 +3 2355 2398 3045 +3 2355 2398 3045 +3 2355 2398 3045 +3 2355 2398 3045 +3 2356 2399 3046 +3 2356 2399 3046 +3 2356 2399 3046 +3 2356 2399 3046 +3 2356 2399 3046 +3 2356 2399 3046 +4 2357 2400 3047 3048 +4 2357 2400 3047 3048 +4 2357 2400 3047 3048 +4 2357 2400 3047 3048 +4 2357 2400 3047 3048 +4 2357 2400 3047 3048 +3 2358 2401 3049 +3 2358 2401 3049 +3 2358 2401 3049 +3 2358 2401 3049 +3 2358 2401 3049 +3 2358 2401 3049 +3 2359 2402 3050 +3 2359 2402 3050 +3 2359 2402 3050 +3 2359 2402 3050 +3 2359 2402 3050 +3 2359 2402 3050 +4 2364 2407 3058 3060 +4 2364 2407 3058 3060 +4 2364 2407 3058 3060 +4 2364 2407 3058 3060 +4 2364 2407 3058 3060 +4 2364 2407 3058 3060 +4 2365 2408 3057 3059 +4 2365 2408 3057 3059 +4 2365 2408 3057 3059 +4 2365 2408 3057 3059 +4 2365 2408 3057 3059 +4 2365 2408 3057 3059 +4 2366 2409 3054 3061 +4 2366 2409 3054 3061 +4 2366 2409 3054 3061 +4 2366 2409 3054 3061 +4 2366 2409 3054 3061 +4 2366 2409 3054 3061 +8 2367 2410 3062 3130 3131 3164 3170 3234 +8 2367 2410 3062 3130 3131 3164 3170 3234 +8 2367 2410 3062 3130 3131 3164 3170 3234 +8 2367 2410 3062 3130 3131 3164 3170 3234 +8 2367 2410 3062 3130 3131 3164 3170 3234 +8 2367 2410 3062 3130 3131 3164 3170 3234 +3 2367 2410 3062 +3 2367 2410 3062 +3 2367 2410 3062 +3 2367 2410 3062 +3 2367 2410 3062 +3 2367 2410 3062 +3 2367 3130 3164 +3 2367 3130 3164 +3 2367 3130 3164 +3 2367 3130 3164 +3 2367 3130 3164 +3 2367 3130 3164 +3 2368 2411 2956 +3 2368 2411 2956 +3 2368 2411 2956 +3 2368 2411 2956 +3 2368 2411 2956 +3 2368 2411 2956 +11 2368 2411 2956 3312 3313 3314 3315 3329 3333 3396 3400 +11 2368 2411 2956 3312 3313 3314 3315 3329 3333 3396 3400 +11 2368 2411 2956 3312 3313 3314 3315 3329 3333 3396 3400 +11 2368 2411 2956 3312 3313 3314 3315 3329 3333 3396 3400 +11 2368 2411 2956 3312 3313 3314 3315 3329 3333 3396 3400 +11 2368 2411 2956 3312 3313 3314 3315 3329 3333 3396 3400 +4 2368 3312 3313 3329 +4 2368 3312 3313 3329 +4 2368 3312 3313 3329 +4 2368 3312 3313 3329 +4 2368 3312 3313 3329 +4 2368 3312 3313 3329 +3 2369 2412 2957 +3 2369 2412 2957 +3 2369 2412 2957 +3 2369 2412 2957 +3 2369 2412 2957 +3 2369 2412 2957 +4 2370 2413 2958 2959 +4 2370 2413 2958 2959 +4 2370 2413 2958 2959 +4 2370 2413 2958 2959 +4 2370 2413 2958 2959 +4 2370 2413 2958 2959 +3 2371 2414 2960 +3 2371 2414 2960 +3 2371 2414 2960 +3 2371 2414 2960 +3 2371 2414 2960 +3 2371 2414 2960 +3 2372 2415 2961 +3 2372 2415 2961 +3 2372 2415 2961 +3 2372 2415 2961 +3 2372 2415 2961 +3 2372 2415 2961 +3 2373 2416 2962 +3 2373 2416 2962 +3 2373 2416 2962 +3 2373 2416 2962 +3 2373 2416 2962 +3 2373 2416 2962 +3 2374 2417 2963 +3 2374 2417 2963 +3 2374 2417 2963 +3 2374 2417 2963 +3 2374 2417 2963 +3 2374 2417 2963 +3 2375 2418 2964 +3 2375 2418 2964 +3 2375 2418 2964 +3 2375 2418 2964 +3 2375 2418 2964 +3 2375 2418 2964 +3 2376 2419 2965 +3 2376 2419 2965 +3 2376 2419 2965 +3 2376 2419 2965 +3 2376 2419 2965 +3 2376 2419 2965 +3 2377 2420 2966 +3 2377 2420 2966 +3 2377 2420 2966 +3 2377 2420 2966 +3 2377 2420 2966 +3 2377 2420 2966 +3 2378 2421 2967 +3 2378 2421 2967 +3 2378 2421 2967 +3 2378 2421 2967 +3 2378 2421 2967 +3 2378 2421 2967 +3 2379 2422 2968 +3 2379 2422 2968 +3 2379 2422 2968 +3 2379 2422 2968 +3 2379 2422 2968 +3 2379 2422 2968 +3 2380 2423 2969 +3 2380 2423 2969 +3 2380 2423 2969 +3 2380 2423 2969 +3 2380 2423 2969 +3 2380 2423 2969 +3 2381 2424 2970 +3 2381 2424 2970 +3 2381 2424 2970 +3 2381 2424 2970 +3 2381 2424 2970 +3 2381 2424 2970 +3 2382 2425 2971 +3 2382 2425 2971 +3 2382 2425 2971 +3 2382 2425 2971 +3 2382 2425 2971 +3 2382 2425 2971 +3 2383 2426 2972 +3 2383 2426 2972 +3 2383 2426 2972 +3 2383 2426 2972 +3 2383 2426 2972 +3 2383 2426 2972 +3 2384 2427 2973 +3 2384 2427 2973 +3 2384 2427 2973 +3 2384 2427 2973 +3 2384 2427 2973 +3 2384 2427 2973 +3 2385 2428 2974 +3 2385 2428 2974 +3 2385 2428 2974 +3 2385 2428 2974 +3 2385 2428 2974 +3 2385 2428 2974 +3 2386 2429 2975 +3 2386 2429 2975 +3 2386 2429 2975 +3 2386 2429 2975 +3 2386 2429 2975 +3 2386 2429 2975 +3 2387 2430 2976 +3 2387 2430 2976 +3 2387 2430 2976 +3 2387 2430 2976 +3 2387 2430 2976 +3 2387 2430 2976 +3 2388 2431 2977 +3 2388 2431 2977 +3 2388 2431 2977 +3 2388 2431 2977 +3 2388 2431 2977 +3 2388 2431 2977 +3 2389 2432 2978 +3 2389 2432 2978 +3 2389 2432 2978 +3 2389 2432 2978 +3 2389 2432 2978 +3 2389 2432 2978 +3 2390 2433 2979 +3 2390 2433 2979 +3 2390 2433 2979 +3 2390 2433 2979 +3 2390 2433 2979 +3 2390 2433 2979 +3 2391 2434 2980 +3 2391 2434 2980 +3 2391 2434 2980 +3 2391 2434 2980 +3 2391 2434 2980 +3 2391 2434 2980 +3 2392 2435 2981 +3 2392 2435 2981 +3 2392 2435 2981 +3 2392 2435 2981 +3 2392 2435 2981 +3 2392 2435 2981 +3 2393 2436 2982 +3 2393 2436 2982 +3 2393 2436 2982 +3 2393 2436 2982 +3 2393 2436 2982 +3 2393 2436 2982 +3 2394 2437 2983 +3 2394 2437 2983 +3 2394 2437 2983 +3 2394 2437 2983 +3 2394 2437 2983 +3 2394 2437 2983 +3 2395 2438 2984 +3 2395 2438 2984 +3 2395 2438 2984 +3 2395 2438 2984 +3 2395 2438 2984 +3 2395 2438 2984 +3 2396 2439 2985 +3 2396 2439 2985 +3 2396 2439 2985 +3 2396 2439 2985 +3 2396 2439 2985 +3 2396 2439 2985 +4 2397 2440 2986 2987 +4 2397 2440 2986 2987 +4 2397 2440 2986 2987 +4 2397 2440 2986 2987 +4 2397 2440 2986 2987 +4 2397 2440 2986 2987 +3 2398 2441 2988 +3 2398 2441 2988 +3 2398 2441 2988 +3 2398 2441 2988 +3 2398 2441 2988 +3 2398 2441 2988 +3 2399 2442 2989 +3 2399 2442 2989 +3 2399 2442 2989 +3 2399 2442 2989 +3 2399 2442 2989 +3 2399 2442 2989 +3 2400 2443 2990 +3 2400 2443 2990 +3 2400 2443 2990 +3 2400 2443 2990 +3 2400 2443 2990 +3 2400 2443 2990 +3 2401 2444 2991 +3 2401 2444 2991 +3 2401 2444 2991 +3 2401 2444 2991 +3 2401 2444 2991 +3 2401 2444 2991 +3 2402 2445 2992 +3 2402 2445 2992 +3 2402 2445 2992 +3 2402 2445 2992 +3 2402 2445 2992 +3 2402 2445 2992 +4 2407 2450 3000 3002 +4 2407 2450 3000 3002 +4 2407 2450 3000 3002 +4 2407 2450 3000 3002 +4 2407 2450 3000 3002 +4 2407 2450 3000 3002 +4 2408 2451 2999 3001 +4 2408 2451 2999 3001 +4 2408 2451 2999 3001 +4 2408 2451 2999 3001 +4 2408 2451 2999 3001 +4 2408 2451 2999 3001 +4 2409 2452 2996 3003 +4 2409 2452 2996 3003 +4 2409 2452 2996 3003 +4 2409 2452 2996 3003 +4 2409 2452 2996 3003 +4 2409 2452 2996 3003 +8 2410 2453 3004 3131 3132 3170 3176 3225 +8 2410 2453 3004 3131 3132 3170 3176 3225 +8 2410 2453 3004 3131 3132 3170 3176 3225 +8 2410 2453 3004 3131 3132 3170 3176 3225 +8 2410 2453 3004 3131 3132 3170 3176 3225 +8 2410 2453 3004 3131 3132 3170 3176 3225 +3 2410 2453 3004 +3 2410 2453 3004 +3 2410 2453 3004 +3 2410 2453 3004 +3 2410 2453 3004 +3 2410 2453 3004 +3 2410 3131 3170 +3 2410 3131 3170 +3 2410 3131 3170 +3 2410 3131 3170 +3 2410 3131 3170 +3 2410 3131 3170 +3 2411 2454 2756 +3 2411 2454 2756 +3 2411 2454 2756 +3 2411 2454 2756 +3 2411 2454 2756 +3 2411 2454 2756 +12 2411 2454 2627 2670 2756 3314 3315 3316 3333 3358 3364 3391 +12 2411 2454 2627 2670 2756 3314 3315 3316 3333 3358 3364 3391 +12 2411 2454 2627 2670 2756 3314 3315 3316 3333 3358 3364 3391 +12 2411 2454 2627 2670 2756 3314 3315 3316 3333 3358 3364 3391 +12 2411 2454 2627 2670 2756 3314 3315 3316 3333 3358 3364 3391 +12 2411 2454 2627 2670 2756 3314 3315 3316 3333 3358 3364 3391 +4 2411 3314 3315 3333 +4 2411 3314 3315 3333 +4 2411 3314 3315 3333 +4 2411 3314 3315 3333 +4 2411 3314 3315 3333 +4 2411 3314 3315 3333 +3 2412 2455 2900 +3 2412 2455 2900 +3 2412 2455 2900 +3 2412 2455 2900 +3 2412 2455 2900 +3 2412 2455 2900 +4 2413 2456 2901 2902 +4 2413 2456 2901 2902 +4 2413 2456 2901 2902 +4 2413 2456 2901 2902 +4 2413 2456 2901 2902 +4 2413 2456 2901 2902 +3 2414 2457 2903 +3 2414 2457 2903 +3 2414 2457 2903 +3 2414 2457 2903 +3 2414 2457 2903 +3 2414 2457 2903 +3 2415 2458 2904 +3 2415 2458 2904 +3 2415 2458 2904 +3 2415 2458 2904 +3 2415 2458 2904 +3 2415 2458 2904 +4 2416 2459 2905 2906 +4 2416 2459 2905 2906 +4 2416 2459 2905 2906 +4 2416 2459 2905 2906 +4 2416 2459 2905 2906 +4 2416 2459 2905 2906 +3 2417 2460 2907 +3 2417 2460 2907 +3 2417 2460 2907 +3 2417 2460 2907 +3 2417 2460 2907 +3 2417 2460 2907 +3 2418 2461 2908 +3 2418 2461 2908 +3 2418 2461 2908 +3 2418 2461 2908 +3 2418 2461 2908 +3 2418 2461 2908 +4 2419 2462 2909 2910 +4 2419 2462 2909 2910 +4 2419 2462 2909 2910 +4 2419 2462 2909 2910 +4 2419 2462 2909 2910 +4 2419 2462 2909 2910 +3 2420 2463 2911 +3 2420 2463 2911 +3 2420 2463 2911 +3 2420 2463 2911 +3 2420 2463 2911 +3 2420 2463 2911 +3 2421 2464 2912 +3 2421 2464 2912 +3 2421 2464 2912 +3 2421 2464 2912 +3 2421 2464 2912 +3 2421 2464 2912 +4 2422 2465 2913 2914 +4 2422 2465 2913 2914 +4 2422 2465 2913 2914 +4 2422 2465 2913 2914 +4 2422 2465 2913 2914 +4 2422 2465 2913 2914 +3 2423 2466 2915 +3 2423 2466 2915 +3 2423 2466 2915 +3 2423 2466 2915 +3 2423 2466 2915 +3 2423 2466 2915 +3 2424 2467 2916 +3 2424 2467 2916 +3 2424 2467 2916 +3 2424 2467 2916 +3 2424 2467 2916 +3 2424 2467 2916 +4 2425 2468 2917 2918 +4 2425 2468 2917 2918 +4 2425 2468 2917 2918 +4 2425 2468 2917 2918 +4 2425 2468 2917 2918 +4 2425 2468 2917 2918 +3 2426 2469 2919 +3 2426 2469 2919 +3 2426 2469 2919 +3 2426 2469 2919 +3 2426 2469 2919 +3 2426 2469 2919 +3 2427 2470 2920 +3 2427 2470 2920 +3 2427 2470 2920 +3 2427 2470 2920 +3 2427 2470 2920 +3 2427 2470 2920 +4 2428 2471 2921 2922 +4 2428 2471 2921 2922 +4 2428 2471 2921 2922 +4 2428 2471 2921 2922 +4 2428 2471 2921 2922 +4 2428 2471 2921 2922 +3 2429 2472 2923 +3 2429 2472 2923 +3 2429 2472 2923 +3 2429 2472 2923 +3 2429 2472 2923 +3 2429 2472 2923 +3 2430 2473 2924 +3 2430 2473 2924 +3 2430 2473 2924 +3 2430 2473 2924 +3 2430 2473 2924 +3 2430 2473 2924 +4 2431 2474 2925 2926 +4 2431 2474 2925 2926 +4 2431 2474 2925 2926 +4 2431 2474 2925 2926 +4 2431 2474 2925 2926 +4 2431 2474 2925 2926 +3 2432 2475 2927 +3 2432 2475 2927 +3 2432 2475 2927 +3 2432 2475 2927 +3 2432 2475 2927 +3 2432 2475 2927 +3 2433 2476 2928 +3 2433 2476 2928 +3 2433 2476 2928 +3 2433 2476 2928 +3 2433 2476 2928 +3 2433 2476 2928 +4 2434 2477 2929 2930 +4 2434 2477 2929 2930 +4 2434 2477 2929 2930 +4 2434 2477 2929 2930 +4 2434 2477 2929 2930 +4 2434 2477 2929 2930 +3 2435 2478 2931 +3 2435 2478 2931 +3 2435 2478 2931 +3 2435 2478 2931 +3 2435 2478 2931 +3 2435 2478 2931 +3 2436 2479 2932 +3 2436 2479 2932 +3 2436 2479 2932 +3 2436 2479 2932 +3 2436 2479 2932 +3 2436 2479 2932 +4 2437 2480 2933 2934 +4 2437 2480 2933 2934 +4 2437 2480 2933 2934 +4 2437 2480 2933 2934 +4 2437 2480 2933 2934 +4 2437 2480 2933 2934 +3 2438 2481 2935 +3 2438 2481 2935 +3 2438 2481 2935 +3 2438 2481 2935 +3 2438 2481 2935 +3 2438 2481 2935 +3 2439 2482 2936 +3 2439 2482 2936 +3 2439 2482 2936 +3 2439 2482 2936 +3 2439 2482 2936 +3 2439 2482 2936 +4 2440 2483 2937 2938 +4 2440 2483 2937 2938 +4 2440 2483 2937 2938 +4 2440 2483 2937 2938 +4 2440 2483 2937 2938 +4 2440 2483 2937 2938 +3 2441 2484 2939 +3 2441 2484 2939 +3 2441 2484 2939 +3 2441 2484 2939 +3 2441 2484 2939 +3 2441 2484 2939 +3 2442 2485 2940 +3 2442 2485 2940 +3 2442 2485 2940 +3 2442 2485 2940 +3 2442 2485 2940 +3 2442 2485 2940 +4 2443 2486 2941 2942 +4 2443 2486 2941 2942 +4 2443 2486 2941 2942 +4 2443 2486 2941 2942 +4 2443 2486 2941 2942 +4 2443 2486 2941 2942 +3 2444 2487 2943 +3 2444 2487 2943 +3 2444 2487 2943 +3 2444 2487 2943 +3 2444 2487 2943 +3 2444 2487 2943 +3 2445 2488 2944 +3 2445 2488 2944 +3 2445 2488 2944 +3 2445 2488 2944 +3 2445 2488 2944 +3 2445 2488 2944 +4 2450 2493 2952 2954 +4 2450 2493 2952 2954 +4 2450 2493 2952 2954 +4 2450 2493 2952 2954 +4 2450 2493 2952 2954 +4 2450 2493 2952 2954 +4 2451 2494 2951 2953 +4 2451 2494 2951 2953 +4 2451 2494 2951 2953 +4 2451 2494 2951 2953 +4 2451 2494 2951 2953 +4 2451 2494 2951 2953 +4 2452 2495 2948 2955 +4 2452 2495 2948 2955 +4 2452 2495 2948 2955 +4 2452 2495 2948 2955 +4 2452 2495 2948 2955 +4 2452 2495 2948 2955 +9 2453 2496 2669 2712 2759 3132 3176 3198 3204 +9 2453 2496 2669 2712 2759 3132 3176 3198 3204 +9 2453 2496 2669 2712 2759 3132 3176 3198 3204 +9 2453 2496 2669 2712 2759 3132 3176 3198 3204 +9 2453 2496 2669 2712 2759 3132 3176 3198 3204 +9 2453 2496 2669 2712 2759 3132 3176 3198 3204 +3 2453 2496 2759 +3 2453 2496 2759 +3 2453 2496 2759 +3 2453 2496 2759 +3 2453 2496 2759 +3 2453 2496 2759 +3 2453 3132 3176 +3 2453 3132 3176 +3 2453 3132 3176 +3 2453 3132 3176 +3 2453 3132 3176 +3 2453 3132 3176 +4 2454 2497 2757 2758 +4 2454 2497 2757 2758 +4 2454 2497 2757 2758 +4 2454 2497 2757 2758 +4 2454 2497 2757 2758 +4 2454 2497 2757 2758 +11 2454 2497 2670 2713 2757 2758 3316 3317 3364 3370 3382 +11 2454 2497 2670 2713 2757 2758 3316 3317 3364 3370 3382 +11 2454 2497 2670 2713 2757 2758 3316 3317 3364 3370 3382 +11 2454 2497 2670 2713 2757 2758 3316 3317 3364 3370 3382 +11 2454 2497 2670 2713 2757 2758 3316 3317 3364 3370 3382 +11 2454 2497 2670 2713 2757 2758 3316 3317 3364 3370 3382 +4 2454 2670 3316 3364 +4 2454 2670 3316 3364 +4 2454 2670 3316 3364 +4 2454 2670 3316 3364 +4 2454 2670 3316 3364 +4 2454 2670 3316 3364 +4 2455 2498 2818 2819 +4 2455 2498 2818 2819 +4 2455 2498 2818 2819 +4 2455 2498 2818 2819 +4 2455 2498 2818 2819 +4 2455 2498 2818 2819 +4 2456 2499 2820 2821 +4 2456 2499 2820 2821 +4 2456 2499 2820 2821 +4 2456 2499 2820 2821 +4 2456 2499 2820 2821 +4 2456 2499 2820 2821 +4 2457 2500 2822 2823 +4 2457 2500 2822 2823 +4 2457 2500 2822 2823 +4 2457 2500 2822 2823 +4 2457 2500 2822 2823 +4 2457 2500 2822 2823 +4 2458 2501 2824 2825 +4 2458 2501 2824 2825 +4 2458 2501 2824 2825 +4 2458 2501 2824 2825 +4 2458 2501 2824 2825 +4 2458 2501 2824 2825 +4 2459 2502 2826 2827 +4 2459 2502 2826 2827 +4 2459 2502 2826 2827 +4 2459 2502 2826 2827 +4 2459 2502 2826 2827 +4 2459 2502 2826 2827 +4 2460 2503 2828 2829 +4 2460 2503 2828 2829 +4 2460 2503 2828 2829 +4 2460 2503 2828 2829 +4 2460 2503 2828 2829 +4 2460 2503 2828 2829 +4 2461 2504 2830 2831 +4 2461 2504 2830 2831 +4 2461 2504 2830 2831 +4 2461 2504 2830 2831 +4 2461 2504 2830 2831 +4 2461 2504 2830 2831 +4 2462 2505 2832 2833 +4 2462 2505 2832 2833 +4 2462 2505 2832 2833 +4 2462 2505 2832 2833 +4 2462 2505 2832 2833 +4 2462 2505 2832 2833 +4 2463 2506 2834 2835 +4 2463 2506 2834 2835 +4 2463 2506 2834 2835 +4 2463 2506 2834 2835 +4 2463 2506 2834 2835 +4 2463 2506 2834 2835 +4 2464 2507 2836 2837 +4 2464 2507 2836 2837 +4 2464 2507 2836 2837 +4 2464 2507 2836 2837 +4 2464 2507 2836 2837 +4 2464 2507 2836 2837 +4 2465 2508 2838 2839 +4 2465 2508 2838 2839 +4 2465 2508 2838 2839 +4 2465 2508 2838 2839 +4 2465 2508 2838 2839 +4 2465 2508 2838 2839 +4 2466 2509 2840 2841 +4 2466 2509 2840 2841 +4 2466 2509 2840 2841 +4 2466 2509 2840 2841 +4 2466 2509 2840 2841 +4 2466 2509 2840 2841 +4 2467 2510 2842 2843 +4 2467 2510 2842 2843 +4 2467 2510 2842 2843 +4 2467 2510 2842 2843 +4 2467 2510 2842 2843 +4 2467 2510 2842 2843 +4 2468 2511 2844 2845 +4 2468 2511 2844 2845 +4 2468 2511 2844 2845 +4 2468 2511 2844 2845 +4 2468 2511 2844 2845 +4 2468 2511 2844 2845 +4 2469 2512 2846 2847 +4 2469 2512 2846 2847 +4 2469 2512 2846 2847 +4 2469 2512 2846 2847 +4 2469 2512 2846 2847 +4 2469 2512 2846 2847 +4 2470 2513 2848 2849 +4 2470 2513 2848 2849 +4 2470 2513 2848 2849 +4 2470 2513 2848 2849 +4 2470 2513 2848 2849 +4 2470 2513 2848 2849 +4 2471 2514 2850 2851 +4 2471 2514 2850 2851 +4 2471 2514 2850 2851 +4 2471 2514 2850 2851 +4 2471 2514 2850 2851 +4 2471 2514 2850 2851 +4 2472 2515 2852 2853 +4 2472 2515 2852 2853 +4 2472 2515 2852 2853 +4 2472 2515 2852 2853 +4 2472 2515 2852 2853 +4 2472 2515 2852 2853 +4 2473 2516 2854 2855 +4 2473 2516 2854 2855 +4 2473 2516 2854 2855 +4 2473 2516 2854 2855 +4 2473 2516 2854 2855 +4 2473 2516 2854 2855 +4 2474 2517 2856 2857 +4 2474 2517 2856 2857 +4 2474 2517 2856 2857 +4 2474 2517 2856 2857 +4 2474 2517 2856 2857 +4 2474 2517 2856 2857 +4 2475 2518 2858 2859 +4 2475 2518 2858 2859 +4 2475 2518 2858 2859 +4 2475 2518 2858 2859 +4 2475 2518 2858 2859 +4 2475 2518 2858 2859 +4 2476 2519 2860 2861 +4 2476 2519 2860 2861 +4 2476 2519 2860 2861 +4 2476 2519 2860 2861 +4 2476 2519 2860 2861 +4 2476 2519 2860 2861 +4 2477 2520 2862 2863 +4 2477 2520 2862 2863 +4 2477 2520 2862 2863 +4 2477 2520 2862 2863 +4 2477 2520 2862 2863 +4 2477 2520 2862 2863 +4 2478 2521 2864 2865 +4 2478 2521 2864 2865 +4 2478 2521 2864 2865 +4 2478 2521 2864 2865 +4 2478 2521 2864 2865 +4 2478 2521 2864 2865 +4 2479 2522 2866 2867 +4 2479 2522 2866 2867 +4 2479 2522 2866 2867 +4 2479 2522 2866 2867 +4 2479 2522 2866 2867 +4 2479 2522 2866 2867 +4 2480 2523 2868 2869 +4 2480 2523 2868 2869 +4 2480 2523 2868 2869 +4 2480 2523 2868 2869 +4 2480 2523 2868 2869 +4 2480 2523 2868 2869 +4 2481 2524 2870 2871 +4 2481 2524 2870 2871 +4 2481 2524 2870 2871 +4 2481 2524 2870 2871 +4 2481 2524 2870 2871 +4 2481 2524 2870 2871 +4 2482 2525 2872 2873 +4 2482 2525 2872 2873 +4 2482 2525 2872 2873 +4 2482 2525 2872 2873 +4 2482 2525 2872 2873 +4 2482 2525 2872 2873 +4 2483 2526 2874 2875 +4 2483 2526 2874 2875 +4 2483 2526 2874 2875 +4 2483 2526 2874 2875 +4 2483 2526 2874 2875 +4 2483 2526 2874 2875 +4 2484 2527 2876 2877 +4 2484 2527 2876 2877 +4 2484 2527 2876 2877 +4 2484 2527 2876 2877 +4 2484 2527 2876 2877 +4 2484 2527 2876 2877 +4 2485 2528 2878 2879 +4 2485 2528 2878 2879 +4 2485 2528 2878 2879 +4 2485 2528 2878 2879 +4 2485 2528 2878 2879 +4 2485 2528 2878 2879 +4 2486 2529 2880 2881 +4 2486 2529 2880 2881 +4 2486 2529 2880 2881 +4 2486 2529 2880 2881 +4 2486 2529 2880 2881 +4 2486 2529 2880 2881 +4 2487 2530 2882 2883 +4 2487 2530 2882 2883 +4 2487 2530 2882 2883 +4 2487 2530 2882 2883 +4 2487 2530 2882 2883 +4 2487 2530 2882 2883 +4 2488 2531 2884 2885 +4 2488 2531 2884 2885 +4 2488 2531 2884 2885 +4 2488 2531 2884 2885 +4 2488 2531 2884 2885 +4 2488 2531 2884 2885 +4 2489 2532 2886 2887 +4 2489 2532 2886 2887 +4 2489 2532 2886 2887 +4 2489 2532 2886 2887 +4 2489 2532 2886 2887 +4 2489 2532 2886 2887 +4 2490 2533 2888 2889 +4 2490 2533 2888 2889 +4 2490 2533 2888 2889 +4 2490 2533 2888 2889 +4 2490 2533 2888 2889 +4 2490 2533 2888 2889 +4 2491 2534 2890 2891 +4 2491 2534 2890 2891 +4 2491 2534 2890 2891 +4 2491 2534 2890 2891 +4 2491 2534 2890 2891 +4 2491 2534 2890 2891 +4 2492 2535 2892 2893 +4 2492 2535 2892 2893 +4 2492 2535 2892 2893 +4 2492 2535 2892 2893 +4 2492 2535 2892 2893 +4 2492 2535 2892 2893 +4 2493 2536 2894 2895 +4 2493 2536 2894 2895 +4 2493 2536 2894 2895 +4 2493 2536 2894 2895 +4 2493 2536 2894 2895 +4 2493 2536 2894 2895 +4 2494 2537 2896 2897 +4 2494 2537 2896 2897 +4 2494 2537 2896 2897 +4 2494 2537 2896 2897 +4 2494 2537 2896 2897 +4 2494 2537 2896 2897 +4 2495 2538 2898 2899 +4 2495 2538 2898 2899 +4 2495 2538 2898 2899 +4 2495 2538 2898 2899 +4 2495 2538 2898 2899 +4 2495 2538 2898 2899 +10 2496 2539 2712 2755 2760 2761 3133 3204 3208 3218 +10 2496 2539 2712 2755 2760 2761 3133 3204 3208 3218 +10 2496 2539 2712 2755 2760 2761 3133 3204 3208 3218 +10 2496 2539 2712 2755 2760 2761 3133 3204 3208 3218 +10 2496 2539 2712 2755 2760 2761 3133 3204 3208 3218 +10 2496 2539 2712 2755 2760 2761 3133 3204 3208 3218 +4 2496 2539 2760 2761 +4 2496 2539 2760 2761 +4 2496 2539 2760 2761 +4 2496 2539 2760 2761 +4 2496 2539 2760 2761 +4 2496 2539 2760 2761 +3 2496 2712 3204 +3 2496 2712 3204 +3 2496 2712 3204 +3 2496 2712 3204 +3 2496 2712 3204 +3 2496 2712 3204 +3 2497 2713 2775 +3 2497 2713 2775 +3 2497 2713 2775 +3 2497 2713 2775 +3 2497 2713 2775 +3 2497 2713 2775 +6 2497 2713 2775 3317 3370 3376 +6 2497 2713 2775 3317 3370 3376 +6 2497 2713 2775 3317 3370 3376 +6 2497 2713 2775 3317 3370 3376 +6 2497 2713 2775 3317 3370 3376 +6 2497 2713 2775 3317 3370 3376 +4 2497 2713 3317 3370 +4 2497 2713 3317 3370 +4 2497 2713 3317 3370 +4 2497 2713 3317 3370 +4 2497 2713 3317 3370 +4 2497 2713 3317 3370 +3 2498 2714 2776 +3 2498 2714 2776 +3 2498 2714 2776 +3 2498 2714 2776 +3 2498 2714 2776 +3 2498 2714 2776 +3 2499 2715 2777 +3 2499 2715 2777 +3 2499 2715 2777 +3 2499 2715 2777 +3 2499 2715 2777 +3 2499 2715 2777 +3 2500 2716 2778 +3 2500 2716 2778 +3 2500 2716 2778 +3 2500 2716 2778 +3 2500 2716 2778 +3 2500 2716 2778 +3 2501 2717 2779 +3 2501 2717 2779 +3 2501 2717 2779 +3 2501 2717 2779 +3 2501 2717 2779 +3 2501 2717 2779 +3 2502 2718 2780 +3 2502 2718 2780 +3 2502 2718 2780 +3 2502 2718 2780 +3 2502 2718 2780 +3 2502 2718 2780 +3 2503 2719 2781 +3 2503 2719 2781 +3 2503 2719 2781 +3 2503 2719 2781 +3 2503 2719 2781 +3 2503 2719 2781 +3 2504 2720 2782 +3 2504 2720 2782 +3 2504 2720 2782 +3 2504 2720 2782 +3 2504 2720 2782 +3 2504 2720 2782 +3 2505 2721 2783 +3 2505 2721 2783 +3 2505 2721 2783 +3 2505 2721 2783 +3 2505 2721 2783 +3 2505 2721 2783 +3 2506 2722 2784 +3 2506 2722 2784 +3 2506 2722 2784 +3 2506 2722 2784 +3 2506 2722 2784 +3 2506 2722 2784 +3 2507 2723 2785 +3 2507 2723 2785 +3 2507 2723 2785 +3 2507 2723 2785 +3 2507 2723 2785 +3 2507 2723 2785 +3 2508 2724 2786 +3 2508 2724 2786 +3 2508 2724 2786 +3 2508 2724 2786 +3 2508 2724 2786 +3 2508 2724 2786 +3 2509 2725 2787 +3 2509 2725 2787 +3 2509 2725 2787 +3 2509 2725 2787 +3 2509 2725 2787 +3 2509 2725 2787 +3 2510 2726 2788 +3 2510 2726 2788 +3 2510 2726 2788 +3 2510 2726 2788 +3 2510 2726 2788 +3 2510 2726 2788 +3 2511 2727 2789 +3 2511 2727 2789 +3 2511 2727 2789 +3 2511 2727 2789 +3 2511 2727 2789 +3 2511 2727 2789 +3 2512 2728 2790 +3 2512 2728 2790 +3 2512 2728 2790 +3 2512 2728 2790 +3 2512 2728 2790 +3 2512 2728 2790 +3 2513 2729 2791 +3 2513 2729 2791 +3 2513 2729 2791 +3 2513 2729 2791 +3 2513 2729 2791 +3 2513 2729 2791 +3 2514 2730 2792 +3 2514 2730 2792 +3 2514 2730 2792 +3 2514 2730 2792 +3 2514 2730 2792 +3 2514 2730 2792 +3 2515 2731 2793 +3 2515 2731 2793 +3 2515 2731 2793 +3 2515 2731 2793 +3 2515 2731 2793 +3 2515 2731 2793 +3 2516 2732 2794 +3 2516 2732 2794 +3 2516 2732 2794 +3 2516 2732 2794 +3 2516 2732 2794 +3 2516 2732 2794 +3 2517 2733 2795 +3 2517 2733 2795 +3 2517 2733 2795 +3 2517 2733 2795 +3 2517 2733 2795 +3 2517 2733 2795 +3 2518 2734 2796 +3 2518 2734 2796 +3 2518 2734 2796 +3 2518 2734 2796 +3 2518 2734 2796 +3 2518 2734 2796 +3 2519 2735 2797 +3 2519 2735 2797 +3 2519 2735 2797 +3 2519 2735 2797 +3 2519 2735 2797 +3 2519 2735 2797 +3 2520 2736 2798 +3 2520 2736 2798 +3 2520 2736 2798 +3 2520 2736 2798 +3 2520 2736 2798 +3 2520 2736 2798 +3 2521 2737 2799 +3 2521 2737 2799 +3 2521 2737 2799 +3 2521 2737 2799 +3 2521 2737 2799 +3 2521 2737 2799 +3 2522 2738 2800 +3 2522 2738 2800 +3 2522 2738 2800 +3 2522 2738 2800 +3 2522 2738 2800 +3 2522 2738 2800 +3 2523 2739 2801 +3 2523 2739 2801 +3 2523 2739 2801 +3 2523 2739 2801 +3 2523 2739 2801 +3 2523 2739 2801 +3 2524 2740 2802 +3 2524 2740 2802 +3 2524 2740 2802 +3 2524 2740 2802 +3 2524 2740 2802 +3 2524 2740 2802 +3 2525 2741 2803 +3 2525 2741 2803 +3 2525 2741 2803 +3 2525 2741 2803 +3 2525 2741 2803 +3 2525 2741 2803 +3 2526 2742 2804 +3 2526 2742 2804 +3 2526 2742 2804 +3 2526 2742 2804 +3 2526 2742 2804 +3 2526 2742 2804 +3 2527 2743 2805 +3 2527 2743 2805 +3 2527 2743 2805 +3 2527 2743 2805 +3 2527 2743 2805 +3 2527 2743 2805 +3 2528 2744 2806 +3 2528 2744 2806 +3 2528 2744 2806 +3 2528 2744 2806 +3 2528 2744 2806 +3 2528 2744 2806 +3 2529 2745 2807 +3 2529 2745 2807 +3 2529 2745 2807 +3 2529 2745 2807 +3 2529 2745 2807 +3 2529 2745 2807 +3 2530 2746 2808 +3 2530 2746 2808 +3 2530 2746 2808 +3 2530 2746 2808 +3 2530 2746 2808 +3 2530 2746 2808 +3 2531 2747 2809 +3 2531 2747 2809 +3 2531 2747 2809 +3 2531 2747 2809 +3 2531 2747 2809 +3 2531 2747 2809 +3 2532 2748 2810 +3 2532 2748 2810 +3 2532 2748 2810 +3 2532 2748 2810 +3 2532 2748 2810 +3 2532 2748 2810 +3 2533 2749 2811 +3 2533 2749 2811 +3 2533 2749 2811 +3 2533 2749 2811 +3 2533 2749 2811 +3 2533 2749 2811 +3 2534 2750 2812 +3 2534 2750 2812 +3 2534 2750 2812 +3 2534 2750 2812 +3 2534 2750 2812 +3 2534 2750 2812 +3 2535 2751 2813 +3 2535 2751 2813 +3 2535 2751 2813 +3 2535 2751 2813 +3 2535 2751 2813 +3 2535 2751 2813 +3 2536 2752 2814 +3 2536 2752 2814 +3 2536 2752 2814 +3 2536 2752 2814 +3 2536 2752 2814 +3 2536 2752 2814 +3 2537 2753 2815 +3 2537 2753 2815 +3 2537 2753 2815 +3 2537 2753 2815 +3 2537 2753 2815 +3 2537 2753 2815 +3 2538 2754 2816 +3 2538 2754 2816 +3 2538 2754 2816 +3 2538 2754 2816 +3 2538 2754 2816 +3 2538 2754 2816 +6 2539 2755 2817 3133 3208 3214 +6 2539 2755 2817 3133 3208 3214 +6 2539 2755 2817 3133 3208 3214 +6 2539 2755 2817 3133 3208 3214 +6 2539 2755 2817 3133 3208 3214 +6 2539 2755 2817 3133 3208 3214 +3 2539 2755 2817 +3 2539 2755 2817 +3 2539 2755 2817 +3 2539 2755 2817 +3 2539 2755 2817 +3 2539 2755 2817 +4 2539 2755 3133 3208 +4 2539 2755 3133 3208 +4 2539 2755 3133 3208 +4 2539 2755 3133 3208 +4 2539 2755 3133 3208 +4 2539 2755 3133 3208 +1 2540 +1 2540 +1 2540 +1 2540 +1 2540 +1 2540 +4 2540 3308 3340 3430 +4 2540 3308 3340 3430 +4 2540 3308 3340 3430 +4 2540 3308 3340 3430 +4 2540 3308 3340 3430 +4 2540 3308 3340 3430 +3 2540 3308 3340 +3 2540 3308 3340 +3 2540 3308 3340 +3 2540 3308 3340 +3 2540 3308 3340 +3 2540 3308 3340 +8 2540 2541 3063 3308 3310 3340 3346 3418 +8 2540 2541 3063 3308 3310 3340 3346 3418 +8 2540 2541 3063 3308 3310 3340 3346 3418 +8 2540 2541 3063 3308 3310 3340 3346 3418 +8 2540 2541 3063 3308 3310 3340 3346 3418 +8 2540 2541 3063 3308 3310 3340 3346 3418 +3 2540 2541 3063 +3 2540 2541 3063 +3 2540 2541 3063 +3 2540 2541 3063 +3 2540 2541 3063 +3 2540 2541 3063 +3 2541 2584 3005 +3 2541 2584 3005 +3 2541 2584 3005 +3 2541 2584 3005 +3 2541 2584 3005 +3 2541 2584 3005 +8 2541 2584 3005 3310 3312 3346 3352 3407 +8 2541 2584 3005 3310 3312 3346 3352 3407 +8 2541 2584 3005 3310 3312 3346 3352 3407 +8 2541 2584 3005 3310 3312 3346 3352 3407 +8 2541 2584 3005 3310 3312 3346 3352 3407 +8 2541 2584 3005 3310 3312 3346 3352 3407 +3 2541 3310 3346 +3 2541 3310 3346 +3 2541 3310 3346 +3 2541 3310 3346 +3 2541 3310 3346 +3 2541 3310 3346 +3 2542 2585 3006 +3 2542 2585 3006 +3 2542 2585 3006 +3 2542 2585 3006 +3 2542 2585 3006 +3 2542 2585 3006 +2 2542 3064 +2 2542 3064 +2 2542 3064 +2 2542 3064 +2 2542 3064 +2 2542 3064 +3 2543 2586 3007 +3 2543 2586 3007 +3 2543 2586 3007 +3 2543 2586 3007 +3 2543 2586 3007 +3 2543 2586 3007 +2 2543 3065 +2 2543 3065 +2 2543 3065 +2 2543 3065 +2 2543 3065 +2 2543 3065 +3 2544 2587 3009 +3 2544 2587 3009 +3 2544 2587 3009 +3 2544 2587 3009 +3 2544 2587 3009 +3 2544 2587 3009 +2 2544 3067 +2 2544 3067 +2 2544 3067 +2 2544 3067 +2 2544 3067 +2 2544 3067 +3 2545 2588 3010 +3 2545 2588 3010 +3 2545 2588 3010 +3 2545 2588 3010 +3 2545 2588 3010 +3 2545 2588 3010 +2 2545 3068 +2 2545 3068 +2 2545 3068 +2 2545 3068 +2 2545 3068 +2 2545 3068 +3 2546 2589 3011 +3 2546 2589 3011 +3 2546 2589 3011 +3 2546 2589 3011 +3 2546 2589 3011 +3 2546 2589 3011 +2 2546 3069 +2 2546 3069 +2 2546 3069 +2 2546 3069 +2 2546 3069 +2 2546 3069 +3 2547 2590 3013 +3 2547 2590 3013 +3 2547 2590 3013 +3 2547 2590 3013 +3 2547 2590 3013 +3 2547 2590 3013 +2 2547 3071 +2 2547 3071 +2 2547 3071 +2 2547 3071 +2 2547 3071 +2 2547 3071 +3 2548 2591 3014 +3 2548 2591 3014 +3 2548 2591 3014 +3 2548 2591 3014 +3 2548 2591 3014 +3 2548 2591 3014 +2 2548 3072 +2 2548 3072 +2 2548 3072 +2 2548 3072 +2 2548 3072 +2 2548 3072 +3 2549 2592 3015 +3 2549 2592 3015 +3 2549 2592 3015 +3 2549 2592 3015 +3 2549 2592 3015 +3 2549 2592 3015 +2 2549 3073 +2 2549 3073 +2 2549 3073 +2 2549 3073 +2 2549 3073 +2 2549 3073 +3 2550 2593 3017 +3 2550 2593 3017 +3 2550 2593 3017 +3 2550 2593 3017 +3 2550 2593 3017 +3 2550 2593 3017 +2 2550 3075 +2 2550 3075 +2 2550 3075 +2 2550 3075 +2 2550 3075 +2 2550 3075 +3 2551 2594 3018 +3 2551 2594 3018 +3 2551 2594 3018 +3 2551 2594 3018 +3 2551 2594 3018 +3 2551 2594 3018 +2 2551 3076 +2 2551 3076 +2 2551 3076 +2 2551 3076 +2 2551 3076 +2 2551 3076 +3 2552 2595 3019 +3 2552 2595 3019 +3 2552 2595 3019 +3 2552 2595 3019 +3 2552 2595 3019 +3 2552 2595 3019 +2 2552 3077 +2 2552 3077 +2 2552 3077 +2 2552 3077 +2 2552 3077 +2 2552 3077 +3 2553 2596 3021 +3 2553 2596 3021 +3 2553 2596 3021 +3 2553 2596 3021 +3 2553 2596 3021 +3 2553 2596 3021 +2 2553 3079 +2 2553 3079 +2 2553 3079 +2 2553 3079 +2 2553 3079 +2 2553 3079 +3 2554 2597 3022 +3 2554 2597 3022 +3 2554 2597 3022 +3 2554 2597 3022 +3 2554 2597 3022 +3 2554 2597 3022 +2 2554 3080 +2 2554 3080 +2 2554 3080 +2 2554 3080 +2 2554 3080 +2 2554 3080 +3 2555 2598 3023 +3 2555 2598 3023 +3 2555 2598 3023 +3 2555 2598 3023 +3 2555 2598 3023 +3 2555 2598 3023 +2 2555 3081 +2 2555 3081 +2 2555 3081 +2 2555 3081 +2 2555 3081 +2 2555 3081 +3 2556 2599 3025 +3 2556 2599 3025 +3 2556 2599 3025 +3 2556 2599 3025 +3 2556 2599 3025 +3 2556 2599 3025 +2 2556 3083 +2 2556 3083 +2 2556 3083 +2 2556 3083 +2 2556 3083 +2 2556 3083 +3 2557 2600 3026 +3 2557 2600 3026 +3 2557 2600 3026 +3 2557 2600 3026 +3 2557 2600 3026 +3 2557 2600 3026 +2 2557 3084 +2 2557 3084 +2 2557 3084 +2 2557 3084 +2 2557 3084 +2 2557 3084 +3 2558 2601 3027 +3 2558 2601 3027 +3 2558 2601 3027 +3 2558 2601 3027 +3 2558 2601 3027 +3 2558 2601 3027 +2 2558 3085 +2 2558 3085 +2 2558 3085 +2 2558 3085 +2 2558 3085 +2 2558 3085 +3 2559 2602 3029 +3 2559 2602 3029 +3 2559 2602 3029 +3 2559 2602 3029 +3 2559 2602 3029 +3 2559 2602 3029 +2 2559 3087 +2 2559 3087 +2 2559 3087 +2 2559 3087 +2 2559 3087 +2 2559 3087 +3 2560 2603 3030 +3 2560 2603 3030 +3 2560 2603 3030 +3 2560 2603 3030 +3 2560 2603 3030 +3 2560 2603 3030 +2 2560 3088 +2 2560 3088 +2 2560 3088 +2 2560 3088 +2 2560 3088 +2 2560 3088 +3 2561 2604 3031 +3 2561 2604 3031 +3 2561 2604 3031 +3 2561 2604 3031 +3 2561 2604 3031 +3 2561 2604 3031 +2 2561 3089 +2 2561 3089 +2 2561 3089 +2 2561 3089 +2 2561 3089 +2 2561 3089 +3 2562 2605 3033 +3 2562 2605 3033 +3 2562 2605 3033 +3 2562 2605 3033 +3 2562 2605 3033 +3 2562 2605 3033 +2 2562 3091 +2 2562 3091 +2 2562 3091 +2 2562 3091 +2 2562 3091 +2 2562 3091 +3 2563 2606 3034 +3 2563 2606 3034 +3 2563 2606 3034 +3 2563 2606 3034 +3 2563 2606 3034 +3 2563 2606 3034 +2 2563 3092 +2 2563 3092 +2 2563 3092 +2 2563 3092 +2 2563 3092 +2 2563 3092 +3 2564 2607 3035 +3 2564 2607 3035 +3 2564 2607 3035 +3 2564 2607 3035 +3 2564 2607 3035 +3 2564 2607 3035 +2 2564 3093 +2 2564 3093 +2 2564 3093 +2 2564 3093 +2 2564 3093 +2 2564 3093 +3 2565 2608 3037 +3 2565 2608 3037 +3 2565 2608 3037 +3 2565 2608 3037 +3 2565 2608 3037 +3 2565 2608 3037 +2 2565 3095 +2 2565 3095 +2 2565 3095 +2 2565 3095 +2 2565 3095 +2 2565 3095 +3 2566 2609 3038 +3 2566 2609 3038 +3 2566 2609 3038 +3 2566 2609 3038 +3 2566 2609 3038 +3 2566 2609 3038 +2 2566 3096 +2 2566 3096 +2 2566 3096 +2 2566 3096 +2 2566 3096 +2 2566 3096 +3 2567 2610 3039 +3 2567 2610 3039 +3 2567 2610 3039 +3 2567 2610 3039 +3 2567 2610 3039 +3 2567 2610 3039 +2 2567 3097 +2 2567 3097 +2 2567 3097 +2 2567 3097 +2 2567 3097 +2 2567 3097 +3 2568 2611 3041 +3 2568 2611 3041 +3 2568 2611 3041 +3 2568 2611 3041 +3 2568 2611 3041 +3 2568 2611 3041 +2 2568 3099 +2 2568 3099 +2 2568 3099 +2 2568 3099 +2 2568 3099 +2 2568 3099 +3 2569 2612 3042 +3 2569 2612 3042 +3 2569 2612 3042 +3 2569 2612 3042 +3 2569 2612 3042 +3 2569 2612 3042 +2 2569 3100 +2 2569 3100 +2 2569 3100 +2 2569 3100 +2 2569 3100 +2 2569 3100 +3 2570 2613 3043 +3 2570 2613 3043 +3 2570 2613 3043 +3 2570 2613 3043 +3 2570 2613 3043 +3 2570 2613 3043 +2 2570 3101 +2 2570 3101 +2 2570 3101 +2 2570 3101 +2 2570 3101 +2 2570 3101 +3 2571 2614 3045 +3 2571 2614 3045 +3 2571 2614 3045 +3 2571 2614 3045 +3 2571 2614 3045 +3 2571 2614 3045 +2 2571 3103 +2 2571 3103 +2 2571 3103 +2 2571 3103 +2 2571 3103 +2 2571 3103 +3 2572 2615 3046 +3 2572 2615 3046 +3 2572 2615 3046 +3 2572 2615 3046 +3 2572 2615 3046 +3 2572 2615 3046 +2 2572 3104 +2 2572 3104 +2 2572 3104 +2 2572 3104 +2 2572 3104 +2 2572 3104 +3 2573 2616 3047 +3 2573 2616 3047 +3 2573 2616 3047 +3 2573 2616 3047 +3 2573 2616 3047 +3 2573 2616 3047 +2 2573 3105 +2 2573 3105 +2 2573 3105 +2 2573 3105 +2 2573 3105 +2 2573 3105 +3 2574 2617 3049 +3 2574 2617 3049 +3 2574 2617 3049 +3 2574 2617 3049 +3 2574 2617 3049 +3 2574 2617 3049 +2 2574 3107 +2 2574 3107 +2 2574 3107 +2 2574 3107 +2 2574 3107 +2 2574 3107 +3 2575 2618 3050 +3 2575 2618 3050 +3 2575 2618 3050 +3 2575 2618 3050 +3 2575 2618 3050 +3 2575 2618 3050 +2 2575 3108 +2 2575 3108 +2 2575 3108 +2 2575 3108 +2 2575 3108 +2 2575 3108 +3 2576 2619 3051 +3 2576 2619 3051 +3 2576 2619 3051 +3 2576 2619 3051 +3 2576 2619 3051 +3 2576 2619 3051 +2 2576 3109 +2 2576 3109 +2 2576 3109 +2 2576 3109 +2 2576 3109 +2 2576 3109 +3 2577 2620 3053 +3 2577 2620 3053 +3 2577 2620 3053 +3 2577 2620 3053 +3 2577 2620 3053 +3 2577 2620 3053 +3 2578 2621 3055 +3 2578 2621 3055 +3 2578 2621 3055 +3 2578 2621 3055 +3 2578 2621 3055 +3 2578 2621 3055 +3 2579 2622 3056 +3 2579 2622 3056 +3 2579 2622 3056 +3 2579 2622 3056 +3 2579 2622 3056 +3 2579 2622 3056 +2 2579 3114 +2 2579 3114 +2 2579 3114 +2 2579 3114 +2 2579 3114 +2 2579 3114 +3 2580 2623 3058 +3 2580 2623 3058 +3 2580 2623 3058 +3 2580 2623 3058 +3 2580 2623 3058 +3 2580 2623 3058 +2 2580 3116 +2 2580 3116 +2 2580 3116 +2 2580 3116 +2 2580 3116 +2 2580 3116 +3 2581 2624 3059 +3 2581 2624 3059 +3 2581 2624 3059 +3 2581 2624 3059 +3 2581 2624 3059 +3 2581 2624 3059 +2 2581 3117 +2 2581 3117 +2 2581 3117 +2 2581 3117 +2 2581 3117 +2 2581 3117 +3 2582 2625 3061 +3 2582 2625 3061 +3 2582 2625 3061 +3 2582 2625 3061 +3 2582 2625 3061 +3 2582 2625 3061 +2 2582 3119 +2 2582 3119 +2 2582 3119 +2 2582 3119 +2 2582 3119 +2 2582 3119 +8 2583 2626 3062 3130 3131 3186 3192 3234 +8 2583 2626 3062 3130 3131 3186 3192 3234 +8 2583 2626 3062 3130 3131 3186 3192 3234 +8 2583 2626 3062 3130 3131 3186 3192 3234 +8 2583 2626 3062 3130 3131 3186 3192 3234 +8 2583 2626 3062 3130 3131 3186 3192 3234 +3 2583 2626 3062 +3 2583 2626 3062 +3 2583 2626 3062 +3 2583 2626 3062 +3 2583 2626 3062 +3 2583 2626 3062 +5 2583 3120 3130 3186 3243 +5 2583 3120 3130 3186 3243 +5 2583 3120 3130 3186 3243 +5 2583 3120 3130 3186 3243 +5 2583 3120 3130 3186 3243 +5 2583 3120 3130 3186 3243 +2 2583 3120 +2 2583 3120 +2 2583 3120 +2 2583 3120 +2 2583 3120 +2 2583 3120 +3 2583 3130 3186 +3 2583 3130 3186 +3 2583 3130 3186 +3 2583 3130 3186 +3 2583 3130 3186 +3 2583 3130 3186 +3 2584 2627 2956 +3 2584 2627 2956 +3 2584 2627 2956 +3 2584 2627 2956 +3 2584 2627 2956 +3 2584 2627 2956 +8 2584 2627 2956 3312 3314 3352 3358 3396 +8 2584 2627 2956 3312 3314 3352 3358 3396 +8 2584 2627 2956 3312 3314 3352 3358 3396 +8 2584 2627 2956 3312 3314 3352 3358 3396 +8 2584 2627 2956 3312 3314 3352 3358 3396 +8 2584 2627 2956 3312 3314 3352 3358 3396 +3 2584 3312 3352 +3 2584 3312 3352 +3 2584 3312 3352 +3 2584 3312 3352 +3 2584 3312 3352 +3 2584 3312 3352 +3 2585 2628 2957 +3 2585 2628 2957 +3 2585 2628 2957 +3 2585 2628 2957 +3 2585 2628 2957 +3 2585 2628 2957 +3 2586 2629 2958 +3 2586 2629 2958 +3 2586 2629 2958 +3 2586 2629 2958 +3 2586 2629 2958 +3 2586 2629 2958 +3 2587 2630 2960 +3 2587 2630 2960 +3 2587 2630 2960 +3 2587 2630 2960 +3 2587 2630 2960 +3 2587 2630 2960 +3 2588 2631 2961 +3 2588 2631 2961 +3 2588 2631 2961 +3 2588 2631 2961 +3 2588 2631 2961 +3 2588 2631 2961 +3 2589 2632 2962 +3 2589 2632 2962 +3 2589 2632 2962 +3 2589 2632 2962 +3 2589 2632 2962 +3 2589 2632 2962 +3 2590 2633 2963 +3 2590 2633 2963 +3 2590 2633 2963 +3 2590 2633 2963 +3 2590 2633 2963 +3 2590 2633 2963 +3 2591 2634 2964 +3 2591 2634 2964 +3 2591 2634 2964 +3 2591 2634 2964 +3 2591 2634 2964 +3 2591 2634 2964 +3 2592 2635 2965 +3 2592 2635 2965 +3 2592 2635 2965 +3 2592 2635 2965 +3 2592 2635 2965 +3 2592 2635 2965 +3 2593 2636 2966 +3 2593 2636 2966 +3 2593 2636 2966 +3 2593 2636 2966 +3 2593 2636 2966 +3 2593 2636 2966 +3 2594 2637 2967 +3 2594 2637 2967 +3 2594 2637 2967 +3 2594 2637 2967 +3 2594 2637 2967 +3 2594 2637 2967 +3 2595 2638 2968 +3 2595 2638 2968 +3 2595 2638 2968 +3 2595 2638 2968 +3 2595 2638 2968 +3 2595 2638 2968 +3 2596 2639 2969 +3 2596 2639 2969 +3 2596 2639 2969 +3 2596 2639 2969 +3 2596 2639 2969 +3 2596 2639 2969 +3 2597 2640 2970 +3 2597 2640 2970 +3 2597 2640 2970 +3 2597 2640 2970 +3 2597 2640 2970 +3 2597 2640 2970 +3 2598 2641 2971 +3 2598 2641 2971 +3 2598 2641 2971 +3 2598 2641 2971 +3 2598 2641 2971 +3 2598 2641 2971 +3 2599 2642 2972 +3 2599 2642 2972 +3 2599 2642 2972 +3 2599 2642 2972 +3 2599 2642 2972 +3 2599 2642 2972 +3 2600 2643 2973 +3 2600 2643 2973 +3 2600 2643 2973 +3 2600 2643 2973 +3 2600 2643 2973 +3 2600 2643 2973 +3 2601 2644 2974 +3 2601 2644 2974 +3 2601 2644 2974 +3 2601 2644 2974 +3 2601 2644 2974 +3 2601 2644 2974 +3 2602 2645 2975 +3 2602 2645 2975 +3 2602 2645 2975 +3 2602 2645 2975 +3 2602 2645 2975 +3 2602 2645 2975 +3 2603 2646 2976 +3 2603 2646 2976 +3 2603 2646 2976 +3 2603 2646 2976 +3 2603 2646 2976 +3 2603 2646 2976 +3 2604 2647 2977 +3 2604 2647 2977 +3 2604 2647 2977 +3 2604 2647 2977 +3 2604 2647 2977 +3 2604 2647 2977 +3 2605 2648 2978 +3 2605 2648 2978 +3 2605 2648 2978 +3 2605 2648 2978 +3 2605 2648 2978 +3 2605 2648 2978 +3 2606 2649 2979 +3 2606 2649 2979 +3 2606 2649 2979 +3 2606 2649 2979 +3 2606 2649 2979 +3 2606 2649 2979 +3 2607 2650 2980 +3 2607 2650 2980 +3 2607 2650 2980 +3 2607 2650 2980 +3 2607 2650 2980 +3 2607 2650 2980 +3 2608 2651 2981 +3 2608 2651 2981 +3 2608 2651 2981 +3 2608 2651 2981 +3 2608 2651 2981 +3 2608 2651 2981 +3 2609 2652 2982 +3 2609 2652 2982 +3 2609 2652 2982 +3 2609 2652 2982 +3 2609 2652 2982 +3 2609 2652 2982 +3 2610 2653 2983 +3 2610 2653 2983 +3 2610 2653 2983 +3 2610 2653 2983 +3 2610 2653 2983 +3 2610 2653 2983 +3 2611 2654 2984 +3 2611 2654 2984 +3 2611 2654 2984 +3 2611 2654 2984 +3 2611 2654 2984 +3 2611 2654 2984 +3 2612 2655 2985 +3 2612 2655 2985 +3 2612 2655 2985 +3 2612 2655 2985 +3 2612 2655 2985 +3 2612 2655 2985 +3 2613 2656 2986 +3 2613 2656 2986 +3 2613 2656 2986 +3 2613 2656 2986 +3 2613 2656 2986 +3 2613 2656 2986 +3 2614 2657 2988 +3 2614 2657 2988 +3 2614 2657 2988 +3 2614 2657 2988 +3 2614 2657 2988 +3 2614 2657 2988 +3 2615 2658 2989 +3 2615 2658 2989 +3 2615 2658 2989 +3 2615 2658 2989 +3 2615 2658 2989 +3 2615 2658 2989 +3 2616 2659 2990 +3 2616 2659 2990 +3 2616 2659 2990 +3 2616 2659 2990 +3 2616 2659 2990 +3 2616 2659 2990 +3 2617 2660 2991 +3 2617 2660 2991 +3 2617 2660 2991 +3 2617 2660 2991 +3 2617 2660 2991 +3 2617 2660 2991 +3 2618 2661 2992 +3 2618 2661 2992 +3 2618 2661 2992 +3 2618 2661 2992 +3 2618 2661 2992 +3 2618 2661 2992 +3 2619 2662 2993 +3 2619 2662 2993 +3 2619 2662 2993 +3 2619 2662 2993 +3 2619 2662 2993 +3 2619 2662 2993 +3 2620 2663 2995 +3 2620 2663 2995 +3 2620 2663 2995 +3 2620 2663 2995 +3 2620 2663 2995 +3 2620 2663 2995 +3 2621 2664 2997 +3 2621 2664 2997 +3 2621 2664 2997 +3 2621 2664 2997 +3 2621 2664 2997 +3 2621 2664 2997 +3 2622 2665 2998 +3 2622 2665 2998 +3 2622 2665 2998 +3 2622 2665 2998 +3 2622 2665 2998 +3 2622 2665 2998 +3 2623 2666 3000 +3 2623 2666 3000 +3 2623 2666 3000 +3 2623 2666 3000 +3 2623 2666 3000 +3 2623 2666 3000 +3 2624 2667 3001 +3 2624 2667 3001 +3 2624 2667 3001 +3 2624 2667 3001 +3 2624 2667 3001 +3 2624 2667 3001 +3 2625 2668 3003 +3 2625 2668 3003 +3 2625 2668 3003 +3 2625 2668 3003 +3 2625 2668 3003 +3 2625 2668 3003 +8 2626 2669 3004 3131 3132 3192 3198 3225 +8 2626 2669 3004 3131 3132 3192 3198 3225 +8 2626 2669 3004 3131 3132 3192 3198 3225 +8 2626 2669 3004 3131 3132 3192 3198 3225 +8 2626 2669 3004 3131 3132 3192 3198 3225 +8 2626 2669 3004 3131 3132 3192 3198 3225 +3 2626 2669 3004 +3 2626 2669 3004 +3 2626 2669 3004 +3 2626 2669 3004 +3 2626 2669 3004 +3 2626 2669 3004 +3 2626 3131 3192 +3 2626 3131 3192 +3 2626 3131 3192 +3 2626 3131 3192 +3 2626 3131 3192 +3 2626 3131 3192 +3 2627 2670 2756 +3 2627 2670 2756 +3 2627 2670 2756 +3 2627 2670 2756 +3 2627 2670 2756 +3 2627 2670 2756 +3 2627 3314 3358 +3 2627 3314 3358 +3 2627 3314 3358 +3 2627 3314 3358 +3 2627 3314 3358 +3 2627 3314 3358 +3 2628 2671 2900 +3 2628 2671 2900 +3 2628 2671 2900 +3 2628 2671 2900 +3 2628 2671 2900 +3 2628 2671 2900 +3 2629 2672 2901 +3 2629 2672 2901 +3 2629 2672 2901 +3 2629 2672 2901 +3 2629 2672 2901 +3 2629 2672 2901 +3 2630 2673 2903 +3 2630 2673 2903 +3 2630 2673 2903 +3 2630 2673 2903 +3 2630 2673 2903 +3 2630 2673 2903 +3 2631 2674 2904 +3 2631 2674 2904 +3 2631 2674 2904 +3 2631 2674 2904 +3 2631 2674 2904 +3 2631 2674 2904 +3 2632 2675 2905 +3 2632 2675 2905 +3 2632 2675 2905 +3 2632 2675 2905 +3 2632 2675 2905 +3 2632 2675 2905 +3 2633 2676 2907 +3 2633 2676 2907 +3 2633 2676 2907 +3 2633 2676 2907 +3 2633 2676 2907 +3 2633 2676 2907 +3 2634 2677 2908 +3 2634 2677 2908 +3 2634 2677 2908 +3 2634 2677 2908 +3 2634 2677 2908 +3 2634 2677 2908 +3 2635 2678 2909 +3 2635 2678 2909 +3 2635 2678 2909 +3 2635 2678 2909 +3 2635 2678 2909 +3 2635 2678 2909 +3 2636 2679 2911 +3 2636 2679 2911 +3 2636 2679 2911 +3 2636 2679 2911 +3 2636 2679 2911 +3 2636 2679 2911 +3 2637 2680 2912 +3 2637 2680 2912 +3 2637 2680 2912 +3 2637 2680 2912 +3 2637 2680 2912 +3 2637 2680 2912 +3 2638 2681 2913 +3 2638 2681 2913 +3 2638 2681 2913 +3 2638 2681 2913 +3 2638 2681 2913 +3 2638 2681 2913 +3 2639 2682 2915 +3 2639 2682 2915 +3 2639 2682 2915 +3 2639 2682 2915 +3 2639 2682 2915 +3 2639 2682 2915 +3 2640 2683 2916 +3 2640 2683 2916 +3 2640 2683 2916 +3 2640 2683 2916 +3 2640 2683 2916 +3 2640 2683 2916 +3 2641 2684 2917 +3 2641 2684 2917 +3 2641 2684 2917 +3 2641 2684 2917 +3 2641 2684 2917 +3 2641 2684 2917 +3 2642 2685 2919 +3 2642 2685 2919 +3 2642 2685 2919 +3 2642 2685 2919 +3 2642 2685 2919 +3 2642 2685 2919 +3 2643 2686 2920 +3 2643 2686 2920 +3 2643 2686 2920 +3 2643 2686 2920 +3 2643 2686 2920 +3 2643 2686 2920 +3 2644 2687 2921 +3 2644 2687 2921 +3 2644 2687 2921 +3 2644 2687 2921 +3 2644 2687 2921 +3 2644 2687 2921 +3 2645 2688 2923 +3 2645 2688 2923 +3 2645 2688 2923 +3 2645 2688 2923 +3 2645 2688 2923 +3 2645 2688 2923 +3 2646 2689 2924 +3 2646 2689 2924 +3 2646 2689 2924 +3 2646 2689 2924 +3 2646 2689 2924 +3 2646 2689 2924 +3 2647 2690 2925 +3 2647 2690 2925 +3 2647 2690 2925 +3 2647 2690 2925 +3 2647 2690 2925 +3 2647 2690 2925 +3 2648 2691 2927 +3 2648 2691 2927 +3 2648 2691 2927 +3 2648 2691 2927 +3 2648 2691 2927 +3 2648 2691 2927 +3 2649 2692 2928 +3 2649 2692 2928 +3 2649 2692 2928 +3 2649 2692 2928 +3 2649 2692 2928 +3 2649 2692 2928 +3 2650 2693 2929 +3 2650 2693 2929 +3 2650 2693 2929 +3 2650 2693 2929 +3 2650 2693 2929 +3 2650 2693 2929 +3 2651 2694 2931 +3 2651 2694 2931 +3 2651 2694 2931 +3 2651 2694 2931 +3 2651 2694 2931 +3 2651 2694 2931 +3 2652 2695 2932 +3 2652 2695 2932 +3 2652 2695 2932 +3 2652 2695 2932 +3 2652 2695 2932 +3 2652 2695 2932 +3 2653 2696 2933 +3 2653 2696 2933 +3 2653 2696 2933 +3 2653 2696 2933 +3 2653 2696 2933 +3 2653 2696 2933 +3 2654 2697 2935 +3 2654 2697 2935 +3 2654 2697 2935 +3 2654 2697 2935 +3 2654 2697 2935 +3 2654 2697 2935 +3 2655 2698 2936 +3 2655 2698 2936 +3 2655 2698 2936 +3 2655 2698 2936 +3 2655 2698 2936 +3 2655 2698 2936 +3 2656 2699 2937 +3 2656 2699 2937 +3 2656 2699 2937 +3 2656 2699 2937 +3 2656 2699 2937 +3 2656 2699 2937 +3 2657 2700 2939 +3 2657 2700 2939 +3 2657 2700 2939 +3 2657 2700 2939 +3 2657 2700 2939 +3 2657 2700 2939 +3 2658 2701 2940 +3 2658 2701 2940 +3 2658 2701 2940 +3 2658 2701 2940 +3 2658 2701 2940 +3 2658 2701 2940 +3 2659 2702 2941 +3 2659 2702 2941 +3 2659 2702 2941 +3 2659 2702 2941 +3 2659 2702 2941 +3 2659 2702 2941 +3 2660 2703 2943 +3 2660 2703 2943 +3 2660 2703 2943 +3 2660 2703 2943 +3 2660 2703 2943 +3 2660 2703 2943 +3 2661 2704 2944 +3 2661 2704 2944 +3 2661 2704 2944 +3 2661 2704 2944 +3 2661 2704 2944 +3 2661 2704 2944 +3 2662 2705 2945 +3 2662 2705 2945 +3 2662 2705 2945 +3 2662 2705 2945 +3 2662 2705 2945 +3 2662 2705 2945 +3 2663 2706 2947 +3 2663 2706 2947 +3 2663 2706 2947 +3 2663 2706 2947 +3 2663 2706 2947 +3 2663 2706 2947 +3 2664 2707 2949 +3 2664 2707 2949 +3 2664 2707 2949 +3 2664 2707 2949 +3 2664 2707 2949 +3 2664 2707 2949 +3 2665 2708 2950 +3 2665 2708 2950 +3 2665 2708 2950 +3 2665 2708 2950 +3 2665 2708 2950 +3 2665 2708 2950 +3 2666 2709 2952 +3 2666 2709 2952 +3 2666 2709 2952 +3 2666 2709 2952 +3 2666 2709 2952 +3 2666 2709 2952 +3 2667 2710 2953 +3 2667 2710 2953 +3 2667 2710 2953 +3 2667 2710 2953 +3 2667 2710 2953 +3 2667 2710 2953 +3 2668 2711 2955 +3 2668 2711 2955 +3 2668 2711 2955 +3 2668 2711 2955 +3 2668 2711 2955 +3 2668 2711 2955 +3 2669 2712 2759 +3 2669 2712 2759 +3 2669 2712 2759 +3 2669 2712 2759 +3 2669 2712 2759 +3 2669 2712 2759 +3 2669 3132 3198 +3 2669 3132 3198 +3 2669 3132 3198 +3 2669 3132 3198 +3 2669 3132 3198 +3 2669 3132 3198 +3 2670 2713 2757 +3 2670 2713 2757 +3 2670 2713 2757 +3 2670 2713 2757 +3 2670 2713 2757 +3 2670 2713 2757 +3 2671 2714 2818 +3 2671 2714 2818 +3 2671 2714 2818 +3 2671 2714 2818 +3 2671 2714 2818 +3 2671 2714 2818 +3 2672 2715 2820 +3 2672 2715 2820 +3 2672 2715 2820 +3 2672 2715 2820 +3 2672 2715 2820 +3 2672 2715 2820 +3 2673 2716 2822 +3 2673 2716 2822 +3 2673 2716 2822 +3 2673 2716 2822 +3 2673 2716 2822 +3 2673 2716 2822 +3 2674 2717 2824 +3 2674 2717 2824 +3 2674 2717 2824 +3 2674 2717 2824 +3 2674 2717 2824 +3 2674 2717 2824 +3 2675 2718 2826 +3 2675 2718 2826 +3 2675 2718 2826 +3 2675 2718 2826 +3 2675 2718 2826 +3 2675 2718 2826 +3 2676 2719 2828 +3 2676 2719 2828 +3 2676 2719 2828 +3 2676 2719 2828 +3 2676 2719 2828 +3 2676 2719 2828 +3 2677 2720 2830 +3 2677 2720 2830 +3 2677 2720 2830 +3 2677 2720 2830 +3 2677 2720 2830 +3 2677 2720 2830 +3 2678 2721 2832 +3 2678 2721 2832 +3 2678 2721 2832 +3 2678 2721 2832 +3 2678 2721 2832 +3 2678 2721 2832 +3 2679 2722 2834 +3 2679 2722 2834 +3 2679 2722 2834 +3 2679 2722 2834 +3 2679 2722 2834 +3 2679 2722 2834 +3 2680 2723 2836 +3 2680 2723 2836 +3 2680 2723 2836 +3 2680 2723 2836 +3 2680 2723 2836 +3 2680 2723 2836 +3 2681 2724 2838 +3 2681 2724 2838 +3 2681 2724 2838 +3 2681 2724 2838 +3 2681 2724 2838 +3 2681 2724 2838 +3 2682 2725 2840 +3 2682 2725 2840 +3 2682 2725 2840 +3 2682 2725 2840 +3 2682 2725 2840 +3 2682 2725 2840 +3 2683 2726 2842 +3 2683 2726 2842 +3 2683 2726 2842 +3 2683 2726 2842 +3 2683 2726 2842 +3 2683 2726 2842 +3 2684 2727 2844 +3 2684 2727 2844 +3 2684 2727 2844 +3 2684 2727 2844 +3 2684 2727 2844 +3 2684 2727 2844 +3 2685 2728 2846 +3 2685 2728 2846 +3 2685 2728 2846 +3 2685 2728 2846 +3 2685 2728 2846 +3 2685 2728 2846 +3 2686 2729 2848 +3 2686 2729 2848 +3 2686 2729 2848 +3 2686 2729 2848 +3 2686 2729 2848 +3 2686 2729 2848 +3 2687 2730 2850 +3 2687 2730 2850 +3 2687 2730 2850 +3 2687 2730 2850 +3 2687 2730 2850 +3 2687 2730 2850 +3 2688 2731 2852 +3 2688 2731 2852 +3 2688 2731 2852 +3 2688 2731 2852 +3 2688 2731 2852 +3 2688 2731 2852 +3 2689 2732 2854 +3 2689 2732 2854 +3 2689 2732 2854 +3 2689 2732 2854 +3 2689 2732 2854 +3 2689 2732 2854 +3 2690 2733 2856 +3 2690 2733 2856 +3 2690 2733 2856 +3 2690 2733 2856 +3 2690 2733 2856 +3 2690 2733 2856 +3 2691 2734 2858 +3 2691 2734 2858 +3 2691 2734 2858 +3 2691 2734 2858 +3 2691 2734 2858 +3 2691 2734 2858 +3 2692 2735 2860 +3 2692 2735 2860 +3 2692 2735 2860 +3 2692 2735 2860 +3 2692 2735 2860 +3 2692 2735 2860 +3 2693 2736 2862 +3 2693 2736 2862 +3 2693 2736 2862 +3 2693 2736 2862 +3 2693 2736 2862 +3 2693 2736 2862 +3 2694 2737 2864 +3 2694 2737 2864 +3 2694 2737 2864 +3 2694 2737 2864 +3 2694 2737 2864 +3 2694 2737 2864 +3 2695 2738 2866 +3 2695 2738 2866 +3 2695 2738 2866 +3 2695 2738 2866 +3 2695 2738 2866 +3 2695 2738 2866 +3 2696 2739 2868 +3 2696 2739 2868 +3 2696 2739 2868 +3 2696 2739 2868 +3 2696 2739 2868 +3 2696 2739 2868 +3 2697 2740 2870 +3 2697 2740 2870 +3 2697 2740 2870 +3 2697 2740 2870 +3 2697 2740 2870 +3 2697 2740 2870 +3 2698 2741 2872 +3 2698 2741 2872 +3 2698 2741 2872 +3 2698 2741 2872 +3 2698 2741 2872 +3 2698 2741 2872 +3 2699 2742 2874 +3 2699 2742 2874 +3 2699 2742 2874 +3 2699 2742 2874 +3 2699 2742 2874 +3 2699 2742 2874 +3 2700 2743 2876 +3 2700 2743 2876 +3 2700 2743 2876 +3 2700 2743 2876 +3 2700 2743 2876 +3 2700 2743 2876 +3 2701 2744 2878 +3 2701 2744 2878 +3 2701 2744 2878 +3 2701 2744 2878 +3 2701 2744 2878 +3 2701 2744 2878 +3 2702 2745 2880 +3 2702 2745 2880 +3 2702 2745 2880 +3 2702 2745 2880 +3 2702 2745 2880 +3 2702 2745 2880 +3 2703 2746 2882 +3 2703 2746 2882 +3 2703 2746 2882 +3 2703 2746 2882 +3 2703 2746 2882 +3 2703 2746 2882 +3 2704 2747 2884 +3 2704 2747 2884 +3 2704 2747 2884 +3 2704 2747 2884 +3 2704 2747 2884 +3 2704 2747 2884 +3 2705 2748 2886 +3 2705 2748 2886 +3 2705 2748 2886 +3 2705 2748 2886 +3 2705 2748 2886 +3 2705 2748 2886 +3 2706 2749 2888 +3 2706 2749 2888 +3 2706 2749 2888 +3 2706 2749 2888 +3 2706 2749 2888 +3 2706 2749 2888 +3 2707 2750 2890 +3 2707 2750 2890 +3 2707 2750 2890 +3 2707 2750 2890 +3 2707 2750 2890 +3 2707 2750 2890 +3 2708 2751 2892 +3 2708 2751 2892 +3 2708 2751 2892 +3 2708 2751 2892 +3 2708 2751 2892 +3 2708 2751 2892 +3 2709 2752 2894 +3 2709 2752 2894 +3 2709 2752 2894 +3 2709 2752 2894 +3 2709 2752 2894 +3 2709 2752 2894 +3 2710 2753 2896 +3 2710 2753 2896 +3 2710 2753 2896 +3 2710 2753 2896 +3 2710 2753 2896 +3 2710 2753 2896 +3 2711 2754 2898 +3 2711 2754 2898 +3 2711 2754 2898 +3 2711 2754 2898 +3 2711 2754 2898 +3 2711 2754 2898 +3 2712 2755 2760 +3 2712 2755 2760 +3 2712 2755 2760 +3 2712 2755 2760 +3 2712 2755 2760 +3 2712 2755 2760 +4 2758 3316 3317 3382 +4 2758 3316 3317 3382 +4 2758 3316 3317 3382 +4 2758 3316 3317 3382 +4 2758 3316 3317 3382 +4 2758 3316 3317 3382 +3 2761 3133 3218 +3 2761 3133 3218 +3 2761 3133 3218 +3 2761 3133 3218 +3 2761 3133 3218 +3 2761 3133 3218 +1 2773 +1 2773 +1 2773 +1 2773 +1 2773 +1 2773 +1 2774 +1 2774 +1 2774 +1 2774 +1 2774 +1 2774 +3 2775 3317 3376 +3 2775 3317 3376 +3 2775 3317 3376 +3 2775 3317 3376 +3 2775 3317 3376 +3 2775 3317 3376 +3 2817 3133 3214 +3 2817 3133 3214 +3 2817 3133 3214 +3 2817 3133 3214 +3 2817 3133 3214 +3 2817 3133 3214 +1 2946 +1 2946 +1 2946 +1 2946 +1 2946 +1 2946 +2 2946 2948 +2 2946 2948 +2 2946 2948 +2 2946 2948 +2 2946 2948 +2 2946 2948 +2 2948 2951 +2 2948 2951 +2 2948 2951 +2 2948 2951 +2 2948 2951 +2 2948 2951 +1 2951 +1 2951 +1 2951 +1 2951 +1 2951 +1 2951 +2 2951 2954 +2 2951 2954 +2 2951 2954 +2 2951 2954 +2 2951 2954 +2 2951 2954 +1 2954 +1 2954 +1 2954 +1 2954 +1 2954 +1 2954 +4 2956 3312 3314 3396 +4 2956 3312 3314 3396 +4 2956 3312 3314 3396 +4 2956 3312 3314 3396 +4 2956 3312 3314 3396 +4 2956 3312 3314 3396 +1 2994 +1 2994 +1 2994 +1 2994 +1 2994 +1 2994 +1 2994 +1 2994 +1 2994 +1 2994 +1 2994 +1 2994 +2 2994 2996 +2 2994 2996 +2 2994 2996 +2 2994 2996 +2 2994 2996 +2 2994 2996 +2 2996 2999 +2 2996 2999 +2 2996 2999 +2 2996 2999 +2 2996 2999 +2 2996 2999 +1 2999 +1 2999 +1 2999 +1 2999 +1 2999 +1 2999 +2 2999 3002 +2 2999 3002 +2 2999 3002 +2 2999 3002 +2 2999 3002 +2 2999 3002 +1 3002 +1 3002 +1 3002 +1 3002 +1 3002 +1 3002 +4 3004 3131 3132 3225 +4 3004 3131 3132 3225 +4 3004 3131 3132 3225 +4 3004 3131 3132 3225 +4 3004 3131 3132 3225 +4 3004 3131 3132 3225 +4 3005 3310 3312 3407 +4 3005 3310 3312 3407 +4 3005 3310 3312 3407 +4 3005 3310 3312 3407 +4 3005 3310 3312 3407 +4 3005 3310 3312 3407 +1 3052 +1 3052 +1 3052 +1 3052 +1 3052 +1 3052 +2 3052 3054 +2 3052 3054 +2 3052 3054 +2 3052 3054 +2 3052 3054 +2 3052 3054 +2 3054 3057 +2 3054 3057 +2 3054 3057 +2 3054 3057 +2 3054 3057 +2 3054 3057 +1 3057 +1 3057 +1 3057 +1 3057 +1 3057 +1 3057 +2 3057 3060 +2 3057 3060 +2 3057 3060 +2 3057 3060 +2 3057 3060 +2 3057 3060 +1 3060 +1 3060 +1 3060 +1 3060 +1 3060 +1 3060 +4 3062 3130 3131 3234 +4 3062 3130 3131 3234 +4 3062 3130 3131 3234 +4 3062 3130 3131 3234 +4 3062 3130 3131 3234 +4 3062 3130 3131 3234 +4 3063 3308 3310 3418 +4 3063 3308 3310 3418 +4 3063 3308 3310 3418 +4 3063 3308 3310 3418 +4 3063 3308 3310 3418 +4 3063 3308 3310 3418 +1 3110 +1 3110 +1 3110 +1 3110 +1 3110 +1 3110 +2 3110 3112 +2 3110 3112 +2 3110 3112 +2 3110 3112 +2 3110 3112 +2 3110 3112 +2 3112 3115 +2 3112 3115 +2 3112 3115 +2 3112 3115 +2 3112 3115 +2 3112 3115 +1 3115 +1 3115 +1 3115 +1 3115 +1 3115 +1 3115 +2 3115 3118 +2 3115 3118 +2 3115 3118 +2 3115 3118 +2 3115 3118 +2 3115 3118 +1 3118 +1 3118 +1 3118 +1 3118 +1 3118 +1 3118 +3 3120 3130 3243 +3 3120 3130 3243 +3 3120 3130 3243 +3 3120 3130 3243 +3 3120 3130 3243 +3 3120 3130 3243 +2 3121 3212 +2 3121 3212 +2 3121 3212 +2 3121 3212 +2 3121 3212 +2 3121 3212 +3 3121 3125 3126 +3 3121 3125 3126 +3 3121 3125 3126 +3 3121 3125 3126 +3 3121 3125 3126 +3 3121 3125 3126 +10 3121 3125 3126 3134 3135 3164 3165 3243 3244 3245 +10 3121 3125 3126 3134 3135 3164 3165 3243 3244 3245 +10 3121 3125 3126 3134 3135 3164 3165 3243 3244 3245 +10 3121 3125 3126 3134 3135 3164 3165 3243 3244 3245 +10 3121 3125 3126 3134 3135 3164 3165 3243 3244 3245 +10 3121 3125 3126 3134 3135 3164 3165 3243 3244 3245 +3 3121 3135 3245 +3 3121 3135 3245 +3 3121 3135 3245 +3 3121 3135 3245 +3 3121 3135 3245 +3 3121 3135 3245 +2 3122 3212 +2 3122 3212 +2 3122 3212 +2 3122 3212 +2 3122 3212 +2 3122 3212 +3 3122 3126 3127 +3 3122 3126 3127 +3 3122 3126 3127 +3 3122 3126 3127 +3 3122 3126 3127 +3 3122 3126 3127 +10 3122 3126 3127 3142 3143 3165 3166 3244 3245 3246 +10 3122 3126 3127 3142 3143 3165 3166 3244 3245 3246 +10 3122 3126 3127 3142 3143 3165 3166 3244 3245 3246 +10 3122 3126 3127 3142 3143 3165 3166 3244 3245 3246 +10 3122 3126 3127 3142 3143 3165 3166 3244 3245 3246 +10 3122 3126 3127 3142 3143 3165 3166 3244 3245 3246 +3 3122 3143 3245 +3 3122 3143 3245 +3 3122 3143 3245 +3 3122 3143 3245 +3 3122 3143 3245 +3 3122 3143 3245 +2 3123 3213 +2 3123 3213 +2 3123 3213 +2 3123 3213 +2 3123 3213 +2 3123 3213 +3 3123 3128 3129 +3 3123 3128 3129 +3 3123 3128 3129 +3 3123 3128 3129 +3 3123 3128 3129 +3 3123 3128 3129 +10 3123 3128 3129 3152 3153 3167 3168 3247 3248 3249 +10 3123 3128 3129 3152 3153 3167 3168 3247 3248 3249 +10 3123 3128 3129 3152 3153 3167 3168 3247 3248 3249 +10 3123 3128 3129 3152 3153 3167 3168 3247 3248 3249 +10 3123 3128 3129 3152 3153 3167 3168 3247 3248 3249 +10 3123 3128 3129 3152 3153 3167 3168 3247 3248 3249 +3 3123 3153 3249 +3 3123 3153 3249 +3 3123 3153 3249 +3 3123 3153 3249 +3 3123 3153 3249 +3 3123 3153 3249 +2 3124 3213 +2 3124 3213 +2 3124 3213 +2 3124 3213 +2 3124 3213 +2 3124 3213 +10 3124 3129 3158 3159 3168 3169 3248 3249 3250 3251 +10 3124 3129 3158 3159 3168 3169 3248 3249 3250 3251 +10 3124 3129 3158 3159 3168 3169 3248 3249 3250 3251 +10 3124 3129 3158 3159 3168 3169 3248 3249 3250 3251 +10 3124 3129 3158 3159 3168 3169 3248 3249 3250 3251 +10 3124 3129 3158 3159 3168 3169 3248 3249 3250 3251 +2 3124 3129 +2 3124 3129 +2 3124 3129 +2 3124 3129 +2 3124 3129 +2 3124 3129 +4 3124 3159 3249 3251 +4 3124 3159 3249 3251 +4 3124 3159 3249 3251 +4 3124 3159 3249 3251 +4 3124 3159 3249 3251 +4 3124 3159 3249 3251 +3 3125 3164 3243 +3 3125 3164 3243 +3 3125 3164 3243 +3 3125 3164 3243 +3 3125 3164 3243 +3 3125 3164 3243 +4 3126 3165 3244 3245 +4 3126 3165 3244 3245 +4 3126 3165 3244 3245 +4 3126 3165 3244 3245 +4 3126 3165 3244 3245 +4 3126 3165 3244 3245 +2 3127 3128 +2 3127 3128 +2 3127 3128 +2 3127 3128 +2 3127 3128 +2 3127 3128 +7 3127 3128 3148 3166 3167 3246 3247 +7 3127 3128 3148 3166 3167 3246 3247 +7 3127 3128 3148 3166 3167 3246 3247 +7 3127 3128 3148 3166 3167 3246 3247 +7 3127 3128 3148 3166 3167 3246 3247 +7 3127 3128 3148 3166 3167 3246 3247 +3 3127 3166 3246 +3 3127 3166 3246 +3 3127 3166 3246 +3 3127 3166 3246 +3 3127 3166 3246 +3 3127 3166 3246 +3 3128 3167 3247 +3 3128 3167 3247 +3 3128 3167 3247 +3 3128 3167 3247 +3 3128 3167 3247 +3 3128 3167 3247 +4 3129 3168 3248 3249 +4 3129 3168 3248 3249 +4 3129 3168 3248 3249 +4 3129 3168 3248 3249 +4 3129 3168 3248 3249 +4 3129 3168 3248 3249 +11 3134 3135 3136 3137 3164 3165 3170 3171 3234 3235 3236 +11 3134 3135 3136 3137 3164 3165 3170 3171 3234 3235 3236 +11 3134 3135 3136 3137 3164 3165 3170 3171 3234 3235 3236 +11 3134 3135 3136 3137 3164 3165 3170 3171 3234 3235 3236 +11 3134 3135 3136 3137 3164 3165 3170 3171 3234 3235 3236 +11 3134 3135 3136 3137 3164 3165 3170 3171 3234 3235 3236 +4 3134 3136 3234 3235 +4 3134 3136 3234 3235 +4 3134 3136 3234 3235 +4 3134 3136 3234 3235 +4 3134 3136 3234 3235 +4 3134 3136 3234 3235 +8 3134 3136 3186 3187 3192 3193 3234 3235 +8 3134 3136 3186 3187 3192 3193 3234 3235 +8 3134 3136 3186 3187 3192 3193 3234 3235 +8 3134 3136 3186 3187 3192 3193 3234 3235 +8 3134 3136 3186 3187 3192 3193 3234 3235 +8 3134 3136 3186 3187 3192 3193 3234 3235 +5 3134 3186 3187 3243 3244 +5 3134 3186 3187 3243 3244 +5 3134 3186 3187 3243 3244 +5 3134 3186 3187 3243 3244 +5 3134 3186 3187 3243 3244 +5 3134 3186 3187 3243 3244 +3 3134 3186 3187 +3 3134 3186 3187 +3 3134 3186 3187 +3 3134 3186 3187 +3 3134 3186 3187 +3 3134 3186 3187 +3 3134 3243 3244 +3 3134 3243 3244 +3 3134 3243 3244 +3 3134 3243 3244 +3 3134 3243 3244 +3 3134 3243 3244 +4 3134 3135 3164 3165 +4 3134 3135 3164 3165 +4 3134 3135 3164 3165 +4 3134 3135 3164 3165 +4 3134 3135 3164 3165 +4 3134 3135 3164 3165 +3 3135 3137 3236 +3 3135 3137 3236 +3 3135 3137 3236 +3 3135 3137 3236 +3 3135 3137 3236 +3 3135 3137 3236 +10 3136 3137 3138 3139 3170 3171 3176 3177 3225 3226 +10 3136 3137 3138 3139 3170 3171 3176 3177 3225 3226 +10 3136 3137 3138 3139 3170 3171 3176 3177 3225 3226 +10 3136 3137 3138 3139 3170 3171 3176 3177 3225 3226 +10 3136 3137 3138 3139 3170 3171 3176 3177 3225 3226 +10 3136 3137 3138 3139 3170 3171 3176 3177 3225 3226 +4 3136 3138 3225 3226 +4 3136 3138 3225 3226 +4 3136 3138 3225 3226 +4 3136 3138 3225 3226 +4 3136 3138 3225 3226 +4 3136 3138 3225 3226 +8 3136 3138 3192 3193 3198 3199 3225 3226 +8 3136 3138 3192 3193 3198 3199 3225 3226 +8 3136 3138 3192 3193 3198 3199 3225 3226 +8 3136 3138 3192 3193 3198 3199 3225 3226 +8 3136 3138 3192 3193 3198 3199 3225 3226 +8 3136 3138 3192 3193 3198 3199 3225 3226 +3 3136 3192 3193 +3 3136 3192 3193 +3 3136 3192 3193 +3 3136 3192 3193 +3 3136 3192 3193 +3 3136 3192 3193 +4 3136 3137 3170 3171 +4 3136 3137 3170 3171 +4 3136 3137 3170 3171 +4 3136 3137 3170 3171 +4 3136 3137 3170 3171 +4 3136 3137 3170 3171 +2 3137 3139 +2 3137 3139 +2 3137 3139 +2 3137 3139 +2 3137 3139 +2 3137 3139 +3 3138 3198 3199 +3 3138 3198 3199 +3 3138 3198 3199 +3 3138 3198 3199 +3 3138 3198 3199 +3 3138 3198 3199 +10 3138 3139 3140 3176 3177 3198 3199 3204 3205 3222 +10 3138 3139 3140 3176 3177 3198 3199 3204 3205 3222 +10 3138 3139 3140 3176 3177 3198 3199 3204 3205 3222 +10 3138 3139 3140 3176 3177 3198 3199 3204 3205 3222 +10 3138 3139 3140 3176 3177 3198 3199 3204 3205 3222 +10 3138 3139 3140 3176 3177 3198 3199 3204 3205 3222 +4 3138 3139 3176 3177 +4 3138 3139 3176 3177 +4 3138 3139 3176 3177 +4 3138 3139 3176 3177 +4 3138 3139 3176 3177 +4 3138 3139 3176 3177 +3 3139 3140 3222 +3 3139 3140 3222 +3 3139 3140 3222 +3 3139 3140 3222 +3 3139 3140 3222 +3 3139 3140 3222 +4 3140 3141 3218 3219 +4 3140 3141 3218 3219 +4 3140 3141 3218 3219 +4 3140 3141 3218 3219 +4 3140 3141 3218 3219 +4 3140 3141 3218 3219 +8 3140 3141 3204 3205 3208 3209 3218 3219 +8 3140 3141 3204 3205 3208 3209 3218 3219 +8 3140 3141 3204 3205 3208 3209 3218 3219 +8 3140 3141 3204 3205 3208 3209 3218 3219 +8 3140 3141 3204 3205 3208 3209 3218 3219 +8 3140 3141 3204 3205 3208 3209 3218 3219 +3 3140 3204 3205 +3 3140 3204 3205 +3 3140 3204 3205 +3 3140 3204 3205 +3 3140 3204 3205 +3 3140 3204 3205 +3 3141 3214 3215 +3 3141 3214 3215 +3 3141 3214 3215 +3 3141 3214 3215 +3 3141 3214 3215 +3 3141 3214 3215 +5 3141 3208 3209 3214 3215 +5 3141 3208 3209 3214 3215 +5 3141 3208 3209 3214 3215 +5 3141 3208 3209 3214 3215 +5 3141 3208 3209 3214 3215 +5 3141 3208 3209 3214 3215 +3 3141 3208 3209 +3 3141 3208 3209 +3 3141 3208 3209 +3 3141 3208 3209 +3 3141 3208 3209 +3 3141 3208 3209 +10 3142 3143 3144 3165 3166 3171 3172 3235 3236 3237 +10 3142 3143 3144 3165 3166 3171 3172 3235 3236 3237 +10 3142 3143 3144 3165 3166 3171 3172 3235 3236 3237 +10 3142 3143 3144 3165 3166 3171 3172 3235 3236 3237 +10 3142 3143 3144 3165 3166 3171 3172 3235 3236 3237 +10 3142 3143 3144 3165 3166 3171 3172 3235 3236 3237 +4 3142 3144 3235 3237 +4 3142 3144 3235 3237 +4 3142 3144 3235 3237 +4 3142 3144 3235 3237 +4 3142 3144 3235 3237 +4 3142 3144 3235 3237 +8 3142 3144 3187 3188 3193 3194 3235 3237 +8 3142 3144 3187 3188 3193 3194 3235 3237 +8 3142 3144 3187 3188 3193 3194 3235 3237 +8 3142 3144 3187 3188 3193 3194 3235 3237 +8 3142 3144 3187 3188 3193 3194 3235 3237 +8 3142 3144 3187 3188 3193 3194 3235 3237 +5 3142 3187 3188 3244 3246 +5 3142 3187 3188 3244 3246 +5 3142 3187 3188 3244 3246 +5 3142 3187 3188 3244 3246 +5 3142 3187 3188 3244 3246 +5 3142 3187 3188 3244 3246 +3 3142 3187 3188 +3 3142 3187 3188 +3 3142 3187 3188 +3 3142 3187 3188 +3 3142 3187 3188 +3 3142 3187 3188 +3 3142 3244 3246 +3 3142 3244 3246 +3 3142 3244 3246 +3 3142 3244 3246 +3 3142 3244 3246 +3 3142 3244 3246 +4 3142 3143 3165 3166 +4 3142 3143 3165 3166 +4 3142 3143 3165 3166 +4 3142 3143 3165 3166 +4 3142 3143 3165 3166 +4 3142 3143 3165 3166 +2 3143 3236 +2 3143 3236 +2 3143 3236 +2 3143 3236 +2 3143 3236 +2 3143 3236 +8 3144 3145 3171 3172 3177 3178 3226 3227 +8 3144 3145 3171 3172 3177 3178 3226 3227 +8 3144 3145 3171 3172 3177 3178 3226 3227 +8 3144 3145 3171 3172 3177 3178 3226 3227 +8 3144 3145 3171 3172 3177 3178 3226 3227 +8 3144 3145 3171 3172 3177 3178 3226 3227 +4 3144 3145 3226 3227 +4 3144 3145 3226 3227 +4 3144 3145 3226 3227 +4 3144 3145 3226 3227 +4 3144 3145 3226 3227 +4 3144 3145 3226 3227 +8 3144 3145 3193 3194 3199 3200 3226 3227 +8 3144 3145 3193 3194 3199 3200 3226 3227 +8 3144 3145 3193 3194 3199 3200 3226 3227 +8 3144 3145 3193 3194 3199 3200 3226 3227 +8 3144 3145 3193 3194 3199 3200 3226 3227 +8 3144 3145 3193 3194 3199 3200 3226 3227 +3 3144 3193 3194 +3 3144 3193 3194 +3 3144 3193 3194 +3 3144 3193 3194 +3 3144 3193 3194 +3 3144 3193 3194 +3 3144 3171 3172 +3 3144 3171 3172 +3 3144 3171 3172 +3 3144 3171 3172 +3 3144 3171 3172 +3 3144 3171 3172 +3 3145 3199 3200 +3 3145 3199 3200 +3 3145 3199 3200 +3 3145 3199 3200 +3 3145 3199 3200 +3 3145 3199 3200 +9 3145 3146 3177 3178 3199 3200 3205 3206 3222 +9 3145 3146 3177 3178 3199 3200 3205 3206 3222 +9 3145 3146 3177 3178 3199 3200 3205 3206 3222 +9 3145 3146 3177 3178 3199 3200 3205 3206 3222 +9 3145 3146 3177 3178 3199 3200 3205 3206 3222 +9 3145 3146 3177 3178 3199 3200 3205 3206 3222 +3 3145 3177 3178 +3 3145 3177 3178 +3 3145 3177 3178 +3 3145 3177 3178 +3 3145 3177 3178 +3 3145 3177 3178 +4 3146 3147 3219 3220 +4 3146 3147 3219 3220 +4 3146 3147 3219 3220 +4 3146 3147 3219 3220 +4 3146 3147 3219 3220 +4 3146 3147 3219 3220 +8 3146 3147 3205 3206 3209 3210 3219 3220 +8 3146 3147 3205 3206 3209 3210 3219 3220 +8 3146 3147 3205 3206 3209 3210 3219 3220 +8 3146 3147 3205 3206 3209 3210 3219 3220 +8 3146 3147 3205 3206 3209 3210 3219 3220 +8 3146 3147 3205 3206 3209 3210 3219 3220 +3 3146 3205 3206 +3 3146 3205 3206 +3 3146 3205 3206 +3 3146 3205 3206 +3 3146 3205 3206 +3 3146 3205 3206 +2 3146 3222 +2 3146 3222 +2 3146 3222 +2 3146 3222 +2 3146 3222 +2 3146 3222 +3 3147 3215 3216 +3 3147 3215 3216 +3 3147 3215 3216 +3 3147 3215 3216 +3 3147 3215 3216 +3 3147 3215 3216 +5 3147 3209 3210 3215 3216 +5 3147 3209 3210 3215 3216 +5 3147 3209 3210 3215 3216 +5 3147 3209 3210 3215 3216 +5 3147 3209 3210 3215 3216 +5 3147 3209 3210 3215 3216 +3 3147 3209 3210 +3 3147 3209 3210 +3 3147 3209 3210 +3 3147 3209 3210 +3 3147 3209 3210 +3 3147 3209 3210 +8 3148 3149 3166 3167 3172 3173 3237 3238 +8 3148 3149 3166 3167 3172 3173 3237 3238 +8 3148 3149 3166 3167 3172 3173 3237 3238 +8 3148 3149 3166 3167 3172 3173 3237 3238 +8 3148 3149 3166 3167 3172 3173 3237 3238 +8 3148 3149 3166 3167 3172 3173 3237 3238 +4 3148 3149 3237 3238 +4 3148 3149 3237 3238 +4 3148 3149 3237 3238 +4 3148 3149 3237 3238 +4 3148 3149 3237 3238 +4 3148 3149 3237 3238 +8 3148 3149 3188 3189 3194 3195 3237 3238 +8 3148 3149 3188 3189 3194 3195 3237 3238 +8 3148 3149 3188 3189 3194 3195 3237 3238 +8 3148 3149 3188 3189 3194 3195 3237 3238 +8 3148 3149 3188 3189 3194 3195 3237 3238 +8 3148 3149 3188 3189 3194 3195 3237 3238 +5 3148 3188 3189 3246 3247 +5 3148 3188 3189 3246 3247 +5 3148 3188 3189 3246 3247 +5 3148 3188 3189 3246 3247 +5 3148 3188 3189 3246 3247 +5 3148 3188 3189 3246 3247 +3 3148 3188 3189 +3 3148 3188 3189 +3 3148 3188 3189 +3 3148 3188 3189 +3 3148 3188 3189 +3 3148 3188 3189 +3 3148 3246 3247 +3 3148 3246 3247 +3 3148 3246 3247 +3 3148 3246 3247 +3 3148 3246 3247 +3 3148 3246 3247 +3 3148 3166 3167 +3 3148 3166 3167 +3 3148 3166 3167 +3 3148 3166 3167 +3 3148 3166 3167 +3 3148 3166 3167 +9 3149 3150 3172 3173 3178 3179 3227 3229 3233 +9 3149 3150 3172 3173 3178 3179 3227 3229 3233 +9 3149 3150 3172 3173 3178 3179 3227 3229 3233 +9 3149 3150 3172 3173 3178 3179 3227 3229 3233 +9 3149 3150 3172 3173 3178 3179 3227 3229 3233 +9 3149 3150 3172 3173 3178 3179 3227 3229 3233 +4 3149 3150 3227 3233 +4 3149 3150 3227 3233 +4 3149 3150 3227 3233 +4 3149 3150 3227 3233 +4 3149 3150 3227 3233 +4 3149 3150 3227 3233 +8 3149 3150 3194 3195 3200 3201 3227 3233 +8 3149 3150 3194 3195 3200 3201 3227 3233 +8 3149 3150 3194 3195 3200 3201 3227 3233 +8 3149 3150 3194 3195 3200 3201 3227 3233 +8 3149 3150 3194 3195 3200 3201 3227 3233 +8 3149 3150 3194 3195 3200 3201 3227 3233 +3 3149 3194 3195 +3 3149 3194 3195 +3 3149 3194 3195 +3 3149 3194 3195 +3 3149 3194 3195 +3 3149 3194 3195 +3 3149 3172 3173 +3 3149 3172 3173 +3 3149 3172 3173 +3 3149 3172 3173 +3 3149 3172 3173 +3 3149 3172 3173 +3 3150 3200 3201 +3 3150 3200 3201 +3 3150 3200 3201 +3 3150 3200 3201 +3 3150 3200 3201 +3 3150 3200 3201 +8 3150 3178 3179 3200 3201 3206 3207 3223 +8 3150 3178 3179 3200 3201 3206 3207 3223 +8 3150 3178 3179 3200 3201 3206 3207 3223 +8 3150 3178 3179 3200 3201 3206 3207 3223 +8 3150 3178 3179 3200 3201 3206 3207 3223 +8 3150 3178 3179 3200 3201 3206 3207 3223 +3 3150 3178 3179 +3 3150 3178 3179 +3 3150 3178 3179 +3 3150 3178 3179 +3 3150 3178 3179 +3 3150 3178 3179 +3 3151 3216 3217 +3 3151 3216 3217 +3 3151 3216 3217 +3 3151 3216 3217 +3 3151 3216 3217 +3 3151 3216 3217 +5 3151 3210 3211 3216 3217 +5 3151 3210 3211 3216 3217 +5 3151 3210 3211 3216 3217 +5 3151 3210 3211 3216 3217 +5 3151 3210 3211 3216 3217 +5 3151 3210 3211 3216 3217 +7 3151 3206 3207 3210 3211 3220 3221 +7 3151 3206 3207 3210 3211 3220 3221 +7 3151 3206 3207 3210 3211 3220 3221 +7 3151 3206 3207 3210 3211 3220 3221 +7 3151 3206 3207 3210 3211 3220 3221 +7 3151 3206 3207 3210 3211 3220 3221 +3 3151 3210 3211 +3 3151 3210 3211 +3 3151 3210 3211 +3 3151 3210 3211 +3 3151 3210 3211 +3 3151 3210 3211 +3 3151 3220 3221 +3 3151 3220 3221 +3 3151 3220 3221 +3 3151 3220 3221 +3 3151 3220 3221 +3 3151 3220 3221 +11 3152 3153 3154 3155 3167 3168 3173 3174 3238 3239 3240 +11 3152 3153 3154 3155 3167 3168 3173 3174 3238 3239 3240 +11 3152 3153 3154 3155 3167 3168 3173 3174 3238 3239 3240 +11 3152 3153 3154 3155 3167 3168 3173 3174 3238 3239 3240 +11 3152 3153 3154 3155 3167 3168 3173 3174 3238 3239 3240 +11 3152 3153 3154 3155 3167 3168 3173 3174 3238 3239 3240 +4 3152 3154 3238 3239 +4 3152 3154 3238 3239 +4 3152 3154 3238 3239 +4 3152 3154 3238 3239 +4 3152 3154 3238 3239 +4 3152 3154 3238 3239 +8 3152 3154 3189 3190 3195 3196 3238 3239 +8 3152 3154 3189 3190 3195 3196 3238 3239 +8 3152 3154 3189 3190 3195 3196 3238 3239 +8 3152 3154 3189 3190 3195 3196 3238 3239 +8 3152 3154 3189 3190 3195 3196 3238 3239 +8 3152 3154 3189 3190 3195 3196 3238 3239 +5 3152 3189 3190 3247 3248 +5 3152 3189 3190 3247 3248 +5 3152 3189 3190 3247 3248 +5 3152 3189 3190 3247 3248 +5 3152 3189 3190 3247 3248 +5 3152 3189 3190 3247 3248 +3 3152 3189 3190 +3 3152 3189 3190 +3 3152 3189 3190 +3 3152 3189 3190 +3 3152 3189 3190 +3 3152 3189 3190 +3 3152 3247 3248 +3 3152 3247 3248 +3 3152 3247 3248 +3 3152 3247 3248 +3 3152 3247 3248 +3 3152 3247 3248 +4 3152 3153 3167 3168 +4 3152 3153 3167 3168 +4 3152 3153 3167 3168 +4 3152 3153 3167 3168 +4 3152 3153 3167 3168 +4 3152 3153 3167 3168 +3 3153 3155 3240 +3 3153 3155 3240 +3 3153 3155 3240 +3 3153 3155 3240 +3 3153 3155 3240 +3 3153 3155 3240 +3 3154 3195 3196 +3 3154 3195 3196 +3 3154 3195 3196 +3 3154 3195 3196 +3 3154 3195 3196 +3 3154 3195 3196 +14 3154 3155 3156 3173 3174 3179 3195 3196 3201 3202 3229 3231 3232 3233 +14 3154 3155 3156 3173 3174 3179 3195 3196 3201 3202 3229 3231 3232 3233 +14 3154 3155 3156 3173 3174 3179 3195 3196 3201 3202 3229 3231 3232 3233 +14 3154 3155 3156 3173 3174 3179 3195 3196 3201 3202 3229 3231 3232 3233 +14 3154 3155 3156 3173 3174 3179 3195 3196 3201 3202 3229 3231 3232 3233 +14 3154 3155 3156 3173 3174 3179 3195 3196 3201 3202 3229 3231 3232 3233 +4 3154 3155 3173 3174 +4 3154 3155 3173 3174 +4 3154 3155 3173 3174 +4 3154 3155 3173 3174 +4 3154 3155 3173 3174 +4 3154 3155 3173 3174 +4 3155 3156 3229 3231 +4 3155 3156 3229 3231 +4 3155 3156 3229 3231 +4 3155 3156 3229 3231 +4 3155 3156 3229 3231 +4 3155 3156 3229 3231 +4 3156 3179 3201 3202 +4 3156 3179 3201 3202 +4 3156 3179 3201 3202 +4 3156 3179 3201 3202 +4 3156 3179 3201 3202 +4 3156 3179 3201 3202 +9 3156 3157 3179 3180 3201 3202 3207 3223 3224 +9 3156 3157 3179 3180 3201 3202 3207 3223 3224 +9 3156 3157 3179 3180 3201 3202 3207 3223 3224 +9 3156 3157 3179 3180 3201 3202 3207 3223 3224 +9 3156 3157 3179 3180 3201 3202 3207 3223 3224 +9 3156 3157 3179 3180 3201 3202 3207 3223 3224 +2 3156 3157 +2 3156 3157 +2 3156 3157 +2 3156 3157 +2 3156 3157 +2 3156 3157 +4 3157 3180 3223 3224 +4 3157 3180 3223 3224 +4 3157 3180 3223 3224 +4 3157 3180 3223 3224 +4 3157 3180 3223 3224 +4 3157 3180 3223 3224 +13 3158 3159 3160 3161 3162 3168 3169 3174 3175 3239 3240 3241 3242 +13 3158 3159 3160 3161 3162 3168 3169 3174 3175 3239 3240 3241 3242 +13 3158 3159 3160 3161 3162 3168 3169 3174 3175 3239 3240 3241 3242 +13 3158 3159 3160 3161 3162 3168 3169 3174 3175 3239 3240 3241 3242 +13 3158 3159 3160 3161 3162 3168 3169 3174 3175 3239 3240 3241 3242 +13 3158 3159 3160 3161 3162 3168 3169 3174 3175 3239 3240 3241 3242 +4 3158 3160 3239 3241 +4 3158 3160 3239 3241 +4 3158 3160 3239 3241 +4 3158 3160 3239 3241 +4 3158 3160 3239 3241 +4 3158 3160 3239 3241 +8 3158 3160 3190 3191 3196 3197 3239 3241 +8 3158 3160 3190 3191 3196 3197 3239 3241 +8 3158 3160 3190 3191 3196 3197 3239 3241 +8 3158 3160 3190 3191 3196 3197 3239 3241 +8 3158 3160 3190 3191 3196 3197 3239 3241 +8 3158 3160 3190 3191 3196 3197 3239 3241 +5 3158 3190 3191 3248 3250 +5 3158 3190 3191 3248 3250 +5 3158 3190 3191 3248 3250 +5 3158 3190 3191 3248 3250 +5 3158 3190 3191 3248 3250 +5 3158 3190 3191 3248 3250 +3 3158 3190 3191 +3 3158 3190 3191 +3 3158 3190 3191 +3 3158 3190 3191 +3 3158 3190 3191 +3 3158 3190 3191 +3 3158 3248 3250 +3 3158 3248 3250 +3 3158 3248 3250 +3 3158 3248 3250 +3 3158 3248 3250 +3 3158 3248 3250 +4 3158 3159 3168 3169 +4 3158 3159 3168 3169 +4 3158 3159 3168 3169 +4 3158 3159 3168 3169 +4 3158 3159 3168 3169 +4 3158 3159 3168 3169 +4 3159 3162 3240 3242 +4 3159 3162 3240 3242 +4 3159 3162 3240 3242 +4 3159 3162 3240 3242 +4 3159 3162 3240 3242 +4 3159 3162 3240 3242 +3 3160 3196 3197 +3 3160 3196 3197 +3 3160 3196 3197 +3 3160 3196 3197 +3 3160 3196 3197 +3 3160 3196 3197 +8 3160 3161 3174 3175 3196 3197 3230 3232 +8 3160 3161 3174 3175 3196 3197 3230 3232 +8 3160 3161 3174 3175 3196 3197 3230 3232 +8 3160 3161 3174 3175 3196 3197 3230 3232 +8 3160 3161 3174 3175 3196 3197 3230 3232 +8 3160 3161 3174 3175 3196 3197 3230 3232 +4 3160 3161 3174 3175 +4 3160 3161 3174 3175 +4 3160 3161 3174 3175 +4 3160 3161 3174 3175 +4 3160 3161 3174 3175 +4 3160 3161 3174 3175 +9 3161 3162 3163 3202 3203 3228 3230 3231 3232 +9 3161 3162 3163 3202 3203 3228 3230 3231 3232 +9 3161 3162 3163 3202 3203 3228 3230 3231 3232 +9 3161 3162 3163 3202 3203 3228 3230 3231 3232 +9 3161 3162 3163 3202 3203 3228 3230 3231 3232 +9 3161 3162 3163 3202 3203 3228 3230 3231 3232 +3 3161 3230 3232 +3 3161 3230 3232 +3 3161 3230 3232 +3 3161 3230 3232 +3 3161 3230 3232 +3 3161 3230 3232 +2 3161 3162 +2 3161 3162 +2 3161 3162 +2 3161 3162 +2 3161 3162 +2 3161 3162 +4 3162 3163 3228 3231 +4 3162 3163 3228 3231 +4 3162 3163 3228 3231 +4 3162 3163 3228 3231 +4 3162 3163 3228 3231 +4 3162 3163 3228 3231 +3 3163 3202 3203 +3 3163 3202 3203 +3 3163 3202 3203 +3 3163 3202 3203 +3 3163 3202 3203 +3 3163 3202 3203 +3 3164 3170 3234 +3 3164 3170 3234 +3 3164 3170 3234 +3 3164 3170 3234 +3 3164 3170 3234 +3 3164 3170 3234 +4 3165 3171 3235 3236 +4 3165 3171 3235 3236 +4 3165 3171 3235 3236 +4 3165 3171 3235 3236 +4 3165 3171 3235 3236 +4 3165 3171 3235 3236 +3 3166 3172 3237 +3 3166 3172 3237 +3 3166 3172 3237 +3 3166 3172 3237 +3 3166 3172 3237 +3 3166 3172 3237 +3 3167 3173 3238 +3 3167 3173 3238 +3 3167 3173 3238 +3 3167 3173 3238 +3 3167 3173 3238 +3 3167 3173 3238 +4 3168 3174 3239 3240 +4 3168 3174 3239 3240 +4 3168 3174 3239 3240 +4 3168 3174 3239 3240 +4 3168 3174 3239 3240 +4 3168 3174 3239 3240 +8 3169 3175 3182 3183 3184 3185 3241 3242 +8 3169 3175 3182 3183 3184 3185 3241 3242 +8 3169 3175 3182 3183 3184 3185 3241 3242 +8 3169 3175 3182 3183 3184 3185 3241 3242 +8 3169 3175 3182 3183 3184 3185 3241 3242 +8 3169 3175 3182 3183 3184 3185 3241 3242 +3 3169 3182 3183 +3 3169 3182 3183 +3 3169 3182 3183 +3 3169 3182 3183 +3 3169 3182 3183 +3 3169 3182 3183 +5 3169 3182 3183 3250 3251 +5 3169 3182 3183 3250 3251 +5 3169 3182 3183 3250 3251 +5 3169 3182 3183 3250 3251 +5 3169 3182 3183 3250 3251 +5 3169 3182 3183 3250 3251 +3 3169 3250 3251 +3 3169 3250 3251 +3 3169 3250 3251 +3 3169 3250 3251 +3 3169 3250 3251 +3 3169 3250 3251 +4 3169 3175 3241 3242 +4 3169 3175 3241 3242 +4 3169 3175 3241 3242 +4 3169 3175 3241 3242 +4 3169 3175 3241 3242 +4 3169 3175 3241 3242 +3 3170 3176 3225 +3 3170 3176 3225 +3 3170 3176 3225 +3 3170 3176 3225 +3 3170 3176 3225 +3 3170 3176 3225 +3 3171 3177 3226 +3 3171 3177 3226 +3 3171 3177 3226 +3 3171 3177 3226 +3 3171 3177 3226 +3 3171 3177 3226 +3 3172 3178 3227 +3 3172 3178 3227 +3 3172 3178 3227 +3 3172 3178 3227 +3 3172 3178 3227 +3 3172 3178 3227 +4 3173 3179 3229 3233 +4 3173 3179 3229 3233 +4 3173 3179 3229 3233 +4 3173 3179 3229 3233 +4 3173 3179 3229 3233 +4 3173 3179 3229 3233 +3 3174 3196 3232 +3 3174 3196 3232 +3 3174 3196 3232 +3 3174 3196 3232 +3 3174 3196 3232 +3 3174 3196 3232 +5 3175 3184 3185 3197 3230 +5 3175 3184 3185 3197 3230 +5 3175 3184 3185 3197 3230 +5 3175 3184 3185 3197 3230 +5 3175 3184 3185 3197 3230 +5 3175 3184 3185 3197 3230 +3 3175 3184 3185 +3 3175 3184 3185 +3 3175 3184 3185 +3 3175 3184 3185 +3 3175 3184 3185 +3 3175 3184 3185 +3 3175 3197 3230 +3 3175 3197 3230 +3 3175 3197 3230 +3 3175 3197 3230 +3 3175 3197 3230 +3 3175 3197 3230 +3 3176 3198 3204 +3 3176 3198 3204 +3 3176 3198 3204 +3 3176 3198 3204 +3 3176 3198 3204 +3 3176 3198 3204 +4 3177 3199 3205 3222 +4 3177 3199 3205 3222 +4 3177 3199 3205 3222 +4 3177 3199 3205 3222 +4 3177 3199 3205 3222 +4 3177 3199 3205 3222 +3 3178 3200 3206 +3 3178 3200 3206 +3 3178 3200 3206 +3 3178 3200 3206 +3 3178 3200 3206 +3 3178 3200 3206 +4 3179 3201 3207 3223 +4 3179 3201 3207 3223 +4 3179 3201 3207 3223 +4 3179 3201 3207 3223 +4 3179 3201 3207 3223 +4 3179 3201 3207 3223 +3 3180 3181 3221 +3 3180 3181 3221 +3 3180 3181 3221 +3 3180 3181 3221 +3 3180 3181 3221 +3 3180 3181 3221 +5 3180 3181 3207 3211 3221 +5 3180 3181 3207 3211 3221 +5 3180 3181 3207 3211 3221 +5 3180 3181 3207 3211 3221 +5 3180 3181 3207 3211 3221 +5 3180 3181 3207 3211 3221 +2 3180 3207 +2 3180 3207 +2 3180 3207 +2 3180 3207 +2 3180 3207 +2 3180 3207 +3 3181 3211 3217 +3 3181 3211 3217 +3 3181 3211 3217 +3 3181 3211 3217 +3 3181 3211 3217 +3 3181 3211 3217 +2 3181 3211 +2 3181 3211 +2 3181 3211 +2 3181 3211 +2 3181 3211 +2 3181 3211 +2 3181 3217 +2 3181 3217 +2 3181 3217 +2 3181 3217 +2 3181 3217 +2 3181 3217 +3 3182 3184 3241 +3 3182 3184 3241 +3 3182 3184 3241 +3 3182 3184 3241 +3 3182 3184 3241 +3 3182 3184 3241 +5 3182 3184 3191 3197 3241 +5 3182 3184 3191 3197 3241 +5 3182 3184 3191 3197 3241 +5 3182 3184 3191 3197 3241 +5 3182 3184 3191 3197 3241 +5 3182 3184 3191 3197 3241 +2 3182 3191 +2 3182 3191 +2 3182 3191 +2 3182 3191 +2 3182 3191 +2 3182 3191 +3 3182 3191 3250 +3 3182 3191 3250 +3 3182 3191 3250 +3 3182 3191 3250 +3 3182 3191 3250 +2 3182 3250 +2 3182 3250 +2 3182 3250 +2 3182 3250 +2 3182 3250 +2 3182 3250 +3 3183 3185 3242 +3 3183 3185 3242 +3 3183 3185 3242 +3 3183 3185 3242 +3 3183 3185 3242 +3 3183 3185 3242 +2 3183 3251 +2 3183 3251 +2 3183 3251 +2 3183 3251 +2 3183 3251 +2 3183 3251 +2 3184 3197 +2 3184 3197 +2 3184 3197 +2 3184 3197 +2 3184 3197 +2 3184 3197 +2 3185 3230 +2 3185 3230 +2 3185 3230 +2 3185 3230 +2 3185 3230 +2 3185 3230 +2 3186 3243 +2 3186 3243 +2 3186 3243 +2 3186 3243 +2 3186 3243 +2 3186 3243 +3 3186 3192 3234 +3 3186 3192 3234 +3 3186 3192 3234 +3 3186 3192 3234 +3 3186 3192 3234 +3 3186 3192 3234 +2 3187 3244 +2 3187 3244 +2 3187 3244 +2 3187 3244 +2 3187 3244 +2 3187 3244 +3 3187 3193 3235 +3 3187 3193 3235 +3 3187 3193 3235 +3 3187 3193 3235 +3 3187 3193 3235 +3 3187 3193 3235 +2 3188 3246 +2 3188 3246 +2 3188 3246 +2 3188 3246 +2 3188 3246 +2 3188 3246 +3 3188 3194 3237 +3 3188 3194 3237 +3 3188 3194 3237 +3 3188 3194 3237 +3 3188 3194 3237 +3 3188 3194 3237 +2 3189 3247 +2 3189 3247 +2 3189 3247 +2 3189 3247 +2 3189 3247 +2 3189 3247 +3 3189 3195 3238 +3 3189 3195 3238 +3 3189 3195 3238 +3 3189 3195 3238 +3 3189 3195 3238 +3 3189 3195 3238 +2 3190 3248 +2 3190 3248 +2 3190 3248 +2 3190 3248 +2 3190 3248 +2 3190 3248 +3 3190 3196 3239 +3 3190 3196 3239 +3 3190 3196 3239 +3 3190 3196 3239 +3 3190 3196 3239 +3 3190 3196 3239 +2 3191 3250 +2 3191 3250 +2 3191 3250 +2 3191 3250 +2 3191 3250 +2 3191 3250 +3 3191 3197 3241 +3 3191 3197 3241 +3 3191 3197 3241 +3 3191 3197 3241 +3 3191 3197 3241 +3 3191 3197 3241 +3 3192 3198 3225 +3 3192 3198 3225 +3 3192 3198 3225 +3 3192 3198 3225 +3 3192 3198 3225 +3 3192 3198 3225 +3 3193 3199 3226 +3 3193 3199 3226 +3 3193 3199 3226 +3 3193 3199 3226 +3 3193 3199 3226 +3 3193 3199 3226 +3 3194 3200 3227 +3 3194 3200 3227 +3 3194 3200 3227 +3 3194 3200 3227 +3 3194 3200 3227 +3 3194 3200 3227 +3 3195 3201 3233 +3 3195 3201 3233 +3 3195 3201 3233 +3 3195 3201 3233 +3 3195 3201 3233 +3 3195 3201 3233 +3 3202 3231 3232 +3 3202 3231 3232 +3 3202 3231 3232 +3 3202 3231 3232 +3 3202 3231 3232 +3 3202 3231 3232 +2 3202 3224 +2 3202 3224 +2 3202 3224 +2 3202 3224 +2 3202 3224 +2 3202 3224 +3 3203 3228 3230 +3 3203 3228 3230 +3 3203 3228 3230 +3 3203 3228 3230 +3 3203 3228 3230 +3 3203 3228 3230 +3 3204 3208 3218 +3 3204 3208 3218 +3 3204 3208 3218 +3 3204 3208 3218 +3 3204 3208 3218 +3 3204 3208 3218 +3 3205 3209 3219 +3 3205 3209 3219 +3 3205 3209 3219 +3 3205 3209 3219 +3 3205 3209 3219 +3 3205 3209 3219 +2 3206 3207 +2 3206 3207 +2 3206 3207 +2 3206 3207 +2 3206 3207 +2 3206 3207 +3 3206 3210 3220 +3 3206 3210 3220 +3 3206 3210 3220 +3 3206 3210 3220 +3 3206 3210 3220 +3 3206 3210 3220 +3 3207 3211 3221 +3 3207 3211 3221 +3 3207 3211 3221 +3 3207 3211 3221 +3 3207 3211 3221 +3 3207 3211 3221 +2 3208 3214 +2 3208 3214 +2 3208 3214 +2 3208 3214 +2 3208 3214 +2 3208 3214 +2 3209 3215 +2 3209 3215 +2 3209 3215 +2 3209 3215 +2 3209 3215 +2 3209 3215 +2 3210 3216 +2 3210 3216 +2 3210 3216 +2 3210 3216 +2 3210 3216 +2 3210 3216 +2 3211 3217 +2 3211 3217 +2 3211 3217 +2 3211 3217 +2 3211 3217 +2 3211 3217 +1 3223 +1 3223 +1 3223 +1 3223 +1 3223 +1 3223 +1 3229 +1 3229 +1 3229 +1 3229 +1 3229 +1 3229 +4 3252 3269 3423 3425 +4 3252 3269 3423 3425 +4 3252 3269 3423 3425 +4 3252 3269 3423 3425 +4 3252 3269 3423 3425 +4 3252 3269 3423 3425 +8 3252 3257 3268 3269 3422 3423 3424 3425 +8 3252 3257 3268 3269 3422 3423 3424 3425 +8 3252 3257 3268 3269 3422 3423 3424 3425 +8 3252 3257 3268 3269 3422 3423 3424 3425 +8 3252 3257 3268 3269 3422 3423 3424 3425 +8 3252 3257 3268 3269 3422 3423 3424 3425 +2 3252 3257 +2 3252 3257 +2 3252 3257 +2 3252 3257 +2 3252 3257 +2 3252 3257 +2 3252 3371 +2 3252 3371 +2 3252 3371 +2 3252 3371 +2 3252 3371 +2 3252 3371 +4 3253 3279 3425 3427 +4 3253 3279 3425 3427 +4 3253 3279 3425 3427 +4 3253 3279 3425 3427 +4 3253 3279 3425 3427 +4 3253 3279 3425 3427 +11 3253 3257 3258 3278 3279 3318 3319 3424 3425 3426 3427 +11 3253 3257 3258 3278 3279 3318 3319 3424 3425 3426 3427 +11 3253 3257 3258 3278 3279 3318 3319 3424 3425 3426 3427 +11 3253 3257 3258 3278 3279 3318 3319 3424 3425 3426 3427 +11 3253 3257 3258 3278 3279 3318 3319 3424 3425 3426 3427 +11 3253 3257 3258 3278 3279 3318 3319 3424 3425 3426 3427 +3 3253 3257 3258 +3 3253 3257 3258 +3 3253 3257 3258 +3 3253 3257 3258 +3 3253 3257 3258 +3 3253 3257 3258 +3 3253 3371 3375 +3 3253 3371 3375 +3 3253 3371 3375 +3 3253 3371 3375 +3 3253 3371 3375 +3 3253 3371 3375 +4 3254 3289 3427 3429 +4 3254 3289 3427 3429 +4 3254 3289 3427 3429 +4 3254 3289 3427 3429 +4 3254 3289 3427 3429 +4 3254 3289 3427 3429 +11 3254 3258 3259 3288 3289 3319 3320 3426 3427 3428 3429 +11 3254 3258 3259 3288 3289 3319 3320 3426 3427 3428 3429 +11 3254 3258 3259 3288 3289 3319 3320 3426 3427 3428 3429 +11 3254 3258 3259 3288 3289 3319 3320 3426 3427 3428 3429 +11 3254 3258 3259 3288 3289 3319 3320 3426 3427 3428 3429 +11 3254 3258 3259 3288 3289 3319 3320 3426 3427 3428 3429 +3 3254 3258 3259 +3 3254 3258 3259 +3 3254 3258 3259 +3 3254 3258 3259 +3 3254 3258 3259 +3 3254 3258 3259 +3 3254 3374 3375 +3 3254 3374 3375 +3 3254 3374 3375 +3 3254 3374 3375 +3 3254 3374 3375 +3 3254 3374 3375 +4 3255 3299 3429 3431 +4 3255 3299 3429 3431 +4 3255 3299 3429 3431 +4 3255 3299 3429 3431 +4 3255 3299 3429 3431 +4 3255 3299 3429 3431 +11 3255 3259 3260 3298 3299 3320 3321 3428 3429 3430 3431 +11 3255 3259 3260 3298 3299 3320 3321 3428 3429 3430 3431 +11 3255 3259 3260 3298 3299 3320 3321 3428 3429 3430 3431 +11 3255 3259 3260 3298 3299 3320 3321 3428 3429 3430 3431 +11 3255 3259 3260 3298 3299 3320 3321 3428 3429 3430 3431 +11 3255 3259 3260 3298 3299 3320 3321 3428 3429 3430 3431 +3 3255 3259 3260 +3 3255 3259 3260 +3 3255 3259 3260 +3 3255 3259 3260 +3 3255 3259 3260 +3 3255 3259 3260 +3 3255 3373 3374 +3 3255 3373 3374 +3 3255 3373 3374 +3 3255 3373 3374 +3 3255 3373 3374 +3 3255 3373 3374 +3 3256 3309 3431 +3 3256 3309 3431 +3 3256 3309 3431 +3 3256 3309 3431 +3 3256 3309 3431 +3 3256 3309 3431 +7 3256 3260 3308 3309 3321 3430 3431 +7 3256 3260 3308 3309 3321 3430 3431 +7 3256 3260 3308 3309 3321 3430 3431 +7 3256 3260 3308 3309 3321 3430 3431 +7 3256 3260 3308 3309 3321 3430 3431 +7 3256 3260 3308 3309 3321 3430 3431 +2 3256 3260 +2 3256 3260 +2 3256 3260 +2 3256 3260 +2 3256 3260 +2 3256 3260 +2 3256 3373 +2 3256 3373 +2 3256 3373 +2 3256 3373 +2 3256 3373 +2 3256 3373 +3 3257 3424 3425 +3 3257 3424 3425 +3 3257 3424 3425 +3 3257 3424 3425 +3 3257 3424 3425 +3 3257 3424 3425 +4 3258 3319 3426 3427 +4 3258 3319 3426 3427 +4 3258 3319 3426 3427 +4 3258 3319 3426 3427 +4 3258 3319 3426 3427 +4 3258 3319 3426 3427 +4 3259 3320 3428 3429 +4 3259 3320 3428 3429 +4 3259 3320 3428 3429 +4 3259 3320 3428 3429 +4 3259 3320 3428 3429 +4 3259 3320 3428 3429 +4 3260 3321 3430 3431 +4 3260 3321 3430 3431 +4 3260 3321 3430 3431 +4 3260 3321 3430 3431 +4 3260 3321 3430 3431 +4 3260 3321 3430 3431 +10 3261 3262 3263 3335 3336 3341 3342 3408 3409 3410 +10 3261 3262 3263 3335 3336 3341 3342 3408 3409 3410 +10 3261 3262 3263 3335 3336 3341 3342 3408 3409 3410 +10 3261 3262 3263 3335 3336 3341 3342 3408 3409 3410 +10 3261 3262 3263 3335 3336 3341 3342 3408 3409 3410 +10 3261 3262 3263 3335 3336 3341 3342 3408 3409 3410 +3 3261 3335 3336 +3 3261 3335 3336 +3 3261 3335 3336 +3 3261 3335 3336 +3 3261 3335 3336 +3 3261 3335 3336 +5 3261 3335 3336 3420 3422 +5 3261 3335 3336 3420 3422 +5 3261 3335 3336 3420 3422 +5 3261 3335 3336 3420 3422 +5 3261 3335 3336 3420 3422 +5 3261 3335 3336 3420 3422 +6 3261 3262 3420 3421 3422 3423 +6 3261 3262 3420 3421 3422 3423 +6 3261 3262 3420 3421 3422 3423 +6 3261 3262 3420 3421 3422 3423 +6 3261 3262 3420 3421 3422 3423 +6 3261 3262 3420 3421 3422 3423 +3 3261 3420 3422 +3 3261 3420 3422 +3 3261 3420 3422 +3 3261 3420 3422 +3 3261 3420 3422 +3 3261 3420 3422 +2 3261 3262 +2 3261 3262 +2 3261 3262 +2 3261 3262 +2 3261 3262 +2 3261 3262 +4 3262 3263 3408 3410 +4 3262 3263 3408 3410 +4 3262 3263 3408 3410 +4 3262 3263 3408 3410 +4 3262 3263 3408 3410 +4 3262 3263 3408 3410 +3 3262 3421 3423 +3 3262 3421 3423 +3 3262 3421 3423 +3 3262 3421 3423 +3 3262 3421 3423 +3 3262 3421 3423 +9 3263 3264 3341 3342 3347 3348 3397 3398 3399 +9 3263 3264 3341 3342 3347 3348 3397 3398 3399 +9 3263 3264 3341 3342 3347 3348 3397 3398 3399 +9 3263 3264 3341 3342 3347 3348 3397 3398 3399 +9 3263 3264 3341 3342 3347 3348 3397 3398 3399 +9 3263 3264 3341 3342 3347 3348 3397 3398 3399 +4 3263 3264 3397 3399 +4 3263 3264 3397 3399 +4 3263 3264 3397 3399 +4 3263 3264 3397 3399 +4 3263 3264 3397 3399 +4 3263 3264 3397 3399 +3 3263 3341 3342 +3 3263 3341 3342 +3 3263 3341 3342 +3 3263 3341 3342 +3 3263 3341 3342 +3 3263 3341 3342 +3 3264 3347 3348 +3 3264 3347 3348 +3 3264 3347 3348 +3 3264 3347 3348 +3 3264 3347 3348 +3 3264 3347 3348 +4 3265 3266 3383 3384 +4 3265 3266 3383 3384 +4 3265 3266 3383 3384 +4 3265 3266 3383 3384 +4 3265 3266 3383 3384 +4 3265 3266 3383 3384 +8 3265 3266 3353 3354 3359 3360 3383 3384 +8 3265 3266 3353 3354 3359 3360 3383 3384 +8 3265 3266 3353 3354 3359 3360 3383 3384 +8 3265 3266 3353 3354 3359 3360 3383 3384 +8 3265 3266 3353 3354 3359 3360 3383 3384 +8 3265 3266 3353 3354 3359 3360 3383 3384 +3 3265 3353 3354 +3 3265 3353 3354 +3 3265 3353 3354 +3 3265 3353 3354 +3 3265 3353 3354 +3 3265 3353 3354 +4 3266 3267 3377 3378 +4 3266 3267 3377 3378 +4 3266 3267 3377 3378 +4 3266 3267 3377 3378 +4 3266 3267 3377 3378 +4 3266 3267 3377 3378 +8 3266 3267 3359 3360 3365 3366 3377 3378 +8 3266 3267 3359 3360 3365 3366 3377 3378 +8 3266 3267 3359 3360 3365 3366 3377 3378 +8 3266 3267 3359 3360 3365 3366 3377 3378 +8 3266 3267 3359 3360 3365 3366 3377 3378 +8 3266 3267 3359 3360 3365 3366 3377 3378 +3 3266 3359 3360 +3 3266 3359 3360 +3 3266 3359 3360 +3 3266 3359 3360 +3 3266 3359 3360 +3 3266 3359 3360 +3 3267 3365 3366 +3 3267 3365 3366 +3 3267 3365 3366 +3 3267 3365 3366 +3 3267 3365 3366 +3 3267 3365 3366 +8 3268 3269 3270 3271 3408 3409 3412 3413 +8 3268 3269 3270 3271 3408 3409 3412 3413 +8 3268 3269 3270 3271 3408 3409 3412 3413 +8 3268 3269 3270 3271 3408 3409 3412 3413 +8 3268 3269 3270 3271 3408 3409 3412 3413 +8 3268 3269 3270 3271 3408 3409 3412 3413 +4 3268 3270 3409 3412 +4 3268 3270 3409 3412 +4 3268 3270 3409 3412 +4 3268 3270 3409 3412 +4 3268 3270 3409 3412 +4 3268 3270 3409 3412 +10 3268 3270 3318 3322 3336 3337 3342 3343 3409 3412 +10 3268 3270 3318 3322 3336 3337 3342 3343 3409 3412 +10 3268 3270 3318 3322 3336 3337 3342 3343 3409 3412 +10 3268 3270 3318 3322 3336 3337 3342 3343 3409 3412 +10 3268 3270 3318 3322 3336 3337 3342 3343 3409 3412 +10 3268 3270 3318 3322 3336 3337 3342 3343 3409 3412 +4 3268 3318 3336 3337 +4 3268 3318 3336 3337 +4 3268 3318 3336 3337 +4 3268 3318 3336 3337 +4 3268 3318 3336 3337 +4 3268 3318 3336 3337 +6 3268 3318 3336 3337 3422 3424 +6 3268 3318 3336 3337 3422 3424 +6 3268 3318 3336 3337 3422 3424 +6 3268 3318 3336 3337 3422 3424 +6 3268 3318 3336 3337 3422 3424 +6 3268 3318 3336 3337 3422 3424 +3 3268 3422 3424 +3 3268 3422 3424 +3 3268 3422 3424 +3 3268 3422 3424 +3 3268 3422 3424 +3 3268 3422 3424 +2 3268 3269 +2 3268 3269 +2 3268 3269 +2 3268 3269 +2 3268 3269 +2 3268 3269 +4 3269 3271 3408 3413 +4 3269 3271 3408 3413 +4 3269 3271 3408 3413 +4 3269 3271 3408 3413 +4 3269 3271 3408 3413 +4 3269 3271 3408 3413 +8 3270 3271 3272 3273 3397 3398 3401 3402 +8 3270 3271 3272 3273 3397 3398 3401 3402 +8 3270 3271 3272 3273 3397 3398 3401 3402 +8 3270 3271 3272 3273 3397 3398 3401 3402 +8 3270 3271 3272 3273 3397 3398 3401 3402 +8 3270 3271 3272 3273 3397 3398 3401 3402 +4 3270 3272 3398 3401 +4 3270 3272 3398 3401 +4 3270 3272 3398 3401 +4 3270 3272 3398 3401 +4 3270 3272 3398 3401 +4 3270 3272 3398 3401 +10 3270 3272 3322 3326 3342 3343 3348 3349 3398 3401 +10 3270 3272 3322 3326 3342 3343 3348 3349 3398 3401 +10 3270 3272 3322 3326 3342 3343 3348 3349 3398 3401 +10 3270 3272 3322 3326 3342 3343 3348 3349 3398 3401 +10 3270 3272 3322 3326 3342 3343 3348 3349 3398 3401 +10 3270 3272 3322 3326 3342 3343 3348 3349 3398 3401 +4 3270 3322 3342 3343 +4 3270 3322 3342 3343 +4 3270 3322 3342 3343 +4 3270 3322 3342 3343 +4 3270 3322 3342 3343 +4 3270 3322 3342 3343 +2 3270 3271 +2 3270 3271 +2 3270 3271 +2 3270 3271 +2 3270 3271 +2 3270 3271 +4 3271 3273 3397 3402 +4 3271 3273 3397 3402 +4 3271 3273 3397 3402 +4 3271 3273 3397 3402 +4 3271 3273 3397 3402 +4 3271 3273 3397 3402 +8 3272 3274 3348 3349 3354 3355 3389 3390 +8 3272 3274 3348 3349 3354 3355 3389 3390 +8 3272 3274 3348 3349 3354 3355 3389 3390 +8 3272 3274 3348 3349 3354 3355 3389 3390 +8 3272 3274 3348 3349 3354 3355 3389 3390 +8 3272 3274 3348 3349 3354 3355 3389 3390 +3 3272 3348 3349 +3 3272 3348 3349 +3 3272 3348 3349 +3 3272 3348 3349 +3 3272 3348 3349 +3 3272 3348 3349 +2 3272 3273 +2 3272 3273 +2 3272 3273 +2 3272 3273 +2 3272 3273 +2 3272 3273 +4 3272 3274 3389 3390 +4 3272 3274 3389 3390 +4 3272 3274 3389 3390 +4 3272 3274 3389 3390 +4 3272 3274 3389 3390 +4 3272 3274 3389 3390 +10 3274 3275 3276 3330 3354 3355 3360 3361 3384 3385 +10 3274 3275 3276 3330 3354 3355 3360 3361 3384 3385 +10 3274 3275 3276 3330 3354 3355 3360 3361 3384 3385 +10 3274 3275 3276 3330 3354 3355 3360 3361 3384 3385 +10 3274 3275 3276 3330 3354 3355 3360 3361 3384 3385 +10 3274 3275 3276 3330 3354 3355 3360 3361 3384 3385 +3 3274 3354 3355 +3 3274 3354 3355 +3 3274 3354 3355 +3 3274 3354 3355 +3 3274 3354 3355 +3 3274 3354 3355 +3 3274 3275 3330 +3 3274 3275 3330 +3 3274 3275 3330 +3 3274 3275 3330 +3 3274 3275 3330 +3 3274 3275 3330 +4 3275 3276 3384 3385 +4 3275 3276 3384 3385 +4 3275 3276 3384 3385 +4 3275 3276 3384 3385 +4 3275 3276 3384 3385 +4 3275 3276 3384 3385 +4 3276 3277 3378 3379 +4 3276 3277 3378 3379 +4 3276 3277 3378 3379 +4 3276 3277 3378 3379 +4 3276 3277 3378 3379 +4 3276 3277 3378 3379 +8 3276 3277 3360 3361 3366 3367 3378 3379 +8 3276 3277 3360 3361 3366 3367 3378 3379 +8 3276 3277 3360 3361 3366 3367 3378 3379 +8 3276 3277 3360 3361 3366 3367 3378 3379 +8 3276 3277 3360 3361 3366 3367 3378 3379 +8 3276 3277 3360 3361 3366 3367 3378 3379 +3 3276 3360 3361 +3 3276 3360 3361 +3 3276 3360 3361 +3 3276 3360 3361 +3 3276 3360 3361 +3 3276 3360 3361 +3 3277 3366 3367 +3 3277 3366 3367 +3 3277 3366 3367 +3 3277 3366 3367 +3 3277 3366 3367 +3 3277 3366 3367 +12 3278 3279 3280 3281 3318 3319 3322 3323 3412 3413 3414 3415 +12 3278 3279 3280 3281 3318 3319 3322 3323 3412 3413 3414 3415 +12 3278 3279 3280 3281 3318 3319 3322 3323 3412 3413 3414 3415 +12 3278 3279 3280 3281 3318 3319 3322 3323 3412 3413 3414 3415 +12 3278 3279 3280 3281 3318 3319 3322 3323 3412 3413 3414 3415 +12 3278 3279 3280 3281 3318 3319 3322 3323 3412 3413 3414 3415 +4 3278 3280 3412 3414 +4 3278 3280 3412 3414 +4 3278 3280 3412 3414 +4 3278 3280 3412 3414 +4 3278 3280 3412 3414 +4 3278 3280 3412 3414 +8 3278 3280 3337 3338 3343 3344 3412 3414 +8 3278 3280 3337 3338 3343 3344 3412 3414 +8 3278 3280 3337 3338 3343 3344 3412 3414 +8 3278 3280 3337 3338 3343 3344 3412 3414 +8 3278 3280 3337 3338 3343 3344 3412 3414 +8 3278 3280 3337 3338 3343 3344 3412 3414 +3 3278 3337 3338 +3 3278 3337 3338 +3 3278 3337 3338 +3 3278 3337 3338 +3 3278 3337 3338 +3 3278 3337 3338 +5 3278 3337 3338 3424 3426 +5 3278 3337 3338 3424 3426 +5 3278 3337 3338 3424 3426 +5 3278 3337 3338 3424 3426 +5 3278 3337 3338 3424 3426 +5 3278 3337 3338 3424 3426 +3 3278 3424 3426 +3 3278 3424 3426 +3 3278 3424 3426 +3 3278 3424 3426 +3 3278 3424 3426 +3 3278 3424 3426 +4 3278 3279 3318 3319 +4 3278 3279 3318 3319 +4 3278 3279 3318 3319 +4 3278 3279 3318 3319 +4 3278 3279 3318 3319 +4 3278 3279 3318 3319 +4 3279 3281 3413 3415 +4 3279 3281 3413 3415 +4 3279 3281 3413 3415 +4 3279 3281 3413 3415 +4 3279 3281 3413 3415 +4 3279 3281 3413 3415 +12 3280 3281 3282 3283 3322 3323 3326 3327 3401 3402 3403 3404 +12 3280 3281 3282 3283 3322 3323 3326 3327 3401 3402 3403 3404 +12 3280 3281 3282 3283 3322 3323 3326 3327 3401 3402 3403 3404 +12 3280 3281 3282 3283 3322 3323 3326 3327 3401 3402 3403 3404 +12 3280 3281 3282 3283 3322 3323 3326 3327 3401 3402 3403 3404 +12 3280 3281 3282 3283 3322 3323 3326 3327 3401 3402 3403 3404 +4 3280 3282 3401 3403 +4 3280 3282 3401 3403 +4 3280 3282 3401 3403 +4 3280 3282 3401 3403 +4 3280 3282 3401 3403 +4 3280 3282 3401 3403 +8 3280 3282 3343 3344 3349 3350 3401 3403 +8 3280 3282 3343 3344 3349 3350 3401 3403 +8 3280 3282 3343 3344 3349 3350 3401 3403 +8 3280 3282 3343 3344 3349 3350 3401 3403 +8 3280 3282 3343 3344 3349 3350 3401 3403 +8 3280 3282 3343 3344 3349 3350 3401 3403 +3 3280 3343 3344 +3 3280 3343 3344 +3 3280 3343 3344 +3 3280 3343 3344 +3 3280 3343 3344 +3 3280 3343 3344 +4 3280 3281 3322 3323 +4 3280 3281 3322 3323 +4 3280 3281 3322 3323 +4 3280 3281 3322 3323 +4 3280 3281 3322 3323 +4 3280 3281 3322 3323 +4 3281 3283 3402 3404 +4 3281 3283 3402 3404 +4 3281 3283 3402 3404 +4 3281 3283 3402 3404 +4 3281 3283 3402 3404 +4 3281 3283 3402 3404 +12 3282 3283 3284 3285 3326 3327 3330 3331 3388 3389 3392 3393 +12 3282 3283 3284 3285 3326 3327 3330 3331 3388 3389 3392 3393 +12 3282 3283 3284 3285 3326 3327 3330 3331 3388 3389 3392 3393 +12 3282 3283 3284 3285 3326 3327 3330 3331 3388 3389 3392 3393 +12 3282 3283 3284 3285 3326 3327 3330 3331 3388 3389 3392 3393 +12 3282 3283 3284 3285 3326 3327 3330 3331 3388 3389 3392 3393 +4 3282 3284 3389 3392 +4 3282 3284 3389 3392 +4 3282 3284 3389 3392 +4 3282 3284 3389 3392 +4 3282 3284 3389 3392 +4 3282 3284 3389 3392 +8 3282 3284 3349 3350 3355 3356 3389 3392 +8 3282 3284 3349 3350 3355 3356 3389 3392 +8 3282 3284 3349 3350 3355 3356 3389 3392 +8 3282 3284 3349 3350 3355 3356 3389 3392 +8 3282 3284 3349 3350 3355 3356 3389 3392 +8 3282 3284 3349 3350 3355 3356 3389 3392 +3 3282 3349 3350 +3 3282 3349 3350 +3 3282 3349 3350 +3 3282 3349 3350 +3 3282 3349 3350 +3 3282 3349 3350 +4 3282 3283 3326 3327 +4 3282 3283 3326 3327 +4 3282 3283 3326 3327 +4 3282 3283 3326 3327 +4 3282 3283 3326 3327 +4 3282 3283 3326 3327 +4 3283 3285 3388 3393 +4 3283 3285 3388 3393 +4 3283 3285 3388 3393 +4 3283 3285 3388 3393 +4 3283 3285 3388 3393 +4 3283 3285 3388 3393 +11 3284 3285 3286 3330 3331 3355 3356 3361 3362 3385 3386 +11 3284 3285 3286 3330 3331 3355 3356 3361 3362 3385 3386 +11 3284 3285 3286 3330 3331 3355 3356 3361 3362 3385 3386 +11 3284 3285 3286 3330 3331 3355 3356 3361 3362 3385 3386 +11 3284 3285 3286 3330 3331 3355 3356 3361 3362 3385 3386 +11 3284 3285 3286 3330 3331 3355 3356 3361 3362 3385 3386 +3 3284 3355 3356 +3 3284 3355 3356 +3 3284 3355 3356 +3 3284 3355 3356 +3 3284 3355 3356 +3 3284 3355 3356 +4 3284 3285 3330 3331 +4 3284 3285 3330 3331 +4 3284 3285 3330 3331 +4 3284 3285 3330 3331 +4 3284 3285 3330 3331 +4 3284 3285 3330 3331 +4 3285 3286 3385 3386 +4 3285 3286 3385 3386 +4 3285 3286 3385 3386 +4 3285 3286 3385 3386 +4 3285 3286 3385 3386 +4 3285 3286 3385 3386 +4 3286 3287 3379 3380 +4 3286 3287 3379 3380 +4 3286 3287 3379 3380 +4 3286 3287 3379 3380 +4 3286 3287 3379 3380 +4 3286 3287 3379 3380 +8 3286 3287 3361 3362 3367 3368 3379 3380 +8 3286 3287 3361 3362 3367 3368 3379 3380 +8 3286 3287 3361 3362 3367 3368 3379 3380 +8 3286 3287 3361 3362 3367 3368 3379 3380 +8 3286 3287 3361 3362 3367 3368 3379 3380 +8 3286 3287 3361 3362 3367 3368 3379 3380 +3 3286 3361 3362 +3 3286 3361 3362 +3 3286 3361 3362 +3 3286 3361 3362 +3 3286 3361 3362 +3 3286 3361 3362 +3 3287 3367 3368 +3 3287 3367 3368 +3 3287 3367 3368 +3 3287 3367 3368 +3 3287 3367 3368 +3 3287 3367 3368 +12 3288 3289 3290 3291 3319 3320 3323 3324 3414 3415 3416 3417 +12 3288 3289 3290 3291 3319 3320 3323 3324 3414 3415 3416 3417 +12 3288 3289 3290 3291 3319 3320 3323 3324 3414 3415 3416 3417 +12 3288 3289 3290 3291 3319 3320 3323 3324 3414 3415 3416 3417 +12 3288 3289 3290 3291 3319 3320 3323 3324 3414 3415 3416 3417 +12 3288 3289 3290 3291 3319 3320 3323 3324 3414 3415 3416 3417 +4 3288 3290 3414 3416 +4 3288 3290 3414 3416 +4 3288 3290 3414 3416 +4 3288 3290 3414 3416 +4 3288 3290 3414 3416 +4 3288 3290 3414 3416 +8 3288 3290 3338 3339 3344 3345 3414 3416 +8 3288 3290 3338 3339 3344 3345 3414 3416 +8 3288 3290 3338 3339 3344 3345 3414 3416 +8 3288 3290 3338 3339 3344 3345 3414 3416 +8 3288 3290 3338 3339 3344 3345 3414 3416 +8 3288 3290 3338 3339 3344 3345 3414 3416 +3 3288 3338 3339 +3 3288 3338 3339 +3 3288 3338 3339 +3 3288 3338 3339 +3 3288 3338 3339 +3 3288 3338 3339 +5 3288 3338 3339 3426 3428 +5 3288 3338 3339 3426 3428 +5 3288 3338 3339 3426 3428 +5 3288 3338 3339 3426 3428 +5 3288 3338 3339 3426 3428 +5 3288 3338 3339 3426 3428 +3 3288 3426 3428 +3 3288 3426 3428 +3 3288 3426 3428 +3 3288 3426 3428 +3 3288 3426 3428 +3 3288 3426 3428 +4 3288 3289 3319 3320 +4 3288 3289 3319 3320 +4 3288 3289 3319 3320 +4 3288 3289 3319 3320 +4 3288 3289 3319 3320 +4 3288 3289 3319 3320 +4 3289 3291 3415 3417 +4 3289 3291 3415 3417 +4 3289 3291 3415 3417 +4 3289 3291 3415 3417 +4 3289 3291 3415 3417 +4 3289 3291 3415 3417 +12 3290 3291 3292 3293 3323 3324 3327 3328 3403 3404 3405 3406 +12 3290 3291 3292 3293 3323 3324 3327 3328 3403 3404 3405 3406 +12 3290 3291 3292 3293 3323 3324 3327 3328 3403 3404 3405 3406 +12 3290 3291 3292 3293 3323 3324 3327 3328 3403 3404 3405 3406 +12 3290 3291 3292 3293 3323 3324 3327 3328 3403 3404 3405 3406 +12 3290 3291 3292 3293 3323 3324 3327 3328 3403 3404 3405 3406 +4 3290 3292 3403 3405 +4 3290 3292 3403 3405 +4 3290 3292 3403 3405 +4 3290 3292 3403 3405 +4 3290 3292 3403 3405 +4 3290 3292 3403 3405 +8 3290 3292 3344 3345 3350 3351 3403 3405 +8 3290 3292 3344 3345 3350 3351 3403 3405 +8 3290 3292 3344 3345 3350 3351 3403 3405 +8 3290 3292 3344 3345 3350 3351 3403 3405 +8 3290 3292 3344 3345 3350 3351 3403 3405 +8 3290 3292 3344 3345 3350 3351 3403 3405 +3 3290 3344 3345 +3 3290 3344 3345 +3 3290 3344 3345 +3 3290 3344 3345 +3 3290 3344 3345 +3 3290 3344 3345 +4 3290 3291 3323 3324 +4 3290 3291 3323 3324 +4 3290 3291 3323 3324 +4 3290 3291 3323 3324 +4 3290 3291 3323 3324 +4 3290 3291 3323 3324 +4 3291 3293 3404 3406 +4 3291 3293 3404 3406 +4 3291 3293 3404 3406 +4 3291 3293 3404 3406 +4 3291 3293 3404 3406 +4 3291 3293 3404 3406 +12 3292 3293 3294 3295 3327 3328 3331 3332 3392 3393 3394 3395 +12 3292 3293 3294 3295 3327 3328 3331 3332 3392 3393 3394 3395 +12 3292 3293 3294 3295 3327 3328 3331 3332 3392 3393 3394 3395 +12 3292 3293 3294 3295 3327 3328 3331 3332 3392 3393 3394 3395 +12 3292 3293 3294 3295 3327 3328 3331 3332 3392 3393 3394 3395 +12 3292 3293 3294 3295 3327 3328 3331 3332 3392 3393 3394 3395 +4 3292 3294 3392 3394 +4 3292 3294 3392 3394 +4 3292 3294 3392 3394 +4 3292 3294 3392 3394 +4 3292 3294 3392 3394 +4 3292 3294 3392 3394 +8 3292 3294 3350 3351 3356 3357 3392 3394 +8 3292 3294 3350 3351 3356 3357 3392 3394 +8 3292 3294 3350 3351 3356 3357 3392 3394 +8 3292 3294 3350 3351 3356 3357 3392 3394 +8 3292 3294 3350 3351 3356 3357 3392 3394 +8 3292 3294 3350 3351 3356 3357 3392 3394 +3 3292 3350 3351 +3 3292 3350 3351 +3 3292 3350 3351 +3 3292 3350 3351 +3 3292 3350 3351 +3 3292 3350 3351 +4 3292 3293 3327 3328 +4 3292 3293 3327 3328 +4 3292 3293 3327 3328 +4 3292 3293 3327 3328 +4 3292 3293 3327 3328 +4 3292 3293 3327 3328 +4 3293 3295 3393 3395 +4 3293 3295 3393 3395 +4 3293 3295 3393 3395 +4 3293 3295 3393 3395 +4 3293 3295 3393 3395 +4 3293 3295 3393 3395 +11 3294 3295 3296 3331 3332 3356 3357 3362 3363 3386 3387 +11 3294 3295 3296 3331 3332 3356 3357 3362 3363 3386 3387 +11 3294 3295 3296 3331 3332 3356 3357 3362 3363 3386 3387 +11 3294 3295 3296 3331 3332 3356 3357 3362 3363 3386 3387 +11 3294 3295 3296 3331 3332 3356 3357 3362 3363 3386 3387 +11 3294 3295 3296 3331 3332 3356 3357 3362 3363 3386 3387 +3 3294 3356 3357 +3 3294 3356 3357 +3 3294 3356 3357 +3 3294 3356 3357 +3 3294 3356 3357 +3 3294 3356 3357 +4 3294 3295 3331 3332 +4 3294 3295 3331 3332 +4 3294 3295 3331 3332 +4 3294 3295 3331 3332 +4 3294 3295 3331 3332 +4 3294 3295 3331 3332 +4 3295 3296 3386 3387 +4 3295 3296 3386 3387 +4 3295 3296 3386 3387 +4 3295 3296 3386 3387 +4 3295 3296 3386 3387 +4 3295 3296 3386 3387 +4 3296 3297 3380 3381 +4 3296 3297 3380 3381 +4 3296 3297 3380 3381 +4 3296 3297 3380 3381 +4 3296 3297 3380 3381 +4 3296 3297 3380 3381 +8 3296 3297 3362 3363 3368 3369 3380 3381 +8 3296 3297 3362 3363 3368 3369 3380 3381 +8 3296 3297 3362 3363 3368 3369 3380 3381 +8 3296 3297 3362 3363 3368 3369 3380 3381 +8 3296 3297 3362 3363 3368 3369 3380 3381 +8 3296 3297 3362 3363 3368 3369 3380 3381 +3 3296 3362 3363 +3 3296 3362 3363 +3 3296 3362 3363 +3 3296 3362 3363 +3 3296 3362 3363 +3 3296 3362 3363 +3 3297 3368 3369 +3 3297 3368 3369 +3 3297 3368 3369 +3 3297 3368 3369 +3 3297 3368 3369 +3 3297 3368 3369 +12 3298 3299 3300 3301 3320 3321 3324 3325 3416 3417 3418 3419 +12 3298 3299 3300 3301 3320 3321 3324 3325 3416 3417 3418 3419 +12 3298 3299 3300 3301 3320 3321 3324 3325 3416 3417 3418 3419 +12 3298 3299 3300 3301 3320 3321 3324 3325 3416 3417 3418 3419 +12 3298 3299 3300 3301 3320 3321 3324 3325 3416 3417 3418 3419 +12 3298 3299 3300 3301 3320 3321 3324 3325 3416 3417 3418 3419 +4 3298 3300 3416 3418 +4 3298 3300 3416 3418 +4 3298 3300 3416 3418 +4 3298 3300 3416 3418 +4 3298 3300 3416 3418 +4 3298 3300 3416 3418 +8 3298 3300 3339 3340 3345 3346 3416 3418 +8 3298 3300 3339 3340 3345 3346 3416 3418 +8 3298 3300 3339 3340 3345 3346 3416 3418 +8 3298 3300 3339 3340 3345 3346 3416 3418 +8 3298 3300 3339 3340 3345 3346 3416 3418 +8 3298 3300 3339 3340 3345 3346 3416 3418 +3 3298 3339 3340 +3 3298 3339 3340 +3 3298 3339 3340 +3 3298 3339 3340 +3 3298 3339 3340 +3 3298 3339 3340 +5 3298 3339 3340 3428 3430 +5 3298 3339 3340 3428 3430 +5 3298 3339 3340 3428 3430 +5 3298 3339 3340 3428 3430 +5 3298 3339 3340 3428 3430 +5 3298 3339 3340 3428 3430 +3 3298 3428 3430 +3 3298 3428 3430 +3 3298 3428 3430 +3 3298 3428 3430 +3 3298 3428 3430 +3 3298 3428 3430 +4 3298 3299 3320 3321 +4 3298 3299 3320 3321 +4 3298 3299 3320 3321 +4 3298 3299 3320 3321 +4 3298 3299 3320 3321 +4 3298 3299 3320 3321 +4 3299 3301 3417 3419 +4 3299 3301 3417 3419 +4 3299 3301 3417 3419 +4 3299 3301 3417 3419 +4 3299 3301 3417 3419 +4 3299 3301 3417 3419 +12 3300 3301 3302 3303 3324 3325 3328 3329 3405 3406 3407 3411 +12 3300 3301 3302 3303 3324 3325 3328 3329 3405 3406 3407 3411 +12 3300 3301 3302 3303 3324 3325 3328 3329 3405 3406 3407 3411 +12 3300 3301 3302 3303 3324 3325 3328 3329 3405 3406 3407 3411 +12 3300 3301 3302 3303 3324 3325 3328 3329 3405 3406 3407 3411 +12 3300 3301 3302 3303 3324 3325 3328 3329 3405 3406 3407 3411 +4 3300 3302 3405 3407 +4 3300 3302 3405 3407 +4 3300 3302 3405 3407 +4 3300 3302 3405 3407 +4 3300 3302 3405 3407 +4 3300 3302 3405 3407 +8 3300 3302 3345 3346 3351 3352 3405 3407 +8 3300 3302 3345 3346 3351 3352 3405 3407 +8 3300 3302 3345 3346 3351 3352 3405 3407 +8 3300 3302 3345 3346 3351 3352 3405 3407 +8 3300 3302 3345 3346 3351 3352 3405 3407 +8 3300 3302 3345 3346 3351 3352 3405 3407 +3 3300 3345 3346 +3 3300 3345 3346 +3 3300 3345 3346 +3 3300 3345 3346 +3 3300 3345 3346 +3 3300 3345 3346 +4 3300 3301 3324 3325 +4 3300 3301 3324 3325 +4 3300 3301 3324 3325 +4 3300 3301 3324 3325 +4 3300 3301 3324 3325 +4 3300 3301 3324 3325 +4 3301 3303 3406 3411 +4 3301 3303 3406 3411 +4 3301 3303 3406 3411 +4 3301 3303 3406 3411 +4 3301 3303 3406 3411 +4 3301 3303 3406 3411 +12 3302 3303 3304 3305 3328 3329 3332 3333 3394 3395 3396 3400 +12 3302 3303 3304 3305 3328 3329 3332 3333 3394 3395 3396 3400 +12 3302 3303 3304 3305 3328 3329 3332 3333 3394 3395 3396 3400 +12 3302 3303 3304 3305 3328 3329 3332 3333 3394 3395 3396 3400 +12 3302 3303 3304 3305 3328 3329 3332 3333 3394 3395 3396 3400 +12 3302 3303 3304 3305 3328 3329 3332 3333 3394 3395 3396 3400 +4 3302 3304 3394 3396 +4 3302 3304 3394 3396 +4 3302 3304 3394 3396 +4 3302 3304 3394 3396 +4 3302 3304 3394 3396 +4 3302 3304 3394 3396 +8 3302 3304 3351 3352 3357 3358 3394 3396 +8 3302 3304 3351 3352 3357 3358 3394 3396 +8 3302 3304 3351 3352 3357 3358 3394 3396 +8 3302 3304 3351 3352 3357 3358 3394 3396 +8 3302 3304 3351 3352 3357 3358 3394 3396 +8 3302 3304 3351 3352 3357 3358 3394 3396 +3 3302 3351 3352 +3 3302 3351 3352 +3 3302 3351 3352 +3 3302 3351 3352 +3 3302 3351 3352 +3 3302 3351 3352 +4 3302 3303 3328 3329 +4 3302 3303 3328 3329 +4 3302 3303 3328 3329 +4 3302 3303 3328 3329 +4 3302 3303 3328 3329 +4 3302 3303 3328 3329 +4 3303 3305 3395 3400 +4 3303 3305 3395 3400 +4 3303 3305 3395 3400 +4 3303 3305 3395 3400 +4 3303 3305 3395 3400 +4 3303 3305 3395 3400 +11 3304 3305 3306 3332 3333 3357 3358 3363 3364 3387 3391 +11 3304 3305 3306 3332 3333 3357 3358 3363 3364 3387 3391 +11 3304 3305 3306 3332 3333 3357 3358 3363 3364 3387 3391 +11 3304 3305 3306 3332 3333 3357 3358 3363 3364 3387 3391 +11 3304 3305 3306 3332 3333 3357 3358 3363 3364 3387 3391 +11 3304 3305 3306 3332 3333 3357 3358 3363 3364 3387 3391 +3 3304 3357 3358 +3 3304 3357 3358 +3 3304 3357 3358 +3 3304 3357 3358 +3 3304 3357 3358 +3 3304 3357 3358 +4 3304 3305 3332 3333 +4 3304 3305 3332 3333 +4 3304 3305 3332 3333 +4 3304 3305 3332 3333 +4 3304 3305 3332 3333 +4 3304 3305 3332 3333 +4 3305 3306 3387 3391 +4 3305 3306 3387 3391 +4 3305 3306 3387 3391 +4 3305 3306 3387 3391 +4 3305 3306 3387 3391 +4 3305 3306 3387 3391 +4 3306 3307 3381 3382 +4 3306 3307 3381 3382 +4 3306 3307 3381 3382 +4 3306 3307 3381 3382 +4 3306 3307 3381 3382 +4 3306 3307 3381 3382 +8 3306 3307 3363 3364 3369 3370 3381 3382 +8 3306 3307 3363 3364 3369 3370 3381 3382 +8 3306 3307 3363 3364 3369 3370 3381 3382 +8 3306 3307 3363 3364 3369 3370 3381 3382 +8 3306 3307 3363 3364 3369 3370 3381 3382 +8 3306 3307 3363 3364 3369 3370 3381 3382 +3 3306 3363 3364 +3 3306 3363 3364 +3 3306 3363 3364 +3 3306 3363 3364 +3 3306 3363 3364 +3 3306 3363 3364 +3 3307 3372 3376 +3 3307 3372 3376 +3 3307 3372 3376 +3 3307 3372 3376 +3 3307 3372 3376 +3 3307 3372 3376 +5 3307 3369 3370 3372 3376 +5 3307 3369 3370 3372 3376 +5 3307 3369 3370 3372 3376 +5 3307 3369 3370 3372 3376 +5 3307 3369 3370 3372 3376 +5 3307 3369 3370 3372 3376 +3 3307 3369 3370 +3 3307 3369 3370 +3 3307 3369 3370 +3 3307 3369 3370 +3 3307 3369 3370 +3 3307 3369 3370 +2 3308 3430 +2 3308 3430 +2 3308 3430 +2 3308 3430 +2 3308 3430 +2 3308 3430 +3 3308 3309 3321 +3 3308 3309 3321 +3 3308 3309 3321 +3 3308 3309 3321 +3 3308 3309 3321 +3 3308 3309 3321 +3 3311 3313 3411 +3 3311 3313 3411 +3 3311 3313 3411 +3 3311 3313 3411 +3 3311 3313 3411 +3 3311 3313 3411 +3 3313 3315 3400 +3 3313 3315 3400 +3 3313 3315 3400 +3 3313 3315 3400 +3 3313 3315 3400 +3 3313 3315 3400 +3 3315 3316 3391 +3 3315 3316 3391 +3 3315 3316 3391 +3 3315 3316 3391 +3 3315 3316 3391 +3 3315 3316 3391 +2 3318 3322 +2 3318 3322 +2 3318 3322 +2 3318 3322 +2 3318 3322 +2 3318 3322 +1 3318 +1 3318 +1 3318 +1 3318 +1 3318 +1 3318 +4 3319 3323 3414 3415 +4 3319 3323 3414 3415 +4 3319 3323 3414 3415 +4 3319 3323 3414 3415 +4 3319 3323 3414 3415 +4 3319 3323 3414 3415 +4 3320 3324 3416 3417 +4 3320 3324 3416 3417 +4 3320 3324 3416 3417 +4 3320 3324 3416 3417 +4 3320 3324 3416 3417 +4 3320 3324 3416 3417 +4 3321 3325 3418 3419 +4 3321 3325 3418 3419 +4 3321 3325 3418 3419 +4 3321 3325 3418 3419 +4 3321 3325 3418 3419 +4 3321 3325 3418 3419 +2 3322 3326 +2 3322 3326 +2 3322 3326 +2 3322 3326 +2 3322 3326 +2 3322 3326 +4 3323 3327 3403 3404 +4 3323 3327 3403 3404 +4 3323 3327 3403 3404 +4 3323 3327 3403 3404 +4 3323 3327 3403 3404 +4 3323 3327 3403 3404 +4 3324 3328 3405 3406 +4 3324 3328 3405 3406 +4 3324 3328 3405 3406 +4 3324 3328 3405 3406 +4 3324 3328 3405 3406 +4 3324 3328 3405 3406 +4 3325 3329 3407 3411 +4 3325 3329 3407 3411 +4 3325 3329 3407 3411 +4 3325 3329 3407 3411 +4 3325 3329 3407 3411 +4 3325 3329 3407 3411 +4 3326 3330 3388 3389 +4 3326 3330 3388 3389 +4 3326 3330 3388 3389 +4 3326 3330 3388 3389 +4 3326 3330 3388 3389 +4 3326 3330 3388 3389 +1 3326 +1 3326 +1 3326 +1 3326 +1 3326 +1 3326 +4 3327 3331 3392 3393 +4 3327 3331 3392 3393 +4 3327 3331 3392 3393 +4 3327 3331 3392 3393 +4 3327 3331 3392 3393 +4 3327 3331 3392 3393 +4 3328 3332 3394 3395 +4 3328 3332 3394 3395 +4 3328 3332 3394 3395 +4 3328 3332 3394 3395 +4 3328 3332 3394 3395 +4 3328 3332 3394 3395 +4 3329 3333 3396 3400 +4 3329 3333 3396 3400 +4 3329 3333 3396 3400 +4 3329 3333 3396 3400 +4 3329 3333 3396 3400 +4 3329 3333 3396 3400 +4 3330 3355 3361 3385 +4 3330 3355 3361 3385 +4 3330 3355 3361 3385 +4 3330 3355 3361 3385 +4 3330 3355 3361 3385 +4 3330 3355 3361 3385 +4 3331 3356 3362 3386 +4 3331 3356 3362 3386 +4 3331 3356 3362 3386 +4 3331 3356 3362 3386 +4 3331 3356 3362 3386 +4 3331 3356 3362 3386 +4 3332 3357 3363 3387 +4 3332 3357 3363 3387 +4 3332 3357 3363 3387 +4 3332 3357 3363 3387 +4 3332 3357 3363 3387 +4 3332 3357 3363 3387 +4 3333 3358 3364 3391 +4 3333 3358 3364 3391 +4 3333 3358 3364 3391 +4 3333 3358 3364 3391 +4 3333 3358 3364 3391 +4 3333 3358 3364 3391 +2 3334 3335 +2 3334 3335 +2 3334 3335 +2 3334 3335 +2 3334 3335 +2 3334 3335 +4 3334 3335 3420 3421 +4 3334 3335 3420 3421 +4 3334 3335 3420 3421 +4 3334 3335 3420 3421 +4 3334 3335 3420 3421 +4 3334 3335 3420 3421 +2 3334 3421 +2 3334 3421 +2 3334 3421 +2 3334 3421 +2 3334 3421 +2 3334 3421 +3 3335 3341 3410 +3 3335 3341 3410 +3 3335 3341 3410 +3 3335 3341 3410 +3 3335 3341 3410 +3 3335 3341 3410 +2 3335 3420 +2 3335 3420 +2 3335 3420 +2 3335 3420 +2 3335 3420 +2 3335 3420 +3 3336 3342 3409 +3 3336 3342 3409 +3 3336 3342 3409 +3 3336 3342 3409 +3 3336 3342 3409 +3 3336 3342 3409 +2 3336 3422 +2 3336 3422 +2 3336 3422 +2 3336 3422 +2 3336 3422 +2 3336 3422 +3 3337 3343 3412 +3 3337 3343 3412 +3 3337 3343 3412 +3 3337 3343 3412 +3 3337 3343 3412 +3 3337 3343 3412 +2 3337 3424 +2 3337 3424 +2 3337 3424 +2 3337 3424 +2 3337 3424 +2 3337 3424 +3 3338 3344 3414 +3 3338 3344 3414 +3 3338 3344 3414 +3 3338 3344 3414 +3 3338 3344 3414 +3 3338 3344 3414 +2 3338 3426 +2 3338 3426 +2 3338 3426 +2 3338 3426 +2 3338 3426 +2 3338 3426 +3 3339 3345 3416 +3 3339 3345 3416 +3 3339 3345 3416 +3 3339 3345 3416 +3 3339 3345 3416 +3 3339 3345 3416 +2 3339 3428 +2 3339 3428 +2 3339 3428 +2 3339 3428 +2 3339 3428 +2 3339 3428 +3 3340 3346 3418 +3 3340 3346 3418 +3 3340 3346 3418 +3 3340 3346 3418 +3 3340 3346 3418 +3 3340 3346 3418 +2 3340 3430 +2 3340 3430 +2 3340 3430 +2 3340 3430 +2 3340 3430 +2 3340 3430 +3 3341 3347 3399 +3 3341 3347 3399 +3 3341 3347 3399 +3 3341 3347 3399 +3 3341 3347 3399 +3 3341 3347 3399 +3 3342 3348 3398 +3 3342 3348 3398 +3 3342 3348 3398 +3 3342 3348 3398 +3 3342 3348 3398 +3 3342 3348 3398 +3 3343 3349 3401 +3 3343 3349 3401 +3 3343 3349 3401 +3 3343 3349 3401 +3 3343 3349 3401 +3 3343 3349 3401 +3 3344 3350 3403 +3 3344 3350 3403 +3 3344 3350 3403 +3 3344 3350 3403 +3 3344 3350 3403 +3 3344 3350 3403 +3 3345 3351 3405 +3 3345 3351 3405 +3 3345 3351 3405 +3 3345 3351 3405 +3 3345 3351 3405 +3 3345 3351 3405 +3 3346 3352 3407 +3 3346 3352 3407 +3 3346 3352 3407 +3 3346 3352 3407 +3 3346 3352 3407 +3 3346 3352 3407 +3 3348 3354 3390 +3 3348 3354 3390 +3 3348 3354 3390 +3 3348 3354 3390 +3 3348 3354 3390 +3 3348 3354 3390 +3 3349 3355 3389 +3 3349 3355 3389 +3 3349 3355 3389 +3 3349 3355 3389 +3 3349 3355 3389 +3 3349 3355 3389 +3 3350 3356 3392 +3 3350 3356 3392 +3 3350 3356 3392 +3 3350 3356 3392 +3 3350 3356 3392 +3 3350 3356 3392 +3 3351 3357 3394 +3 3351 3357 3394 +3 3351 3357 3394 +3 3351 3357 3394 +3 3351 3357 3394 +3 3351 3357 3394 +3 3352 3358 3396 +3 3352 3358 3396 +3 3352 3358 3396 +3 3352 3358 3396 +3 3352 3358 3396 +3 3352 3358 3396 +3 3353 3359 3383 +3 3353 3359 3383 +3 3353 3359 3383 +3 3353 3359 3383 +3 3353 3359 3383 +3 3353 3359 3383 +3 3354 3360 3384 +3 3354 3360 3384 +3 3354 3360 3384 +3 3354 3360 3384 +3 3354 3360 3384 +3 3354 3360 3384 +3 3359 3365 3377 +3 3359 3365 3377 +3 3359 3365 3377 +3 3359 3365 3377 +3 3359 3365 3377 +3 3359 3365 3377 +3 3360 3366 3378 +3 3360 3366 3378 +3 3360 3366 3378 +3 3360 3366 3378 +3 3360 3366 3378 +3 3360 3366 3378 +3 3361 3367 3379 +3 3361 3367 3379 +3 3361 3367 3379 +3 3361 3367 3379 +3 3361 3367 3379 +3 3361 3367 3379 +3 3362 3368 3380 +3 3362 3368 3380 +3 3362 3368 3380 +3 3362 3368 3380 +3 3362 3368 3380 +3 3362 3368 3380 +3 3363 3369 3381 +3 3363 3369 3381 +3 3363 3369 3381 +3 3363 3369 3381 +3 3363 3369 3381 +3 3363 3369 3381 +3 3364 3370 3382 +3 3364 3370 3382 +3 3364 3370 3382 +3 3364 3370 3382 +3 3364 3370 3382 +3 3364 3370 3382 +2 3369 3372 +2 3369 3372 +2 3369 3372 +2 3369 3372 +2 3369 3372 +2 3369 3372 +2 3370 3376 +2 3370 3376 +2 3370 3376 +2 3370 3376 +2 3370 3376 +2 3370 3376 +2 3397 3398 +2 3397 3398 +2 3397 3398 +2 3397 3398 +2 3397 3398 +2 3397 3398 +2 3401 3402 +2 3401 3402 +2 3401 3402 +2 3401 3402 +2 3401 3402 +2 3401 3402 +2 3408 3409 +2 3408 3409 +2 3408 3409 +2 3408 3409 +2 3408 3409 +2 3408 3409 +2 3412 3413 +2 3412 3413 +2 3412 3413 +2 3412 3413 +2 3412 3413 +2 3412 3413 +2 3420 3421 +2 3420 3421 +2 3420 3421 +2 3420 3421 +2 3420 3421 +2 3420 3421 +2 3422 3423 +2 3422 3423 +2 3422 3423 +2 3422 3423 +2 3422 3423 +2 3422 3423 +18 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 +18 19 20 21 22 23 24 25 26 27 28 29 30 1 2 3 4 5 6 +18 13 14 15 16 17 18 31 32 33 34 35 36 37 38 39 40 41 42 +18 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 +18 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 +18 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 +18 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 +18 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 +18 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 +18 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 +18 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 +18 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 +18 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 +18 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 +18 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 +18 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 +18 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 +18 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 +18 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 +18 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 +18 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 +18 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 +18 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 +18 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 +18 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 +18 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 +18 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 +18 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 +18 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 +18 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 +18 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 +18 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 +18 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 +18 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 +18 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 +18 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 +18 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 +18 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 +18 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 +18 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 +18 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 +18 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 +18 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 +18 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 +18 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 +18 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 +18 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 +18 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 +18 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 +18 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 +18 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 +18 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 +12 637 638 639 640 641 642 643 644 645 646 647 648 +12 649 650 651 652 653 654 655 656 657 658 659 660 +12 661 662 663 664 665 666 667 668 669 670 671 672 +12 673 674 675 676 677 678 679 680 681 682 683 684 +12 685 686 687 688 689 690 691 692 693 694 695 696 +12 697 698 699 700 701 702 703 704 705 706 707 708 +12 643 644 645 646 647 648 709 710 711 712 713 714 +12 655 656 657 658 659 660 715 716 717 718 719 720 +12 667 668 669 670 671 672 721 722 723 724 725 726 +12 679 680 681 682 683 684 727 728 729 730 731 732 +12 691 692 693 694 695 696 733 734 735 736 737 738 +12 703 704 705 706 707 708 739 740 741 742 743 744 +12 709 710 711 712 713 714 745 746 747 748 749 750 +12 715 716 717 718 719 720 751 752 753 754 755 756 +12 721 722 723 724 725 726 757 758 759 760 761 762 +12 727 728 729 730 731 732 763 764 765 766 767 768 +12 733 734 735 736 737 738 769 770 771 772 773 774 +12 739 740 741 742 743 744 775 776 777 778 779 780 +12 745 746 747 748 749 750 781 782 783 784 785 786 +12 751 752 753 754 755 756 787 788 789 790 791 792 +12 757 758 759 760 761 762 793 794 795 796 797 798 +12 763 764 765 766 767 768 799 800 801 802 803 804 +12 769 770 771 772 773 774 805 806 807 808 809 810 +12 775 776 777 778 779 780 811 812 813 814 815 816 +12 817 818 819 820 821 822 823 824 825 826 827 828 +12 829 830 831 832 833 834 835 836 837 838 839 840 +12 841 842 843 844 845 846 847 848 849 850 851 852 +12 853 854 855 856 857 858 859 860 861 862 863 864 +12 865 866 867 868 869 870 871 872 873 874 875 876 +12 877 878 879 880 881 882 883 884 885 886 887 888 +12 889 890 891 892 893 894 817 818 819 820 821 822 +12 895 896 897 898 899 900 829 830 831 832 833 834 +12 901 902 903 904 905 906 841 842 843 844 845 846 +12 907 908 909 910 911 912 853 854 855 856 857 858 +12 913 914 915 916 917 918 865 866 867 868 869 870 +12 919 920 921 922 923 924 877 878 879 880 881 882 +12 925 926 927 928 929 930 889 890 891 892 893 894 +12 931 932 933 934 935 936 895 896 897 898 899 900 +12 937 938 939 940 941 942 901 902 903 904 905 906 +12 943 944 945 946 947 948 907 908 909 910 911 912 +12 949 950 951 952 953 954 913 914 915 916 917 918 +12 955 956 957 958 959 960 919 920 921 922 923 924 +12 961 962 963 964 965 966 925 926 927 928 929 930 +12 967 968 969 970 971 972 931 932 933 934 935 936 +12 973 974 975 976 977 978 937 938 939 940 941 942 +12 979 980 981 982 983 984 943 944 945 946 947 948 +12 985 986 987 988 989 990 949 950 951 952 953 954 +12 991 992 993 994 995 996 955 956 957 958 959 960 +18 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 +18 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 997 998 999 1000 1001 1002 +18 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1015 1016 1017 1018 1019 1020 +18 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1027 1028 1029 1030 1031 1032 +18 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1039 1040 1041 1042 1043 1044 +18 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1051 1052 1053 1054 1055 1056 +18 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1063 1064 1065 1066 1067 1068 +18 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1075 1076 1077 1078 1079 1080 +18 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1087 1088 1089 1090 1091 1092 +18 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1099 1100 1101 1102 1103 1104 +18 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1111 1112 1113 1114 1115 1116 +18 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1123 1124 1125 1126 1127 1128 +18 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1135 1136 1137 1138 1139 1140 +18 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1147 1148 1149 1150 1151 1152 +18 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1159 1160 1161 1162 1163 1164 +18 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1171 1172 1173 1174 1175 1176 +18 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1183 1184 1185 1186 1187 1188 +18 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1195 1196 1197 1198 1199 1200 +18 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1207 1208 1209 1210 1211 1212 +18 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1219 1220 1221 1222 1223 1224 +18 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1231 1232 1233 1234 1235 1236 +18 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1243 1244 1245 1246 1247 1248 +18 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1255 1256 1257 1258 1259 1260 +18 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1267 1268 1269 1270 1271 1272 +18 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1279 1280 1281 1282 1283 1284 +18 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1291 1292 1293 1294 1295 1296 +18 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1303 1304 1305 1306 1307 1308 +18 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1315 1316 1317 1318 1319 1320 +18 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1327 1328 1329 1330 1331 1332 +18 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1339 1340 1341 1342 1343 1344 +18 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1351 1352 1353 1354 1355 1356 +18 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1363 1364 1365 1366 1367 1368 +18 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1375 1376 1377 1378 1379 1380 +18 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1387 1388 1389 1390 1391 1392 +18 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1399 1400 1401 1402 1403 1404 +18 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1411 1412 1413 1414 1415 1416 +18 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1423 1424 1425 1426 1427 1428 +18 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1435 1436 1437 1438 1439 1440 +18 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1447 1448 1449 1450 1451 1452 +18 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1459 1460 1461 1462 1463 1464 +18 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1471 1472 1473 1474 1475 1476 +18 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1483 1484 1485 1486 1487 1488 +18 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1495 1496 1497 1498 1499 1500 +18 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1507 1508 1509 1510 1511 1512 +18 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1519 1520 1521 1522 1523 1524 +18 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1531 1532 1533 1534 1535 1536 +18 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1543 1544 1545 1546 1547 1548 +18 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1555 1556 1557 1558 1559 1560 +18 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 +18 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1579 1580 1581 1582 1583 1584 +18 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 +18 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1597 1598 1599 1600 1601 1602 +18 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 +18 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 +18 1633 1634 1635 1636 1637 1638 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 +18 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 +18 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 +18 1645 1646 1647 1648 1649 1650 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 +18 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 +18 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 +18 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 +48 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1783 1784 1785 1786 1787 1788 1777 1778 1779 1780 1781 1782 1789 1790 1791 1792 1793 1794 +48 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1771 1772 1773 1774 1775 1776 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1813 1814 1815 1816 1817 1818 1807 1808 1809 1810 1811 1812 1819 1820 1821 1822 1823 1824 +48 1759 1760 1761 1762 1763 1764 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1771 1772 1773 1774 1775 1776 1765 1766 1767 1768 1769 1770 +48 1771 1772 1773 1774 1775 1776 1849 1850 1851 1852 1853 1854 1843 1844 1845 1846 1847 1848 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1801 1802 1803 1804 1805 1806 1795 1796 1797 1798 1799 1800 +48 1831 1832 1833 1834 1835 1836 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1843 1844 1845 1846 1847 1848 1837 1838 1839 1840 1841 1842 +48 1843 1844 1845 1846 1847 1848 1897 1898 1899 1900 1901 1902 1891 1892 1893 1894 1895 1896 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1861 1862 1863 1864 1865 1866 1855 1856 1857 1858 1859 1860 +48 1879 1880 1881 1882 1883 1884 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1891 1892 1893 1894 1895 1896 1885 1886 1887 1888 1889 1890 +48 1891 1892 1893 1894 1895 1896 1945 1946 1947 1948 1949 1950 1939 1940 1941 1942 1943 1944 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1909 1910 1911 1912 1913 1914 1903 1904 1905 1906 1907 1908 +48 1927 1928 1929 1930 1931 1932 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1939 1940 1941 1942 1943 1944 1933 1934 1935 1936 1937 1938 +48 1939 1940 1941 1942 1943 1944 1993 1994 1995 1996 1997 1998 1987 1988 1989 1990 1991 1992 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 1957 1958 1959 1960 1961 1962 1951 1952 1953 1954 1955 1956 +48 1975 1976 1977 1978 1979 1980 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 1987 1988 1989 1990 1991 1992 1981 1982 1983 1984 1985 1986 +36 2005 2006 2007 2008 2009 2010 2035 2036 2037 2038 2039 2040 1987 1988 1989 1990 1991 1992 2047 2048 2049 2050 2051 2052 2041 2042 2043 2044 2045 2046 1999 2000 2001 2002 2003 2004 +48 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2089 2090 2091 2092 2093 2094 2083 2084 2085 2086 2087 2088 2095 2096 2097 2098 2099 2100 +48 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2077 2078 2079 2080 2081 2082 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2119 2120 2121 2122 2123 2124 2113 2114 2115 2116 2117 2118 2125 2126 2127 2128 2129 2130 +48 2065 2066 2067 2068 2069 2070 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2077 2078 2079 2080 2081 2082 2071 2072 2073 2074 2075 2076 +48 2077 2078 2079 2080 2081 2082 2155 2156 2157 2158 2159 2160 2149 2150 2151 2152 2153 2154 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2107 2108 2109 2110 2111 2112 2101 2102 2103 2104 2105 2106 +48 2137 2138 2139 2140 2141 2142 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2149 2150 2151 2152 2153 2154 2143 2144 2145 2146 2147 2148 +48 2149 2150 2151 2152 2153 2154 2203 2204 2205 2206 2207 2208 2197 2198 2199 2200 2201 2202 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2167 2168 2169 2170 2171 2172 2161 2162 2163 2164 2165 2166 +48 2185 2186 2187 2188 2189 2190 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2197 2198 2199 2200 2201 2202 2191 2192 2193 2194 2195 2196 +48 2197 2198 2199 2200 2201 2202 2251 2252 2253 2254 2255 2256 2245 2246 2247 2248 2249 2250 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2215 2216 2217 2218 2219 2220 2209 2210 2211 2212 2213 2214 +48 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2311 2312 2313 2314 2315 2316 2305 2306 2307 2308 2309 2310 2317 2318 2319 2320 2321 2322 +34 2335 2336 2337 2338 2339 2340 2347 2348 2349 2350 2323 2324 2325 2326 2327 2328 2341 2342 2343 2344 2345 2346 2351 2352 2353 2354 2355 2356 2329 2330 2331 2332 2333 2334 +36 2263 2264 2265 2266 2267 2268 2335 2336 2337 2338 2339 2340 2245 2246 2247 2248 2249 2250 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2257 2258 2259 2260 2261 2262 +48 2233 2234 2235 2236 2237 2238 2369 2370 2371 2372 2373 2374 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2363 2364 2365 2366 2367 2368 2245 2246 2247 2248 2249 2250 2239 2240 2241 2242 2243 2244 +48 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2299 2300 2301 2302 2303 2304 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2393 2394 2395 2396 2397 2398 2387 2388 2389 2390 2391 2392 2399 2400 2401 2402 2403 2404 +48 2287 2288 2289 2290 2291 2292 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2299 2300 2301 2302 2303 2304 2293 2294 2295 2296 2297 2298 +48 2299 2300 2301 2302 2303 2304 2429 2430 2431 2432 2433 2434 2423 2424 2425 2426 2427 2428 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2381 2382 2383 2384 2385 2386 2375 2376 2377 2378 2379 2380 +48 2411 2412 2413 2414 2415 2416 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2423 2424 2425 2426 2427 2428 2417 2418 2419 2420 2421 2422 +48 2423 2424 2425 2426 2427 2428 2477 2478 2479 2480 2481 2482 2471 2472 2473 2474 2475 2476 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2441 2442 2443 2444 2445 2446 2435 2436 2437 2438 2439 2440 +48 2459 2460 2461 2462 2463 2464 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2471 2472 2473 2474 2475 2476 2465 2466 2467 2468 2469 2470 +48 2471 2472 2473 2474 2475 2476 2525 2526 2527 2528 2529 2530 2519 2520 2521 2522 2523 2524 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2489 2490 2491 2492 2493 2494 2483 2484 2485 2486 2487 2488 +48 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2585 2586 2587 2588 2589 2590 2579 2580 2581 2582 2583 2584 2591 2592 2593 2594 2595 2596 +36 2597 2598 2599 2600 2601 2602 2621 2622 2623 2624 2625 2626 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2627 2628 2629 2630 2631 2632 2603 2604 2605 2606 2607 2608 +36 2537 2538 2539 2540 2541 2542 2597 2598 2599 2600 2601 2602 2519 2520 2521 2522 2523 2524 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2531 2532 2533 2534 2535 2536 +48 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2639 2640 2641 2642 2643 2644 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2645 2646 2647 2648 2649 2650 +48 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2573 2574 2575 2576 2577 2578 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2669 2670 2671 2672 2673 2674 2663 2664 2665 2666 2667 2668 2675 2676 2677 2678 2679 2680 +48 2561 2562 2563 2564 2565 2566 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2573 2574 2575 2576 2577 2578 2567 2568 2569 2570 2571 2572 +48 2573 2574 2575 2576 2577 2578 2705 2706 2707 2708 2709 2710 2699 2700 2701 2702 2703 2704 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2657 2658 2659 2660 2661 2662 2651 2652 2653 2654 2655 2656 +48 2687 2688 2689 2690 2691 2692 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2699 2700 2701 2702 2703 2704 2693 2694 2695 2696 2697 2698 +48 2699 2700 2701 2702 2703 2704 2753 2754 2755 2756 2757 2758 2747 2748 2749 2750 2751 2752 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2717 2718 2719 2720 2721 2722 2711 2712 2713 2714 2715 2716 +48 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2813 2814 2815 2816 2817 2818 2807 2808 2809 2810 2811 2812 2819 2820 2821 2822 2823 2824 +36 2837 2838 2839 2840 2841 2842 2849 2850 2851 2852 2853 2854 2825 2826 2827 2828 2829 2830 2843 2844 2845 2846 2847 2848 2855 2856 2857 2858 2859 2860 2831 2832 2833 2834 2835 2836 +48 2747 2748 2749 2750 2751 2752 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2861 2862 2863 2864 2865 2866 2837 2838 2839 2840 2841 2842 2831 2832 2833 2834 2835 2836 2825 2826 2827 2828 2829 2830 2867 2868 2869 2870 2871 2872 +36 2747 2748 2749 2750 2751 2752 2825 2826 2827 2828 2829 2830 2735 2736 2737 2738 2739 2740 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2741 2742 2743 2744 2745 2746 +48 2789 2790 2791 2792 2793 2794 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2801 2802 2803 2804 2805 2806 2795 2796 2797 2798 2799 2800 +48 2885 2886 2887 2888 2889 2890 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2897 2898 2899 2900 2901 2902 2891 2892 2893 2894 2895 2896 +48 2915 2916 2917 2918 2919 2920 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2927 2928 2929 2930 2931 2932 2921 2922 2923 2924 2925 2926 +48 2945 2946 2947 2948 2949 2950 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2957 2958 2959 2960 2961 2962 2951 2952 2953 2954 2955 2956 +36 2987 2988 2989 2990 2991 2992 3005 3006 3007 3008 3009 3010 2975 2976 2977 2978 2979 2980 2999 3000 3001 3002 3003 3004 3011 3012 3013 3014 3015 3016 2981 2982 2983 2984 2985 2986 +48 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3053 3054 3055 3056 3057 3058 3047 3048 3049 3050 3051 3052 3059 3060 3061 3062 3063 3064 +48 3029 3030 3031 3032 3033 3034 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3041 3042 3043 3044 3045 3046 3035 3036 3037 3038 3039 3040 +48 3071 3072 3073 3074 3075 3076 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3083 3084 3085 3086 3087 3088 3077 3078 3079 3080 3081 3082 +48 3101 3102 3103 3104 3105 3106 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3113 3114 3115 3116 3117 3118 3107 3108 3109 3110 3111 3112 +48 3131 3132 3133 3134 3135 3136 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3143 3144 3145 3146 3147 3148 3137 3138 3139 3140 3141 3142 +36 3173 3174 3175 3176 3177 3178 3191 3192 3193 3194 3195 3196 3161 3162 3163 3164 3165 3166 3185 3186 3187 3188 3189 3190 3197 3198 3199 3200 3201 3202 3167 3168 3169 3170 3171 3172 +48 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3239 3240 3241 3242 3243 3244 3233 3234 3235 3236 3237 3238 3245 3246 3247 3248 3249 3250 +48 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 37 38 39 40 41 42 31 32 33 34 35 36 13 14 15 16 17 18 3275 3276 3277 3278 3279 3280 +48 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3251 3252 3253 3254 3255 3256 3275 3276 3277 3278 3279 3280 13 14 15 16 17 18 7 8 9 10 11 12 1 2 3 4 5 6 3293 3294 3295 3296 3297 3298 +48 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3281 3282 3283 3284 3285 3286 3293 3294 3295 3296 3297 3298 1 2 3 4 5 6 25 26 27 28 29 30 19 20 21 22 23 24 3311 3312 3313 3314 3315 3316 +36 3227 3228 3229 3230 3231 3232 3323 3324 3325 3326 3327 3328 3215 3216 3217 3218 3219 3220 3317 3318 3319 3320 3321 3322 3329 3330 3331 3332 3333 3334 3221 3222 3223 3224 3225 3226 +48 3263 3264 3265 3266 3267 3268 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 49 50 51 52 53 54 43 44 45 46 47 48 37 38 39 40 41 42 3269 3270 3271 3272 3273 3274 +48 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3227 3228 3229 3230 3231 3232 3353 3354 3355 3356 3357 3358 3041 3042 3043 3044 3045 3046 3053 3054 3055 3056 3057 3058 3047 3048 3049 3050 3051 3052 3359 3360 3361 3362 3363 3364 +48 3227 3228 3229 3230 3231 3232 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3365 3366 3367 3368 3369 3370 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3041 3042 3043 3044 3045 3046 3353 3354 3355 3356 3357 3358 +48 3323 3324 3325 3326 3327 3328 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3083 3084 3085 3086 3087 3088 3365 3366 3367 3368 3369 3370 +48 3377 3378 3379 3380 3381 3382 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3113 3114 3115 3116 3117 3118 3383 3384 3385 3386 3387 3388 +48 3395 3396 3397 3398 3399 3400 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3143 3144 3145 3146 3147 3148 3401 3402 3403 3404 3405 3406 +36 3191 3192 3193 3194 3195 3196 3173 3174 3175 3176 3177 3178 3413 3414 3415 3416 3417 3418 3185 3186 3187 3188 3189 3190 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 +48 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3041 3042 3043 3044 3045 3046 3431 3432 3433 3434 3435 3436 2801 2802 2803 2804 2805 2806 2813 2814 2815 2816 2817 2818 2807 2808 2809 2810 2811 2812 3437 3438 3439 3440 3441 3442 +48 3041 3042 3043 3044 3045 3046 3089 3090 3091 3092 3093 3094 3083 3084 3085 3086 3087 3088 3443 3444 3445 3446 3447 3448 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2801 2802 2803 2804 2805 2806 3431 3432 3433 3434 3435 3436 +48 3083 3084 3085 3086 3087 3088 3119 3120 3121 3122 3123 3124 3113 3114 3115 3116 3117 3118 3449 3450 3451 3452 3453 3454 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2897 2898 2899 2900 2901 2902 3443 3444 3445 3446 3447 3448 +48 3113 3114 3115 3116 3117 3118 3149 3150 3151 3152 3153 3154 3143 3144 3145 3146 3147 3148 3455 3456 3457 3458 3459 3460 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2927 2928 2929 2930 2931 2932 3449 3450 3451 3452 3453 3454 +48 3143 3144 3145 3146 3147 3148 3179 3180 3181 3182 3183 3184 3173 3174 3175 3176 3177 3178 3461 3462 3463 3464 3465 3466 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2957 2958 2959 2960 2961 2962 3455 3456 3457 3458 3459 3460 +48 3173 3174 3175 3176 3177 3178 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3467 3468 3469 3470 3471 3472 3005 3006 3007 3008 3009 3010 2999 3000 3001 3002 3003 3004 2987 2988 2989 2990 2991 2992 3461 3462 3463 3464 3465 3466 +48 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2801 2802 2803 2804 2805 2806 3473 3474 3475 3476 3477 3478 2657 2658 2659 2660 2661 2662 2669 2670 2671 2672 2673 2674 2663 2664 2665 2666 2667 2668 3479 3480 3481 3482 3483 3484 +48 2801 2802 2803 2804 2805 2806 2903 2904 2905 2906 2907 2908 2897 2898 2899 2900 2901 2902 3485 3486 3487 3488 3489 3490 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2657 2658 2659 2660 2661 2662 3473 3474 3475 3476 3477 3478 +48 2897 2898 2899 2900 2901 2902 2933 2934 2935 2936 2937 2938 2927 2928 2929 2930 2931 2932 3491 3492 3493 3494 3495 3496 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2717 2718 2719 2720 2721 2722 3485 3486 3487 3488 3489 3490 +48 2927 2928 2929 2930 2931 2932 2963 2964 2965 2966 2967 2968 2957 2958 2959 2960 2961 2962 3497 3498 3499 3500 3501 3502 2837 2838 2839 2840 2841 2842 2861 2862 2863 2864 2865 2866 2765 2766 2767 2768 2769 2770 3491 3492 3493 3494 3495 3496 +48 2957 2958 2959 2960 2961 2962 2993 2994 2995 2996 2997 2998 2987 2988 2989 2990 2991 2992 3503 3504 3505 3506 3507 3508 2849 2850 2851 2852 2853 2854 2843 2844 2845 2846 2847 2848 2837 2838 2839 2840 2841 2842 3497 3498 3499 3500 3501 3502 +36 3005 3006 3007 3008 3009 3010 2849 2850 2851 2852 2853 2854 2987 2988 2989 2990 2991 2992 3509 3510 3511 3512 3513 3514 3503 3504 3505 3506 3507 3508 2999 3000 3001 3002 3003 3004 +48 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2657 2658 2659 2660 2661 2662 3515 3516 3517 3518 3519 3520 2381 2382 2383 2384 2385 2386 2393 2394 2395 2396 2397 2398 2387 2388 2389 2390 2391 2392 3521 3522 3523 3524 3525 3526 +48 2657 2658 2659 2660 2661 2662 2723 2724 2725 2726 2727 2728 2717 2718 2719 2720 2721 2722 3527 3528 3529 3530 3531 3532 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2381 2382 2383 2384 2385 2386 3515 3516 3517 3518 3519 3520 +48 2717 2718 2719 2720 2721 2722 2771 2772 2773 2774 2775 2776 2765 2766 2767 2768 2769 2770 3533 3534 3535 3536 3537 3538 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2441 2442 2443 2444 2445 2446 3527 3528 3529 3530 3531 3532 +48 2765 2766 2767 2768 2769 2770 2861 2862 2863 2864 2865 2866 2837 2838 2839 2840 2841 2842 3539 3540 3541 3542 3543 3544 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2489 2490 2491 2492 2493 2494 3533 3534 3535 3536 3537 3538 +48 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 3545 3546 3547 3548 3549 3550 2597 2598 2599 2600 2601 2602 2633 2634 2635 2636 2637 2638 2537 2538 2539 2540 2541 2542 3539 3540 3541 3542 3543 3544 +36 2621 2622 2623 2624 2625 2626 2597 2598 2599 2600 2601 2602 2849 2850 2851 2852 2853 2854 2615 2616 2617 2618 2619 2620 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 +48 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2381 2382 2383 2384 2385 2386 3557 3558 3559 3560 3561 3562 2107 2108 2109 2110 2111 2112 2119 2120 2121 2122 2123 2124 2113 2114 2115 2116 2117 2118 3563 3564 3565 3566 3567 3568 +48 2381 2382 2383 2384 2385 2386 2447 2448 2449 2450 2451 2452 2441 2442 2443 2444 2445 2446 3569 3570 3571 3572 3573 3574 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2107 2108 2109 2110 2111 2112 3557 3558 3559 3560 3561 3562 +48 2441 2442 2443 2444 2445 2446 2495 2496 2497 2498 2499 2500 2489 2490 2491 2492 2493 2494 3575 3576 3577 3578 3579 3580 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2167 2168 2169 2170 2171 2172 3569 3570 3571 3572 3573 3574 +48 2489 2490 2491 2492 2493 2494 2543 2544 2545 2546 2547 2548 2537 2538 2539 2540 2541 2542 3581 3582 3583 3584 3585 3586 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2215 2216 2217 2218 2219 2220 3575 3576 3577 3578 3579 3580 +48 2537 2538 2539 2540 2541 2542 2633 2634 2635 2636 2637 2638 2597 2598 2599 2600 2601 2602 3587 3588 3589 3590 3591 3592 2335 2336 2337 2338 2339 2340 2357 2358 2359 2360 2361 2362 2263 2264 2265 2266 2267 2268 3581 3582 3583 3584 3585 3586 +46 2597 2598 2599 2600 2601 2602 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 3593 3594 3595 3596 3597 3598 2347 2348 2349 2350 2341 2342 2343 2344 2345 2346 2335 2336 2337 2338 2339 2340 3587 3588 3589 3590 3591 3592 +48 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2107 2108 2109 2110 2111 2112 3599 3600 3601 3602 3603 3604 1801 1802 1803 1804 1805 1806 1813 1814 1815 1816 1817 1818 1807 1808 1809 1810 1811 1812 3605 3606 3607 3608 3609 3610 +48 2107 2108 2109 2110 2111 2112 2173 2174 2175 2176 2177 2178 2167 2168 2169 2170 2171 2172 3611 3612 3613 3614 3615 3616 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1801 1802 1803 1804 1805 1806 3599 3600 3601 3602 3603 3604 +48 2167 2168 2169 2170 2171 2172 2221 2222 2223 2224 2225 2226 2215 2216 2217 2218 2219 2220 3617 3618 3619 3620 3621 3622 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1861 1862 1863 1864 1865 1866 3611 3612 3613 3614 3615 3616 +48 2215 2216 2217 2218 2219 2220 2269 2270 2271 2272 2273 2274 2263 2264 2265 2266 2267 2268 3623 3624 3625 3626 3627 3628 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1909 1910 1911 1912 1913 1914 3617 3618 3619 3620 3621 3622 +48 2263 2264 2265 2266 2267 2268 2357 2358 2359 2360 2361 2362 2335 2336 2337 2338 2339 2340 3629 3630 3631 3632 3633 3634 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 1957 1958 1959 1960 1961 1962 3623 3624 3625 3626 3627 3628 +46 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 3635 3636 3637 3638 3639 3640 2035 2036 2037 2038 2039 2040 2047 2048 2049 2050 2051 2052 2005 2006 2007 2008 2009 2010 3629 3630 3631 3632 3633 3634 +34 2035 2036 2037 2038 2039 2040 2023 2024 2025 2026 2027 2028 2347 2348 2349 2350 2029 2030 2031 2032 2033 2034 3641 3642 3643 3644 3645 3646 3635 3636 3637 3638 3639 3640 +48 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2801 2802 2803 2804 2805 2806 3647 3648 3649 3650 3651 3652 2573 2574 2575 2576 2577 2578 2585 2586 2587 2588 2589 2590 2579 2580 2581 2582 2583 2584 3653 3654 3655 3656 3657 3658 +48 2801 2802 2803 2804 2805 2806 2903 2904 2905 2906 2907 2908 2897 2898 2899 2900 2901 2902 3659 3660 3661 3662 3663 3664 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2573 2574 2575 2576 2577 2578 3647 3648 3649 3650 3651 3652 +48 2897 2898 2899 2900 2901 2902 2933 2934 2935 2936 2937 2938 2927 2928 2929 2930 2931 2932 3665 3666 3667 3668 3669 3670 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2699 2700 2701 2702 2703 2704 3659 3660 3661 3662 3663 3664 +48 2927 2928 2929 2930 2931 2932 2963 2964 2965 2966 2967 2968 2957 2958 2959 2960 2961 2962 3671 3672 3673 3674 3675 3676 2825 2826 2827 2828 2829 2830 2867 2868 2869 2870 2871 2872 2747 2748 2749 2750 2751 2752 3665 3666 3667 3668 3669 3670 +48 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2573 2574 2575 2576 2577 2578 3677 3678 3679 3680 3681 3682 2299 2300 2301 2302 2303 2304 2311 2312 2313 2314 2315 2316 2305 2306 2307 2308 2309 2310 3683 3684 3685 3686 3687 3688 +48 2573 2574 2575 2576 2577 2578 2705 2706 2707 2708 2709 2710 2699 2700 2701 2702 2703 2704 3689 3690 3691 3692 3693 3694 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2299 2300 2301 2302 2303 2304 3677 3678 3679 3680 3681 3682 +48 2699 2700 2701 2702 2703 2704 2753 2754 2755 2756 2757 2758 2747 2748 2749 2750 2751 2752 3695 3696 3697 3698 3699 3700 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2423 2424 2425 2426 2427 2428 3689 3690 3691 3692 3693 3694 +48 2747 2748 2749 2750 2751 2752 2867 2868 2869 2870 2871 2872 2825 2826 2827 2828 2829 2830 3701 3702 3703 3704 3705 3706 2537 2538 2539 2540 2541 2542 3707 3708 3709 3710 3711 3712 2471 2472 2473 2474 2475 2476 3695 3696 3697 3698 3699 3700 +48 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2299 2300 2301 2302 2303 2304 3713 3714 3715 3716 3717 3718 2077 2078 2079 2080 2081 2082 2089 2090 2091 2092 2093 2094 2083 2084 2085 2086 2087 2088 3719 3720 3721 3722 3723 3724 +48 2299 2300 2301 2302 2303 2304 2429 2430 2431 2432 2433 2434 2423 2424 2425 2426 2427 2428 3725 3726 3727 3728 3729 3730 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2077 2078 2079 2080 2081 2082 3713 3714 3715 3716 3717 3718 +48 2423 2424 2425 2426 2427 2428 2477 2478 2479 2480 2481 2482 2471 2472 2473 2474 2475 2476 3731 3732 3733 3734 3735 3736 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2149 2150 2151 2152 2153 2154 3725 3726 3727 3728 3729 3730 +48 2471 2472 2473 2474 2475 2476 3707 3708 3709 3710 3711 3712 2537 2538 2539 2540 2541 2542 3581 3582 3583 3584 3585 3586 2263 2264 2265 2266 2267 2268 3737 3738 3739 3740 3741 3742 2197 2198 2199 2200 2201 2202 3731 3732 3733 3734 3735 3736 +48 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2077 2078 2079 2080 2081 2082 3743 3744 3745 3746 3747 3748 1771 1772 1773 1774 1775 1776 1783 1784 1785 1786 1787 1788 1777 1778 1779 1780 1781 1782 3749 3750 3751 3752 3753 3754 +48 2077 2078 2079 2080 2081 2082 2155 2156 2157 2158 2159 2160 2149 2150 2151 2152 2153 2154 3755 3756 3757 3758 3759 3760 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1771 1772 1773 1774 1775 1776 3743 3744 3745 3746 3747 3748 +48 2149 2150 2151 2152 2153 2154 2203 2204 2205 2206 2207 2208 2197 2198 2199 2200 2201 2202 3761 3762 3763 3764 3765 3766 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1843 1844 1845 1846 1847 1848 3755 3756 3757 3758 3759 3760 +48 2197 2198 2199 2200 2201 2202 3737 3738 3739 3740 3741 3742 2263 2264 2265 2266 2267 2268 3623 3624 3625 3626 3627 3628 1957 1958 1959 1960 1961 1962 3767 3768 3769 3770 3771 3772 1891 1892 1893 1894 1895 1896 3761 3762 3763 3764 3765 3766 +48 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3773 3774 3775 3776 3777 3778 3029 3030 3031 3032 3033 3034 3023 3024 3025 3026 3027 3028 3017 3018 3019 3020 3021 3022 3779 3780 3781 3782 3783 3784 +48 3215 3216 3217 3218 3219 3220 3329 3330 3331 3332 3333 3334 3323 3324 3325 3326 3327 3328 3785 3786 3787 3788 3789 3790 3071 3072 3073 3074 3075 3076 3065 3066 3067 3068 3069 3070 3029 3030 3031 3032 3033 3034 3773 3774 3775 3776 3777 3778 +48 3323 3324 3325 3326 3327 3328 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3791 3792 3793 3794 3795 3796 3101 3102 3103 3104 3105 3106 3095 3096 3097 3098 3099 3100 3071 3072 3073 3074 3075 3076 3785 3786 3787 3788 3789 3790 +48 3377 3378 3379 3380 3381 3382 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3797 3798 3799 3800 3801 3802 3131 3132 3133 3134 3135 3136 3125 3126 3127 3128 3129 3130 3101 3102 3103 3104 3105 3106 3791 3792 3793 3794 3795 3796 +48 3395 3396 3397 3398 3399 3400 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3803 3804 3805 3806 3807 3808 3161 3162 3163 3164 3165 3166 3155 3156 3157 3158 3159 3160 3131 3132 3133 3134 3135 3136 3797 3798 3799 3800 3801 3802 +36 3191 3192 3193 3194 3195 3196 3161 3162 3163 3164 3165 3166 3413 3414 3415 3416 3417 3418 3197 3198 3199 3200 3201 3202 3803 3804 3805 3806 3807 3808 3425 3426 3427 3428 3429 3430 +48 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3809 3810 3811 3812 3813 3814 2789 2790 2791 2792 2793 2794 2783 2784 2785 2786 2787 2788 2777 2778 2779 2780 2781 2782 3815 3816 3817 3818 3819 3820 +48 3029 3030 3031 3032 3033 3034 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3821 3822 3823 3824 3825 3826 2885 2886 2887 2888 2889 2890 2879 2880 2881 2882 2883 2884 2789 2790 2791 2792 2793 2794 3809 3810 3811 3812 3813 3814 +48 3071 3072 3073 3074 3075 3076 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3827 3828 3829 3830 3831 3832 2915 2916 2917 2918 2919 2920 2909 2910 2911 2912 2913 2914 2885 2886 2887 2888 2889 2890 3821 3822 3823 3824 3825 3826 +48 3101 3102 3103 3104 3105 3106 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3833 3834 3835 3836 3837 3838 2945 2946 2947 2948 2949 2950 2939 2940 2941 2942 2943 2944 2915 2916 2917 2918 2919 2920 3827 3828 3829 3830 3831 3832 +48 3131 3132 3133 3134 3135 3136 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3839 3840 3841 3842 3843 3844 2975 2976 2977 2978 2979 2980 2969 2970 2971 2972 2973 2974 2945 2946 2947 2948 2949 2950 3833 3834 3835 3836 3837 3838 +48 3161 3162 3163 3164 3165 3166 3197 3198 3199 3200 3201 3202 3191 3192 3193 3194 3195 3196 3467 3468 3469 3470 3471 3472 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 2975 2976 2977 2978 2979 2980 3839 3840 3841 3842 3843 3844 +48 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 3845 3846 3847 3848 3849 3850 2561 2562 2563 2564 2565 2566 2555 2556 2557 2558 2559 2560 2549 2550 2551 2552 2553 2554 3851 3852 3853 3854 3855 3856 +48 2789 2790 2791 2792 2793 2794 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 3857 3858 3859 3860 3861 3862 2687 2688 2689 2690 2691 2692 2681 2682 2683 2684 2685 2686 2561 2562 2563 2564 2565 2566 3845 3846 3847 3848 3849 3850 +48 2885 2886 2887 2888 2889 2890 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 3863 3864 3865 3866 3867 3868 2735 2736 2737 2738 2739 2740 2729 2730 2731 2732 2733 2734 2687 2688 2689 2690 2691 2692 3857 3858 3859 3860 3861 3862 +48 2915 2916 2917 2918 2919 2920 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 3869 3870 3871 3872 3873 3874 2825 2826 2827 2828 2829 2830 2873 2874 2875 2876 2877 2878 2735 2736 2737 2738 2739 2740 3863 3864 3865 3866 3867 3868 +48 2945 2946 2947 2948 2949 2950 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 3875 3876 3877 3878 3879 3880 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2825 2826 2827 2828 2829 2830 3869 3870 3871 3872 3873 3874 +36 3005 3006 3007 3008 3009 3010 2849 2850 2851 2852 2853 2854 2975 2976 2977 2978 2979 2980 3509 3510 3511 3512 3513 3514 3875 3876 3877 3878 3879 3880 3011 3012 3013 3014 3015 3016 +48 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 3881 3882 3883 3884 3885 3886 2287 2288 2289 2290 2291 2292 2281 2282 2283 2284 2285 2286 2275 2276 2277 2278 2279 2280 3887 3888 3889 3890 3891 3892 +48 2561 2562 2563 2564 2565 2566 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 3893 3894 3895 3896 3897 3898 2411 2412 2413 2414 2415 2416 2405 2406 2407 2408 2409 2410 2287 2288 2289 2290 2291 2292 3881 3882 3883 3884 3885 3886 +48 2687 2688 2689 2690 2691 2692 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 3899 3900 3901 3902 3903 3904 2459 2460 2461 2462 2463 2464 2453 2454 2455 2456 2457 2458 2411 2412 2413 2414 2415 2416 3893 3894 3895 3896 3897 3898 +48 2735 2736 2737 2738 2739 2740 2873 2874 2875 2876 2877 2878 2825 2826 2827 2828 2829 2830 3905 3906 3907 3908 3909 3910 2507 2508 2509 2510 2511 2512 2501 2502 2503 2504 2505 2506 2459 2460 2461 2462 2463 2464 3899 3900 3901 3902 3903 3904 +48 2825 2826 2827 2828 2829 2830 2855 2856 2857 2858 2859 2860 2849 2850 2851 2852 2853 2854 3911 3912 3913 3914 3915 3916 2609 2610 2611 2612 2613 2614 2645 2646 2647 2648 2649 2650 2507 2508 2509 2510 2511 2512 3905 3906 3907 3908 3909 3910 +36 2621 2622 2623 2624 2625 2626 2609 2610 2611 2612 2613 2614 2849 2850 2851 2852 2853 2854 2627 2628 2629 2630 2631 2632 3911 3912 3913 3914 3915 3916 3551 3552 3553 3554 3555 3556 +48 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 3917 3918 3919 3920 3921 3922 2065 2066 2067 2068 2069 2070 2059 2060 2061 2062 2063 2064 2053 2054 2055 2056 2057 2058 3923 3924 3925 3926 3927 3928 +48 2287 2288 2289 2290 2291 2292 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 3929 3930 3931 3932 3933 3934 2137 2138 2139 2140 2141 2142 2131 2132 2133 2134 2135 2136 2065 2066 2067 2068 2069 2070 3917 3918 3919 3920 3921 3922 +48 2411 2412 2413 2414 2415 2416 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 3935 3936 3937 3938 3939 3940 2185 2186 2187 2188 2189 2190 2179 2180 2181 2182 2183 2184 2137 2138 2139 2140 2141 2142 3929 3930 3931 3932 3933 3934 +48 2459 2460 2461 2462 2463 2464 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 3941 3942 3943 3944 3945 3946 2233 2234 2235 2236 2237 2238 2227 2228 2229 2230 2231 2232 2185 2186 2187 2188 2189 2190 3935 3936 3937 3938 3939 3940 +48 2507 2508 2509 2510 2511 2512 2645 2646 2647 2648 2649 2650 2609 2610 2611 2612 2613 2614 3947 3948 3949 3950 3951 3952 2323 2324 2325 2326 2327 2328 2369 2370 2371 2372 2373 2374 2233 2234 2235 2236 2237 2238 3941 3942 3943 3944 3945 3946 +46 2609 2610 2611 2612 2613 2614 2627 2628 2629 2630 2631 2632 2621 2622 2623 2624 2625 2626 3593 3594 3595 3596 3597 3598 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2323 2324 2325 2326 2327 2328 3947 3948 3949 3950 3951 3952 +48 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 3953 3954 3955 3956 3957 3958 1759 1760 1761 1762 1763 1764 1753 1754 1755 1756 1757 1758 1747 1748 1749 1750 1751 1752 3959 3960 3961 3962 3963 3964 +48 2137 2138 2139 2140 2141 2142 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 3965 3966 3967 3968 3969 3970 1879 1880 1881 1882 1883 1884 1873 1874 1875 1876 1877 1878 1831 1832 1833 1834 1835 1836 3971 3972 3973 3974 3975 3976 +48 3203 3204 3205 3206 3207 3208 3245 3246 3247 3248 3249 3250 3233 3234 3235 3236 3237 3238 3359 3360 3361 3362 3363 3364 3047 3048 3049 3050 3051 3052 3059 3060 3061 3062 3063 3064 3017 3018 3019 3020 3021 3022 3779 3780 3781 3782 3783 3784 +48 3017 3018 3019 3020 3021 3022 3059 3060 3061 3062 3063 3064 3047 3048 3049 3050 3051 3052 3437 3438 3439 3440 3441 3442 2807 2808 2809 2810 2811 2812 2819 2820 2821 2822 2823 2824 2777 2778 2779 2780 2781 2782 3815 3816 3817 3818 3819 3820 +48 2777 2778 2779 2780 2781 2782 2819 2820 2821 2822 2823 2824 2807 2808 2809 2810 2811 2812 3653 3654 3655 3656 3657 3658 2579 2580 2581 2582 2583 2584 2591 2592 2593 2594 2595 2596 2549 2550 2551 2552 2553 2554 3851 3852 3853 3854 3855 3856 +36 2663 2664 2665 2666 2667 2668 2579 2580 2581 2582 2583 2584 2807 2808 2809 2810 2811 2812 2675 2676 2677 2678 2679 2680 3653 3654 3655 3656 3657 3658 3479 3480 3481 3482 3483 3484 +48 2549 2550 2551 2552 2553 2554 2591 2592 2593 2594 2595 2596 2579 2580 2581 2582 2583 2584 3683 3684 3685 3686 3687 3688 2305 2306 2307 2308 2309 2310 2317 2318 2319 2320 2321 2322 2275 2276 2277 2278 2279 2280 3887 3888 3889 3890 3891 3892 +48 2579 2580 2581 2582 2583 2584 2675 2676 2677 2678 2679 2680 2663 2664 2665 2666 2667 2668 3521 3522 3523 3524 3525 3526 2387 2388 2389 2390 2391 2392 2399 2400 2401 2402 2403 2404 2305 2306 2307 2308 2309 2310 3683 3684 3685 3686 3687 3688 +48 2275 2276 2277 2278 2279 2280 2317 2318 2319 2320 2321 2322 2305 2306 2307 2308 2309 2310 3719 3720 3721 3722 3723 3724 2083 2084 2085 2086 2087 2088 2095 2096 2097 2098 2099 2100 2053 2054 2055 2056 2057 2058 3923 3924 3925 3926 3927 3928 +48 2305 2306 2307 2308 2309 2310 2399 2400 2401 2402 2403 2404 2387 2388 2389 2390 2391 2392 3563 3564 3565 3566 3567 3568 2113 2114 2115 2116 2117 2118 2125 2126 2127 2128 2129 2130 2083 2084 2085 2086 2087 2088 3719 3720 3721 3722 3723 3724 +48 2053 2054 2055 2056 2057 2058 2095 2096 2097 2098 2099 2100 2083 2084 2085 2086 2087 2088 3749 3750 3751 3752 3753 3754 1777 1778 1779 1780 1781 1782 1789 1790 1791 1792 1793 1794 1747 1748 1749 1750 1751 1752 3959 3960 3961 3962 3963 3964 +48 2083 2084 2085 2086 2087 2088 2125 2126 2127 2128 2129 2130 2113 2114 2115 2116 2117 2118 3605 3606 3607 3608 3609 3610 1807 1808 1809 1810 1811 1812 1819 1820 1821 1822 1823 1824 1777 1778 1779 1780 1781 1782 3749 3750 3751 3752 3753 3754 +48 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3353 3354 3355 3356 3357 3358 3041 3042 3043 3044 3045 3046 3035 3036 3037 3038 3039 3040 3029 3030 3031 3032 3033 3034 3773 3774 3775 3776 3777 3778 +48 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3431 3432 3433 3434 3435 3436 2801 2802 2803 2804 2805 2806 2795 2796 2797 2798 2799 2800 2789 2790 2791 2792 2793 2794 3809 3810 3811 3812 3813 3814 +48 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 3647 3648 3649 3650 3651 3652 2573 2574 2575 2576 2577 2578 2567 2568 2569 2570 2571 2572 2561 2562 2563 2564 2565 2566 3845 3846 3847 3848 3849 3850 +36 2657 2658 2659 2660 2661 2662 2573 2574 2575 2576 2577 2578 2801 2802 2803 2804 2805 2806 2651 2652 2653 2654 2655 2656 3647 3648 3649 3650 3651 3652 3473 3474 3475 3476 3477 3478 +48 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 3677 3678 3679 3680 3681 3682 2299 2300 2301 2302 2303 2304 2293 2294 2295 2296 2297 2298 2287 2288 2289 2290 2291 2292 3881 3882 3883 3884 3885 3886 +48 2573 2574 2575 2576 2577 2578 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 3515 3516 3517 3518 3519 3520 2381 2382 2383 2384 2385 2386 2375 2376 2377 2378 2379 2380 2299 2300 2301 2302 2303 2304 3677 3678 3679 3680 3681 3682 +48 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 3713 3714 3715 3716 3717 3718 2077 2078 2079 2080 2081 2082 2071 2072 2073 2074 2075 2076 2065 2066 2067 2068 2069 2070 3917 3918 3919 3920 3921 3922 +48 2299 2300 2301 2302 2303 2304 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 3557 3558 3559 3560 3561 3562 2107 2108 2109 2110 2111 2112 2101 2102 2103 2104 2105 2106 2077 2078 2079 2080 2081 2082 3713 3714 3715 3716 3717 3718 +48 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 3743 3744 3745 3746 3747 3748 1771 1772 1773 1774 1775 1776 1765 1766 1767 1768 1769 1770 1759 1760 1761 1762 1763 1764 3953 3954 3955 3956 3957 3958 +48 2077 2078 2079 2080 2081 2082 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 3599 3600 3601 3602 3603 3604 1801 1802 1803 1804 1805 1806 1795 1796 1797 1798 1799 1800 1771 1772 1773 1774 1775 1776 3743 3744 3745 3746 3747 3748 +36 3083 3084 3085 3086 3087 3088 3071 3072 3073 3074 3075 3076 3323 3324 3325 3326 3327 3328 3077 3078 3079 3080 3081 3082 3785 3786 3787 3788 3789 3790 3365 3366 3367 3368 3369 3370 +48 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3443 3444 3445 3446 3447 3448 2897 2898 2899 2900 2901 2902 2891 2892 2893 2894 2895 2896 2885 2886 2887 2888 2889 2890 3821 3822 3823 3824 3825 3826 +48 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 3659 3660 3661 3662 3663 3664 2699 2700 2701 2702 2703 2704 2693 2694 2695 2696 2697 2698 2687 2688 2689 2690 2691 2692 3857 3858 3859 3860 3861 3862 +36 2717 2718 2719 2720 2721 2722 2699 2700 2701 2702 2703 2704 2897 2898 2899 2900 2901 2902 2711 2712 2713 2714 2715 2716 3659 3660 3661 3662 3663 3664 3485 3486 3487 3488 3489 3490 +48 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 3689 3690 3691 3692 3693 3694 2423 2424 2425 2426 2427 2428 2417 2418 2419 2420 2421 2422 2411 2412 2413 2414 2415 2416 3893 3894 3895 3896 3897 3898 +48 2699 2700 2701 2702 2703 2704 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 3527 3528 3529 3530 3531 3532 2441 2442 2443 2444 2445 2446 2435 2436 2437 2438 2439 2440 2423 2424 2425 2426 2427 2428 3689 3690 3691 3692 3693 3694 +48 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 3725 3726 3727 3728 3729 3730 2149 2150 2151 2152 2153 2154 2143 2144 2145 2146 2147 2148 2137 2138 2139 2140 2141 2142 3929 3930 3931 3932 3933 3934 +48 2423 2424 2425 2426 2427 2428 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 3569 3570 3571 3572 3573 3574 2167 2168 2169 2170 2171 2172 2161 2162 2163 2164 2165 2166 2149 2150 2151 2152 2153 2154 3725 3726 3727 3728 3729 3730 +48 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 3755 3756 3757 3758 3759 3760 1843 1844 1845 1846 1847 1848 1837 1838 1839 1840 1841 1842 1831 1832 1833 1834 1835 1836 3971 3972 3973 3974 3975 3976 +48 2149 2150 2151 2152 2153 2154 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 3611 3612 3613 3614 3615 3616 1861 1862 1863 1864 1865 1866 1855 1856 1857 1858 1859 1860 1843 1844 1845 1846 1847 1848 3755 3756 3757 3758 3759 3760 +36 3113 3114 3115 3116 3117 3118 3101 3102 3103 3104 3105 3106 3377 3378 3379 3380 3381 3382 3107 3108 3109 3110 3111 3112 3791 3792 3793 3794 3795 3796 3383 3384 3385 3386 3387 3388 +48 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3449 3450 3451 3452 3453 3454 2927 2928 2929 2930 2931 2932 2921 2922 2923 2924 2925 2926 2915 2916 2917 2918 2919 2920 3827 3828 3829 3830 3831 3832 +48 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 3665 3666 3667 3668 3669 3670 2747 2748 2749 2750 2751 2752 2741 2742 2743 2744 2745 2746 2735 2736 2737 2738 2739 2740 3863 3864 3865 3866 3867 3868 +36 2765 2766 2767 2768 2769 2770 2747 2748 2749 2750 2751 2752 2927 2928 2929 2930 2931 2932 2759 2760 2761 2762 2763 2764 3665 3666 3667 3668 3669 3670 3491 3492 3493 3494 3495 3496 +48 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 3695 3696 3697 3698 3699 3700 2471 2472 2473 2474 2475 2476 2465 2466 2467 2468 2469 2470 2459 2460 2461 2462 2463 2464 3899 3900 3901 3902 3903 3904 +48 2747 2748 2749 2750 2751 2752 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 3533 3534 3535 3536 3537 3538 2489 2490 2491 2492 2493 2494 2483 2484 2485 2486 2487 2488 2471 2472 2473 2474 2475 2476 3695 3696 3697 3698 3699 3700 +48 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 3731 3732 3733 3734 3735 3736 2197 2198 2199 2200 2201 2202 2191 2192 2193 2194 2195 2196 2185 2186 2187 2188 2189 2190 3935 3936 3937 3938 3939 3940 +48 2471 2472 2473 2474 2475 2476 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 3575 3576 3577 3578 3579 3580 2215 2216 2217 2218 2219 2220 2209 2210 2211 2212 2213 2214 2197 2198 2199 2200 2201 2202 3731 3732 3733 3734 3735 3736 +48 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 3761 3762 3763 3764 3765 3766 1891 1892 1893 1894 1895 1896 1885 1886 1887 1888 1889 1890 1879 1880 1881 1882 1883 1884 3965 3966 3967 3968 3969 3970 +48 2197 2198 2199 2200 2201 2202 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 3617 3618 3619 3620 3621 3622 1909 1910 1911 1912 1913 1914 1903 1904 1905 1906 1907 1908 1891 1892 1893 1894 1895 1896 3761 3762 3763 3764 3765 3766 +36 3143 3144 3145 3146 3147 3148 3131 3132 3133 3134 3135 3136 3395 3396 3397 3398 3399 3400 3137 3138 3139 3140 3141 3142 3797 3798 3799 3800 3801 3802 3401 3402 3403 3404 3405 3406 +48 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3455 3456 3457 3458 3459 3460 2957 2958 2959 2960 2961 2962 2951 2952 2953 2954 2955 2956 2945 2946 2947 2948 2949 2950 3833 3834 3835 3836 3837 3838 +36 2957 2958 2959 2960 2961 2962 2825 2826 2827 2828 2829 2830 2945 2946 2947 2948 2949 2950 3671 3672 3673 3674 3675 3676 3869 3870 3871 3872 3873 3874 2951 2952 2953 2954 2955 2956 +36 2837 2838 2839 2840 2841 2842 2825 2826 2827 2828 2829 2830 2957 2958 2959 2960 2961 2962 2831 2832 2833 2834 2835 2836 3671 3672 3673 3674 3675 3676 3497 3498 3499 3500 3501 3502 +36 2519 2520 2521 2522 2523 2524 2507 2508 2509 2510 2511 2512 2825 2826 2827 2828 2829 2830 2513 2514 2515 2516 2517 2518 3905 3906 3907 3908 3909 3910 3977 3978 3979 3980 3981 3982 +48 2837 2838 2839 2840 2841 2842 3539 3540 3541 3542 3543 3544 2537 2538 2539 2540 2541 2542 2531 2532 2533 2534 2535 2536 2519 2520 2521 2522 2523 2524 3977 3978 3979 3980 3981 3982 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 +48 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 3983 3984 3985 3986 3987 3988 2245 2246 2247 2248 2249 2250 2239 2240 2241 2242 2243 2244 2233 2234 2235 2236 2237 2238 3941 3942 3943 3944 3945 3946 +48 2519 2520 2521 2522 2523 2524 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 3581 3582 3583 3584 3585 3586 2263 2264 2265 2266 2267 2268 2257 2258 2259 2260 2261 2262 2245 2246 2247 2248 2249 2250 3983 3984 3985 3986 3987 3988 +48 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 3989 3990 3991 3992 3993 3994 1939 1940 1941 1942 1943 1944 1933 1934 1935 1936 1937 1938 1927 1928 1929 1930 1931 1932 3995 3996 3997 3998 3999 4000 +48 2245 2246 2247 2248 2249 2250 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 3623 3624 3625 3626 3627 3628 1957 1958 1959 1960 1961 1962 1951 1952 1953 1954 1955 1956 1939 1940 1941 1942 1943 1944 3989 3990 3991 3992 3993 3994 +36 3173 3174 3175 3176 3177 3178 3161 3162 3163 3164 3165 3166 3413 3414 3415 3416 3417 3418 3167 3168 3169 3170 3171 3172 3803 3804 3805 3806 3807 3808 3419 3420 3421 3422 3423 3424 +48 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3461 3462 3463 3464 3465 3466 2987 2988 2989 2990 2991 2992 2981 2982 2983 2984 2985 2986 2975 2976 2977 2978 2979 2980 3839 3840 3841 3842 3843 3844 +36 2987 2988 2989 2990 2991 2992 2849 2850 2851 2852 2853 2854 2975 2976 2977 2978 2979 2980 3503 3504 3505 3506 3507 3508 3875 3876 3877 3878 3879 3880 2981 2982 2983 2984 2985 2986 +36 2597 2598 2599 2600 2601 2602 2609 2610 2611 2612 2613 2614 2849 2850 2851 2852 2853 2854 2603 2604 2605 2606 2607 2608 3911 3912 3913 3914 3915 3916 3545 3546 3547 3548 3549 3550 +48 2609 2610 2611 2612 2613 2614 2603 2604 2605 2606 2607 2608 2597 2598 2599 2600 2601 2602 3587 3588 3589 3590 3591 3592 2335 2336 2337 2338 2339 2340 2329 2330 2331 2332 2333 2334 2323 2324 2325 2326 2327 2328 3947 3948 3949 3950 3951 3952 +48 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 4001 4002 4003 4004 4005 4006 1987 1988 1989 1990 1991 1992 1981 1982 1983 1984 1985 1986 1975 1976 1977 1978 1979 1980 4007 4008 4009 4010 4011 4012 +36 2005 2006 2007 2008 2009 2010 1987 1988 1989 1990 1991 1992 2335 2336 2337 2338 2339 2340 1999 2000 2001 2002 2003 2004 4001 4002 4003 4004 4005 4006 3629 3630 3631 3632 3633 3634 +48 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1771 1772 1773 1774 1775 1776 4013 4014 4015 4016 4017 4018 1 2 3 4 5 6 25 26 27 28 29 30 19 20 21 22 23 24 4019 4020 4021 4022 4023 4024 +48 1771 1772 1773 1774 1775 1776 1849 1850 1851 1852 1853 1854 1843 1844 1845 1846 1847 1848 4025 4026 4027 4028 4029 4030 13 14 15 16 17 18 7 8 9 10 11 12 1 2 3 4 5 6 4013 4014 4015 4016 4017 4018 +48 1843 1844 1845 1846 1847 1848 1897 1898 1899 1900 1901 1902 1891 1892 1893 1894 1895 1896 4031 4032 4033 4034 4035 4036 37 38 39 40 41 42 31 32 33 34 35 36 13 14 15 16 17 18 4025 4026 4027 4028 4029 4030 +48 1891 1892 1893 1894 1895 1896 1945 1946 1947 1948 1949 1950 1939 1940 1941 1942 1943 1944 4037 4038 4039 4040 4041 4042 49 50 51 52 53 54 43 44 45 46 47 48 37 38 39 40 41 42 4031 4032 4033 4034 4035 4036 +48 1747 1748 1749 1750 1751 1752 1789 1790 1791 1792 1793 1794 1777 1778 1779 1780 1781 1782 4019 4020 4021 4022 4023 4024 19 20 21 22 23 24 3311 3312 3313 3314 3315 3316 3299 3300 3301 3302 3303 3304 4043 4044 4045 4046 4047 4048 +48 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 4013 4014 4015 4016 4017 4018 1 2 3 4 5 6 3293 3294 3295 3296 3297 3298 3281 3282 3283 3284 3285 3286 4049 4050 4051 4052 4053 4054 +48 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 4025 4026 4027 4028 4029 4030 13 14 15 16 17 18 3275 3276 3277 3278 3279 3280 3251 3252 3253 3254 3255 3256 4055 4056 4057 4058 4059 4060 +48 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 4031 4032 4033 4034 4035 4036 37 38 39 40 41 42 3269 3270 3271 3272 3273 3274 3263 3264 3265 3266 3267 3268 4061 4062 4063 4064 4065 4066 +48 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 4037 4038 4039 4040 4041 4042 49 50 51 52 53 54 3347 3348 3349 3350 3351 3352 3341 3342 3343 3344 3345 3346 4067 4068 4069 4070 4071 4072 +48 1693 1694 1695 1696 1697 1698 4073 4074 4075 4076 4077 4078 1741 1742 1743 1744 1745 1746 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4097 4098 4099 4100 4101 4102 4091 4092 4093 4094 4095 4096 4103 4104 4105 4106 4107 4108 +45 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4085 4086 4087 4088 4089 4090 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4124 4125 4126 4127 4128 4129 4121 4122 4123 4130 4131 4132 4133 4134 4135 +48 1741 1742 1743 1744 1745 1746 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4085 4086 4087 4088 4089 4090 4079 4080 4081 4082 4083 4084 +48 4085 4086 4087 4088 4089 4090 4160 4161 4162 4163 4164 4165 4154 4155 4156 4157 4158 4159 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4115 4116 4117 4118 4119 4120 4109 4110 4111 4112 4113 4114 +48 4154 4155 4156 4157 4158 4159 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4172 4173 4174 4175 4176 4177 4166 4167 4168 4169 4170 4171 +48 4190 4191 4192 4193 4194 4195 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4202 4203 4204 4205 4206 4207 4196 4197 4198 4199 4200 4201 +48 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4220 4221 4222 4223 4224 4225 4280 4281 4282 4283 4284 4285 +48 4220 4221 4222 4223 4224 4225 4274 4275 4276 4277 4278 4279 4268 4269 4270 4271 4272 4273 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4232 4233 4234 4235 4236 4237 4226 4227 4228 4229 4230 4231 +48 4268 4269 4270 4271 4272 4273 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4292 4293 4294 4295 4296 4297 4286 4287 4288 4289 4290 4291 +48 1681 1682 1683 1684 1685 1686 4334 4335 4336 4337 4338 4339 1729 1730 1731 1732 1733 1734 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4358 4359 4360 4361 4362 4363 4352 4353 4354 4355 4356 4357 4364 4365 4366 4367 4368 4369 +48 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4346 4347 4348 4349 4350 4351 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4388 4389 4390 4391 4392 4393 4382 4383 4384 4385 4386 4387 4394 4395 4396 4397 4398 4399 +48 1729 1730 1731 1732 1733 1734 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4346 4347 4348 4349 4350 4351 4340 4341 4342 4343 4344 4345 +48 4346 4347 4348 4349 4350 4351 4424 4425 4426 4427 4428 4429 4418 4419 4420 4421 4422 4423 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4376 4377 4378 4379 4380 4381 4370 4371 4372 4373 4374 4375 +48 4418 4419 4420 4421 4422 4423 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4436 4437 4438 4439 4440 4441 4430 4431 4432 4433 4434 4435 +48 4454 4455 4456 4457 4458 4459 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4466 4467 4468 4469 4470 4471 4460 4461 4462 4463 4464 4465 +48 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4484 4485 4486 4487 4488 4489 4544 4545 4546 4547 4548 4549 +48 4484 4485 4486 4487 4488 4489 4538 4539 4540 4541 4542 4543 4532 4533 4534 4535 4536 4537 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4496 4497 4498 4499 4500 4501 4490 4491 4492 4493 4494 4495 +48 4532 4533 4534 4535 4536 4537 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4556 4557 4558 4559 4560 4561 4550 4551 4552 4553 4554 4555 +36 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4598 4599 4600 4601 4602 4603 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4604 4605 4606 4607 4608 4609 +36 4646 4647 4648 4649 4650 4651 4598 4599 4600 4601 4602 4603 4634 4635 4636 4637 4638 4639 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4640 4641 4642 4643 4644 4645 +48 1717 1718 1719 1720 1721 1722 4664 4665 4666 4667 4668 4669 4634 4635 4636 4637 4638 4639 4658 4659 4660 4661 4662 4663 4598 4599 4600 4601 4602 4603 4676 4677 4678 4679 4680 4681 4670 4671 4672 4673 4674 4675 4682 4683 4684 4685 4686 4687 +48 1669 1670 1671 1672 1673 1674 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4646 4647 4648 4649 4650 4651 4640 4641 4642 4643 4644 4645 4634 4635 4636 4637 4638 4639 4706 4707 4708 4709 4710 4711 +48 4670 4671 4672 4673 4674 4675 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 4729 4616 4617 4618 4619 4620 4621 4628 4629 4630 4631 4632 4633 4598 4599 4600 4601 4602 4603 4676 4677 4678 4679 4680 4681 +36 4634 4635 4636 4637 4638 4639 1717 1718 1719 1720 1721 1722 1669 1670 1671 1672 1673 1674 4664 4665 4666 4667 4668 4669 4730 4731 4732 4733 4734 4735 4706 4707 4708 4709 4710 4711 +48 4616 4617 4618 4619 4620 4621 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 4610 4611 4612 4613 4614 4615 4622 4623 4624 4625 4626 4627 +48 4742 4743 4744 4745 4746 4747 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 4754 4755 4756 4757 4758 4759 4748 4749 4750 4751 4752 4753 +48 4772 4773 4774 4775 4776 4777 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4784 4785 4786 4787 4788 4789 4778 4779 4780 4781 4782 4783 +36 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 1705 1706 1707 1708 1709 1710 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4826 4827 4828 4829 4830 4831 +48 4838 4839 4840 4841 4842 4843 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4832 4833 4834 4835 4836 4837 4844 4845 4846 4847 4848 4849 +48 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4922 4923 4924 4925 4926 4927 4916 4917 4918 4919 4920 4921 4928 4929 4930 4931 4932 4933 +48 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4970 4971 4972 4973 4974 4975 4964 4965 4966 4967 4968 4969 4976 4977 4978 4979 4980 4981 +48 4946 4947 4948 4949 4950 4951 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 4958 4959 4960 4961 4962 4963 4952 4953 4954 4955 4956 4957 +48 4988 4989 4990 4991 4992 4993 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 5000 5001 5002 5003 5004 5005 4994 4995 4996 4997 4998 4999 +48 5018 5019 5020 5021 5022 5023 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5030 5031 5032 5033 5034 5035 5024 5025 5026 5027 5028 5029 +48 1657 1658 1659 1660 1661 1662 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5102 5103 5104 5105 5106 5107 5096 5097 5098 5099 5100 5101 5108 5109 5110 5111 5112 5113 +48 5078 5079 5080 5081 5082 5083 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5090 5091 5092 5093 5094 5095 5084 5085 5086 5087 5088 5089 +48 5120 5121 5122 5123 5124 5125 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5132 5133 5134 5135 5136 5137 5126 5127 5128 5129 5130 5131 +48 5150 5151 5152 5153 5154 5155 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 5195 5196 5197 5198 5199 5200 5201 5202 5203 5162 5163 5164 5165 5166 5167 5156 5157 5158 5159 5160 5161 +48 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 67 68 69 70 71 72 61 62 63 64 65 66 55 56 57 58 59 60 5228 5229 5230 5231 5232 5233 +48 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 103 104 105 106 107 108 97 98 99 100 101 102 91 92 93 94 95 96 5258 5259 5260 5261 5262 5263 +48 5096 5097 5098 5099 5100 5101 5264 5265 5266 5267 5268 5269 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4958 4959 4960 4961 4962 4963 5270 5271 5272 5273 5274 5275 5090 5091 5092 5093 5094 5095 5102 5103 5104 5105 5106 5107 +48 5090 5091 5092 5093 5094 5095 5270 5271 5272 5273 5274 5275 4958 4959 4960 4961 4962 4963 5006 5007 5008 5009 5010 5011 5000 5001 5002 5003 5004 5005 5276 5277 5278 5279 5280 5281 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 +48 5132 5133 5134 5135 5136 5137 5276 5277 5278 5279 5280 5281 5000 5001 5002 5003 5004 5005 5036 5037 5038 5039 5040 5041 5030 5031 5032 5033 5034 5035 5282 5283 5284 5285 5286 5287 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 +48 5162 5163 5164 5165 5166 5167 5282 5283 5284 5285 5286 5287 5030 5031 5032 5033 5034 5035 5066 5067 5068 5069 5070 5071 5060 5061 5062 5063 5064 5065 5288 5289 5290 5291 5292 5293 5192 5193 5194 5195 5196 5197 5198 5199 5200 5201 5202 5203 +48 4964 4965 4966 4967 4968 4969 5294 5295 5296 5297 5298 5299 4832 4833 4834 4835 4836 4837 4880 4881 4882 4883 4884 4885 4874 4875 4876 4877 4878 4879 5300 5301 5302 5303 5304 5305 4958 4959 4960 4961 4962 4963 4970 4971 4972 4973 4974 4975 +48 4958 4959 4960 4961 4962 4963 5300 5301 5302 5303 5304 5305 4874 4875 4876 4877 4878 4879 5306 5307 5308 5309 5310 5311 4916 4917 4918 4919 4920 4921 5312 5313 5314 5315 5316 5317 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 +48 5000 5001 5002 5003 5004 5005 5312 5313 5314 5315 5316 5317 4916 4917 4918 4919 4920 4921 4922 4923 4924 4925 4926 4927 4910 4911 4912 4913 4914 4915 5318 5319 5320 5321 5322 5323 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 +48 5030 5031 5032 5033 5034 5035 5318 5319 5320 5321 5322 5323 4910 4911 4912 4913 4914 4915 5324 5325 5326 5327 5328 5329 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 +36 1705 1706 1707 1708 1709 1710 4634 4635 4636 4637 4638 4639 1669 1670 1671 1672 1673 1674 5348 5349 5350 5351 5352 5353 4706 4707 4708 4709 4710 4711 5342 5343 5344 5345 5346 5347 +48 1705 1706 1707 1708 1709 1710 5348 5349 5350 5351 5352 5353 4634 4635 4636 4637 4638 4639 4658 4659 4660 4661 4662 4663 4598 4599 4600 4601 4602 4603 5354 5355 5356 5357 5358 5359 4832 4833 4834 4835 4836 4837 4826 4827 4828 4829 4830 4831 +48 4832 4833 4834 4835 4836 4837 5354 5355 5356 5357 5358 5359 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 5360 5361 5362 5363 5364 5365 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 +48 4874 4875 4876 4877 4878 4879 5360 5361 5362 5363 5364 5365 4610 4611 4612 4613 4614 4615 4760 4761 4762 4763 4764 4765 4754 4755 4756 4757 4758 4759 5366 5367 5368 5369 5370 5371 4916 4917 4918 4919 4920 4921 5306 5307 5308 5309 5310 5311 +48 4916 4917 4918 4919 4920 4921 5366 5367 5368 5369 5370 5371 4754 4755 4756 4757 4758 4759 4790 4791 4792 4793 4794 4795 4784 4785 4786 4787 4788 4789 5372 5373 5374 5375 5376 5377 4910 4911 4912 4913 4914 4915 4922 4923 4924 4925 4926 4927 +48 4910 4911 4912 4913 4914 4915 5372 5373 5374 5375 5376 5377 4784 4785 4786 4787 4788 4789 4820 4821 4822 4823 4824 4825 4814 4815 4816 4817 4818 4819 5378 5379 5380 5381 5382 5383 5330 5331 5332 5333 5334 5335 5324 5325 5326 5327 5328 5329 +48 4694 4695 4696 4697 4698 4699 5384 5385 5386 5387 5388 5389 4382 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4376 4377 4378 4379 4380 4381 5390 5391 5392 5393 5394 5395 4646 4647 4648 4649 4650 4651 4700 4701 4702 4703 4704 4705 +48 4646 4647 4648 4649 4650 4651 5390 5391 5392 5393 5394 5395 4376 4377 4378 4379 4380 4381 4442 4443 4444 4445 4446 4447 4436 4437 4438 4439 4440 4441 5396 5397 5398 5399 5400 5401 4598 4599 4600 4601 4602 4603 4652 4653 4654 4655 4656 4657 +48 4598 4599 4600 4601 4602 4603 5396 5397 5398 5399 5400 5401 4436 4437 4438 4439 4440 4441 4472 4473 4474 4475 4476 4477 4466 4467 4468 4469 4470 4471 5402 5403 5404 5405 5406 5407 4610 4611 4612 4613 4614 4615 4604 4605 4606 4607 4608 4609 +48 4610 4611 4612 4613 4614 4615 5402 5403 5404 5405 5406 5407 4466 4467 4468 4469 4470 4471 4502 4503 4504 4505 4506 4507 4496 4497 4498 4499 4500 4501 5408 5409 5410 5411 5412 5413 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 +48 4754 4755 4756 4757 4758 4759 5408 5409 5410 5411 5412 5413 4496 4497 4498 4499 4500 4501 4562 4563 4564 4565 4566 4567 4556 4557 4558 4559 4560 4561 5414 5415 5416 5417 5418 5419 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 +48 4784 4785 4786 4787 4788 4789 5414 5415 5416 5417 5418 5419 4556 4557 4558 4559 4560 4561 4592 4593 4594 4595 4596 4597 4586 4587 4588 4589 4590 4591 5420 5421 5422 5423 5424 5425 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 +45 4382 4383 4384 4385 4386 4387 5426 5427 5428 5429 5430 5431 4121 4122 4123 4124 4125 4126 4127 4128 4129 4115 4116 4117 4118 4119 4120 5432 5433 5434 5435 5436 5437 4376 4377 4378 4379 4380 4381 4388 4389 4390 4391 4392 4393 +48 4376 4377 4378 4379 4380 4381 5432 5433 5434 5435 5436 5437 4115 4116 4117 4118 4119 4120 4178 4179 4180 4181 4182 4183 4172 4173 4174 4175 4176 4177 5438 5439 5440 5441 5442 5443 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 +48 4436 4437 4438 4439 4440 4441 5438 5439 5440 5441 5442 5443 4172 4173 4174 4175 4176 4177 4208 4209 4210 4211 4212 4213 4202 4203 4204 4205 4206 4207 5444 5445 5446 5447 5448 5449 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 +48 4466 4467 4468 4469 4470 4471 5444 5445 5446 5447 5448 5449 4202 4203 4204 4205 4206 4207 4238 4239 4240 4241 4242 4243 4232 4233 4234 4235 4236 4237 5450 5451 5452 5453 5454 5455 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 +48 4496 4497 4498 4499 4500 4501 5450 5451 5452 5453 5454 5455 4232 4233 4234 4235 4236 4237 4298 4299 4300 4301 4302 4303 4292 4293 4294 4295 4296 4297 5456 5457 5458 5459 5460 5461 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 +48 4556 4557 4558 4559 4560 4561 5456 5457 5458 5459 5460 5461 4292 4293 4294 4295 4296 4297 4328 4329 4330 4331 4332 4333 4322 4323 4324 4325 4326 4327 5462 5463 5464 5465 5466 5467 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 +48 1669 1670 1671 1672 1673 1674 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 5468 5469 5470 5471 5472 5473 4352 4353 4354 4355 4356 4357 4364 4365 4366 4367 4368 4369 1681 1682 1683 1684 1685 1686 5474 5475 5476 5477 5478 5479 +36 4382 4383 4384 4385 4386 4387 4352 4353 4354 4355 4356 4357 4694 4695 4696 4697 4698 4699 4394 4395 4396 4397 4398 4399 5468 5469 5470 5471 5472 5473 5384 5385 5386 5387 5388 5389 +48 1681 1682 1683 1684 1685 1686 4364 4365 4366 4367 4368 4369 4352 4353 4354 4355 4356 4357 5480 5481 5482 5483 5484 5485 4091 4092 4093 4094 4095 4096 4103 4104 4105 4106 4107 4108 1693 1694 1695 1696 1697 1698 5486 5487 5488 5489 5490 5491 +45 4352 4353 4354 4355 4356 4357 4394 4395 4396 4397 4398 4399 4382 4383 4384 4385 4386 4387 5426 5427 5428 5429 5430 5431 4121 4122 4123 4130 4131 4132 4133 4134 4135 4091 4092 4093 4094 4095 4096 5480 5481 5482 5483 5484 5485 +48 1657 1658 1659 1660 1661 1662 5492 5493 5494 5495 5496 5497 4934 4935 4936 4937 4938 4939 4976 4977 4978 4979 4980 4981 4964 4965 4966 4967 4968 4969 5264 5265 5266 5267 5268 5269 5096 5097 5098 5099 5100 5101 5108 5109 5110 5111 5112 5113 +48 4934 4935 4936 4937 4938 4939 4976 4977 4978 4979 4980 4981 4964 4965 4966 4967 4968 4969 5294 5295 5296 5297 5298 5299 4832 4833 4834 4835 4836 4837 4844 4845 4846 4847 4848 4849 4838 4839 4840 4841 4842 4843 5498 5499 5500 5501 5502 5503 +48 4832 4833 4834 4835 4836 4837 5354 5355 5356 5357 5358 5359 4598 4599 4600 4601 4602 4603 4628 4629 4630 4631 4632 4633 4616 4617 4618 4619 4620 4621 5504 5505 5506 5507 5508 5509 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 +48 4874 4875 4876 4877 4878 4879 5504 5505 5506 5507 5508 5509 4616 4617 4618 4619 4620 4621 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 5510 5511 5512 5513 5514 5515 4916 4917 4918 4919 4920 4921 5306 5307 5308 5309 5310 5311 +48 4916 4917 4918 4919 4920 4921 5510 5511 5512 5513 5514 5515 4742 4743 4744 4745 4746 4747 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 5516 5517 5518 5519 5520 5521 4910 4911 4912 4913 4914 4915 4922 4923 4924 4925 4926 4927 +48 4910 4911 4912 4913 4914 4915 5516 5517 5518 5519 5520 5521 4772 4773 4774 4775 4776 4777 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 5522 5523 5524 5525 5526 5527 5330 5331 5332 5333 5334 5335 5324 5325 5326 5327 5328 5329 +48 4694 4695 4696 4697 4698 4699 5468 5469 5470 5471 5472 5473 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4346 4347 4348 4349 4350 4351 5528 5529 5530 5531 5532 5533 4646 4647 4648 4649 4650 4651 4700 4701 4702 4703 4704 4705 +48 4646 4647 4648 4649 4650 4651 5528 5529 5530 5531 5532 5533 4346 4347 4348 4349 4350 4351 4424 4425 4426 4427 4428 4429 4418 4419 4420 4421 4422 4423 5534 5535 5536 5537 5538 5539 4598 4599 4600 4601 4602 4603 4652 4653 4654 4655 4656 4657 +48 4598 4599 4600 4601 4602 4603 5534 5535 5536 5537 5538 5539 4418 4419 4420 4421 4422 4423 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 5540 5541 5542 5543 5544 5545 4616 4617 4618 4619 4620 4621 4628 4629 4630 4631 4632 4633 +48 4616 4617 4618 4619 4620 4621 5540 5541 5542 5543 5544 5545 4454 4455 4456 4457 4458 4459 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 5546 5547 5548 5549 5550 5551 4742 4743 4744 4745 4746 4747 4736 4737 4738 4739 4740 4741 +48 4742 4743 4744 4745 4746 4747 5546 5547 5548 5549 5550 5551 4484 4485 4486 4487 4488 4489 4538 4539 4540 4541 4542 4543 4532 4533 4534 4535 4536 4537 5552 5553 5554 5555 5556 5557 4772 4773 4774 4775 4776 4777 4766 4767 4768 4769 4770 4771 +48 4772 4773 4774 4775 4776 4777 5552 5553 5554 5555 5556 5557 4532 4533 4534 4535 4536 4537 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 5558 5559 5560 5561 5562 5563 4802 4803 4804 4805 4806 4807 4796 4797 4798 4799 4800 4801 +48 4352 4353 4354 4355 4356 4357 5480 5481 5482 5483 5484 5485 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4085 4086 4087 4088 4089 4090 5564 5565 5566 5567 5568 5569 4346 4347 4348 4349 4350 4351 4358 4359 4360 4361 4362 4363 +48 4346 4347 4348 4349 4350 4351 5564 5565 5566 5567 5568 5569 4085 4086 4087 4088 4089 4090 4160 4161 4162 4163 4164 4165 4154 4155 4156 4157 4158 4159 5570 5571 5572 5573 5574 5575 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 +48 4418 4419 4420 4421 4422 4423 5570 5571 5572 5573 5574 5575 4154 4155 4156 4157 4158 4159 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 5576 5577 5578 5579 5580 5581 4454 4455 4456 4457 4458 4459 4448 4449 4450 4451 4452 4453 +48 4454 4455 4456 4457 4458 4459 5576 5577 5578 5579 5580 5581 4190 4191 4192 4193 4194 4195 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 5582 5583 5584 5585 5586 5587 4484 4485 4486 4487 4488 4489 4478 4479 4480 4481 4482 4483 +48 4484 4485 4486 4487 4488 4489 5582 5583 5584 5585 5586 5587 4220 4221 4222 4223 4224 4225 4274 4275 4276 4277 4278 4279 4268 4269 4270 4271 4272 4273 5588 5589 5590 5591 5592 5593 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 +48 4532 4533 4534 4535 4536 4537 5588 5589 5590 5591 5592 5593 4268 4269 4270 4271 4272 4273 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 5594 5595 5596 5597 5598 5599 4574 4575 4576 4577 4578 4579 4568 4569 4570 4571 4572 4573 +48 1657 1658 1659 1660 1661 1662 5492 5493 5494 5495 5496 5497 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 5600 5601 5602 5603 5604 5605 5078 5079 5080 5081 5082 5083 5072 5073 5074 5075 5076 5077 +48 5078 5079 5080 5081 5082 5083 5600 5601 5602 5603 5604 5605 4946 4947 4948 4949 4950 4951 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 5606 5607 5608 5609 5610 5611 5120 5121 5122 5123 5124 5125 5114 5115 5116 5117 5118 5119 +48 5120 5121 5122 5123 5124 5125 5606 5607 5608 5609 5610 5611 4988 4989 4990 4991 4992 4993 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5612 5613 5614 5615 5616 5617 5150 5151 5152 5153 5154 5155 5144 5145 5146 5147 5148 5149 +48 5150 5151 5152 5153 5154 5155 5612 5613 5614 5615 5616 5617 5018 5019 5020 5021 5022 5023 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5618 5619 5620 5621 5622 5623 5180 5181 5182 5183 5184 5185 5174 5175 5176 5177 5178 5179 +48 4934 4935 4936 4937 4938 4939 5498 5499 5500 5501 5502 5503 4838 4839 4840 4841 4842 4843 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 5624 5625 5626 5627 5628 5629 4946 4947 4948 4949 4950 4951 4940 4941 4942 4943 4944 4945 +48 4988 4989 4990 4991 4992 4993 5630 5631 5632 5633 5634 5635 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 5636 5637 5638 5639 5640 5641 5018 5019 5020 5021 5022 5023 5012 5013 5014 5015 5016 5017 +36 1717 1718 1719 1720 1721 1722 1705 1706 1707 1708 1709 1710 1669 1670 1671 1672 1673 1674 5642 5643 5644 5645 5646 5647 5342 5343 5344 5345 5346 5347 4730 4731 4732 4733 4734 4735 +48 4886 4887 4888 4889 4890 4891 5654 5655 5656 5657 5658 5659 5648 5649 5650 5651 5652 5653 5660 5661 5662 5663 5664 5665 5666 5667 5668 5669 5670 5671 5672 5673 5674 5675 5676 5677 4898 4899 4900 4901 4902 4903 4892 4893 4894 4895 4896 4897 +48 1669 1670 1671 1672 1673 1674 5474 5475 5476 5477 5478 5479 1681 1682 1683 1684 1685 1686 4334 4335 4336 4337 4338 4339 1729 1730 1731 1732 1733 1734 5678 5679 5680 5681 5682 5683 1717 1718 1719 1720 1721 1722 4730 4731 4732 4733 4734 4735 +48 5648 5649 5650 5651 5652 5653 5684 5685 5686 5687 5688 5689 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 5690 5691 5692 5693 5694 5695 5666 5667 5668 5669 5670 5671 5660 5661 5662 5663 5664 5665 +48 1681 1682 1683 1684 1685 1686 5486 5487 5488 5489 5490 5491 1693 1694 1695 1696 1697 1698 4073 4074 4075 4076 4077 4078 1741 1742 1743 1744 1745 1746 5696 5697 5698 5699 5700 5701 1729 1730 1731 1732 1733 1734 4334 4335 4336 4337 4338 4339 +48 4508 4509 4510 4511 4512 4513 5702 5703 5704 5705 5706 5707 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 5708 5709 5710 5711 5712 5713 4520 4521 4522 4523 4524 4525 4514 4515 4516 4517 4518 4519 +36 4634 4635 4636 4637 4638 4639 1717 1718 1719 1720 1721 1722 1705 1706 1707 1708 1709 1710 4664 4665 4666 4667 4668 4669 5642 5643 5644 5645 5646 5647 5348 5349 5350 5351 5352 5353 +48 1729 1730 1731 1732 1733 1734 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 5714 5715 5716 5717 5718 5719 4634 4635 4636 4637 4638 4639 4664 4665 4666 4667 4668 4669 1717 1718 1719 1720 1721 1722 5678 5679 5680 5681 5682 5683 +36 4646 4647 4648 4649 4650 4651 4634 4635 4636 4637 4638 4639 4346 4347 4348 4349 4350 4351 4640 4641 4642 4643 4644 4645 5714 5715 5716 5717 5718 5719 5528 5529 5530 5531 5532 5533 +36 4376 4377 4378 4379 4380 4381 4646 4647 4648 4649 4650 4651 4346 4347 4348 4349 4350 4351 5390 5391 5392 5393 5394 5395 5528 5529 5530 5531 5532 5533 4370 4371 4372 4373 4374 4375 +48 1729 1730 1731 1732 1733 1734 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 5564 5565 5566 5567 5568 5569 4085 4086 4087 4088 4089 4090 4079 4080 4081 4082 4083 4084 1741 1742 1743 1744 1745 1746 5696 5697 5698 5699 5700 5701 +48 4346 4347 4348 4349 4350 4351 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 5432 5433 5434 5435 5436 5437 4115 4116 4117 4118 4119 4120 4109 4110 4111 4112 4113 4114 4085 4086 4087 4088 4089 4090 5564 5565 5566 5567 5568 5569 +36 4832 4833 4834 4835 4836 4837 4670 4671 4672 4673 4674 4675 4838 4839 4840 4841 4842 4843 5720 5721 5722 5723 5724 5725 5726 5727 5728 5729 5730 5731 4844 4845 4846 4847 4848 4849 +36 4598 4599 4600 4601 4602 4603 4670 4671 4672 4673 4674 4675 4832 4833 4834 4835 4836 4837 4676 4677 4678 4679 4680 4681 5720 5721 5722 5723 5724 5725 5354 5355 5356 5357 5358 5359 +48 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4598 4599 4600 4601 4602 4603 5534 5535 5536 5537 5538 5539 4418 4419 4420 4421 4422 4423 4412 4413 4414 4415 4416 4417 4406 4407 4408 4409 4410 4411 5732 5733 5734 5735 5736 5737 +36 4436 4437 4438 4439 4440 4441 4418 4419 4420 4421 4422 4423 4598 4599 4600 4601 4602 4603 4430 4431 4432 4433 4434 4435 5534 5535 5536 5537 5538 5539 5396 5397 5398 5399 5400 5401 +48 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 5570 5571 5572 5573 5574 5575 4154 4155 4156 4157 4158 4159 4148 4149 4150 4151 4152 4153 4142 4143 4144 4145 4146 4147 5738 5739 5740 5741 5742 5743 +48 4418 4419 4420 4421 4422 4423 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 5438 5439 5440 5441 5442 5443 4172 4173 4174 4175 4176 4177 4166 4167 4168 4169 4170 4171 4154 4155 4156 4157 4158 4159 5570 5571 5572 5573 5574 5575 +48 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5270 5271 5272 5273 5274 5275 4958 4959 4960 4961 4962 4963 4952 4953 4954 4955 4956 4957 4946 4947 4948 4949 4950 4951 5600 5601 5602 5603 5604 5605 +36 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4874 4875 4876 4877 4878 4879 4622 4623 4624 4625 4626 4627 5504 5505 5506 5507 5508 5509 5360 5361 5362 5363 5364 5365 +48 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4610 4611 4612 4613 4614 4615 5402 5403 5404 5405 5406 5407 4466 4467 4468 4469 4470 4471 4460 4461 4462 4463 4464 4465 4454 4455 4456 4457 4458 4459 5540 5541 5542 5543 5544 5545 +48 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 5444 5445 5446 5447 5448 5449 4202 4203 4204 4205 4206 4207 4196 4197 4198 4199 4200 4201 4190 4191 4192 4193 4194 4195 5576 5577 5578 5579 5580 5581 +48 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5276 5277 5278 5279 5280 5281 5000 5001 5002 5003 5004 5005 4994 4995 4996 4997 4998 4999 4988 4989 4990 4991 4992 4993 5606 5607 5608 5609 5610 5611 +48 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5312 5313 5314 5315 5316 5317 4916 4917 4918 4919 4920 4921 4928 4929 4930 4931 4932 4933 4886 4887 4888 4889 4890 4891 5630 5631 5632 5633 5634 5635 +36 4754 4755 4756 4757 4758 4759 4742 4743 4744 4745 4746 4747 4916 4917 4918 4919 4920 4921 4748 4749 4750 4751 4752 4753 5510 5511 5512 5513 5514 5515 5366 5367 5368 5369 5370 5371 +48 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 5408 5409 5410 5411 5412 5413 4496 4497 4498 4499 4500 4501 4490 4491 4492 4493 4494 4495 4484 4485 4486 4487 4488 4489 5546 5547 5548 5549 5550 5551 +48 4508 4509 4510 4511 4512 4513 4544 4545 4546 4547 4548 4549 4484 4485 4486 4487 4488 4489 5582 5583 5584 5585 5586 5587 4220 4221 4222 4223 4224 4225 4280 4281 4282 4283 4284 4285 4244 4245 4246 4247 4248 4249 5702 5703 5704 5705 5706 5707 +48 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 5450 5451 5452 5453 5454 5455 4232 4233 4234 4235 4236 4237 4226 4227 4228 4229 4230 4231 4220 4221 4222 4223 4224 4225 5582 5583 5584 5585 5586 5587 +48 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5282 5283 5284 5285 5286 5287 5030 5031 5032 5033 5034 5035 5024 5025 5026 5027 5028 5029 5018 5019 5020 5021 5022 5023 5612 5613 5614 5615 5616 5617 +48 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5318 5319 5320 5321 5322 5323 4910 4911 4912 4913 4914 4915 4904 4905 4906 4907 4908 4909 4898 4899 4900 4901 4902 4903 5636 5637 5638 5639 5640 5641 +48 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 5516 5517 5518 5519 5520 5521 4772 4773 4774 4775 4776 4777 5744 5745 5746 5747 5748 5749 5666 5667 5668 5669 5670 5671 5672 5673 5674 5675 5676 5677 +36 4784 4785 4786 4787 4788 4789 4772 4773 4774 4775 4776 4777 4910 4911 4912 4913 4914 4915 4778 4779 4780 4781 4782 4783 5516 5517 5518 5519 5520 5521 5372 5373 5374 5375 5376 5377 +48 5666 5667 5668 5669 5670 5671 5744 5745 5746 5747 5748 5749 4772 4773 4774 4775 4776 4777 5552 5553 5554 5555 5556 5557 4532 4533 4534 4535 4536 4537 4526 4527 4528 4529 4530 4531 4520 4521 4522 4523 4524 4525 5690 5691 5692 5693 5694 5695 +48 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 5414 5415 5416 5417 5418 5419 4556 4557 4558 4559 4560 4561 4550 4551 4552 4553 4554 4555 4532 4533 4534 4535 4536 4537 5552 5553 5554 5555 5556 5557 +48 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 5588 5589 5590 5591 5592 5593 4268 4269 4270 4271 4272 4273 4262 4263 4264 4265 4266 4267 4256 4257 4258 4259 4260 4261 5708 5709 5710 5711 5712 5713 +48 4532 4533 4534 4535 4536 4537 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 5456 5457 5458 5459 5460 5461 4292 4293 4294 4295 4296 4297 4286 4287 4288 4289 4290 4291 4268 4269 4270 4271 4272 4273 5588 5589 5590 5591 5592 5593 +48 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 5195 5196 5197 5288 5289 5290 5291 5292 5293 5060 5061 5062 5063 5064 5065 5054 5055 5056 5057 5058 5059 5048 5049 5050 5051 5052 5053 5618 5619 5620 5621 5622 5623 +36 4814 4815 4816 4817 4818 4819 4802 4803 4804 4805 4806 4807 5330 5331 5332 5333 5334 5335 4808 4809 4810 4811 4812 4813 5522 5523 5524 5525 5526 5527 5378 5379 5380 5381 5382 5383 +48 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 5420 5421 5422 5423 5424 5425 4586 4587 4588 4589 4590 4591 4580 4581 4582 4583 4584 4585 4574 4575 4576 4577 4578 4579 5558 5559 5560 5561 5562 5563 +48 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 5462 5463 5464 5465 5466 5467 4322 4323 4324 4325 4326 4327 4316 4317 4318 4319 4320 4321 4310 4311 4312 4313 4314 4315 5594 5595 5596 5597 5598 5599 +48 4085 4086 4087 4088 4089 4090 5750 5751 5752 5753 5754 5755 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 5756 5757 5758 5759 5760 5761 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 +48 4154 4155 4156 4157 4158 4159 5756 5757 5758 5759 5760 5761 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 5762 5763 5764 5765 5766 5767 4190 4191 4192 4193 4194 4195 4184 4185 4186 4187 4188 4189 +48 4190 4191 4192 4193 4194 4195 5762 5763 5764 5765 5766 5767 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 5768 5769 5770 5771 5772 5773 4220 4221 4222 4223 4224 4225 4214 4215 4216 4217 4218 4219 +48 4220 4221 4222 4223 4224 4225 5768 5769 5770 5771 5772 5773 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 5774 5775 5776 5777 5778 5779 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 +48 4268 4269 4270 4271 4272 4273 5774 5775 5776 5777 5778 5779 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 5780 5781 5782 5783 5784 5785 4310 4311 4312 4313 4314 4315 4304 4305 4306 4307 4308 4309 +48 1741 1742 1743 1744 1745 1746 5786 5787 5788 5789 5790 5791 5204 5205 5206 5207 5208 5209 5228 5229 5230 5231 5232 5233 55 56 57 58 59 60 5750 5751 5752 5753 5754 5755 4085 4086 4087 4088 4089 4090 4079 4080 4081 4082 4083 4084 +48 4142 4143 4144 4145 4146 4147 5792 5793 5794 5795 5796 5797 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 67 68 69 70 71 72 5756 5757 5758 5759 5760 5761 4154 4155 4156 4157 4158 4159 4148 4149 4150 4151 4152 4153 +48 4244 4245 4246 4247 4248 4249 5798 5799 5800 5801 5802 5803 5234 5235 5236 5237 5238 5239 5258 5259 5260 5261 5262 5263 91 92 93 94 95 96 5768 5769 5770 5771 5772 5773 4220 4221 4222 4223 4224 4225 4280 4281 4282 4283 4284 4285 +48 4256 4257 4258 4259 4260 4261 5804 5805 5806 5807 5808 5809 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 103 104 105 106 107 108 5774 5775 5776 5777 5778 5779 4268 4269 4270 4271 4272 4273 4262 4263 4264 4265 4266 4267 +48 4310 4311 4312 4313 4314 4315 5810 5811 5812 5813 5814 5815 5816 5817 5818 5819 5820 5821 5822 5823 5824 5825 5826 5827 5828 5829 5830 5831 5832 5833 5834 5835 5836 5837 5838 5839 4322 4323 4324 4325 4326 4327 4316 4317 4318 4319 4320 4321 +48 5816 5817 5818 5819 5820 5821 5840 5841 5842 5843 5844 5845 5846 5847 5848 5849 5850 5851 5852 5853 5854 5855 5856 5857 5858 5859 5860 5861 5862 5863 5864 5865 5866 5867 5868 5869 5828 5829 5830 5831 5832 5833 5822 5823 5824 5825 5826 5827 +48 5882 5883 5884 5885 5886 5887 5876 5877 5878 5879 5880 5881 5870 5871 5872 5873 5874 5875 5888 5889 5890 5891 5892 5893 787 788 789 790 791 792 5894 5895 5896 5897 5898 5899 793 794 795 796 797 798 5900 5901 5902 5903 5904 5905 +48 5846 5847 5848 5849 5850 5851 5906 5907 5908 5909 5910 5911 5870 5871 5872 5873 5874 5875 5912 5913 5914 5915 5916 5917 5918 5919 5920 5921 5922 5923 5924 5925 5926 5927 5928 5929 5858 5859 5860 5861 5862 5863 5852 5853 5854 5855 5856 5857 +48 5870 5871 5872 5873 5874 5875 5876 5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 5930 5931 5932 5933 5934 5935 5936 5937 5938 5939 5940 5941 5942 5943 5944 5945 5946 5947 5918 5919 5920 5921 5922 5923 5912 5913 5914 5915 5916 5917 +48 5870 5871 5872 5873 5874 5875 5906 5907 5908 5909 5910 5911 5846 5847 5848 5849 5850 5851 5948 5949 5950 5951 5952 5953 781 782 783 784 785 786 5954 5955 5956 5957 5958 5959 787 788 789 790 791 792 5888 5889 5890 5891 5892 5893 +48 5882 5883 5884 5885 5886 5887 5960 5961 5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5981 5982 5983 5984 5985 5986 5987 5988 5989 5936 5937 5938 5939 5940 5941 5930 5931 5932 5933 5934 5935 +48 5966 5967 5968 5969 5970 5971 5990 5991 5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 5978 5979 5980 5981 5982 5983 5972 5973 5974 5975 5976 5977 +36 5816 5817 5818 5819 5820 5821 781 782 783 784 785 786 5846 5847 5848 5849 5850 5851 6020 6021 6022 6023 6024 6025 5948 5949 5950 5951 5952 5953 5840 5841 5842 5843 5844 5845 +48 5996 5997 5998 5999 6000 6001 6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 6038 6039 6040 6041 6042 6043 6044 6045 6046 6047 6048 6049 6050 6051 6052 6053 6054 6055 6008 6009 6010 6011 6012 6013 6002 6003 6004 6005 6006 6007 +48 5816 5817 5818 5819 5820 5821 6062 6063 6064 6065 6066 6067 6056 6057 6058 6059 6060 6061 6068 6069 6070 6071 6072 6073 6074 6075 6076 6077 6078 6079 6080 6081 6082 6083 6084 6085 781 782 783 784 785 786 6020 6021 6022 6023 6024 6025 +48 6032 6033 6034 6035 6036 6037 6086 6087 6088 6089 6090 6091 6092 6093 6094 6095 6096 6097 6098 6099 6100 6101 6102 6103 6104 6105 6106 6107 6108 6109 6110 6111 6112 6113 6114 6115 6044 6045 6046 6047 6048 6049 6038 6039 6040 6041 6042 6043 +48 6092 6093 6094 6095 6096 6097 6116 6117 6118 6119 6120 6121 6122 6123 6124 6125 6126 6127 6128 6129 6130 6131 6132 6133 6134 6135 6136 6137 6138 6139 6140 6141 6142 6143 6144 6145 6104 6105 6106 6107 6108 6109 6098 6099 6100 6101 6102 6103 +48 6122 6123 6124 6125 6126 6127 6146 6147 6148 6149 6150 6151 6152 6153 6154 6155 6156 6157 6158 6159 6160 6161 6162 6163 6164 6165 6166 6167 6168 6169 6170 6171 6172 6173 6174 6175 6134 6135 6136 6137 6138 6139 6128 6129 6130 6131 6132 6133 +48 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6186 6187 6188 6189 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201 6202 6203 6204 6205 6206 6207 6208 6209 6210 6211 6152 6153 6154 6155 6156 6157 6212 6213 6214 6215 6216 6217 +48 6152 6153 6154 6155 6156 6157 6206 6207 6208 6209 6210 6211 6200 6201 6202 6203 6204 6205 6218 6219 6220 6221 6222 6223 6224 6225 6226 6227 6228 6229 6230 6231 6232 6233 6234 6235 6164 6165 6166 6167 6168 6169 6158 6159 6160 6161 6162 6163 +48 6200 6201 6202 6203 6204 6205 6236 6237 6238 6239 6240 6241 6242 6243 6244 6245 6246 6247 6248 6249 6250 6251 6252 6253 6254 6255 6256 6257 6258 6259 6260 6261 6262 6263 6264 6265 6224 6225 6226 6227 6228 6229 6218 6219 6220 6221 6222 6223 +48 6242 6243 6244 6245 6246 6247 6266 6267 6268 6269 6270 6271 6272 6273 6274 6275 6276 6277 6278 6279 6280 6281 6282 6283 6284 6285 6286 6287 6288 6289 6290 6291 6292 6293 6294 6295 6254 6255 6256 6257 6258 6259 6248 6249 6250 6251 6252 6253 +48 6296 6297 6298 6299 6300 6301 6302 6303 6304 6305 6306 6307 6308 6309 6310 6311 6312 6313 6314 6315 6316 6317 6318 6319 6320 6321 6322 6323 6324 6325 6326 6327 6328 6329 6330 6331 6272 6273 6274 6275 6276 6277 6332 6333 6334 6335 6336 6337 +48 6272 6273 6274 6275 6276 6277 6326 6327 6328 6329 6330 6331 6320 6321 6322 6323 6324 6325 6338 6339 6340 6341 6342 6343 6344 6345 6346 6347 6348 6349 6350 6351 6352 6353 6354 6355 6284 6285 6286 6287 6288 6289 6278 6279 6280 6281 6282 6283 +48 6320 6321 6322 6323 6324 6325 6356 6357 6358 6359 6360 6361 6362 6363 6364 6365 6366 6367 6368 6369 6370 6371 6372 6373 6374 6375 6376 6377 6378 6379 6380 6381 6382 6383 6384 6385 6344 6345 6346 6347 6348 6349 6338 6339 6340 6341 6342 6343 +48 6362 6363 6364 6365 6366 6367 6386 6387 6388 6389 6390 6391 6392 6393 6394 6395 6396 6397 6398 6399 6400 6401 6402 6403 6404 6405 6406 6407 6408 6409 6410 6411 6412 6413 6414 6415 6374 6375 6376 6377 6378 6379 6368 6369 6370 6371 6372 6373 +48 6416 6417 6418 6419 6420 6421 6422 6423 6424 6425 6426 6427 6428 6429 6430 6431 6432 6433 6434 6435 6436 6437 6438 6439 6440 6441 6442 6443 6444 6445 6446 6447 6448 6449 6450 6451 6392 6393 6394 6395 6396 6397 6452 6453 6454 6455 6456 6457 +48 6392 6393 6394 6395 6396 6397 6446 6447 6448 6449 6450 6451 6440 6441 6442 6443 6444 6445 6458 6459 6460 6461 6462 6463 6464 6465 6466 6467 6468 6469 6470 6471 6472 6473 6474 6475 6404 6405 6406 6407 6408 6409 6398 6399 6400 6401 6402 6403 +48 6440 6441 6442 6443 6444 6445 6476 6477 6478 6479 6480 6481 6482 6483 6484 6485 6486 6487 6488 6489 6490 6491 6492 6493 6494 6495 6496 6497 6498 6499 6500 6501 6502 6503 6504 6505 6464 6465 6466 6467 6468 6469 6458 6459 6460 6461 6462 6463 +48 6482 6483 6484 6485 6486 6487 6506 6507 6508 6509 6510 6511 6512 6513 6514 6515 6516 6517 6518 6519 6520 6521 6522 6523 6524 6525 6526 6527 6528 6529 6530 6531 6532 6533 6534 6535 6494 6495 6496 6497 6498 6499 6488 6489 6490 6491 6492 6493 +48 6536 6537 6538 6539 6540 6541 6542 6543 6544 6545 6546 6547 6548 6549 6550 6551 6552 6553 6554 6555 6556 6557 6558 6559 6560 6561 6562 6563 6564 6565 6566 6567 6568 6569 6570 6571 6512 6513 6514 6515 6516 6517 6572 6573 6574 6575 6576 6577 +48 6512 6513 6514 6515 6516 6517 6566 6567 6568 6569 6570 6571 6560 6561 6562 6563 6564 6565 6578 6579 6580 6581 6582 6583 6584 6585 6586 6587 6588 6589 6590 6591 6592 6593 6594 6595 6524 6525 6526 6527 6528 6529 6518 6519 6520 6521 6522 6523 +48 6560 6561 6562 6563 6564 6565 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 6608 6609 6610 6611 6612 6613 6614 6615 6616 6617 6618 6619 6620 6621 6622 6623 6624 6625 6584 6585 6586 6587 6588 6589 6578 6579 6580 6581 6582 6583 +48 6602 6603 6604 6605 6606 6607 6626 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 6637 6638 6639 6640 6641 6642 6643 6644 6645 6646 6647 6648 6649 6650 6651 6652 6653 6654 6655 6614 6615 6616 6617 6618 6619 6608 6609 6610 6611 6612 6613 +48 6656 6657 6658 6659 6660 6661 6662 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679 6680 6681 6682 6683 6684 6685 6686 6687 6688 6689 6690 6691 6632 6633 6634 6635 6636 6637 6692 6693 6694 6695 6696 6697 +48 6632 6633 6634 6635 6636 6637 6686 6687 6688 6689 6690 6691 6680 6681 6682 6683 6684 6685 6698 6699 6700 6701 6702 6703 6704 6705 6706 6707 6708 6709 6710 6711 6712 6713 6714 6715 6644 6645 6646 6647 6648 6649 6638 6639 6640 6641 6642 6643 +48 6680 6681 6682 6683 6684 6685 6716 6717 6718 6719 6720 6721 6722 6723 6724 6725 6726 6727 6728 6729 6730 6731 6732 6733 6734 6735 6736 6737 6738 6739 6740 6741 6742 6743 6744 6745 6704 6705 6706 6707 6708 6709 6698 6699 6700 6701 6702 6703 +48 6722 6723 6724 6725 6726 6727 6746 6747 6748 6749 6750 6751 6752 6753 6754 6755 6756 6757 6758 6759 6760 6761 6762 6763 6764 6765 6766 6767 6768 6769 6770 6771 6772 6773 6774 6775 6734 6735 6736 6737 6738 6739 6728 6729 6730 6731 6732 6733 +48 6776 6777 6778 6779 6780 6781 6782 6783 6784 6785 6786 6787 6788 6789 6790 6791 6792 6793 6794 6795 6796 6797 6798 6799 6800 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810 6811 6752 6753 6754 6755 6756 6757 6812 6813 6814 6815 6816 6817 +48 6752 6753 6754 6755 6756 6757 6806 6807 6808 6809 6810 6811 6800 6801 6802 6803 6804 6805 6818 6819 6820 6821 6822 6823 6824 6825 6826 6827 6828 6829 6830 6831 6832 6833 6834 6835 6764 6765 6766 6767 6768 6769 6758 6759 6760 6761 6762 6763 +48 6800 6801 6802 6803 6804 6805 6836 6837 6838 6839 6840 6841 6842 6843 6844 6845 6846 6847 6848 6849 6850 6851 6852 6853 6854 6855 6856 6857 6858 6859 6860 6861 6862 6863 6864 6865 6824 6825 6826 6827 6828 6829 6818 6819 6820 6821 6822 6823 +48 6842 6843 6844 6845 6846 6847 6866 6867 6868 6869 6870 6871 6872 6873 6874 6875 6876 6877 6878 6879 6880 6881 6882 6883 6884 6885 6886 6887 6888 6889 6890 6891 6892 6893 6894 6895 6854 6855 6856 6857 6858 6859 6848 6849 6850 6851 6852 6853 +48 6896 6897 6898 6899 6900 6901 6902 6903 6904 6905 6906 6907 6908 6909 6910 6911 6912 6913 6914 6915 6916 6917 6918 6919 6920 6921 6922 6923 6924 6925 6926 6927 6928 6929 6930 6931 6872 6873 6874 6875 6876 6877 6932 6933 6934 6935 6936 6937 +48 6872 6873 6874 6875 6876 6877 6926 6927 6928 6929 6930 6931 6920 6921 6922 6923 6924 6925 6938 6939 6940 6941 6942 6943 6944 6945 6946 6947 6948 6949 6950 6951 6952 6953 6954 6955 6884 6885 6886 6887 6888 6889 6878 6879 6880 6881 6882 6883 +48 6920 6921 6922 6923 6924 6925 6956 6957 6958 6959 6960 6961 6962 6963 6964 6965 6966 6967 6968 6969 6970 6971 6972 6973 6974 6975 6976 6977 6978 6979 6980 6981 6982 6983 6984 6985 6944 6945 6946 6947 6948 6949 6938 6939 6940 6941 6942 6943 +48 6962 6963 6964 6965 6966 6967 6986 6987 6988 6989 6990 6991 6992 6993 6994 6995 6996 6997 6998 6999 7000 7001 7002 7003 7004 7005 7006 7007 7008 7009 7010 7011 7012 7013 7014 7015 6974 6975 6976 6977 6978 6979 6968 6969 6970 6971 6972 6973 +48 7016 7017 7018 7019 7020 7021 7022 7023 7024 7025 7026 7027 7028 7029 7030 7031 7032 7033 7034 7035 7036 7037 7038 7039 7040 7041 7042 7043 7044 7045 7046 7047 7048 7049 7050 7051 6992 6993 6994 6995 6996 6997 7052 7053 7054 7055 7056 7057 +48 6992 6993 6994 6995 6996 6997 7046 7047 7048 7049 7050 7051 7040 7041 7042 7043 7044 7045 7058 7059 7060 7061 7062 7063 7064 7065 7066 7067 7068 7069 7070 7071 7072 7073 7074 7075 7004 7005 7006 7007 7008 7009 6998 6999 7000 7001 7002 7003 +48 7040 7041 7042 7043 7044 7045 7076 7077 7078 7079 7080 7081 7082 7083 7084 7085 7086 7087 7088 7089 7090 7091 7092 7093 7094 7095 7096 7097 7098 7099 7100 7101 7102 7103 7104 7105 7064 7065 7066 7067 7068 7069 7058 7059 7060 7061 7062 7063 +48 7082 7083 7084 7085 7086 7087 7106 7107 7108 7109 7110 7111 7112 7113 7114 7115 7116 7117 7118 7119 7120 7121 7122 7123 7124 7125 7126 7127 7128 7129 7130 7131 7132 7133 7134 7135 7094 7095 7096 7097 7098 7099 7088 7089 7090 7091 7092 7093 +48 7136 7137 7138 7139 7140 7141 7142 7143 7144 7145 7146 7147 7148 7149 7150 7151 7152 7153 7154 7155 7156 7157 7158 7159 7160 7161 7162 7163 7164 7165 7166 7167 7168 7169 7170 7171 7112 7113 7114 7115 7116 7117 7172 7173 7174 7175 7176 7177 +48 7112 7113 7114 7115 7116 7117 7166 7167 7168 7169 7170 7171 7160 7161 7162 7163 7164 7165 7178 7179 7180 7181 7182 7183 7184 7185 7186 7187 7188 7189 7190 7191 7192 7193 7194 7195 7124 7125 7126 7127 7128 7129 7118 7119 7120 7121 7122 7123 +48 7160 7161 7162 7163 7164 7165 7196 7197 7198 7199 7200 7201 7202 7203 7204 7205 7206 7207 7208 7209 7210 7211 7212 7213 7214 7215 7216 7217 7218 7219 7220 7221 7222 7223 7224 7225 7184 7185 7186 7187 7188 7189 7178 7179 7180 7181 7182 7183 +48 7202 7203 7204 7205 7206 7207 7226 7227 7228 7229 7230 7231 7232 7233 7234 7235 7236 7237 7238 7239 7240 7241 7242 7243 7244 7245 7246 7247 7248 7249 7250 7251 7252 7253 7254 7255 7214 7215 7216 7217 7218 7219 7208 7209 7210 7211 7212 7213 +48 7256 7257 7258 7259 7260 7261 7262 7263 7264 7265 7266 7267 7268 7269 7270 7271 7272 7273 7274 7275 7276 7277 7278 7279 7280 7281 7282 7283 7284 7285 7286 7287 7288 7289 7290 7291 7232 7233 7234 7235 7236 7237 7292 7293 7294 7295 7296 7297 +48 7232 7233 7234 7235 7236 7237 7286 7287 7288 7289 7290 7291 7280 7281 7282 7283 7284 7285 7298 7299 7300 7301 7302 7303 7304 7305 7306 7307 7308 7309 7310 7311 7312 7313 7314 7315 7244 7245 7246 7247 7248 7249 7238 7239 7240 7241 7242 7243 +48 7280 7281 7282 7283 7284 7285 7316 7317 7318 7319 7320 7321 7322 7323 7324 7325 7326 7327 7328 7329 7330 7331 7332 7333 7334 7335 7336 7337 7338 7339 7340 7341 7342 7343 7344 7345 7304 7305 7306 7307 7308 7309 7298 7299 7300 7301 7302 7303 +48 7322 7323 7324 7325 7326 7327 7346 7347 7348 7349 7350 7351 7352 7353 7354 7355 7356 7357 7358 7359 7360 7361 7362 7363 7364 7365 7366 7367 7368 7369 7370 7371 7372 7373 7374 7375 7334 7335 7336 7337 7338 7339 7328 7329 7330 7331 7332 7333 +48 7376 7377 7378 7379 7380 7381 7382 7383 7384 7385 7386 7387 7388 7389 7390 7391 7392 7393 7394 7395 7396 7397 7398 7399 7400 7401 7402 7403 7404 7405 7406 7407 7408 7409 7410 7411 7352 7353 7354 7355 7356 7357 7412 7413 7414 7415 7416 7417 +48 7352 7353 7354 7355 7356 7357 7406 7407 7408 7409 7410 7411 7400 7401 7402 7403 7404 7405 7418 7419 7420 7421 7422 7423 7424 7425 7426 7427 7428 7429 7430 7431 7432 7433 7434 7435 7364 7365 7366 7367 7368 7369 7358 7359 7360 7361 7362 7363 +48 7400 7401 7402 7403 7404 7405 7436 7437 7438 7439 7440 7441 7442 7443 7444 7445 7446 7447 7448 7449 7450 7451 7452 7453 7454 7455 7456 7457 7458 7459 7460 7461 7462 7463 7464 7465 7424 7425 7426 7427 7428 7429 7418 7419 7420 7421 7422 7423 +48 7442 7443 7444 7445 7446 7447 7466 7467 7468 7469 7470 7471 2083 2084 2085 2086 2087 2088 2125 2126 2127 2128 2129 2130 2113 2114 2115 2116 2117 2118 7472 7473 7474 7475 7476 7477 7454 7455 7456 7457 7458 7459 7448 7449 7450 7451 7452 7453 +48 4574 4575 4576 4577 4578 4579 7478 7479 7480 7481 7482 7483 7484 7485 7486 7487 7488 7489 7490 7491 7492 7493 7494 7495 7496 7497 7498 7499 7500 7501 7502 7503 7504 7505 7506 7507 4586 4587 4588 4589 4590 4591 4580 4581 4582 4583 4584 4585 +48 7484 7485 7486 7487 7488 7489 7508 7509 7510 7511 7512 7513 7514 7515 7516 7517 7518 7519 7520 7521 7522 7523 7524 7525 7526 7527 7528 7529 7530 7531 7532 7533 7534 7535 7536 7537 7496 7497 7498 7499 7500 7501 7490 7491 7492 7493 7494 7495 +48 7550 7551 7552 7553 7554 7555 7544 7545 7546 7547 7548 7549 7538 7539 7540 7541 7542 7543 7556 7557 7558 7559 7560 7561 751 752 753 754 755 756 7562 7563 7564 7565 7566 7567 757 758 759 760 761 762 7568 7569 7570 7571 7572 7573 +48 7514 7515 7516 7517 7518 7519 7574 7575 7576 7577 7578 7579 7538 7539 7540 7541 7542 7543 7580 7581 7582 7583 7584 7585 7586 7587 7588 7589 7590 7591 7592 7593 7594 7595 7596 7597 7526 7527 7528 7529 7530 7531 7520 7521 7522 7523 7524 7525 +48 7538 7539 7540 7541 7542 7543 7544 7545 7546 7547 7548 7549 7550 7551 7552 7553 7554 7555 7598 7599 7600 7601 7602 7603 7604 7605 7606 7607 7608 7609 7610 7611 7612 7613 7614 7615 7586 7587 7588 7589 7590 7591 7580 7581 7582 7583 7584 7585 +48 7538 7539 7540 7541 7542 7543 7574 7575 7576 7577 7578 7579 7514 7515 7516 7517 7518 7519 7616 7617 7618 7619 7620 7621 745 746 747 748 749 750 7622 7623 7624 7625 7626 7627 751 752 753 754 755 756 7556 7557 7558 7559 7560 7561 +48 7550 7551 7552 7553 7554 7555 7628 7629 7630 7631 7632 7633 7634 7635 7636 7637 7638 7639 7640 7641 7642 7643 7644 7645 7646 7647 7648 7649 7650 7651 7652 7653 7654 7655 7656 7657 7604 7605 7606 7607 7608 7609 7598 7599 7600 7601 7602 7603 +48 7634 7635 7636 7637 7638 7639 7658 7659 7660 7661 7662 7663 7664 7665 7666 7667 7668 7669 7670 7671 7672 7673 7674 7675 7676 7677 7678 7679 7680 7681 7682 7683 7684 7685 7686 7687 7646 7647 7648 7649 7650 7651 7640 7641 7642 7643 7644 7645 +36 7484 7485 7486 7487 7488 7489 745 746 747 748 749 750 7514 7515 7516 7517 7518 7519 7688 7689 7690 7691 7692 7693 7616 7617 7618 7619 7620 7621 7508 7509 7510 7511 7512 7513 +48 7664 7665 7666 7667 7668 7669 7694 7695 7696 7697 7698 7699 7700 7701 7702 7703 7704 7705 7706 7707 7708 7709 7710 7711 7712 7713 7714 7715 7716 7717 7718 7719 7720 7721 7722 7723 7676 7677 7678 7679 7680 7681 7670 7671 7672 7673 7674 7675 +48 7484 7485 7486 7487 7488 7489 7730 7731 7732 7733 7734 7735 7724 7725 7726 7727 7728 7729 7736 7737 7738 7739 7740 7741 7742 7743 7744 7745 7746 7747 7748 7749 7750 7751 7752 7753 745 746 747 748 749 750 7688 7689 7690 7691 7692 7693 +48 7700 7701 7702 7703 7704 7705 7754 7755 7756 7757 7758 7759 7760 7761 7762 7763 7764 7765 7766 7767 7768 7769 7770 7771 7772 7773 7774 7775 7776 7777 7778 7779 7780 7781 7782 7783 7712 7713 7714 7715 7716 7717 7706 7707 7708 7709 7710 7711 +48 7760 7761 7762 7763 7764 7765 7784 7785 7786 7787 7788 7789 7790 7791 7792 7793 7794 7795 7796 7797 7798 7799 7800 7801 7802 7803 7804 7805 7806 7807 7808 7809 7810 7811 7812 7813 7772 7773 7774 7775 7776 7777 7766 7767 7768 7769 7770 7771 +48 7790 7791 7792 7793 7794 7795 7814 7815 7816 7817 7818 7819 7820 7821 7822 7823 7824 7825 7826 7827 7828 7829 7830 7831 7832 7833 7834 7835 7836 7837 7838 7839 7840 7841 7842 7843 7802 7803 7804 7805 7806 7807 7796 7797 7798 7799 7800 7801 +48 7844 7845 7846 7847 7848 7849 7850 7851 7852 7853 7854 7855 7856 7857 7858 7859 7860 7861 7862 7863 7864 7865 7866 7867 7868 7869 7870 7871 7872 7873 7874 7875 7876 7877 7878 7879 7820 7821 7822 7823 7824 7825 7880 7881 7882 7883 7884 7885 +48 7820 7821 7822 7823 7824 7825 7874 7875 7876 7877 7878 7879 7868 7869 7870 7871 7872 7873 7886 7887 7888 7889 7890 7891 7892 7893 7894 7895 7896 7897 7898 7899 7900 7901 7902 7903 7832 7833 7834 7835 7836 7837 7826 7827 7828 7829 7830 7831 +48 7868 7869 7870 7871 7872 7873 7904 7905 7906 7907 7908 7909 7910 7911 7912 7913 7914 7915 7916 7917 7918 7919 7920 7921 7922 7923 7924 7925 7926 7927 7928 7929 7930 7931 7932 7933 7892 7893 7894 7895 7896 7897 7886 7887 7888 7889 7890 7891 +48 7910 7911 7912 7913 7914 7915 7934 7935 7936 7937 7938 7939 7940 7941 7942 7943 7944 7945 7946 7947 7948 7949 7950 7951 7952 7953 7954 7955 7956 7957 7958 7959 7960 7961 7962 7963 7922 7923 7924 7925 7926 7927 7916 7917 7918 7919 7920 7921 +48 7964 7965 7966 7967 7968 7969 7970 7971 7972 7973 7974 7975 7976 7977 7978 7979 7980 7981 7982 7983 7984 7985 7986 7987 7988 7989 7990 7991 7992 7993 7994 7995 7996 7997 7998 7999 7940 7941 7942 7943 7944 7945 8000 8001 8002 8003 8004 8005 +48 7940 7941 7942 7943 7944 7945 7994 7995 7996 7997 7998 7999 7988 7989 7990 7991 7992 7993 8006 8007 8008 8009 8010 8011 8012 8013 8014 8015 8016 8017 8018 8019 8020 8021 8022 8023 7952 7953 7954 7955 7956 7957 7946 7947 7948 7949 7950 7951 +48 7988 7989 7990 7991 7992 7993 8024 8025 8026 8027 8028 8029 8030 8031 8032 8033 8034 8035 8036 8037 8038 8039 8040 8041 8042 8043 8044 8045 8046 8047 8048 8049 8050 8051 8052 8053 8012 8013 8014 8015 8016 8017 8006 8007 8008 8009 8010 8011 +48 8030 8031 8032 8033 8034 8035 8054 8055 8056 8057 8058 8059 8060 8061 8062 8063 8064 8065 8066 8067 8068 8069 8070 8071 8072 8073 8074 8075 8076 8077 8078 8079 8080 8081 8082 8083 8042 8043 8044 8045 8046 8047 8036 8037 8038 8039 8040 8041 +48 8084 8085 8086 8087 8088 8089 8090 8091 8092 8093 8094 8095 8096 8097 8098 8099 8100 8101 8102 8103 8104 8105 8106 8107 8108 8109 8110 8111 8112 8113 8114 8115 8116 8117 8118 8119 8060 8061 8062 8063 8064 8065 8120 8121 8122 8123 8124 8125 +48 8060 8061 8062 8063 8064 8065 8114 8115 8116 8117 8118 8119 8108 8109 8110 8111 8112 8113 8126 8127 8128 8129 8130 8131 8132 8133 8134 8135 8136 8137 8138 8139 8140 8141 8142 8143 8072 8073 8074 8075 8076 8077 8066 8067 8068 8069 8070 8071 +48 8108 8109 8110 8111 8112 8113 8144 8145 8146 8147 8148 8149 8150 8151 8152 8153 8154 8155 8156 8157 8158 8159 8160 8161 8162 8163 8164 8165 8166 8167 8168 8169 8170 8171 8172 8173 8132 8133 8134 8135 8136 8137 8126 8127 8128 8129 8130 8131 +48 8150 8151 8152 8153 8154 8155 8174 8175 8176 8177 8178 8179 8180 8181 8182 8183 8184 8185 8186 8187 8188 8189 8190 8191 8192 8193 8194 8195 8196 8197 8198 8199 8200 8201 8202 8203 8162 8163 8164 8165 8166 8167 8156 8157 8158 8159 8160 8161 +48 8204 8205 8206 8207 8208 8209 8210 8211 8212 8213 8214 8215 8216 8217 8218 8219 8220 8221 8222 8223 8224 8225 8226 8227 8228 8229 8230 8231 8232 8233 8234 8235 8236 8237 8238 8239 8180 8181 8182 8183 8184 8185 8240 8241 8242 8243 8244 8245 +48 8180 8181 8182 8183 8184 8185 8234 8235 8236 8237 8238 8239 8228 8229 8230 8231 8232 8233 8246 8247 8248 8249 8250 8251 8252 8253 8254 8255 8256 8257 8258 8259 8260 8261 8262 8263 8192 8193 8194 8195 8196 8197 8186 8187 8188 8189 8190 8191 +48 8228 8229 8230 8231 8232 8233 8264 8265 8266 8267 8268 8269 8270 8271 8272 8273 8274 8275 8276 8277 8278 8279 8280 8281 8282 8283 8284 8285 8286 8287 8288 8289 8290 8291 8292 8293 8252 8253 8254 8255 8256 8257 8246 8247 8248 8249 8250 8251 +48 8270 8271 8272 8273 8274 8275 8294 8295 8296 8297 8298 8299 8300 8301 8302 8303 8304 8305 8306 8307 8308 8309 8310 8311 8312 8313 8314 8315 8316 8317 8318 8319 8320 8321 8322 8323 8282 8283 8284 8285 8286 8287 8276 8277 8278 8279 8280 8281 +48 8324 8325 8326 8327 8328 8329 8330 8331 8332 8333 8334 8335 8336 8337 8338 8339 8340 8341 8342 8343 8344 8345 8346 8347 8348 8349 8350 8351 8352 8353 8354 8355 8356 8357 8358 8359 8300 8301 8302 8303 8304 8305 8360 8361 8362 8363 8364 8365 +48 8300 8301 8302 8303 8304 8305 8354 8355 8356 8357 8358 8359 8348 8349 8350 8351 8352 8353 8366 8367 8368 8369 8370 8371 8372 8373 8374 8375 8376 8377 8378 8379 8380 8381 8382 8383 8312 8313 8314 8315 8316 8317 8306 8307 8308 8309 8310 8311 +48 8348 8349 8350 8351 8352 8353 8384 8385 8386 8387 8388 8389 8390 8391 8392 8393 8394 8395 8396 8397 8398 8399 8400 8401 8402 8403 8404 8405 8406 8407 8408 8409 8410 8411 8412 8413 8372 8373 8374 8375 8376 8377 8366 8367 8368 8369 8370 8371 +48 8390 8391 8392 8393 8394 8395 8414 8415 8416 8417 8418 8419 8420 8421 8422 8423 8424 8425 8426 8427 8428 8429 8430 8431 8432 8433 8434 8435 8436 8437 8438 8439 8440 8441 8442 8443 8402 8403 8404 8405 8406 8407 8396 8397 8398 8399 8400 8401 +48 8444 8445 8446 8447 8448 8449 8450 8451 8452 8453 8454 8455 8456 8457 8458 8459 8460 8461 8462 8463 8464 8465 8466 8467 8468 8469 8470 8471 8472 8473 8474 8475 8476 8477 8478 8479 8420 8421 8422 8423 8424 8425 8480 8481 8482 8483 8484 8485 +48 8420 8421 8422 8423 8424 8425 8474 8475 8476 8477 8478 8479 8468 8469 8470 8471 8472 8473 8486 8487 8488 8489 8490 8491 8492 8493 8494 8495 8496 8497 8498 8499 8500 8501 8502 8503 8432 8433 8434 8435 8436 8437 8426 8427 8428 8429 8430 8431 +48 8468 8469 8470 8471 8472 8473 8504 8505 8506 8507 8508 8509 8510 8511 8512 8513 8514 8515 8516 8517 8518 8519 8520 8521 8522 8523 8524 8525 8526 8527 8528 8529 8530 8531 8532 8533 8492 8493 8494 8495 8496 8497 8486 8487 8488 8489 8490 8491 +48 8510 8511 8512 8513 8514 8515 8534 8535 8536 8537 8538 8539 8540 8541 8542 8543 8544 8545 8546 8547 8548 8549 8550 8551 8552 8553 8554 8555 8556 8557 8558 8559 8560 8561 8562 8563 8522 8523 8524 8525 8526 8527 8516 8517 8518 8519 8520 8521 +48 8564 8565 8566 8567 8568 8569 8570 8571 8572 8573 8574 8575 8576 8577 8578 8579 8580 8581 8582 8583 8584 8585 8586 8587 8588 8589 8590 8591 8592 8593 8594 8595 8596 8597 8598 8599 8540 8541 8542 8543 8544 8545 8600 8601 8602 8603 8604 8605 +48 8540 8541 8542 8543 8544 8545 8594 8595 8596 8597 8598 8599 8588 8589 8590 8591 8592 8593 8606 8607 8608 8609 8610 8611 8612 8613 8614 8615 8616 8617 8618 8619 8620 8621 8622 8623 8552 8553 8554 8555 8556 8557 8546 8547 8548 8549 8550 8551 +48 8588 8589 8590 8591 8592 8593 8624 8625 8626 8627 8628 8629 8630 8631 8632 8633 8634 8635 8636 8637 8638 8639 8640 8641 8642 8643 8644 8645 8646 8647 8648 8649 8650 8651 8652 8653 8612 8613 8614 8615 8616 8617 8606 8607 8608 8609 8610 8611 +48 8630 8631 8632 8633 8634 8635 8654 8655 8656 8657 8658 8659 8660 8661 8662 8663 8664 8665 8666 8667 8668 8669 8670 8671 8672 8673 8674 8675 8676 8677 8678 8679 8680 8681 8682 8683 8642 8643 8644 8645 8646 8647 8636 8637 8638 8639 8640 8641 +48 8684 8685 8686 8687 8688 8689 8690 8691 8692 8693 8694 8695 8696 8697 8698 8699 8700 8701 8702 8703 8704 8705 8706 8707 8708 8709 8710 8711 8712 8713 8714 8715 8716 8717 8718 8719 8660 8661 8662 8663 8664 8665 8720 8721 8722 8723 8724 8725 +48 8660 8661 8662 8663 8664 8665 8714 8715 8716 8717 8718 8719 8708 8709 8710 8711 8712 8713 8726 8727 8728 8729 8730 8731 8732 8733 8734 8735 8736 8737 8738 8739 8740 8741 8742 8743 8672 8673 8674 8675 8676 8677 8666 8667 8668 8669 8670 8671 +48 8708 8709 8710 8711 8712 8713 8744 8745 8746 8747 8748 8749 8750 8751 8752 8753 8754 8755 8756 8757 8758 8759 8760 8761 8762 8763 8764 8765 8766 8767 8768 8769 8770 8771 8772 8773 8732 8733 8734 8735 8736 8737 8726 8727 8728 8729 8730 8731 +48 8750 8751 8752 8753 8754 8755 8774 8775 8776 8777 8778 8779 8780 8781 8782 8783 8784 8785 8786 8787 8788 8789 8790 8791 8792 8793 8794 8795 8796 8797 8798 8799 8800 8801 8802 8803 8762 8763 8764 8765 8766 8767 8756 8757 8758 8759 8760 8761 +48 8804 8805 8806 8807 8808 8809 8810 8811 8812 8813 8814 8815 8816 8817 8818 8819 8820 8821 8822 8823 8824 8825 8826 8827 8828 8829 8830 8831 8832 8833 8834 8835 8836 8837 8838 8839 8780 8781 8782 8783 8784 8785 8840 8841 8842 8843 8844 8845 +48 8780 8781 8782 8783 8784 8785 8834 8835 8836 8837 8838 8839 8828 8829 8830 8831 8832 8833 8846 8847 8848 8849 8850 8851 8852 8853 8854 8855 8856 8857 8858 8859 8860 8861 8862 8863 8792 8793 8794 8795 8796 8797 8786 8787 8788 8789 8790 8791 +48 8828 8829 8830 8831 8832 8833 8864 8865 8866 8867 8868 8869 8870 8871 8872 8873 8874 8875 8876 8877 8878 8879 8880 8881 8882 8883 8884 8885 8886 8887 8888 8889 8890 8891 8892 8893 8852 8853 8854 8855 8856 8857 8846 8847 8848 8849 8850 8851 +48 8870 8871 8872 8873 8874 8875 8894 8895 8896 8897 8898 8899 8900 8901 8902 8903 8904 8905 8906 8907 8908 8909 8910 8911 8912 8913 8914 8915 8916 8917 8918 8919 8920 8921 8922 8923 8882 8883 8884 8885 8886 8887 8876 8877 8878 8879 8880 8881 +48 8924 8925 8926 8927 8928 8929 8930 8931 8932 8933 8934 8935 8936 8937 8938 8939 8940 8941 8942 8943 8944 8945 8946 8947 8948 8949 8950 8951 8952 8953 8954 8955 8956 8957 8958 8959 8900 8901 8902 8903 8904 8905 8960 8961 8962 8963 8964 8965 +48 8900 8901 8902 8903 8904 8905 8954 8955 8956 8957 8958 8959 8948 8949 8950 8951 8952 8953 8966 8967 8968 8969 8970 8971 8972 8973 8974 8975 8976 8977 8978 8979 8980 8981 8982 8983 8912 8913 8914 8915 8916 8917 8906 8907 8908 8909 8910 8911 +48 8948 8949 8950 8951 8952 8953 8984 8985 8986 8987 8988 8989 8990 8991 8992 8993 8994 8995 8996 8997 8998 8999 9000 9001 9002 9003 9004 9005 9006 9007 9008 9009 9010 9011 9012 9013 8972 8973 8974 8975 8976 8977 8966 8967 8968 8969 8970 8971 +48 8990 8991 8992 8993 8994 8995 9014 9015 9016 9017 9018 9019 9020 9021 9022 9023 9024 9025 9026 9027 9028 9029 9030 9031 9032 9033 9034 9035 9036 9037 9038 9039 9040 9041 9042 9043 9002 9003 9004 9005 9006 9007 8996 8997 8998 8999 9000 9001 +48 9044 9045 9046 9047 9048 9049 9050 9051 9052 9053 9054 9055 9056 9057 9058 9059 9060 9061 9062 9063 9064 9065 9066 9067 9068 9069 9070 9071 9072 9073 9074 9075 9076 9077 9078 9079 9020 9021 9022 9023 9024 9025 9080 9081 9082 9083 9084 9085 +48 9020 9021 9022 9023 9024 9025 9074 9075 9076 9077 9078 9079 9068 9069 9070 9071 9072 9073 9086 9087 9088 9089 9090 9091 9092 9093 9094 9095 9096 9097 9098 9099 9100 9101 9102 9103 9032 9033 9034 9035 9036 9037 9026 9027 9028 9029 9030 9031 +48 9068 9069 9070 9071 9072 9073 9104 9105 9106 9107 9108 9109 9110 9111 9112 9113 9114 9115 9116 9117 9118 9119 9120 9121 9122 9123 9124 9125 9126 9127 9128 9129 9130 9131 9132 9133 9092 9093 9094 9095 9096 9097 9086 9087 9088 9089 9090 9091 +48 9110 9111 9112 9113 9114 9115 9134 9135 9136 9137 9138 9139 2305 2306 2307 2308 2309 2310 2399 2400 2401 2402 2403 2404 2387 2388 2389 2390 2391 2392 9140 9141 9142 9143 9144 9145 9122 9123 9124 9125 9126 9127 9116 9117 9118 9119 9120 9121 +48 4802 4803 4804 4805 4806 4807 9146 9147 9148 9149 9150 9151 9152 9153 9154 9155 9156 9157 9158 9159 9160 9161 9162 9163 9164 9165 9166 9167 9168 9169 9170 9171 9172 9173 9174 9175 4814 4815 4816 4817 4818 4819 4808 4809 4810 4811 4812 4813 +48 9152 9153 9154 9155 9156 9157 9176 9177 9178 9179 9180 9181 9182 9183 9184 9185 9186 9187 9188 9189 9190 9191 9192 9193 9194 9195 9196 9197 9198 9199 9200 9201 9202 9203 9204 9205 9164 9165 9166 9167 9168 9169 9158 9159 9160 9161 9162 9163 +48 9218 9219 9220 9221 9222 9223 9212 9213 9214 9215 9216 9217 9206 9207 9208 9209 9210 9211 9224 9225 9226 9227 9228 9229 715 716 717 718 719 720 9230 9231 9232 9233 9234 9235 721 722 723 724 725 726 9236 9237 9238 9239 9240 9241 +48 9182 9183 9184 9185 9186 9187 9242 9243 9244 9245 9246 9247 9206 9207 9208 9209 9210 9211 9248 9249 9250 9251 9252 9253 9254 9255 9256 9257 9258 9259 9260 9261 9262 9263 9264 9265 9194 9195 9196 9197 9198 9199 9188 9189 9190 9191 9192 9193 +48 9206 9207 9208 9209 9210 9211 9212 9213 9214 9215 9216 9217 9218 9219 9220 9221 9222 9223 9266 9267 9268 9269 9270 9271 9272 9273 9274 9275 9276 9277 9278 9279 9280 9281 9282 9283 9254 9255 9256 9257 9258 9259 9248 9249 9250 9251 9252 9253 +48 9206 9207 9208 9209 9210 9211 9242 9243 9244 9245 9246 9247 9182 9183 9184 9185 9186 9187 9284 9285 9286 9287 9288 9289 709 710 711 712 713 714 9290 9291 9292 9293 9294 9295 715 716 717 718 719 720 9224 9225 9226 9227 9228 9229 +48 9218 9219 9220 9221 9222 9223 9296 9297 9298 9299 9300 9301 9302 9303 9304 9305 9306 9307 9308 9309 9310 9311 9312 9313 9314 9315 9316 9317 9318 9319 9320 9321 9322 9323 9324 9325 9272 9273 9274 9275 9276 9277 9266 9267 9268 9269 9270 9271 +48 9302 9303 9304 9305 9306 9307 9326 9327 9328 9329 9330 9331 9332 9333 9334 9335 9336 9337 9338 9339 9340 9341 9342 9343 9344 9345 9346 9347 9348 9349 9350 9351 9352 9353 9354 9355 9314 9315 9316 9317 9318 9319 9308 9309 9310 9311 9312 9313 +36 9152 9153 9154 9155 9156 9157 709 710 711 712 713 714 9182 9183 9184 9185 9186 9187 9356 9357 9358 9359 9360 9361 9284 9285 9286 9287 9288 9289 9176 9177 9178 9179 9180 9181 +48 9332 9333 9334 9335 9336 9337 9362 9363 9364 9365 9366 9367 9368 9369 9370 9371 9372 9373 9374 9375 9376 9377 9378 9379 9380 9381 9382 9383 9384 9385 9386 9387 9388 9389 9390 9391 9344 9345 9346 9347 9348 9349 9338 9339 9340 9341 9342 9343 +48 9152 9153 9154 9155 9156 9157 9398 9399 9400 9401 9402 9403 9392 9393 9394 9395 9396 9397 9404 9405 9406 9407 9408 9409 9410 9411 9412 9413 9414 9415 9416 9417 9418 9419 9420 9421 709 710 711 712 713 714 9356 9357 9358 9359 9360 9361 +48 9368 9369 9370 9371 9372 9373 9422 9423 9424 9425 9426 9427 9428 9429 9430 9431 9432 9433 9434 9435 9436 9437 9438 9439 9440 9441 9442 9443 9444 9445 9446 9447 9448 9449 9450 9451 9380 9381 9382 9383 9384 9385 9374 9375 9376 9377 9378 9379 +48 9428 9429 9430 9431 9432 9433 9452 9453 9454 9455 9456 9457 9458 9459 9460 9461 9462 9463 9464 9465 9466 9467 9468 9469 9470 9471 9472 9473 9474 9475 9476 9477 9478 9479 9480 9481 9440 9441 9442 9443 9444 9445 9434 9435 9436 9437 9438 9439 +48 9458 9459 9460 9461 9462 9463 9482 9483 9484 9485 9486 9487 9488 9489 9490 9491 9492 9493 9494 9495 9496 9497 9498 9499 9500 9501 9502 9503 9504 9505 9506 9507 9508 9509 9510 9511 9470 9471 9472 9473 9474 9475 9464 9465 9466 9467 9468 9469 +48 9488 9489 9490 9491 9492 9493 9512 9513 9514 9515 9516 9517 9518 9519 9520 9521 9522 9523 9524 9525 9526 9527 9528 9529 9530 9531 9532 9533 9534 9535 9536 9537 9538 9539 9540 9541 9500 9501 9502 9503 9504 9505 9494 9495 9496 9497 9498 9499 +48 9518 9519 9520 9521 9522 9523 9542 9543 9544 9545 9546 9547 9548 9549 9550 9551 9552 9553 9554 9555 9556 9557 9558 9559 9560 9561 9562 9563 9564 9565 9566 9567 9568 9569 9570 9571 9530 9531 9532 9533 9534 9535 9524 9525 9526 9527 9528 9529 +48 9548 9549 9550 9551 9552 9553 9572 9573 9574 9575 9576 9577 9578 9579 9580 9581 9582 9583 9584 9585 9586 9587 9588 9589 9590 9591 9592 9593 9594 9595 9596 9597 9598 9599 9600 9601 9560 9561 9562 9563 9564 9565 9554 9555 9556 9557 9558 9559 +48 9602 9603 9604 9605 9606 9607 9608 9609 9610 9611 9612 9613 9614 9615 9616 9617 9618 9619 9620 9621 9622 9623 9624 9625 9626 9627 9628 9629 9630 9631 9632 9633 9634 9635 9636 9637 9578 9579 9580 9581 9582 9583 9638 9639 9640 9641 9642 9643 +48 9578 9579 9580 9581 9582 9583 9632 9633 9634 9635 9636 9637 9626 9627 9628 9629 9630 9631 9644 9645 9646 9647 9648 9649 9650 9651 9652 9653 9654 9655 9656 9657 9658 9659 9660 9661 9590 9591 9592 9593 9594 9595 9584 9585 9586 9587 9588 9589 +48 9626 9627 9628 9629 9630 9631 9662 9663 9664 9665 9666 9667 9668 9669 9670 9671 9672 9673 9674 9675 9676 9677 9678 9679 9680 9681 9682 9683 9684 9685 9686 9687 9688 9689 9690 9691 9650 9651 9652 9653 9654 9655 9644 9645 9646 9647 9648 9649 +48 9668 9669 9670 9671 9672 9673 9692 9693 9694 9695 9696 9697 9698 9699 9700 9701 9702 9703 9704 9705 9706 9707 9708 9709 9710 9711 9712 9713 9714 9715 9716 9717 9718 9719 9720 9721 9680 9681 9682 9683 9684 9685 9674 9675 9676 9677 9678 9679 +48 9698 9699 9700 9701 9702 9703 9722 9723 9724 9725 9726 9727 9728 9729 9730 9731 9732 9733 9734 9735 9736 9737 9738 9739 9740 9741 9742 9743 9744 9745 9746 9747 9748 9749 9750 9751 9710 9711 9712 9713 9714 9715 9704 9705 9706 9707 9708 9709 +48 9728 9729 9730 9731 9732 9733 9752 9753 9754 9755 9756 9757 9758 9759 9760 9761 9762 9763 9764 9765 9766 9767 9768 9769 9770 9771 9772 9773 9774 9775 9776 9777 9778 9779 9780 9781 9740 9741 9742 9743 9744 9745 9734 9735 9736 9737 9738 9739 +48 9758 9759 9760 9761 9762 9763 9782 9783 9784 9785 9786 9787 9788 9789 9790 9791 9792 9793 9794 9795 9796 9797 9798 9799 9800 9801 9802 9803 9804 9805 9806 9807 9808 9809 9810 9811 9770 9771 9772 9773 9774 9775 9764 9765 9766 9767 9768 9769 +48 9788 9789 9790 9791 9792 9793 9812 9813 9814 9815 9816 9817 9818 9819 9820 9821 9822 9823 9824 9825 9826 9827 9828 9829 9830 9831 9832 9833 9834 9835 9836 9837 9838 9839 9840 9841 9800 9801 9802 9803 9804 9805 9794 9795 9796 9797 9798 9799 +48 9818 9819 9820 9821 9822 9823 9842 9843 9844 9845 9846 9847 9848 9849 9850 9851 9852 9853 9854 9855 9856 9857 9858 9859 9860 9861 9862 9863 9864 9865 9866 9867 9868 9869 9870 9871 9830 9831 9832 9833 9834 9835 9824 9825 9826 9827 9828 9829 +48 9848 9849 9850 9851 9852 9853 9872 9873 9874 9875 9876 9877 9878 9879 9880 9881 9882 9883 9884 9885 9886 9887 9888 9889 9890 9891 9892 9893 9894 9895 9896 9897 9898 9899 9900 9901 9860 9861 9862 9863 9864 9865 9854 9855 9856 9857 9858 9859 +48 9878 9879 9880 9881 9882 9883 9902 9903 9904 9905 9906 9907 9908 9909 9910 9911 9912 9913 9914 9915 9916 9917 9918 9919 9920 9921 9922 9923 9924 9925 9926 9927 9928 9929 9930 9931 9890 9891 9892 9893 9894 9895 9884 9885 9886 9887 9888 9889 +48 9908 9909 9910 9911 9912 9913 9932 9933 9934 9935 9936 9937 9938 9939 9940 9941 9942 9943 9944 9945 9946 9947 9948 9949 9950 9951 9952 9953 9954 9955 9956 9957 9958 9959 9960 9961 9920 9921 9922 9923 9924 9925 9914 9915 9916 9917 9918 9919 +48 9938 9939 9940 9941 9942 9943 9962 9963 9964 9965 9966 9967 9968 9969 9970 9971 9972 9973 9974 9975 9976 9977 9978 9979 9980 9981 9982 9983 9984 9985 9986 9987 9988 9989 9990 9991 9950 9951 9952 9953 9954 9955 9944 9945 9946 9947 9948 9949 +48 9968 9969 9970 9971 9972 9973 9992 9993 9994 9995 9996 9997 9998 9999 10000 10001 10002 10003 10004 10005 10006 10007 10008 10009 10010 10011 10012 10013 10014 10015 10016 10017 10018 10019 10020 10021 9980 9981 9982 9983 9984 9985 9974 9975 9976 9977 9978 9979 +48 9998 9999 10000 10001 10002 10003 10022 10023 10024 10025 10026 10027 10028 10029 10030 10031 10032 10033 10034 10035 10036 10037 10038 10039 10040 10041 10042 10043 10044 10045 10046 10047 10048 10049 10050 10051 10010 10011 10012 10013 10014 10015 10004 10005 10006 10007 10008 10009 +48 10028 10029 10030 10031 10032 10033 10052 10053 10054 10055 10056 10057 10058 10059 10060 10061 10062 10063 10064 10065 10066 10067 10068 10069 10070 10071 10072 10073 10074 10075 10076 10077 10078 10079 10080 10081 10040 10041 10042 10043 10044 10045 10034 10035 10036 10037 10038 10039 +48 10058 10059 10060 10061 10062 10063 10082 10083 10084 10085 10086 10087 10088 10089 10090 10091 10092 10093 10094 10095 10096 10097 10098 10099 10100 10101 10102 10103 10104 10105 10106 10107 10108 10109 10110 10111 10070 10071 10072 10073 10074 10075 10064 10065 10066 10067 10068 10069 +48 10088 10089 10090 10091 10092 10093 10112 10113 10114 10115 10116 10117 10118 10119 10120 10121 10122 10123 10124 10125 10126 10127 10128 10129 10130 10131 10132 10133 10134 10135 10136 10137 10138 10139 10140 10141 10100 10101 10102 10103 10104 10105 10094 10095 10096 10097 10098 10099 +48 10118 10119 10120 10121 10122 10123 10142 10143 10144 10145 10146 10147 10148 10149 10150 10151 10152 10153 10154 10155 10156 10157 10158 10159 10160 10161 10162 10163 10164 10165 10166 10167 10168 10169 10170 10171 10130 10131 10132 10133 10134 10135 10124 10125 10126 10127 10128 10129 +48 10148 10149 10150 10151 10152 10153 10172 10173 10174 10175 10176 10177 10178 10179 10180 10181 10182 10183 10184 10185 10186 10187 10188 10189 10190 10191 10192 10193 10194 10195 10196 10197 10198 10199 10200 10201 10160 10161 10162 10163 10164 10165 10154 10155 10156 10157 10158 10159 +48 10178 10179 10180 10181 10182 10183 10202 10203 10204 10205 10206 10207 10208 10209 10210 10211 10212 10213 10214 10215 10216 10217 10218 10219 10220 10221 10222 10223 10224 10225 10226 10227 10228 10229 10230 10231 10190 10191 10192 10193 10194 10195 10184 10185 10186 10187 10188 10189 +48 10208 10209 10210 10211 10212 10213 10232 10233 10234 10235 10236 10237 10238 10239 10240 10241 10242 10243 10244 10245 10246 10247 10248 10249 10250 10251 10252 10253 10254 10255 10256 10257 10258 10259 10260 10261 10220 10221 10222 10223 10224 10225 10214 10215 10216 10217 10218 10219 +48 10238 10239 10240 10241 10242 10243 10262 10263 10264 10265 10266 10267 10268 10269 10270 10271 10272 10273 10274 10275 10276 10277 10278 10279 10280 10281 10282 10283 10284 10285 10286 10287 10288 10289 10290 10291 10250 10251 10252 10253 10254 10255 10244 10245 10246 10247 10248 10249 +48 10268 10269 10270 10271 10272 10273 10292 10293 10294 10295 10296 10297 10298 10299 10300 10301 10302 10303 10304 10305 10306 10307 10308 10309 10310 10311 10312 10313 10314 10315 10316 10317 10318 10319 10320 10321 10280 10281 10282 10283 10284 10285 10274 10275 10276 10277 10278 10279 +48 10298 10299 10300 10301 10302 10303 10322 10323 10324 10325 10326 10327 10328 10329 10330 10331 10332 10333 10334 10335 10336 10337 10338 10339 10340 10341 10342 10343 10344 10345 10346 10347 10348 10349 10350 10351 10310 10311 10312 10313 10314 10315 10304 10305 10306 10307 10308 10309 +48 10328 10329 10330 10331 10332 10333 10352 10353 10354 10355 10356 10357 10358 10359 10360 10361 10362 10363 10364 10365 10366 10367 10368 10369 10370 10371 10372 10373 10374 10375 10376 10377 10378 10379 10380 10381 10340 10341 10342 10343 10344 10345 10334 10335 10336 10337 10338 10339 +48 10358 10359 10360 10361 10362 10363 10382 10383 10384 10385 10386 10387 10388 10389 10390 10391 10392 10393 10394 10395 10396 10397 10398 10399 10400 10401 10402 10403 10404 10405 10406 10407 10408 10409 10410 10411 10370 10371 10372 10373 10374 10375 10364 10365 10366 10367 10368 10369 +48 10388 10389 10390 10391 10392 10393 10412 10413 10414 10415 10416 10417 10418 10419 10420 10421 10422 10423 10424 10425 10426 10427 10428 10429 10430 10431 10432 10433 10434 10435 10436 10437 10438 10439 10440 10441 10400 10401 10402 10403 10404 10405 10394 10395 10396 10397 10398 10399 +48 10442 10443 10444 10445 10446 10447 10448 10449 10450 10451 10452 10453 10454 10455 10456 10457 10458 10459 10460 10461 10462 10463 10464 10465 10466 10467 10468 10469 10470 10471 10472 10473 10474 10475 10476 10477 10418 10419 10420 10421 10422 10423 10478 10479 10480 10481 10482 10483 +48 10418 10419 10420 10421 10422 10423 10472 10473 10474 10475 10476 10477 10466 10467 10468 10469 10470 10471 10484 10485 10486 10487 10488 10489 10490 10491 10492 10493 10494 10495 10496 10497 10498 10499 10500 10501 10430 10431 10432 10433 10434 10435 10424 10425 10426 10427 10428 10429 +48 10466 10467 10468 10469 10470 10471 10502 10503 10504 10505 10506 10507 10508 10509 10510 10511 10512 10513 10514 10515 10516 10517 10518 10519 10520 10521 10522 10523 10524 10525 10526 10527 10528 10529 10530 10531 10490 10491 10492 10493 10494 10495 10484 10485 10486 10487 10488 10489 +48 10508 10509 10510 10511 10512 10513 10532 10533 10534 10535 10536 10537 2579 2580 2581 2582 2583 2584 2675 2676 2677 2678 2679 2680 2663 2664 2665 2666 2667 2668 10538 10539 10540 10541 10542 10543 10520 10521 10522 10523 10524 10525 10514 10515 10516 10517 10518 10519 +48 10544 10545 10546 10547 10548 10549 10550 10551 10552 10553 10554 10555 10556 10557 10558 10559 10560 10561 10562 10563 10564 10565 10566 10567 10568 10569 10570 10571 10572 10573 10580 10581 10582 10583 10584 10585 10574 10575 10576 10577 10578 10579 10586 10587 10588 10589 10590 10591 +48 10604 10605 10606 10607 10608 10609 10598 10599 10600 10601 10602 10603 10592 10593 10594 10595 10596 10597 10610 10611 10612 10613 10614 10615 655 656 657 658 659 660 10616 10617 10618 10619 10620 10621 667 668 669 670 671 672 10622 10623 10624 10625 10626 10627 +48 10556 10557 10558 10559 10560 10561 10628 10629 10630 10631 10632 10633 10592 10593 10594 10595 10596 10597 10634 10635 10636 10637 10638 10639 10640 10641 10642 10643 10644 10645 10646 10647 10648 10649 10650 10651 10568 10569 10570 10571 10572 10573 10562 10563 10564 10565 10566 10567 +48 10592 10593 10594 10595 10596 10597 10598 10599 10600 10601 10602 10603 10604 10605 10606 10607 10608 10609 10652 10653 10654 10655 10656 10657 10658 10659 10660 10661 10662 10663 10664 10665 10666 10667 10668 10669 10640 10641 10642 10643 10644 10645 10634 10635 10636 10637 10638 10639 +48 10592 10593 10594 10595 10596 10597 10628 10629 10630 10631 10632 10633 10556 10557 10558 10559 10560 10561 10670 10671 10672 10673 10674 10675 643 644 645 646 647 648 10676 10677 10678 10679 10680 10681 655 656 657 658 659 660 10610 10611 10612 10613 10614 10615 +48 10604 10605 10606 10607 10608 10609 10682 10683 10684 10685 10686 10687 10688 10689 10690 10691 10692 10693 10694 10695 10696 10697 10698 10699 10700 10701 10702 10703 10704 10705 10706 10707 10708 10709 10710 10711 10658 10659 10660 10661 10662 10663 10652 10653 10654 10655 10656 10657 +48 10688 10689 10690 10691 10692 10693 10712 10713 10714 10715 10716 10717 10718 10719 10720 10721 10722 10723 10724 10725 10726 10727 10728 10729 10730 10731 10732 10733 10734 10735 10736 10737 10738 10739 10740 10741 10700 10701 10702 10703 10704 10705 10694 10695 10696 10697 10698 10699 +36 10544 10545 10546 10547 10548 10549 643 644 645 646 647 648 10556 10557 10558 10559 10560 10561 10742 10743 10744 10745 10746 10747 10670 10671 10672 10673 10674 10675 10550 10551 10552 10553 10554 10555 +48 10718 10719 10720 10721 10722 10723 10748 10749 10750 10751 10752 10753 10754 10755 10756 10757 10758 10759 10760 10761 10762 10763 10764 10765 10766 10767 10768 10769 10770 10771 10772 10773 10774 10775 10776 10777 10730 10731 10732 10733 10734 10735 10724 10725 10726 10727 10728 10729 +48 10544 10545 10546 10547 10548 10549 10784 10785 10786 10787 10788 10789 10778 10779 10780 10781 10782 10783 10790 10791 10792 10793 10794 10795 10796 10797 10798 10799 10800 10801 10802 10803 10804 10805 10806 10807 643 644 645 646 647 648 10742 10743 10744 10745 10746 10747 +48 10754 10755 10756 10757 10758 10759 10808 10809 10810 10811 10812 10813 10814 10815 10816 10817 10818 10819 10820 10821 10822 10823 10824 10825 10826 10827 10828 10829 10830 10831 10832 10833 10834 10835 10836 10837 10766 10767 10768 10769 10770 10771 10760 10761 10762 10763 10764 10765 +48 10814 10815 10816 10817 10818 10819 10838 10839 10840 10841 10842 10843 10844 10845 10846 10847 10848 10849 10850 10851 10852 10853 10854 10855 10856 10857 10858 10859 10860 10861 10862 10863 10864 10865 10866 10867 10826 10827 10828 10829 10830 10831 10820 10821 10822 10823 10824 10825 +48 10844 10845 10846 10847 10848 10849 10868 10869 10870 10871 10872 10873 10874 10875 10876 10877 10878 10879 10880 10881 10882 10883 10884 10885 10886 10887 10888 10889 10890 10891 10892 10893 10894 10895 10896 10897 10856 10857 10858 10859 10860 10861 10850 10851 10852 10853 10854 10855 +48 10898 10899 10900 10901 10902 10903 10904 10905 10906 10907 10908 10909 10910 10911 10912 10913 10914 10915 10916 10917 10918 10919 10920 10921 10922 10923 10924 10925 10926 10927 10928 10929 10930 10931 10932 10933 10874 10875 10876 10877 10878 10879 10934 10935 10936 10937 10938 10939 +48 10874 10875 10876 10877 10878 10879 10928 10929 10930 10931 10932 10933 10922 10923 10924 10925 10926 10927 10940 10941 10942 10943 10944 10945 10946 10947 10948 10949 10950 10951 10952 10953 10954 10955 10956 10957 10886 10887 10888 10889 10890 10891 10880 10881 10882 10883 10884 10885 +48 10922 10923 10924 10925 10926 10927 10958 10959 10960 10961 10962 10963 10964 10965 10966 10967 10968 10969 10970 10971 10972 10973 10974 10975 10976 10977 10978 10979 10980 10981 10982 10983 10984 10985 10986 10987 10946 10947 10948 10949 10950 10951 10940 10941 10942 10943 10944 10945 +48 10964 10965 10966 10967 10968 10969 10988 10989 10990 10991 10992 10993 10994 10995 10996 10997 10998 10999 11000 11001 11002 11003 11004 11005 11006 11007 11008 11009 11010 11011 11012 11013 11014 11015 11016 11017 10976 10977 10978 10979 10980 10981 10970 10971 10972 10973 10974 10975 +48 11018 11019 11020 11021 11022 11023 11024 11025 11026 11027 11028 11029 11030 11031 11032 11033 11034 11035 11036 11037 11038 11039 11040 11041 11042 11043 11044 11045 11046 11047 11048 11049 11050 11051 11052 11053 10994 10995 10996 10997 10998 10999 11054 11055 11056 11057 11058 11059 +48 10994 10995 10996 10997 10998 10999 11048 11049 11050 11051 11052 11053 11042 11043 11044 11045 11046 11047 11060 11061 11062 11063 11064 11065 11066 11067 11068 11069 11070 11071 11072 11073 11074 11075 11076 11077 11006 11007 11008 11009 11010 11011 11000 11001 11002 11003 11004 11005 +48 11042 11043 11044 11045 11046 11047 11078 11079 11080 11081 11082 11083 11084 11085 11086 11087 11088 11089 11090 11091 11092 11093 11094 11095 11096 11097 11098 11099 11100 11101 11102 11103 11104 11105 11106 11107 11066 11067 11068 11069 11070 11071 11060 11061 11062 11063 11064 11065 +48 11084 11085 11086 11087 11088 11089 11108 11109 11110 11111 11112 11113 11114 11115 11116 11117 11118 11119 11120 11121 11122 11123 11124 11125 11126 11127 11128 11129 11130 11131 11132 11133 11134 11135 11136 11137 11096 11097 11098 11099 11100 11101 11090 11091 11092 11093 11094 11095 +48 11138 11139 11140 11141 11142 11143 11144 11145 11146 11147 11148 11149 11150 11151 11152 11153 11154 11155 11156 11157 11158 11159 11160 11161 11162 11163 11164 11165 11166 11167 11168 11169 11170 11171 11172 11173 11114 11115 11116 11117 11118 11119 11174 11175 11176 11177 11178 11179 +48 11114 11115 11116 11117 11118 11119 11168 11169 11170 11171 11172 11173 11162 11163 11164 11165 11166 11167 11180 11181 11182 11183 11184 11185 11186 11187 11188 11189 11190 11191 11192 11193 11194 11195 11196 11197 11126 11127 11128 11129 11130 11131 11120 11121 11122 11123 11124 11125 +48 11162 11163 11164 11165 11166 11167 11198 11199 11200 11201 11202 11203 11204 11205 11206 11207 11208 11209 11210 11211 11212 11213 11214 11215 11216 11217 11218 11219 11220 11221 11222 11223 11224 11225 11226 11227 11186 11187 11188 11189 11190 11191 11180 11181 11182 11183 11184 11185 +48 11204 11205 11206 11207 11208 11209 11228 11229 11230 11231 11232 11233 11234 11235 11236 11237 11238 11239 11240 11241 11242 11243 11244 11245 11246 11247 11248 11249 11250 11251 11252 11253 11254 11255 11256 11257 11216 11217 11218 11219 11220 11221 11210 11211 11212 11213 11214 11215 +48 11258 11259 11260 11261 11262 11263 11264 11265 11266 11267 11268 11269 11270 11271 11272 11273 11274 11275 11276 11277 11278 11279 11280 11281 11282 11283 11284 11285 11286 11287 11288 11289 11290 11291 11292 11293 11234 11235 11236 11237 11238 11239 11294 11295 11296 11297 11298 11299 +48 11234 11235 11236 11237 11238 11239 11288 11289 11290 11291 11292 11293 11282 11283 11284 11285 11286 11287 11300 11301 11302 11303 11304 11305 11306 11307 11308 11309 11310 11311 11312 11313 11314 11315 11316 11317 11246 11247 11248 11249 11250 11251 11240 11241 11242 11243 11244 11245 +48 11282 11283 11284 11285 11286 11287 11318 11319 11320 11321 11322 11323 11324 11325 11326 11327 11328 11329 11330 11331 11332 11333 11334 11335 11336 11337 11338 11339 11340 11341 11342 11343 11344 11345 11346 11347 11306 11307 11308 11309 11310 11311 11300 11301 11302 11303 11304 11305 +48 11324 11325 11326 11327 11328 11329 11348 11349 11350 11351 11352 11353 11354 11355 11356 11357 11358 11359 11360 11361 11362 11363 11364 11365 11366 11367 11368 11369 11370 11371 11372 11373 11374 11375 11376 11377 11336 11337 11338 11339 11340 11341 11330 11331 11332 11333 11334 11335 +48 11378 11379 11380 11381 11382 11383 11384 11385 11386 11387 11388 11389 11390 11391 11392 11393 11394 11395 11396 11397 11398 11399 11400 11401 11402 11403 11404 11405 11406 11407 11408 11409 11410 11411 11412 11413 11354 11355 11356 11357 11358 11359 11414 11415 11416 11417 11418 11419 +48 11354 11355 11356 11357 11358 11359 11408 11409 11410 11411 11412 11413 11402 11403 11404 11405 11406 11407 11420 11421 11422 11423 11424 11425 11426 11427 11428 11429 11430 11431 11432 11433 11434 11435 11436 11437 11366 11367 11368 11369 11370 11371 11360 11361 11362 11363 11364 11365 +48 11402 11403 11404 11405 11406 11407 11438 11439 11440 11441 11442 11443 11444 11445 11446 11447 11448 11449 11450 11451 11452 11453 11454 11455 11456 11457 11458 11459 11460 11461 11462 11463 11464 11465 11466 11467 11426 11427 11428 11429 11430 11431 11420 11421 11422 11423 11424 11425 +48 11444 11445 11446 11447 11448 11449 11468 11469 11470 11471 11472 11473 11474 11475 11476 11477 11478 11479 11480 11481 11482 11483 11484 11485 11486 11487 11488 11489 11490 11491 11492 11493 11494 11495 11496 11497 11456 11457 11458 11459 11460 11461 11450 11451 11452 11453 11454 11455 +48 11498 11499 11500 11501 11502 11503 11504 11505 11506 11507 11508 11509 11510 11511 11512 11513 11514 11515 11516 11517 11518 11519 11520 11521 11522 11523 11524 11525 11526 11527 11528 11529 11530 11531 11532 11533 11474 11475 11476 11477 11478 11479 11534 11535 11536 11537 11538 11539 +48 11474 11475 11476 11477 11478 11479 11528 11529 11530 11531 11532 11533 11522 11523 11524 11525 11526 11527 11540 11541 11542 11543 11544 11545 11546 11547 11548 11549 11550 11551 11552 11553 11554 11555 11556 11557 11486 11487 11488 11489 11490 11491 11480 11481 11482 11483 11484 11485 +48 11522 11523 11524 11525 11526 11527 11558 11559 11560 11561 11562 11563 11564 11565 11566 11567 11568 11569 11570 11571 11572 11573 11574 11575 11576 11577 11578 11579 11580 11581 11582 11583 11584 11585 11586 11587 11546 11547 11548 11549 11550 11551 11540 11541 11542 11543 11544 11545 +48 11564 11565 11566 11567 11568 11569 11588 11589 11590 11591 11592 11593 11594 11595 11596 11597 11598 11599 11600 11601 11602 11603 11604 11605 11606 11607 11608 11609 11610 11611 11612 11613 11614 11615 11616 11617 11576 11577 11578 11579 11580 11581 11570 11571 11572 11573 11574 11575 +48 11618 11619 11620 11621 11622 11623 11624 11625 11626 11627 11628 11629 11630 11631 11632 11633 11634 11635 11636 11637 11638 11639 11640 11641 11642 11643 11644 11645 11646 11647 11648 11649 11650 11651 11652 11653 11594 11595 11596 11597 11598 11599 11654 11655 11656 11657 11658 11659 +48 11594 11595 11596 11597 11598 11599 11648 11649 11650 11651 11652 11653 11642 11643 11644 11645 11646 11647 11660 11661 11662 11663 11664 11665 11666 11667 11668 11669 11670 11671 11672 11673 11674 11675 11676 11677 11606 11607 11608 11609 11610 11611 11600 11601 11602 11603 11604 11605 +48 11642 11643 11644 11645 11646 11647 11678 11679 11680 11681 11682 11683 11684 11685 11686 11687 11688 11689 11690 11691 11692 11693 11694 11695 11696 11697 11698 11699 11700 11701 11702 11703 11704 11705 11706 11707 11666 11667 11668 11669 11670 11671 11660 11661 11662 11663 11664 11665 +48 11684 11685 11686 11687 11688 11689 11708 11709 11710 11711 11712 11713 11714 11715 11716 11717 11718 11719 11720 11721 11722 11723 11724 11725 11726 11727 11728 11729 11730 11731 11732 11733 11734 11735 11736 11737 11696 11697 11698 11699 11700 11701 11690 11691 11692 11693 11694 11695 +48 11738 11739 11740 11741 11742 11743 11744 11745 11746 11747 11748 11749 11750 11751 11752 11753 11754 11755 11756 11757 11758 11759 11760 11761 11762 11763 11764 11765 11766 11767 11768 11769 11770 11771 11772 11773 11714 11715 11716 11717 11718 11719 11774 11775 11776 11777 11778 11779 +48 11714 11715 11716 11717 11718 11719 11768 11769 11770 11771 11772 11773 11762 11763 11764 11765 11766 11767 11780 11781 11782 11783 11784 11785 11786 11787 11788 11789 11790 11791 11792 11793 11794 11795 11796 11797 11726 11727 11728 11729 11730 11731 11720 11721 11722 11723 11724 11725 +48 11762 11763 11764 11765 11766 11767 11798 11799 11800 11801 11802 11803 11804 11805 11806 11807 11808 11809 11810 11811 11812 11813 11814 11815 11816 11817 11818 11819 11820 11821 11822 11823 11824 11825 11826 11827 11786 11787 11788 11789 11790 11791 11780 11781 11782 11783 11784 11785 +48 11804 11805 11806 11807 11808 11809 11828 11829 11830 11831 11832 11833 11834 11835 11836 11837 11838 11839 11840 11841 11842 11843 11844 11845 11846 11847 11848 11849 11850 11851 11852 11853 11854 11855 11856 11857 11816 11817 11818 11819 11820 11821 11810 11811 11812 11813 11814 11815 +48 11858 11859 11860 11861 11862 11863 11864 11865 11866 11867 11868 11869 11870 11871 11872 11873 11874 11875 11876 11877 11878 11879 11880 11881 11882 11883 11884 11885 11886 11887 11888 11889 11890 11891 11892 11893 11834 11835 11836 11837 11838 11839 11894 11895 11896 11897 11898 11899 +48 11834 11835 11836 11837 11838 11839 11888 11889 11890 11891 11892 11893 11882 11883 11884 11885 11886 11887 11900 11901 11902 11903 11904 11905 11906 11907 11908 11909 11910 11911 11912 11913 11914 11915 11916 11917 11846 11847 11848 11849 11850 11851 11840 11841 11842 11843 11844 11845 +48 11882 11883 11884 11885 11886 11887 11918 11919 11920 11921 11922 11923 11924 11925 11926 11927 11928 11929 11930 11931 11932 11933 11934 11935 11936 11937 11938 11939 11940 11941 11942 11943 11944 11945 11946 11947 11906 11907 11908 11909 11910 11911 11900 11901 11902 11903 11904 11905 +48 11924 11925 11926 11927 11928 11929 11948 11949 11950 11951 11952 11953 11954 11955 11956 11957 11958 11959 11960 11961 11962 11963 11964 11965 11966 11967 11968 11969 11970 11971 11972 11973 11974 11975 11976 11977 11936 11937 11938 11939 11940 11941 11930 11931 11932 11933 11934 11935 +48 11978 11979 11980 11981 11982 11983 11984 11985 11986 11987 11988 11989 11990 11991 11992 11993 11994 11995 11996 11997 11998 11999 12000 12001 12002 12003 12004 12005 12006 12007 12008 12009 12010 12011 12012 12013 11954 11955 11956 11957 11958 11959 12014 12015 12016 12017 12018 12019 +48 11954 11955 11956 11957 11958 11959 12008 12009 12010 12011 12012 12013 12002 12003 12004 12005 12006 12007 12020 12021 12022 12023 12024 12025 12026 12027 12028 12029 12030 12031 12032 12033 12034 12035 12036 12037 11966 11967 11968 11969 11970 11971 11960 11961 11962 11963 11964 11965 +48 12002 12003 12004 12005 12006 12007 12038 12039 12040 12041 12042 12043 12044 12045 12046 12047 12048 12049 12050 12051 12052 12053 12054 12055 12056 12057 12058 12059 12060 12061 12062 12063 12064 12065 12066 12067 12026 12027 12028 12029 12030 12031 12020 12021 12022 12023 12024 12025 +48 12044 12045 12046 12047 12048 12049 12068 12069 12070 12071 12072 12073 12074 12075 12076 12077 12078 12079 12080 12081 12082 12083 12084 12085 12086 12087 12088 12089 12090 12091 12092 12093 12094 12095 12096 12097 12056 12057 12058 12059 12060 12061 12050 12051 12052 12053 12054 12055 +48 12098 12099 12100 12101 12102 12103 12104 12105 12106 12107 12108 12109 12110 12111 12112 12113 12114 12115 12116 12117 12118 12119 12120 12121 12122 12123 12124 12125 12126 12127 12128 12129 12130 12131 12132 12133 12074 12075 12076 12077 12078 12079 12134 12135 12136 12137 12138 12139 +48 12074 12075 12076 12077 12078 12079 12128 12129 12130 12131 12132 12133 12122 12123 12124 12125 12126 12127 12140 12141 12142 12143 12144 12145 12146 12147 12148 12149 12150 12151 12152 12153 12154 12155 12156 12157 12086 12087 12088 12089 12090 12091 12080 12081 12082 12083 12084 12085 +48 12122 12123 12124 12125 12126 12127 12158 12159 12160 12161 12162 12163 12164 12165 12166 12167 12168 12169 12170 12171 12172 12173 12174 12175 12176 12177 12178 12179 12180 12181 12182 12183 12184 12185 12186 12187 12146 12147 12148 12149 12150 12151 12140 12141 12142 12143 12144 12145 +48 12188 12189 12190 12191 12192 12193 12194 12195 12196 12197 12198 12199 12200 12201 12202 12203 12204 12205 12206 12207 12208 12209 12210 12211 637 638 639 640 641 642 12218 12219 12220 12221 12222 12223 12212 12213 12214 12215 12216 12217 12224 12225 12226 12227 12228 12229 +48 12212 12213 12214 12215 12216 12217 12218 12219 12220 12221 12222 12223 637 638 639 640 641 642 12230 12231 12232 12233 12234 12235 12236 12237 12238 12239 12240 12241 12248 12249 12250 12251 12252 12253 12242 12243 12244 12245 12246 12247 12254 12255 12256 12257 12258 12259 +48 12200 12201 12202 12203 12204 12205 12260 12261 12262 12263 12264 12265 12266 12267 12268 12269 12270 12271 12272 12273 12274 12275 12276 12277 649 650 651 652 653 654 12278 12279 12280 12281 12282 12283 637 638 639 640 641 642 12206 12207 12208 12209 12210 12211 +48 637 638 639 640 641 642 12278 12279 12280 12281 12282 12283 649 650 651 652 653 654 12284 12285 12286 12287 12288 12289 12290 12291 12292 12293 12294 12295 12296 12297 12298 12299 12300 12301 12236 12237 12238 12239 12240 12241 12230 12231 12232 12233 12234 12235 +48 12266 12267 12268 12269 12270 12271 12302 12303 12304 12305 12306 12307 12308 12309 12310 12311 12312 12313 12314 12315 12316 12317 12318 12319 661 662 663 664 665 666 12320 12321 12322 12323 12324 12325 649 650 651 652 653 654 12272 12273 12274 12275 12276 12277 +48 649 650 651 652 653 654 12320 12321 12322 12323 12324 12325 661 662 663 664 665 666 12326 12327 12328 12329 12330 12331 12332 12333 12334 12335 12336 12337 12338 12339 12340 12341 12342 12343 12290 12291 12292 12293 12294 12295 12284 12285 12286 12287 12288 12289 +48 12308 12309 12310 12311 12312 12313 12344 12345 12346 12347 12348 12349 12350 12351 12352 12353 12354 12355 12356 12357 12358 12359 12360 12361 673 674 675 676 677 678 12362 12363 12364 12365 12366 12367 661 662 663 664 665 666 12314 12315 12316 12317 12318 12319 +48 661 662 663 664 665 666 12362 12363 12364 12365 12366 12367 673 674 675 676 677 678 12368 12369 12370 12371 12372 12373 12374 12375 12376 12377 12378 12379 12380 12381 12382 12383 12384 12385 12332 12333 12334 12335 12336 12337 12326 12327 12328 12329 12330 12331 +48 12350 12351 12352 12353 12354 12355 12386 12387 12388 12389 12390 12391 12392 12393 12394 12395 12396 12397 12398 12399 12400 12401 12402 12403 685 686 687 688 689 690 12404 12405 12406 12407 12408 12409 673 674 675 676 677 678 12356 12357 12358 12359 12360 12361 +48 673 674 675 676 677 678 12404 12405 12406 12407 12408 12409 685 686 687 688 689 690 12410 12411 12412 12413 12414 12415 12416 12417 12418 12419 12420 12421 12422 12423 12424 12425 12426 12427 12374 12375 12376 12377 12378 12379 12368 12369 12370 12371 12372 12373 +48 12392 12393 12394 12395 12396 12397 12428 12429 12430 12431 12432 12433 12434 12435 12436 12437 12438 12439 12440 12441 12442 12443 12444 12445 697 698 699 700 701 702 12446 12447 12448 12449 12450 12451 685 686 687 688 689 690 12398 12399 12400 12401 12402 12403 +48 685 686 687 688 689 690 12446 12447 12448 12449 12450 12451 697 698 699 700 701 702 12452 12453 12454 12455 12456 12457 12458 12459 12460 12461 12462 12463 12464 12465 12466 12467 12468 12469 12416 12417 12418 12419 12420 12421 12410 12411 12412 12413 12414 12415 +48 12434 12435 12436 12437 12438 12439 12470 12471 12472 12473 12474 12475 12476 12477 12478 12479 12480 12481 12482 12483 12484 12485 12486 12487 12488 12489 12490 12491 12492 12493 12494 12495 12496 12497 12498 12499 697 698 699 700 701 702 12440 12441 12442 12443 12444 12445 +48 697 698 699 700 701 702 12494 12495 12496 12497 12498 12499 12488 12489 12490 12491 12492 12493 12500 12501 12502 12503 12504 12505 12506 12507 12508 12509 12510 12511 12512 12513 12514 12515 12516 12517 12458 12459 12460 12461 12462 12463 12452 12453 12454 12455 12456 12457 +48 12476 12477 12478 12479 12480 12481 12518 12519 12520 12521 12522 12523 12524 12525 12526 12527 12528 12529 12530 12531 12532 12533 12534 12535 12536 12537 12538 12539 12540 12541 12542 12543 12544 12545 12546 12547 12488 12489 12490 12491 12492 12493 12482 12483 12484 12485 12486 12487 +48 12488 12489 12490 12491 12492 12493 12542 12543 12544 12545 12546 12547 12536 12537 12538 12539 12540 12541 12548 12549 12550 12551 12552 12553 12554 12555 12556 12557 12558 12559 12560 12561 12562 12563 12564 12565 12506 12507 12508 12509 12510 12511 12500 12501 12502 12503 12504 12505 +48 12524 12525 12526 12527 12528 12529 12566 12567 12568 12569 12570 12571 12572 12573 12574 12575 12576 12577 12578 12579 12580 12581 12582 12583 12584 12585 12586 12587 12588 12589 12590 12591 12592 12593 12594 12595 12536 12537 12538 12539 12540 12541 12530 12531 12532 12533 12534 12535 +48 12536 12537 12538 12539 12540 12541 12590 12591 12592 12593 12594 12595 12584 12585 12586 12587 12588 12589 12596 12597 12598 12599 12600 12601 12602 12603 12604 12605 12606 12607 12608 12609 12610 12611 12612 12613 12554 12555 12556 12557 12558 12559 12548 12549 12550 12551 12552 12553 +48 12572 12573 12574 12575 12576 12577 12614 12615 12616 12617 12618 12619 12620 12621 12622 12623 12624 12625 12626 12627 12628 12629 12630 12631 12632 12633 12634 12635 12636 12637 12638 12639 12640 12641 12642 12643 12584 12585 12586 12587 12588 12589 12578 12579 12580 12581 12582 12583 +48 12584 12585 12586 12587 12588 12589 12638 12639 12640 12641 12642 12643 12632 12633 12634 12635 12636 12637 12644 12645 12646 12647 12648 12649 12650 12651 12652 12653 12654 12655 12656 12657 12658 12659 12660 12661 12602 12603 12604 12605 12606 12607 12596 12597 12598 12599 12600 12601 +48 12620 12621 12622 12623 12624 12625 12662 12663 12664 12665 12666 12667 12668 12669 12670 12671 12672 12673 12674 12675 12676 12677 12678 12679 12680 12681 12682 12683 12684 12685 12686 12687 12688 12689 12690 12691 12632 12633 12634 12635 12636 12637 12626 12627 12628 12629 12630 12631 +48 12632 12633 12634 12635 12636 12637 12686 12687 12688 12689 12690 12691 12680 12681 12682 12683 12684 12685 12692 12693 12694 12695 12696 12697 12698 12699 12700 12701 12702 12703 12704 12705 12706 12707 12708 12709 12650 12651 12652 12653 12654 12655 12644 12645 12646 12647 12648 12649 +48 12668 12669 12670 12671 12672 12673 12710 12711 12712 12713 12714 12715 12716 12717 12718 12719 12720 12721 12722 12723 12724 12725 12726 12727 12728 12729 12730 12731 12732 12733 12734 12735 12736 12737 12738 12739 12680 12681 12682 12683 12684 12685 12674 12675 12676 12677 12678 12679 +48 12680 12681 12682 12683 12684 12685 12734 12735 12736 12737 12738 12739 12728 12729 12730 12731 12732 12733 12740 12741 12742 12743 12744 12745 12746 12747 12748 12749 12750 12751 12752 12753 12754 12755 12756 12757 12698 12699 12700 12701 12702 12703 12692 12693 12694 12695 12696 12697 +48 12716 12717 12718 12719 12720 12721 12758 12759 12760 12761 12762 12763 12764 12765 12766 12767 12768 12769 12770 12771 12772 12773 12774 12775 12776 12777 12778 12779 12780 12781 12782 12783 12784 12785 12786 12787 12728 12729 12730 12731 12732 12733 12722 12723 12724 12725 12726 12727 +48 12728 12729 12730 12731 12732 12733 12782 12783 12784 12785 12786 12787 12776 12777 12778 12779 12780 12781 12788 12789 12790 12791 12792 12793 12794 12795 12796 12797 12798 12799 12800 12801 12802 12803 12804 12805 12746 12747 12748 12749 12750 12751 12740 12741 12742 12743 12744 12745 +48 12764 12765 12766 12767 12768 12769 12806 12807 12808 12809 12810 12811 12812 12813 12814 12815 12816 12817 12818 12819 12820 12821 12822 12823 12824 12825 12826 12827 12828 12829 12830 12831 12832 12833 12834 12835 12776 12777 12778 12779 12780 12781 12770 12771 12772 12773 12774 12775 +48 12776 12777 12778 12779 12780 12781 12830 12831 12832 12833 12834 12835 12824 12825 12826 12827 12828 12829 12836 12837 12838 12839 12840 12841 12842 12843 12844 12845 12846 12847 12848 12849 12850 12851 12852 12853 12794 12795 12796 12797 12798 12799 12788 12789 12790 12791 12792 12793 +48 12812 12813 12814 12815 12816 12817 12854 12855 12856 12857 12858 12859 12860 12861 12862 12863 12864 12865 12866 12867 12868 12869 12870 12871 12872 12873 12874 12875 12876 12877 12878 12879 12880 12881 12882 12883 12824 12825 12826 12827 12828 12829 12818 12819 12820 12821 12822 12823 +48 12824 12825 12826 12827 12828 12829 12878 12879 12880 12881 12882 12883 12872 12873 12874 12875 12876 12877 12884 12885 12886 12887 12888 12889 12890 12891 12892 12893 12894 12895 12896 12897 12898 12899 12900 12901 12842 12843 12844 12845 12846 12847 12836 12837 12838 12839 12840 12841 +48 12860 12861 12862 12863 12864 12865 12902 12903 12904 12905 12906 12907 12908 12909 12910 12911 12912 12913 12914 12915 12916 12917 12918 12919 12920 12921 12922 12923 12924 12925 12926 12927 12928 12929 12930 12931 12872 12873 12874 12875 12876 12877 12866 12867 12868 12869 12870 12871 +48 12872 12873 12874 12875 12876 12877 12926 12927 12928 12929 12930 12931 12920 12921 12922 12923 12924 12925 12932 12933 12934 12935 12936 12937 12938 12939 12940 12941 12942 12943 12944 12945 12946 12947 12948 12949 12890 12891 12892 12893 12894 12895 12884 12885 12886 12887 12888 12889 +48 12908 12909 12910 12911 12912 12913 12950 12951 12952 12953 12954 12955 12956 12957 12958 12959 12960 12961 12962 12963 12964 12965 12966 12967 12968 12969 12970 12971 12972 12973 12974 12975 12976 12977 12978 12979 12920 12921 12922 12923 12924 12925 12914 12915 12916 12917 12918 12919 +48 12920 12921 12922 12923 12924 12925 12974 12975 12976 12977 12978 12979 12968 12969 12970 12971 12972 12973 12980 12981 12982 12983 12984 12985 12986 12987 12988 12989 12990 12991 12992 12993 12994 12995 12996 12997 12938 12939 12940 12941 12942 12943 12932 12933 12934 12935 12936 12937 +48 12956 12957 12958 12959 12960 12961 12998 12999 13000 13001 13002 13003 13004 13005 13006 13007 13008 13009 13010 13011 13012 13013 13014 13015 13016 13017 13018 13019 13020 13021 13022 13023 13024 13025 13026 13027 12968 12969 12970 12971 12972 12973 12962 12963 12964 12965 12966 12967 +48 12968 12969 12970 12971 12972 12973 13022 13023 13024 13025 13026 13027 13016 13017 13018 13019 13020 13021 13028 13029 13030 13031 13032 13033 13034 13035 13036 13037 13038 13039 13040 13041 13042 13043 13044 13045 12986 12987 12988 12989 12990 12991 12980 12981 12982 12983 12984 12985 +48 13004 13005 13006 13007 13008 13009 13046 13047 13048 13049 13050 13051 13052 13053 13054 13055 13056 13057 13058 13059 13060 13061 13062 13063 13064 13065 13066 13067 13068 13069 13070 13071 13072 13073 13074 13075 13016 13017 13018 13019 13020 13021 13010 13011 13012 13013 13014 13015 +48 13016 13017 13018 13019 13020 13021 13070 13071 13072 13073 13074 13075 13064 13065 13066 13067 13068 13069 13076 13077 13078 13079 13080 13081 13082 13083 13084 13085 13086 13087 13088 13089 13090 13091 13092 13093 13034 13035 13036 13037 13038 13039 13028 13029 13030 13031 13032 13033 +48 13052 13053 13054 13055 13056 13057 13094 13095 13096 13097 13098 13099 13100 13101 13102 13103 13104 13105 13106 13107 13108 13109 13110 13111 13112 13113 13114 13115 13116 13117 13118 13119 13120 13121 13122 13123 13064 13065 13066 13067 13068 13069 13058 13059 13060 13061 13062 13063 +48 13064 13065 13066 13067 13068 13069 13118 13119 13120 13121 13122 13123 13112 13113 13114 13115 13116 13117 13124 13125 13126 13127 13128 13129 13130 13131 13132 13133 13134 13135 13136 13137 13138 13139 13140 13141 13082 13083 13084 13085 13086 13087 13076 13077 13078 13079 13080 13081 +48 13100 13101 13102 13103 13104 13105 13142 13143 13144 13145 13146 13147 13148 13149 13150 13151 13152 13153 13154 13155 13156 13157 13158 13159 13160 13161 13162 13163 13164 13165 13166 13167 13168 13169 13170 13171 13112 13113 13114 13115 13116 13117 13106 13107 13108 13109 13110 13111 +48 13112 13113 13114 13115 13116 13117 13166 13167 13168 13169 13170 13171 13160 13161 13162 13163 13164 13165 13172 13173 13174 13175 13176 13177 13178 13179 13180 13181 13182 13183 13184 13185 13186 13187 13188 13189 13130 13131 13132 13133 13134 13135 13124 13125 13126 13127 13128 13129 +48 13148 13149 13150 13151 13152 13153 13190 13191 13192 13193 13194 13195 13196 13197 13198 13199 13200 13201 13202 13203 13204 13205 13206 13207 13208 13209 13210 13211 13212 13213 13214 13215 13216 13217 13218 13219 13160 13161 13162 13163 13164 13165 13154 13155 13156 13157 13158 13159 +48 13160 13161 13162 13163 13164 13165 13214 13215 13216 13217 13218 13219 13208 13209 13210 13211 13212 13213 13220 13221 13222 13223 13224 13225 13226 13227 13228 13229 13230 13231 13232 13233 13234 13235 13236 13237 13178 13179 13180 13181 13182 13183 13172 13173 13174 13175 13176 13177 +48 13196 13197 13198 13199 13200 13201 13238 13239 13240 13241 13242 13243 13244 13245 13246 13247 13248 13249 13250 13251 13252 13253 13254 13255 13256 13257 13258 13259 13260 13261 13262 13263 13264 13265 13266 13267 13208 13209 13210 13211 13212 13213 13202 13203 13204 13205 13206 13207 +48 13208 13209 13210 13211 13212 13213 13262 13263 13264 13265 13266 13267 13256 13257 13258 13259 13260 13261 13268 13269 13270 13271 13272 13273 13274 13275 13276 13277 13278 13279 13280 13281 13282 13283 13284 13285 13226 13227 13228 13229 13230 13231 13220 13221 13222 13223 13224 13225 +48 13244 13245 13246 13247 13248 13249 13286 13287 13288 13289 13290 13291 13292 13293 13294 13295 13296 13297 13298 13299 13300 13301 13302 13303 13304 13305 13306 13307 13308 13309 13310 13311 13312 13313 13314 13315 13256 13257 13258 13259 13260 13261 13250 13251 13252 13253 13254 13255 +48 13256 13257 13258 13259 13260 13261 13310 13311 13312 13313 13314 13315 13304 13305 13306 13307 13308 13309 13316 13317 13318 13319 13320 13321 13322 13323 13324 13325 13326 13327 13328 13329 13330 13331 13332 13333 13274 13275 13276 13277 13278 13279 13268 13269 13270 13271 13272 13273 +48 13292 13293 13294 13295 13296 13297 13334 13335 13336 13337 13338 13339 13340 13341 13342 13343 13344 13345 13346 13347 13348 13349 13350 13351 13352 13353 13354 13355 13356 13357 13358 13359 13360 13361 13362 13363 13304 13305 13306 13307 13308 13309 13298 13299 13300 13301 13302 13303 +48 13304 13305 13306 13307 13308 13309 13358 13359 13360 13361 13362 13363 13352 13353 13354 13355 13356 13357 13364 13365 13366 13367 13368 13369 13370 13371 13372 13373 13374 13375 13376 13377 13378 13379 13380 13381 13322 13323 13324 13325 13326 13327 13316 13317 13318 13319 13320 13321 +48 13340 13341 13342 13343 13344 13345 13382 13383 13384 13385 13386 13387 13388 13389 13390 13391 13392 13393 13394 13395 13396 13397 13398 13399 13400 13401 13402 13403 13404 13405 13406 13407 13408 13409 13410 13411 13352 13353 13354 13355 13356 13357 13346 13347 13348 13349 13350 13351 +48 13352 13353 13354 13355 13356 13357 13406 13407 13408 13409 13410 13411 13400 13401 13402 13403 13404 13405 13412 13413 13414 13415 13416 13417 13418 13419 13420 13421 13422 13423 13424 13425 13426 13427 13428 13429 13370 13371 13372 13373 13374 13375 13364 13365 13366 13367 13368 13369 +48 13388 13389 13390 13391 13392 13393 13430 13431 13432 13433 13434 13435 13436 13437 13438 13439 13440 13441 13442 13443 13444 13445 13446 13447 13448 13449 13450 13451 13452 13453 13454 13455 13456 13457 13458 13459 13400 13401 13402 13403 13404 13405 13394 13395 13396 13397 13398 13399 +48 13400 13401 13402 13403 13404 13405 13454 13455 13456 13457 13458 13459 13448 13449 13450 13451 13452 13453 13460 13461 13462 13463 13464 13465 13466 13467 13468 13469 13470 13471 13472 13473 13474 13475 13476 13477 13418 13419 13420 13421 13422 13423 13412 13413 13414 13415 13416 13417 +48 13436 13437 13438 13439 13440 13441 13478 13479 13480 13481 13482 13483 13484 13485 13486 13487 13488 13489 13490 13491 13492 13493 13494 13495 13496 13497 13498 13499 13500 13501 13502 13503 13504 13505 13506 13507 13448 13449 13450 13451 13452 13453 13442 13443 13444 13445 13446 13447 +48 13448 13449 13450 13451 13452 13453 13502 13503 13504 13505 13506 13507 13496 13497 13498 13499 13500 13501 13508 13509 13510 13511 13512 13513 13514 13515 13516 13517 13518 13519 13520 13521 13522 13523 13524 13525 13466 13467 13468 13469 13470 13471 13460 13461 13462 13463 13464 13465 +48 13484 13485 13486 13487 13488 13489 13526 13527 13528 13529 13530 13531 13532 13533 13534 13535 13536 13537 13538 13539 13540 13541 13542 13543 13544 13545 13546 13547 13548 13549 13550 13551 13552 13553 13554 13555 13496 13497 13498 13499 13500 13501 13490 13491 13492 13493 13494 13495 +48 13496 13497 13498 13499 13500 13501 13550 13551 13552 13553 13554 13555 13544 13545 13546 13547 13548 13549 13556 13557 13558 13559 13560 13561 13562 13563 13564 13565 13566 13567 13568 13569 13570 13571 13572 13573 13514 13515 13516 13517 13518 13519 13508 13509 13510 13511 13512 13513 +48 13532 13533 13534 13535 13536 13537 13574 13575 13576 13577 13578 13579 13580 13581 13582 13583 13584 13585 13586 13587 13588 13589 13590 13591 13592 13593 13594 13595 13596 13597 13598 13599 13600 13601 13602 13603 13544 13545 13546 13547 13548 13549 13538 13539 13540 13541 13542 13543 +48 13544 13545 13546 13547 13548 13549 13598 13599 13600 13601 13602 13603 13592 13593 13594 13595 13596 13597 13604 13605 13606 13607 13608 13609 13610 13611 13612 13613 13614 13615 13616 13617 13618 13619 13620 13621 13562 13563 13564 13565 13566 13567 13556 13557 13558 13559 13560 13561 +48 13580 13581 13582 13583 13584 13585 13622 13623 13624 13625 13626 13627 13628 13629 13630 13631 13632 13633 13634 13635 13636 13637 13638 13639 13640 13641 13642 13643 13644 13645 13646 13647 13648 13649 13650 13651 13592 13593 13594 13595 13596 13597 13586 13587 13588 13589 13590 13591 +48 13592 13593 13594 13595 13596 13597 13646 13647 13648 13649 13650 13651 13640 13641 13642 13643 13644 13645 13652 13653 13654 13655 13656 13657 13658 13659 13660 13661 13662 13663 13664 13665 13666 13667 13668 13669 13610 13611 13612 13613 13614 13615 13604 13605 13606 13607 13608 13609 +48 13628 13629 13630 13631 13632 13633 13670 13671 13672 13673 13674 13675 13676 13677 13678 13679 13680 13681 13682 13683 13684 13685 13686 13687 13688 13689 13690 13691 13692 13693 13694 13695 13696 13697 13698 13699 13640 13641 13642 13643 13644 13645 13634 13635 13636 13637 13638 13639 +48 13640 13641 13642 13643 13644 13645 13694 13695 13696 13697 13698 13699 13688 13689 13690 13691 13692 13693 13700 13701 13702 13703 13704 13705 13706 13707 13708 13709 13710 13711 13712 13713 13714 13715 13716 13717 13658 13659 13660 13661 13662 13663 13652 13653 13654 13655 13656 13657 +48 13676 13677 13678 13679 13680 13681 13718 13719 13720 13721 13722 13723 13724 13725 13726 13727 13728 13729 13730 13731 13732 13733 13734 13735 13736 13737 13738 13739 13740 13741 13742 13743 13744 13745 13746 13747 13688 13689 13690 13691 13692 13693 13682 13683 13684 13685 13686 13687 +48 13688 13689 13690 13691 13692 13693 13742 13743 13744 13745 13746 13747 13736 13737 13738 13739 13740 13741 13748 13749 13750 13751 13752 13753 13754 13755 13756 13757 13758 13759 13760 13761 13762 13763 13764 13765 13706 13707 13708 13709 13710 13711 13700 13701 13702 13703 13704 13705 +48 13724 13725 13726 13727 13728 13729 13766 13767 13768 13769 13770 13771 13772 13773 13774 13775 13776 13777 13778 13779 13780 13781 13782 13783 13784 13785 13786 13787 13788 13789 13790 13791 13792 13793 13794 13795 13736 13737 13738 13739 13740 13741 13730 13731 13732 13733 13734 13735 +48 13736 13737 13738 13739 13740 13741 13790 13791 13792 13793 13794 13795 13784 13785 13786 13787 13788 13789 13796 13797 13798 13799 13800 13801 13802 13803 13804 13805 13806 13807 13808 13809 13810 13811 13812 13813 13754 13755 13756 13757 13758 13759 13748 13749 13750 13751 13752 13753 +48 13772 13773 13774 13775 13776 13777 13814 13815 13816 13817 13818 13819 13820 13821 13822 13823 13824 13825 13826 13827 13828 13829 13830 13831 13832 13833 13834 13835 13836 13837 13838 13839 13840 13841 13842 13843 13784 13785 13786 13787 13788 13789 13778 13779 13780 13781 13782 13783 +48 13784 13785 13786 13787 13788 13789 13838 13839 13840 13841 13842 13843 13832 13833 13834 13835 13836 13837 13844 13845 13846 13847 13848 13849 13850 13851 13852 13853 13854 13855 13856 13857 13858 13859 13860 13861 13802 13803 13804 13805 13806 13807 13796 13797 13798 13799 13800 13801 +48 13820 13821 13822 13823 13824 13825 13862 13863 13864 13865 13866 13867 13868 13869 13870 13871 13872 13873 13874 13875 13876 13877 13878 13879 13880 13881 13882 13883 13884 13885 13886 13887 13888 13889 13890 13891 13832 13833 13834 13835 13836 13837 13826 13827 13828 13829 13830 13831 +48 13832 13833 13834 13835 13836 13837 13886 13887 13888 13889 13890 13891 13880 13881 13882 13883 13884 13885 13892 13893 13894 13895 13896 13897 13898 13899 13900 13901 13902 13903 13904 13905 13906 13907 13908 13909 13850 13851 13852 13853 13854 13855 13844 13845 13846 13847 13848 13849 +48 13868 13869 13870 13871 13872 13873 13910 13911 13912 13913 13914 13915 13916 13917 13918 13919 13920 13921 13922 13923 13924 13925 13926 13927 13928 13929 13930 13931 13932 13933 13934 13935 13936 13937 13938 13939 13880 13881 13882 13883 13884 13885 13874 13875 13876 13877 13878 13879 +48 13880 13881 13882 13883 13884 13885 13934 13935 13936 13937 13938 13939 13928 13929 13930 13931 13932 13933 13940 13941 13942 13943 13944 13945 13946 13947 13948 13949 13950 13951 13952 13953 13954 13955 13956 13957 13898 13899 13900 13901 13902 13903 13892 13893 13894 13895 13896 13897 +48 13916 13917 13918 13919 13920 13921 13958 13959 13960 13961 13962 13963 13964 13965 13966 13967 13968 13969 13970 13971 13972 13973 13974 13975 13976 13977 13978 13979 13980 13981 13982 13983 13984 13985 13986 13987 13928 13929 13930 13931 13932 13933 13922 13923 13924 13925 13926 13927 +48 13928 13929 13930 13931 13932 13933 13982 13983 13984 13985 13986 13987 13976 13977 13978 13979 13980 13981 13988 13989 13990 13991 13992 13993 13994 13995 13996 13997 13998 13999 14000 14001 14002 14003 14004 14005 13946 13947 13948 13949 13950 13951 13940 13941 13942 13943 13944 13945 +48 13964 13965 13966 13967 13968 13969 14006 14007 14008 14009 14010 14011 14012 14013 14014 14015 14016 14017 14018 14019 14020 14021 14022 14023 14024 14025 14026 14027 14028 14029 14030 14031 14032 14033 14034 14035 13976 13977 13978 13979 13980 13981 13970 13971 13972 13973 13974 13975 +48 13976 13977 13978 13979 13980 13981 14030 14031 14032 14033 14034 14035 14024 14025 14026 14027 14028 14029 14036 14037 14038 14039 14040 14041 14042 14043 14044 14045 14046 14047 14048 14049 14050 14051 14052 14053 13994 13995 13996 13997 13998 13999 13988 13989 13990 13991 13992 13993 +48 14012 14013 14014 14015 14016 14017 14054 14055 14056 14057 14058 14059 14060 14061 14062 14063 14064 14065 14066 14067 14068 14069 14070 14071 14072 14073 14074 14075 14076 14077 14078 14079 14080 14081 14082 14083 14024 14025 14026 14027 14028 14029 14018 14019 14020 14021 14022 14023 +48 14024 14025 14026 14027 14028 14029 14078 14079 14080 14081 14082 14083 14072 14073 14074 14075 14076 14077 14084 14085 14086 14087 14088 14089 14090 14091 14092 14093 14094 14095 14096 14097 14098 14099 14100 14101 14042 14043 14044 14045 14046 14047 14036 14037 14038 14039 14040 14041 +48 14060 14061 14062 14063 14064 14065 14102 14103 14104 14105 14106 14107 14108 14109 14110 14111 14112 14113 14114 14115 14116 14117 14118 14119 14120 14121 14122 14123 14124 14125 14126 14127 14128 14129 14130 14131 14072 14073 14074 14075 14076 14077 14066 14067 14068 14069 14070 14071 +48 14072 14073 14074 14075 14076 14077 14126 14127 14128 14129 14130 14131 14120 14121 14122 14123 14124 14125 14132 14133 14134 14135 14136 14137 14138 14139 14140 14141 14142 14143 14144 14145 14146 14147 14148 14149 14090 14091 14092 14093 14094 14095 14084 14085 14086 14087 14088 14089 +48 5180 5181 5182 5183 5184 5185 14150 14151 14152 14153 14154 14155 14156 14157 14158 14159 14160 14161 14162 14163 14164 14165 14166 14167 14168 14169 14170 14171 14172 14173 14174 14175 14176 14177 14178 14179 5192 5193 5194 5195 5196 5197 5186 5187 5188 5189 5190 5191 +48 14156 14157 14158 14159 14160 14161 14180 14181 14182 14183 14184 14185 14186 14187 14188 14189 14190 14191 14192 14193 14194 14195 14196 14197 14198 14199 14200 14201 14202 14203 14204 14205 14206 14207 14208 14209 14168 14169 14170 14171 14172 14173 14162 14163 14164 14165 14166 14167 +48 14186 14187 14188 14189 14190 14191 14210 14211 14212 14213 14214 14215 14216 14217 14218 14219 14220 14221 14222 14223 14224 14225 14226 14227 14228 14229 14230 14231 14232 14233 14234 14235 14236 14237 14238 14239 14198 14199 14200 14201 14202 14203 14192 14193 14194 14195 14196 14197 +48 14216 14217 14218 14219 14220 14221 14240 14241 14242 14243 14244 14245 14246 14247 14248 14249 14250 14251 14252 14253 14254 14255 14256 14257 14258 14259 14260 14261 14262 14263 14264 14265 14266 14267 14268 14269 14228 14229 14230 14231 14232 14233 14222 14223 14224 14225 14226 14227 +48 14246 14247 14248 14249 14250 14251 14270 14271 14272 14273 14274 14275 14276 14277 14278 14279 14280 14281 14282 14283 14284 14285 14286 14287 14288 14289 14290 14291 14292 14293 14294 14295 14296 14297 14298 14299 14258 14259 14260 14261 14262 14263 14252 14253 14254 14255 14256 14257 +48 14276 14277 14278 14279 14280 14281 14300 14301 14302 14303 14304 14305 14306 14307 14308 14309 14310 14311 14312 14313 14314 14315 14316 14317 14318 14319 14320 14321 14322 14323 14324 14325 14326 14327 14328 14329 14288 14289 14290 14291 14292 14293 14282 14283 14284 14285 14286 14287 +48 14306 14307 14308 14309 14310 14311 14330 14331 14332 14333 14334 14335 14336 14337 14338 14339 14340 14341 14342 14343 14344 14345 14346 14347 14348 14349 14350 14351 14352 14353 14354 14355 14356 14357 14358 14359 14318 14319 14320 14321 14322 14323 14312 14313 14314 14315 14316 14317 +48 14336 14337 14338 14339 14340 14341 14360 14361 14362 14363 14364 14365 14366 14367 14368 14369 14370 14371 14372 14373 14374 14375 14376 14377 14378 14379 14380 14381 14382 14383 14384 14385 14386 14387 14388 14389 14348 14349 14350 14351 14352 14353 14342 14343 14344 14345 14346 14347 +48 14366 14367 14368 14369 14370 14371 14390 14391 14392 14393 14394 14395 14396 14397 14398 14399 14400 14401 14402 14403 14404 14405 14406 14407 14408 14409 14410 14411 14412 14413 14414 14415 14416 14417 14418 14419 14378 14379 14380 14381 14382 14383 14372 14373 14374 14375 14376 14377 +48 14396 14397 14398 14399 14400 14401 14420 14421 14422 14423 14424 14425 14426 14427 14428 14429 14430 14431 14432 14433 14434 14435 14436 14437 14438 14439 14440 14441 14442 14443 14444 14445 14446 14447 14448 14449 14408 14409 14410 14411 14412 14413 14402 14403 14404 14405 14406 14407 +48 14426 14427 14428 14429 14430 14431 14450 14451 14452 14453 14454 14455 14456 14457 14458 14459 14460 14461 14462 14463 14464 14465 14466 14467 14468 14469 14470 14471 14472 14473 14474 14475 14476 14477 14478 14479 14438 14439 14440 14441 14442 14443 14432 14433 14434 14435 14436 14437 +48 14456 14457 14458 14459 14460 14461 14480 14481 14482 14483 14484 14485 14486 14487 14488 14489 14490 14491 14492 14493 14494 14495 14496 14497 14498 14499 14500 14501 14502 14503 14504 14505 14506 14507 14508 14509 14468 14469 14470 14471 14472 14473 14462 14463 14464 14465 14466 14467 +48 14486 14487 14488 14489 14490 14491 14510 14511 14512 14513 14514 14515 14516 14517 14518 14519 14520 14521 14522 14523 14524 14525 14526 14527 14528 14529 14530 14531 14532 14533 14534 14535 14536 14537 14538 14539 14498 14499 14500 14501 14502 14503 14492 14493 14494 14495 14496 14497 +48 14516 14517 14518 14519 14520 14521 14540 14541 14542 14543 14544 14545 14546 14547 14548 14549 14550 14551 14552 14553 14554 14555 14556 14557 14558 14559 14560 14561 14562 14563 14564 14565 14566 14567 14568 14569 14528 14529 14530 14531 14532 14533 14522 14523 14524 14525 14526 14527 +48 14546 14547 14548 14549 14550 14551 14570 14571 14572 14573 14574 14575 14576 14577 14578 14579 14580 14581 14582 14583 14584 14585 14586 14587 14588 14589 14590 14591 14592 14593 14594 14595 14596 14597 14598 14599 14558 14559 14560 14561 14562 14563 14552 14553 14554 14555 14556 14557 +48 14576 14577 14578 14579 14580 14581 14600 14601 14602 14603 14604 14605 14606 14607 14608 14609 14610 14611 14612 14613 14614 14615 14616 14617 14618 14619 14620 14621 14622 14623 14624 14625 14626 14627 14628 14629 14588 14589 14590 14591 14592 14593 14582 14583 14584 14585 14586 14587 +48 14606 14607 14608 14609 14610 14611 14630 14631 14632 14633 14634 14635 14636 14637 14638 14639 14640 14641 14642 14643 14644 14645 14646 14647 14648 14649 14650 14651 14652 14653 14654 14655 14656 14657 14658 14659 14618 14619 14620 14621 14622 14623 14612 14613 14614 14615 14616 14617 +48 14636 14637 14638 14639 14640 14641 14660 14661 14662 14663 14664 14665 14666 14667 14668 14669 14670 14671 14672 14673 14674 14675 14676 14677 14678 14679 14680 14681 14682 14683 14684 14685 14686 14687 14688 14689 14648 14649 14650 14651 14652 14653 14642 14643 14644 14645 14646 14647 +48 14666 14667 14668 14669 14670 14671 14690 14691 14692 14693 14694 14695 14696 14697 14698 14699 14700 14701 14702 14703 14704 14705 14706 14707 14708 14709 14710 14711 14712 14713 14714 14715 14716 14717 14718 14719 14678 14679 14680 14681 14682 14683 14672 14673 14674 14675 14676 14677 +48 14696 14697 14698 14699 14700 14701 14720 14721 14722 14723 14724 14725 14726 14727 14728 14729 14730 14731 14732 14733 14734 14735 14736 14737 14738 14739 14740 14741 14742 14743 14744 14745 14746 14747 14748 14749 14708 14709 14710 14711 14712 14713 14702 14703 14704 14705 14706 14707 +48 14726 14727 14728 14729 14730 14731 14750 14751 14752 14753 14754 14755 14756 14757 14758 14759 14760 14761 14762 14763 14764 14765 14766 14767 14768 14769 14770 14771 14772 14773 14774 14775 14776 14777 14778 14779 14738 14739 14740 14741 14742 14743 14732 14733 14734 14735 14736 14737 +48 14756 14757 14758 14759 14760 14761 14780 14781 14782 14783 14784 14785 14786 14787 14788 14789 14790 14791 14792 14793 14794 14795 14796 14797 14798 14799 14800 14801 14802 14803 14804 14805 14806 14807 14808 14809 14768 14769 14770 14771 14772 14773 14762 14763 14764 14765 14766 14767 +48 14786 14787 14788 14789 14790 14791 14810 14811 14812 14813 14814 14815 14816 14817 14818 14819 14820 14821 14822 14823 14824 14825 14826 14827 14828 14829 14830 14831 14832 14833 14834 14835 14836 14837 14838 14839 14798 14799 14800 14801 14802 14803 14792 14793 14794 14795 14796 14797 +48 14816 14817 14818 14819 14820 14821 14840 14841 14842 14843 14844 14845 14846 14847 14848 14849 14850 14851 14852 14853 14854 14855 14856 14857 14858 14859 14860 14861 14862 14863 14864 14865 14866 14867 14868 14869 14828 14829 14830 14831 14832 14833 14822 14823 14824 14825 14826 14827 +48 14846 14847 14848 14849 14850 14851 14870 14871 14872 14873 14874 14875 14876 14877 14878 14879 14880 14881 14882 14883 14884 14885 14886 14887 14888 14889 14890 14891 14892 14893 14894 14895 14896 14897 14898 14899 14858 14859 14860 14861 14862 14863 14852 14853 14854 14855 14856 14857 +48 14876 14877 14878 14879 14880 14881 14900 14901 14902 14903 14904 14905 14906 14907 14908 14909 14910 14911 14912 14913 14914 14915 14916 14917 14918 14919 14920 14921 14922 14923 14924 14925 14926 14927 14928 14929 14888 14889 14890 14891 14892 14893 14882 14883 14884 14885 14886 14887 +48 14906 14907 14908 14909 14910 14911 14930 14931 14932 14933 14934 14935 14936 14937 14938 14939 14940 14941 14942 14943 14944 14945 14946 14947 14948 14949 14950 14951 14952 14953 14954 14955 14956 14957 14958 14959 14918 14919 14920 14921 14922 14923 14912 14913 14914 14915 14916 14917 +48 14936 14937 14938 14939 14940 14941 14960 14961 14962 14963 14964 14965 14966 14967 14968 14969 14970 14971 14972 14973 14974 14975 14976 14977 14978 14979 14980 14981 14982 14983 14984 14985 14986 14987 14988 14989 14948 14949 14950 14951 14952 14953 14942 14943 14944 14945 14946 14947 +48 14966 14967 14968 14969 14970 14971 14990 14991 14992 14993 14994 14995 14996 14997 14998 14999 15000 15001 15002 15003 15004 15005 15006 15007 15008 15009 15010 15011 15012 15013 15014 15015 15016 15017 15018 15019 14978 14979 14980 14981 14982 14983 14972 14973 14974 14975 14976 14977 +48 14996 14997 14998 14999 15000 15001 15020 15021 15022 15023 15024 15025 15026 15027 15028 15029 15030 15031 15032 15033 15034 15035 15036 15037 15038 15039 15040 15041 15042 15043 15044 15045 15046 15047 15048 15049 15008 15009 15010 15011 15012 15013 15002 15003 15004 15005 15006 15007 +48 15026 15027 15028 15029 15030 15031 15050 15051 15052 15053 15054 15055 15056 15057 15058 15059 15060 15061 15062 15063 15064 15065 15066 15067 15068 15069 15070 15071 15072 15073 15074 15075 15076 15077 15078 15079 15038 15039 15040 15041 15042 15043 15032 15033 15034 15035 15036 15037 +48 15056 15057 15058 15059 15060 15061 15080 15081 15082 15083 15084 15085 15086 15087 15088 15089 15090 15091 15092 15093 15094 15095 15096 15097 15098 15099 15100 15101 15102 15103 15104 15105 15106 15107 15108 15109 15068 15069 15070 15071 15072 15073 15062 15063 15064 15065 15066 15067 +48 15086 15087 15088 15089 15090 15091 15110 15111 15112 15113 15114 15115 15116 15117 15118 15119 15120 15121 15122 15123 15124 15125 15126 15127 15128 15129 15130 15131 15132 15133 15134 15135 15136 15137 15138 15139 15098 15099 15100 15101 15102 15103 15092 15093 15094 15095 15096 15097 +48 15116 15117 15118 15119 15120 15121 15140 15141 15142 15143 15144 15145 15146 15147 15148 15149 15150 15151 15152 15153 15154 15155 15156 15157 15158 15159 15160 15161 15162 15163 15164 15165 15166 15167 15168 15169 15128 15129 15130 15131 15132 15133 15122 15123 15124 15125 15126 15127 +48 15146 15147 15148 15149 15150 15151 15170 15171 15172 15173 15174 15175 15176 15177 15178 15179 15180 15181 15182 15183 15184 15185 15186 15187 15188 15189 15190 15191 15192 15193 15194 15195 15196 15197 15198 15199 15158 15159 15160 15161 15162 15163 15152 15153 15154 15155 15156 15157 +48 15176 15177 15178 15179 15180 15181 15200 15201 15202 15203 15204 15205 15206 15207 15208 15209 15210 15211 15212 15213 15214 15215 15216 15217 15218 15219 15220 15221 15222 15223 15224 15225 15226 15227 15228 15229 15188 15189 15190 15191 15192 15193 15182 15183 15184 15185 15186 15187 +48 15206 15207 15208 15209 15210 15211 15230 15231 15232 15233 15234 15235 15236 15237 15238 15239 15240 15241 15242 15243 15244 15245 15246 15247 15248 15249 15250 15251 15252 15253 15254 15255 15256 15257 15258 15259 15218 15219 15220 15221 15222 15223 15212 15213 15214 15215 15216 15217 +48 15236 15237 15238 15239 15240 15241 15260 15261 15262 15263 15264 15265 15266 15267 15268 15269 15270 15271 15272 15273 15274 15275 15276 15277 15278 15279 15280 15281 15282 15283 15284 15285 15286 15287 15288 15289 15248 15249 15250 15251 15252 15253 15242 15243 15244 15245 15246 15247 +48 15266 15267 15268 15269 15270 15271 15290 15291 15292 15293 15294 15295 15296 15297 15298 15299 15300 15301 15302 15303 15304 15305 15306 15307 15308 15309 15310 15311 15312 15313 15314 15315 15316 15317 15318 15319 15278 15279 15280 15281 15282 15283 15272 15273 15274 15275 15276 15277 +48 15296 15297 15298 15299 15300 15301 15320 15321 15322 15323 15324 15325 15326 15327 15328 15329 15330 15331 15332 15333 15334 15335 15336 15337 15338 15339 15340 15341 15342 15343 15344 15345 15346 15347 15348 15349 15308 15309 15310 15311 15312 15313 15302 15303 15304 15305 15306 15307 +48 15326 15327 15328 15329 15330 15331 15350 15351 15352 15353 15354 15355 15356 15357 15358 15359 15360 15361 15362 15363 15364 15365 15366 15367 15368 15369 15370 15371 15372 15373 15374 15375 15376 15377 15378 15379 15338 15339 15340 15341 15342 15343 15332 15333 15334 15335 15336 15337 +48 15356 15357 15358 15359 15360 15361 15380 15381 15382 15383 15384 15385 15386 15387 15388 15389 15390 15391 15392 15393 15394 15395 15396 15397 15398 15399 15400 15401 15402 15403 15404 15405 15406 15407 15408 15409 15368 15369 15370 15371 15372 15373 15362 15363 15364 15365 15366 15367 +48 15386 15387 15388 15389 15390 15391 15410 15411 15412 15413 15414 15415 3203 3204 3205 3206 3207 3208 3245 3246 3247 3248 3249 3250 3233 3234 3235 3236 3237 3238 15416 15417 15418 15419 15420 15421 15398 15399 15400 15401 15402 15403 15392 15393 15394 15395 15396 15397 +48 15422 15423 15424 15425 15426 15427 15428 15429 15430 15431 15432 15433 15434 15435 15436 15437 15438 15439 15440 15441 15442 15443 15444 15445 139 140 141 142 143 144 133 134 135 136 137 138 127 128 129 130 131 132 15446 15447 15448 15449 15450 15451 +48 15452 15453 15454 15455 15456 15457 15458 15459 15460 15461 15462 15463 15464 15465 15466 15467 15468 15469 15470 15471 15472 15473 15474 15475 211 212 213 214 215 216 205 206 207 208 209 210 199 200 201 202 203 204 15476 15477 15478 15479 15480 15481 +48 15482 15483 15484 15485 15486 15487 15488 15489 15490 15491 15492 15493 15494 15495 15496 15497 15498 15499 15500 15501 15502 15503 15504 15505 247 248 249 250 251 252 241 242 243 244 245 246 235 236 237 238 239 240 15506 15507 15508 15509 15510 15511 +48 15512 15513 15514 15515 15516 15517 15518 15519 15520 15521 15522 15523 15524 15525 15526 15527 15528 15529 15530 15531 15532 15533 15534 15535 283 284 285 286 287 288 277 278 279 280 281 282 271 272 273 274 275 276 15536 15537 15538 15539 15540 15541 +48 15542 15543 15544 15545 15546 15547 15548 15549 15550 15551 15552 15553 15554 15555 15556 15557 15558 15559 15560 15561 15562 15563 15564 15565 319 320 321 322 323 324 313 314 315 316 317 318 307 308 309 310 311 312 15566 15567 15568 15569 15570 15571 +48 15572 15573 15574 15575 15576 15577 15578 15579 15580 15581 15582 15583 15584 15585 15586 15587 15588 15589 15590 15591 15592 15593 15594 15595 355 356 357 358 359 360 349 350 351 352 353 354 343 344 345 346 347 348 15596 15597 15598 15599 15600 15601 +48 15602 15603 15604 15605 15606 15607 15608 15609 15610 15611 15612 15613 15614 15615 15616 15617 15618 15619 15620 15621 15622 15623 15624 15625 391 392 393 394 395 396 385 386 387 388 389 390 379 380 381 382 383 384 15626 15627 15628 15629 15630 15631 +48 15632 15633 15634 15635 15636 15637 15638 15639 15640 15641 15642 15643 15644 15645 15646 15647 15648 15649 15650 15651 15652 15653 15654 15655 427 428 429 430 431 432 421 422 423 424 425 426 415 416 417 418 419 420 15656 15657 15658 15659 15660 15661 +48 15662 15663 15664 15665 15666 15667 15668 15669 15670 15671 15672 15673 15674 15675 15676 15677 15678 15679 15680 15681 15682 15683 15684 15685 463 464 465 466 467 468 457 458 459 460 461 462 451 452 453 454 455 456 15686 15687 15688 15689 15690 15691 +48 15692 15693 15694 15695 15696 15697 15698 15699 15700 15701 15702 15703 15704 15705 15706 15707 15708 15709 15710 15711 15712 15713 15714 15715 499 500 501 502 503 504 493 494 495 496 497 498 487 488 489 490 491 492 15716 15717 15718 15719 15720 15721 +48 15722 15723 15724 15725 15726 15727 15728 15729 15730 15731 15732 15733 15734 15735 15736 15737 15738 15739 15740 15741 15742 15743 15744 15745 535 536 537 538 539 540 529 530 531 532 533 534 523 524 525 526 527 528 15746 15747 15748 15749 15750 15751 +48 15752 15753 15754 15755 15756 15757 15758 15759 15760 15761 15762 15763 15764 15765 15766 15767 15768 15769 15770 15771 15772 15773 15774 15775 571 572 573 574 575 576 565 566 567 568 569 570 559 560 561 562 563 564 15776 15777 15778 15779 15780 15781 +48 15782 15783 15784 15785 15786 15787 15788 15789 15790 15791 15792 15793 15794 15795 15796 15797 15798 15799 15800 15801 15802 15803 15804 15805 607 608 609 610 611 612 601 602 603 604 605 606 595 596 597 598 599 600 15806 15807 15808 15809 15810 15811 +48 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 15812 15813 15814 15815 15816 15817 12212 12213 12214 12215 12216 12217 12224 12225 12226 12227 12228 12229 12188 12189 12190 12191 12192 12193 15818 15819 15820 15821 15822 15823 +36 12242 12243 12244 12245 12246 12247 12212 12213 12214 12215 12216 12217 5060 5061 5062 5063 5064 5065 12254 12255 12256 12257 12258 12259 15812 15813 15814 15815 15816 15817 15824 15825 15826 15827 15828 15829 +36 10574 10575 10576 10577 10578 10579 10544 10545 10546 10547 10548 10549 5330 5331 5332 5333 5334 5335 10586 10587 10588 10589 10590 10591 15836 15837 15838 15839 15840 15841 15830 15831 15832 15833 15834 15835 +48 14108 14109 14110 14111 14112 14113 14114 14115 14116 14117 14118 14119 14120 14121 14122 14123 14124 14125 15842 15843 15844 15845 15846 15847 3047 3048 3049 3050 3051 3052 3059 3060 3061 3062 3063 3064 3017 3018 3019 3020 3021 3022 15848 15849 15850 15851 15852 15853 +36 14138 14139 14140 14141 14142 14143 3047 3048 3049 3050 3051 3052 14120 14121 14122 14123 14124 14125 15854 15855 15856 15857 15858 15859 15842 15843 15844 15845 15846 15847 14132 14133 14134 14135 14136 14137 +36 12176 12177 12178 12179 12180 12181 2807 2808 2809 2810 2811 2812 12164 12165 12166 12167 12168 12169 15860 15861 15862 15863 15864 15865 15866 15867 15868 15869 15870 15871 12170 12171 12172 12173 12174 12175 +48 5192 5193 5194 5195 5196 5197 14174 14175 14176 14177 14178 14179 14168 14169 14170 14171 14172 14173 15872 15873 15874 15875 15876 15877 12242 12243 12244 12245 12246 12247 15824 15825 15826 15827 15828 15829 5060 5061 5062 5063 5064 5065 5288 5289 5290 5291 5292 5293 +48 14168 14169 14170 14171 14172 14173 14204 14205 14206 14207 14208 14209 14198 14199 14200 14201 14202 14203 15878 15879 15880 15881 15882 15883 12236 12237 12238 12239 12240 12241 12248 12249 12250 12251 12252 12253 12242 12243 12244 12245 12246 12247 15872 15873 15874 15875 15876 15877 +48 14198 14199 14200 14201 14202 14203 14234 14235 14236 14237 14238 14239 14228 14229 14230 14231 14232 14233 15884 15885 15886 15887 15888 15889 12290 12291 12292 12293 12294 12295 12296 12297 12298 12299 12300 12301 12236 12237 12238 12239 12240 12241 15878 15879 15880 15881 15882 15883 +48 14228 14229 14230 14231 14232 14233 14264 14265 14266 14267 14268 14269 14258 14259 14260 14261 14262 14263 15890 15891 15892 15893 15894 15895 12332 12333 12334 12335 12336 12337 12338 12339 12340 12341 12342 12343 12290 12291 12292 12293 12294 12295 15884 15885 15886 15887 15888 15889 +48 14258 14259 14260 14261 14262 14263 14294 14295 14296 14297 14298 14299 14288 14289 14290 14291 14292 14293 15896 15897 15898 15899 15900 15901 12374 12375 12376 12377 12378 12379 12380 12381 12382 12383 12384 12385 12332 12333 12334 12335 12336 12337 15890 15891 15892 15893 15894 15895 +48 14288 14289 14290 14291 14292 14293 14324 14325 14326 14327 14328 14329 14318 14319 14320 14321 14322 14323 15902 15903 15904 15905 15906 15907 12416 12417 12418 12419 12420 12421 12422 12423 12424 12425 12426 12427 12374 12375 12376 12377 12378 12379 15896 15897 15898 15899 15900 15901 +48 14318 14319 14320 14321 14322 14323 14354 14355 14356 14357 14358 14359 14348 14349 14350 14351 14352 14353 15908 15909 15910 15911 15912 15913 12458 12459 12460 12461 12462 12463 12464 12465 12466 12467 12468 12469 12416 12417 12418 12419 12420 12421 15902 15903 15904 15905 15906 15907 +48 14348 14349 14350 14351 14352 14353 14384 14385 14386 14387 14388 14389 14378 14379 14380 14381 14382 14383 15914 15915 15916 15917 15918 15919 12506 12507 12508 12509 12510 12511 12512 12513 12514 12515 12516 12517 12458 12459 12460 12461 12462 12463 15908 15909 15910 15911 15912 15913 +48 14378 14379 14380 14381 14382 14383 14414 14415 14416 14417 14418 14419 14408 14409 14410 14411 14412 14413 15920 15921 15922 15923 15924 15925 12554 12555 12556 12557 12558 12559 12560 12561 12562 12563 12564 12565 12506 12507 12508 12509 12510 12511 15914 15915 15916 15917 15918 15919 +48 14408 14409 14410 14411 14412 14413 14444 14445 14446 14447 14448 14449 14438 14439 14440 14441 14442 14443 15926 15927 15928 15929 15930 15931 12602 12603 12604 12605 12606 12607 12608 12609 12610 12611 12612 12613 12554 12555 12556 12557 12558 12559 15920 15921 15922 15923 15924 15925 +48 14438 14439 14440 14441 14442 14443 14474 14475 14476 14477 14478 14479 14468 14469 14470 14471 14472 14473 15932 15933 15934 15935 15936 15937 12650 12651 12652 12653 12654 12655 12656 12657 12658 12659 12660 12661 12602 12603 12604 12605 12606 12607 15926 15927 15928 15929 15930 15931 +48 14468 14469 14470 14471 14472 14473 14504 14505 14506 14507 14508 14509 14498 14499 14500 14501 14502 14503 15938 15939 15940 15941 15942 15943 12698 12699 12700 12701 12702 12703 12704 12705 12706 12707 12708 12709 12650 12651 12652 12653 12654 12655 15932 15933 15934 15935 15936 15937 +48 14498 14499 14500 14501 14502 14503 14534 14535 14536 14537 14538 14539 14528 14529 14530 14531 14532 14533 15944 15945 15946 15947 15948 15949 12746 12747 12748 12749 12750 12751 12752 12753 12754 12755 12756 12757 12698 12699 12700 12701 12702 12703 15938 15939 15940 15941 15942 15943 +48 14528 14529 14530 14531 14532 14533 14564 14565 14566 14567 14568 14569 14558 14559 14560 14561 14562 14563 15950 15951 15952 15953 15954 15955 12794 12795 12796 12797 12798 12799 12800 12801 12802 12803 12804 12805 12746 12747 12748 12749 12750 12751 15944 15945 15946 15947 15948 15949 +48 14558 14559 14560 14561 14562 14563 14594 14595 14596 14597 14598 14599 14588 14589 14590 14591 14592 14593 15956 15957 15958 15959 15960 15961 12842 12843 12844 12845 12846 12847 12848 12849 12850 12851 12852 12853 12794 12795 12796 12797 12798 12799 15950 15951 15952 15953 15954 15955 +48 14588 14589 14590 14591 14592 14593 14624 14625 14626 14627 14628 14629 14618 14619 14620 14621 14622 14623 15962 15963 15964 15965 15966 15967 12890 12891 12892 12893 12894 12895 12896 12897 12898 12899 12900 12901 12842 12843 12844 12845 12846 12847 15956 15957 15958 15959 15960 15961 +48 14618 14619 14620 14621 14622 14623 14654 14655 14656 14657 14658 14659 14648 14649 14650 14651 14652 14653 15968 15969 15970 15971 15972 15973 12938 12939 12940 12941 12942 12943 12944 12945 12946 12947 12948 12949 12890 12891 12892 12893 12894 12895 15962 15963 15964 15965 15966 15967 +48 14648 14649 14650 14651 14652 14653 14684 14685 14686 14687 14688 14689 14678 14679 14680 14681 14682 14683 15974 15975 15976 15977 15978 15979 12986 12987 12988 12989 12990 12991 12992 12993 12994 12995 12996 12997 12938 12939 12940 12941 12942 12943 15968 15969 15970 15971 15972 15973 +48 14678 14679 14680 14681 14682 14683 14714 14715 14716 14717 14718 14719 14708 14709 14710 14711 14712 14713 15980 15981 15982 15983 15984 15985 13034 13035 13036 13037 13038 13039 13040 13041 13042 13043 13044 13045 12986 12987 12988 12989 12990 12991 15974 15975 15976 15977 15978 15979 +48 14708 14709 14710 14711 14712 14713 14744 14745 14746 14747 14748 14749 14738 14739 14740 14741 14742 14743 15986 15987 15988 15989 15990 15991 13082 13083 13084 13085 13086 13087 13088 13089 13090 13091 13092 13093 13034 13035 13036 13037 13038 13039 15980 15981 15982 15983 15984 15985 +48 14738 14739 14740 14741 14742 14743 14774 14775 14776 14777 14778 14779 14768 14769 14770 14771 14772 14773 15992 15993 15994 15995 15996 15997 13130 13131 13132 13133 13134 13135 13136 13137 13138 13139 13140 13141 13082 13083 13084 13085 13086 13087 15986 15987 15988 15989 15990 15991 +48 14768 14769 14770 14771 14772 14773 14804 14805 14806 14807 14808 14809 14798 14799 14800 14801 14802 14803 15998 15999 16000 16001 16002 16003 13178 13179 13180 13181 13182 13183 13184 13185 13186 13187 13188 13189 13130 13131 13132 13133 13134 13135 15992 15993 15994 15995 15996 15997 +48 14798 14799 14800 14801 14802 14803 14834 14835 14836 14837 14838 14839 14828 14829 14830 14831 14832 14833 16004 16005 16006 16007 16008 16009 13226 13227 13228 13229 13230 13231 13232 13233 13234 13235 13236 13237 13178 13179 13180 13181 13182 13183 15998 15999 16000 16001 16002 16003 +48 14828 14829 14830 14831 14832 14833 14864 14865 14866 14867 14868 14869 14858 14859 14860 14861 14862 14863 16010 16011 16012 16013 16014 16015 13274 13275 13276 13277 13278 13279 13280 13281 13282 13283 13284 13285 13226 13227 13228 13229 13230 13231 16004 16005 16006 16007 16008 16009 +48 14858 14859 14860 14861 14862 14863 14894 14895 14896 14897 14898 14899 14888 14889 14890 14891 14892 14893 16016 16017 16018 16019 16020 16021 13322 13323 13324 13325 13326 13327 13328 13329 13330 13331 13332 13333 13274 13275 13276 13277 13278 13279 16010 16011 16012 16013 16014 16015 +48 14888 14889 14890 14891 14892 14893 14924 14925 14926 14927 14928 14929 14918 14919 14920 14921 14922 14923 16022 16023 16024 16025 16026 16027 13370 13371 13372 13373 13374 13375 13376 13377 13378 13379 13380 13381 13322 13323 13324 13325 13326 13327 16016 16017 16018 16019 16020 16021 +48 14918 14919 14920 14921 14922 14923 14954 14955 14956 14957 14958 14959 14948 14949 14950 14951 14952 14953 16028 16029 16030 16031 16032 16033 13418 13419 13420 13421 13422 13423 13424 13425 13426 13427 13428 13429 13370 13371 13372 13373 13374 13375 16022 16023 16024 16025 16026 16027 +48 14948 14949 14950 14951 14952 14953 14984 14985 14986 14987 14988 14989 14978 14979 14980 14981 14982 14983 16034 16035 16036 16037 16038 16039 13466 13467 13468 13469 13470 13471 13472 13473 13474 13475 13476 13477 13418 13419 13420 13421 13422 13423 16028 16029 16030 16031 16032 16033 +48 14978 14979 14980 14981 14982 14983 15014 15015 15016 15017 15018 15019 15008 15009 15010 15011 15012 15013 16040 16041 16042 16043 16044 16045 13514 13515 13516 13517 13518 13519 13520 13521 13522 13523 13524 13525 13466 13467 13468 13469 13470 13471 16034 16035 16036 16037 16038 16039 +48 15008 15009 15010 15011 15012 15013 15044 15045 15046 15047 15048 15049 15038 15039 15040 15041 15042 15043 16046 16047 16048 16049 16050 16051 13562 13563 13564 13565 13566 13567 13568 13569 13570 13571 13572 13573 13514 13515 13516 13517 13518 13519 16040 16041 16042 16043 16044 16045 +48 15038 15039 15040 15041 15042 15043 15074 15075 15076 15077 15078 15079 15068 15069 15070 15071 15072 15073 16052 16053 16054 16055 16056 16057 13610 13611 13612 13613 13614 13615 13616 13617 13618 13619 13620 13621 13562 13563 13564 13565 13566 13567 16046 16047 16048 16049 16050 16051 +48 15068 15069 15070 15071 15072 15073 15104 15105 15106 15107 15108 15109 15098 15099 15100 15101 15102 15103 16058 16059 16060 16061 16062 16063 13658 13659 13660 13661 13662 13663 13664 13665 13666 13667 13668 13669 13610 13611 13612 13613 13614 13615 16052 16053 16054 16055 16056 16057 +48 15098 15099 15100 15101 15102 15103 15134 15135 15136 15137 15138 15139 15128 15129 15130 15131 15132 15133 16064 16065 16066 16067 16068 16069 13706 13707 13708 13709 13710 13711 13712 13713 13714 13715 13716 13717 13658 13659 13660 13661 13662 13663 16058 16059 16060 16061 16062 16063 +48 15128 15129 15130 15131 15132 15133 15164 15165 15166 15167 15168 15169 15158 15159 15160 15161 15162 15163 16070 16071 16072 16073 16074 16075 13754 13755 13756 13757 13758 13759 13760 13761 13762 13763 13764 13765 13706 13707 13708 13709 13710 13711 16064 16065 16066 16067 16068 16069 +48 15158 15159 15160 15161 15162 15163 15194 15195 15196 15197 15198 15199 15188 15189 15190 15191 15192 15193 16076 16077 16078 16079 16080 16081 13802 13803 13804 13805 13806 13807 13808 13809 13810 13811 13812 13813 13754 13755 13756 13757 13758 13759 16070 16071 16072 16073 16074 16075 +48 15188 15189 15190 15191 15192 15193 15224 15225 15226 15227 15228 15229 15218 15219 15220 15221 15222 15223 16082 16083 16084 16085 16086 16087 13850 13851 13852 13853 13854 13855 13856 13857 13858 13859 13860 13861 13802 13803 13804 13805 13806 13807 16076 16077 16078 16079 16080 16081 +48 15218 15219 15220 15221 15222 15223 15254 15255 15256 15257 15258 15259 15248 15249 15250 15251 15252 15253 16088 16089 16090 16091 16092 16093 13898 13899 13900 13901 13902 13903 13904 13905 13906 13907 13908 13909 13850 13851 13852 13853 13854 13855 16082 16083 16084 16085 16086 16087 +48 15248 15249 15250 15251 15252 15253 15284 15285 15286 15287 15288 15289 15278 15279 15280 15281 15282 15283 16094 16095 16096 16097 16098 16099 13946 13947 13948 13949 13950 13951 13952 13953 13954 13955 13956 13957 13898 13899 13900 13901 13902 13903 16088 16089 16090 16091 16092 16093 +48 15278 15279 15280 15281 15282 15283 15314 15315 15316 15317 15318 15319 15308 15309 15310 15311 15312 15313 16100 16101 16102 16103 16104 16105 13994 13995 13996 13997 13998 13999 14000 14001 14002 14003 14004 14005 13946 13947 13948 13949 13950 13951 16094 16095 16096 16097 16098 16099 +48 15308 15309 15310 15311 15312 15313 15344 15345 15346 15347 15348 15349 15338 15339 15340 15341 15342 15343 16106 16107 16108 16109 16110 16111 14042 14043 14044 14045 14046 14047 14048 14049 14050 14051 14052 14053 13994 13995 13996 13997 13998 13999 16100 16101 16102 16103 16104 16105 +48 15338 15339 15340 15341 15342 15343 15374 15375 15376 15377 15378 15379 15368 15369 15370 15371 15372 15373 16112 16113 16114 16115 16116 16117 14090 14091 14092 14093 14094 14095 14096 14097 14098 14099 14100 14101 14042 14043 14044 14045 14046 14047 16106 16107 16108 16109 16110 16111 +48 15368 15369 15370 15371 15372 15373 15404 15405 15406 15407 15408 15409 15398 15399 15400 15401 15402 15403 16118 16119 16120 16121 16122 16123 14138 14139 14140 14141 14142 14143 14144 14145 14146 14147 14148 14149 14090 14091 14092 14093 14094 14095 16112 16113 16114 16115 16116 16117 +48 15398 15399 15400 15401 15402 15403 15416 15417 15418 15419 15420 15421 3233 3234 3235 3236 3237 3238 3359 3360 3361 3362 3363 3364 3047 3048 3049 3050 3051 3052 15854 15855 15856 15857 15858 15859 14138 14139 14140 14141 14142 14143 16118 16119 16120 16121 16122 16123 +48 5060 5061 5062 5063 5064 5065 15824 15825 15826 15827 15828 15829 12242 12243 12244 12245 12246 12247 16124 16125 16126 16127 16128 16129 10574 10575 10576 10577 10578 10579 15830 15831 15832 15833 15834 15835 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 +48 12242 12243 12244 12245 12246 12247 12248 12249 12250 12251 12252 12253 12236 12237 12238 12239 12240 12241 16130 16131 16132 16133 16134 16135 10568 10569 10570 10571 10572 10573 10580 10581 10582 10583 10584 10585 10574 10575 10576 10577 10578 10579 16124 16125 16126 16127 16128 16129 +48 12236 12237 12238 12239 12240 12241 12296 12297 12298 12299 12300 12301 12290 12291 12292 12293 12294 12295 16136 16137 16138 16139 16140 16141 10640 10641 10642 10643 10644 10645 10646 10647 10648 10649 10650 10651 10568 10569 10570 10571 10572 10573 16130 16131 16132 16133 16134 16135 +48 12290 12291 12292 12293 12294 12295 12338 12339 12340 12341 12342 12343 12332 12333 12334 12335 12336 12337 16142 16143 16144 16145 16146 16147 10658 10659 10660 10661 10662 10663 10664 10665 10666 10667 10668 10669 10640 10641 10642 10643 10644 10645 16136 16137 16138 16139 16140 16141 +48 12332 12333 12334 12335 12336 12337 12380 12381 12382 12383 12384 12385 12374 12375 12376 12377 12378 12379 16148 16149 16150 16151 16152 16153 10700 10701 10702 10703 10704 10705 10706 10707 10708 10709 10710 10711 10658 10659 10660 10661 10662 10663 16142 16143 16144 16145 16146 16147 +48 12374 12375 12376 12377 12378 12379 12422 12423 12424 12425 12426 12427 12416 12417 12418 12419 12420 12421 16154 16155 16156 16157 16158 16159 10730 10731 10732 10733 10734 10735 10736 10737 10738 10739 10740 10741 10700 10701 10702 10703 10704 10705 16148 16149 16150 16151 16152 16153 +48 12416 12417 12418 12419 12420 12421 12464 12465 12466 12467 12468 12469 12458 12459 12460 12461 12462 12463 16160 16161 16162 16163 16164 16165 10766 10767 10768 10769 10770 10771 10772 10773 10774 10775 10776 10777 10730 10731 10732 10733 10734 10735 16154 16155 16156 16157 16158 16159 +48 12458 12459 12460 12461 12462 12463 12512 12513 12514 12515 12516 12517 12506 12507 12508 12509 12510 12511 16166 16167 16168 16169 16170 16171 10826 10827 10828 10829 10830 10831 10832 10833 10834 10835 10836 10837 10766 10767 10768 10769 10770 10771 16160 16161 16162 16163 16164 16165 +48 12506 12507 12508 12509 12510 12511 12560 12561 12562 12563 12564 12565 12554 12555 12556 12557 12558 12559 16172 16173 16174 16175 16176 16177 10856 10857 10858 10859 10860 10861 10862 10863 10864 10865 10866 10867 10826 10827 10828 10829 10830 10831 16166 16167 16168 16169 16170 16171 +48 12554 12555 12556 12557 12558 12559 12608 12609 12610 12611 12612 12613 12602 12603 12604 12605 12606 12607 16178 16179 16180 16181 16182 16183 10886 10887 10888 10889 10890 10891 10892 10893 10894 10895 10896 10897 10856 10857 10858 10859 10860 10861 16172 16173 16174 16175 16176 16177 +48 12602 12603 12604 12605 12606 12607 12656 12657 12658 12659 12660 12661 12650 12651 12652 12653 12654 12655 16184 16185 16186 16187 16188 16189 10946 10947 10948 10949 10950 10951 10952 10953 10954 10955 10956 10957 10886 10887 10888 10889 10890 10891 16178 16179 16180 16181 16182 16183 +48 12650 12651 12652 12653 12654 12655 12704 12705 12706 12707 12708 12709 12698 12699 12700 12701 12702 12703 16190 16191 16192 16193 16194 16195 10976 10977 10978 10979 10980 10981 10982 10983 10984 10985 10986 10987 10946 10947 10948 10949 10950 10951 16184 16185 16186 16187 16188 16189 +48 12698 12699 12700 12701 12702 12703 12752 12753 12754 12755 12756 12757 12746 12747 12748 12749 12750 12751 16196 16197 16198 16199 16200 16201 11006 11007 11008 11009 11010 11011 11012 11013 11014 11015 11016 11017 10976 10977 10978 10979 10980 10981 16190 16191 16192 16193 16194 16195 +48 12746 12747 12748 12749 12750 12751 12800 12801 12802 12803 12804 12805 12794 12795 12796 12797 12798 12799 16202 16203 16204 16205 16206 16207 11066 11067 11068 11069 11070 11071 11072 11073 11074 11075 11076 11077 11006 11007 11008 11009 11010 11011 16196 16197 16198 16199 16200 16201 +48 12794 12795 12796 12797 12798 12799 12848 12849 12850 12851 12852 12853 12842 12843 12844 12845 12846 12847 16208 16209 16210 16211 16212 16213 11096 11097 11098 11099 11100 11101 11102 11103 11104 11105 11106 11107 11066 11067 11068 11069 11070 11071 16202 16203 16204 16205 16206 16207 +48 12842 12843 12844 12845 12846 12847 12896 12897 12898 12899 12900 12901 12890 12891 12892 12893 12894 12895 16214 16215 16216 16217 16218 16219 11126 11127 11128 11129 11130 11131 11132 11133 11134 11135 11136 11137 11096 11097 11098 11099 11100 11101 16208 16209 16210 16211 16212 16213 +48 12890 12891 12892 12893 12894 12895 12944 12945 12946 12947 12948 12949 12938 12939 12940 12941 12942 12943 16220 16221 16222 16223 16224 16225 11186 11187 11188 11189 11190 11191 11192 11193 11194 11195 11196 11197 11126 11127 11128 11129 11130 11131 16214 16215 16216 16217 16218 16219 +48 12938 12939 12940 12941 12942 12943 12992 12993 12994 12995 12996 12997 12986 12987 12988 12989 12990 12991 16226 16227 16228 16229 16230 16231 11216 11217 11218 11219 11220 11221 11222 11223 11224 11225 11226 11227 11186 11187 11188 11189 11190 11191 16220 16221 16222 16223 16224 16225 +48 12986 12987 12988 12989 12990 12991 13040 13041 13042 13043 13044 13045 13034 13035 13036 13037 13038 13039 16232 16233 16234 16235 16236 16237 11246 11247 11248 11249 11250 11251 11252 11253 11254 11255 11256 11257 11216 11217 11218 11219 11220 11221 16226 16227 16228 16229 16230 16231 +48 13034 13035 13036 13037 13038 13039 13088 13089 13090 13091 13092 13093 13082 13083 13084 13085 13086 13087 16238 16239 16240 16241 16242 16243 11306 11307 11308 11309 11310 11311 11312 11313 11314 11315 11316 11317 11246 11247 11248 11249 11250 11251 16232 16233 16234 16235 16236 16237 +48 13082 13083 13084 13085 13086 13087 13136 13137 13138 13139 13140 13141 13130 13131 13132 13133 13134 13135 16244 16245 16246 16247 16248 16249 11336 11337 11338 11339 11340 11341 11342 11343 11344 11345 11346 11347 11306 11307 11308 11309 11310 11311 16238 16239 16240 16241 16242 16243 +48 13130 13131 13132 13133 13134 13135 13184 13185 13186 13187 13188 13189 13178 13179 13180 13181 13182 13183 16250 16251 16252 16253 16254 16255 11366 11367 11368 11369 11370 11371 11372 11373 11374 11375 11376 11377 11336 11337 11338 11339 11340 11341 16244 16245 16246 16247 16248 16249 +48 13178 13179 13180 13181 13182 13183 13232 13233 13234 13235 13236 13237 13226 13227 13228 13229 13230 13231 16256 16257 16258 16259 16260 16261 11426 11427 11428 11429 11430 11431 11432 11433 11434 11435 11436 11437 11366 11367 11368 11369 11370 11371 16250 16251 16252 16253 16254 16255 +48 13226 13227 13228 13229 13230 13231 13280 13281 13282 13283 13284 13285 13274 13275 13276 13277 13278 13279 16262 16263 16264 16265 16266 16267 11456 11457 11458 11459 11460 11461 11462 11463 11464 11465 11466 11467 11426 11427 11428 11429 11430 11431 16256 16257 16258 16259 16260 16261 +48 13274 13275 13276 13277 13278 13279 13328 13329 13330 13331 13332 13333 13322 13323 13324 13325 13326 13327 16268 16269 16270 16271 16272 16273 11486 11487 11488 11489 11490 11491 11492 11493 11494 11495 11496 11497 11456 11457 11458 11459 11460 11461 16262 16263 16264 16265 16266 16267 +48 13322 13323 13324 13325 13326 13327 13376 13377 13378 13379 13380 13381 13370 13371 13372 13373 13374 13375 16274 16275 16276 16277 16278 16279 11546 11547 11548 11549 11550 11551 11552 11553 11554 11555 11556 11557 11486 11487 11488 11489 11490 11491 16268 16269 16270 16271 16272 16273 +48 13370 13371 13372 13373 13374 13375 13424 13425 13426 13427 13428 13429 13418 13419 13420 13421 13422 13423 16280 16281 16282 16283 16284 16285 11576 11577 11578 11579 11580 11581 11582 11583 11584 11585 11586 11587 11546 11547 11548 11549 11550 11551 16274 16275 16276 16277 16278 16279 +48 13418 13419 13420 13421 13422 13423 13472 13473 13474 13475 13476 13477 13466 13467 13468 13469 13470 13471 16286 16287 16288 16289 16290 16291 11606 11607 11608 11609 11610 11611 11612 11613 11614 11615 11616 11617 11576 11577 11578 11579 11580 11581 16280 16281 16282 16283 16284 16285 +48 13466 13467 13468 13469 13470 13471 13520 13521 13522 13523 13524 13525 13514 13515 13516 13517 13518 13519 16292 16293 16294 16295 16296 16297 11666 11667 11668 11669 11670 11671 11672 11673 11674 11675 11676 11677 11606 11607 11608 11609 11610 11611 16286 16287 16288 16289 16290 16291 +48 13514 13515 13516 13517 13518 13519 13568 13569 13570 13571 13572 13573 13562 13563 13564 13565 13566 13567 16298 16299 16300 16301 16302 16303 11696 11697 11698 11699 11700 11701 11702 11703 11704 11705 11706 11707 11666 11667 11668 11669 11670 11671 16292 16293 16294 16295 16296 16297 +48 13562 13563 13564 13565 13566 13567 13616 13617 13618 13619 13620 13621 13610 13611 13612 13613 13614 13615 16304 16305 16306 16307 16308 16309 11726 11727 11728 11729 11730 11731 11732 11733 11734 11735 11736 11737 11696 11697 11698 11699 11700 11701 16298 16299 16300 16301 16302 16303 +48 13610 13611 13612 13613 13614 13615 13664 13665 13666 13667 13668 13669 13658 13659 13660 13661 13662 13663 16310 16311 16312 16313 16314 16315 11786 11787 11788 11789 11790 11791 11792 11793 11794 11795 11796 11797 11726 11727 11728 11729 11730 11731 16304 16305 16306 16307 16308 16309 +48 13658 13659 13660 13661 13662 13663 13712 13713 13714 13715 13716 13717 13706 13707 13708 13709 13710 13711 16316 16317 16318 16319 16320 16321 11816 11817 11818 11819 11820 11821 11822 11823 11824 11825 11826 11827 11786 11787 11788 11789 11790 11791 16310 16311 16312 16313 16314 16315 +48 13706 13707 13708 13709 13710 13711 13760 13761 13762 13763 13764 13765 13754 13755 13756 13757 13758 13759 16322 16323 16324 16325 16326 16327 11846 11847 11848 11849 11850 11851 11852 11853 11854 11855 11856 11857 11816 11817 11818 11819 11820 11821 16316 16317 16318 16319 16320 16321 +48 13754 13755 13756 13757 13758 13759 13808 13809 13810 13811 13812 13813 13802 13803 13804 13805 13806 13807 16328 16329 16330 16331 16332 16333 11906 11907 11908 11909 11910 11911 11912 11913 11914 11915 11916 11917 11846 11847 11848 11849 11850 11851 16322 16323 16324 16325 16326 16327 +48 13802 13803 13804 13805 13806 13807 13856 13857 13858 13859 13860 13861 13850 13851 13852 13853 13854 13855 16334 16335 16336 16337 16338 16339 11936 11937 11938 11939 11940 11941 11942 11943 11944 11945 11946 11947 11906 11907 11908 11909 11910 11911 16328 16329 16330 16331 16332 16333 +48 13850 13851 13852 13853 13854 13855 13904 13905 13906 13907 13908 13909 13898 13899 13900 13901 13902 13903 16340 16341 16342 16343 16344 16345 11966 11967 11968 11969 11970 11971 11972 11973 11974 11975 11976 11977 11936 11937 11938 11939 11940 11941 16334 16335 16336 16337 16338 16339 +48 13898 13899 13900 13901 13902 13903 13952 13953 13954 13955 13956 13957 13946 13947 13948 13949 13950 13951 16346 16347 16348 16349 16350 16351 12026 12027 12028 12029 12030 12031 12032 12033 12034 12035 12036 12037 11966 11967 11968 11969 11970 11971 16340 16341 16342 16343 16344 16345 +48 13946 13947 13948 13949 13950 13951 14000 14001 14002 14003 14004 14005 13994 13995 13996 13997 13998 13999 16352 16353 16354 16355 16356 16357 12056 12057 12058 12059 12060 12061 12062 12063 12064 12065 12066 12067 12026 12027 12028 12029 12030 12031 16346 16347 16348 16349 16350 16351 +48 13994 13995 13996 13997 13998 13999 14048 14049 14050 14051 14052 14053 14042 14043 14044 14045 14046 14047 16358 16359 16360 16361 16362 16363 12086 12087 12088 12089 12090 12091 12092 12093 12094 12095 12096 12097 12056 12057 12058 12059 12060 12061 16352 16353 16354 16355 16356 16357 +48 14042 14043 14044 14045 14046 14047 14096 14097 14098 14099 14100 14101 14090 14091 14092 14093 14094 14095 16364 16365 16366 16367 16368 16369 12146 12147 12148 12149 12150 12151 12152 12153 12154 12155 12156 12157 12086 12087 12088 12089 12090 12091 16358 16359 16360 16361 16362 16363 +48 14090 14091 14092 14093 14094 14095 14144 14145 14146 14147 14148 14149 14138 14139 14140 14141 14142 14143 16370 16371 16372 16373 16374 16375 12176 12177 12178 12179 12180 12181 12182 12183 12184 12185 12186 12187 12146 12147 12148 12149 12150 12151 16364 16365 16366 16367 16368 16369 +48 14138 14139 14140 14141 14142 14143 15854 15855 15856 15857 15858 15859 3047 3048 3049 3050 3051 3052 3437 3438 3439 3440 3441 3442 2807 2808 2809 2810 2811 2812 15860 15861 15862 15863 15864 15865 12176 12177 12178 12179 12180 12181 16370 16371 16372 16373 16374 16375 +48 5330 5331 5332 5333 5334 5335 15830 15831 15832 15833 15834 15835 10574 10575 10576 10577 10578 10579 16376 16377 16378 16379 16380 16381 9164 9165 9166 9167 9168 9169 9170 9171 9172 9173 9174 9175 4814 4815 4816 4817 4818 4819 5378 5379 5380 5381 5382 5383 +48 10574 10575 10576 10577 10578 10579 10580 10581 10582 10583 10584 10585 10568 10569 10570 10571 10572 10573 16382 16383 16384 16385 16386 16387 9194 9195 9196 9197 9198 9199 9200 9201 9202 9203 9204 9205 9164 9165 9166 9167 9168 9169 16376 16377 16378 16379 16380 16381 +48 10568 10569 10570 10571 10572 10573 10646 10647 10648 10649 10650 10651 10640 10641 10642 10643 10644 10645 16388 16389 16390 16391 16392 16393 9254 9255 9256 9257 9258 9259 9260 9261 9262 9263 9264 9265 9194 9195 9196 9197 9198 9199 16382 16383 16384 16385 16386 16387 +48 10640 10641 10642 10643 10644 10645 10664 10665 10666 10667 10668 10669 10658 10659 10660 10661 10662 10663 16394 16395 16396 16397 16398 16399 9272 9273 9274 9275 9276 9277 9278 9279 9280 9281 9282 9283 9254 9255 9256 9257 9258 9259 16388 16389 16390 16391 16392 16393 +48 10658 10659 10660 10661 10662 10663 10706 10707 10708 10709 10710 10711 10700 10701 10702 10703 10704 10705 16400 16401 16402 16403 16404 16405 9314 9315 9316 9317 9318 9319 9320 9321 9322 9323 9324 9325 9272 9273 9274 9275 9276 9277 16394 16395 16396 16397 16398 16399 +48 10700 10701 10702 10703 10704 10705 10736 10737 10738 10739 10740 10741 10730 10731 10732 10733 10734 10735 16406 16407 16408 16409 16410 16411 9344 9345 9346 9347 9348 9349 9350 9351 9352 9353 9354 9355 9314 9315 9316 9317 9318 9319 16400 16401 16402 16403 16404 16405 +48 10730 10731 10732 10733 10734 10735 10772 10773 10774 10775 10776 10777 10766 10767 10768 10769 10770 10771 16412 16413 16414 16415 16416 16417 9380 9381 9382 9383 9384 9385 9386 9387 9388 9389 9390 9391 9344 9345 9346 9347 9348 9349 16406 16407 16408 16409 16410 16411 +48 10766 10767 10768 10769 10770 10771 10832 10833 10834 10835 10836 10837 10826 10827 10828 10829 10830 10831 16418 16419 16420 16421 16422 16423 9440 9441 9442 9443 9444 9445 9446 9447 9448 9449 9450 9451 9380 9381 9382 9383 9384 9385 16412 16413 16414 16415 16416 16417 +48 10826 10827 10828 10829 10830 10831 10862 10863 10864 10865 10866 10867 10856 10857 10858 10859 10860 10861 16424 16425 16426 16427 16428 16429 9470 9471 9472 9473 9474 9475 9476 9477 9478 9479 9480 9481 9440 9441 9442 9443 9444 9445 16418 16419 16420 16421 16422 16423 +48 10856 10857 10858 10859 10860 10861 10892 10893 10894 10895 10896 10897 10886 10887 10888 10889 10890 10891 16430 16431 16432 16433 16434 16435 9500 9501 9502 9503 9504 9505 9506 9507 9508 9509 9510 9511 9470 9471 9472 9473 9474 9475 16424 16425 16426 16427 16428 16429 +48 10886 10887 10888 10889 10890 10891 10952 10953 10954 10955 10956 10957 10946 10947 10948 10949 10950 10951 16436 16437 16438 16439 16440 16441 9530 9531 9532 9533 9534 9535 9536 9537 9538 9539 9540 9541 9500 9501 9502 9503 9504 9505 16430 16431 16432 16433 16434 16435 +48 10946 10947 10948 10949 10950 10951 10982 10983 10984 10985 10986 10987 10976 10977 10978 10979 10980 10981 16442 16443 16444 16445 16446 16447 9560 9561 9562 9563 9564 9565 9566 9567 9568 9569 9570 9571 9530 9531 9532 9533 9534 9535 16436 16437 16438 16439 16440 16441 +48 10976 10977 10978 10979 10980 10981 11012 11013 11014 11015 11016 11017 11006 11007 11008 11009 11010 11011 16448 16449 16450 16451 16452 16453 9590 9591 9592 9593 9594 9595 9596 9597 9598 9599 9600 9601 9560 9561 9562 9563 9564 9565 16442 16443 16444 16445 16446 16447 +48 11006 11007 11008 11009 11010 11011 11072 11073 11074 11075 11076 11077 11066 11067 11068 11069 11070 11071 16454 16455 16456 16457 16458 16459 9650 9651 9652 9653 9654 9655 9656 9657 9658 9659 9660 9661 9590 9591 9592 9593 9594 9595 16448 16449 16450 16451 16452 16453 +48 11066 11067 11068 11069 11070 11071 11102 11103 11104 11105 11106 11107 11096 11097 11098 11099 11100 11101 16460 16461 16462 16463 16464 16465 9680 9681 9682 9683 9684 9685 9686 9687 9688 9689 9690 9691 9650 9651 9652 9653 9654 9655 16454 16455 16456 16457 16458 16459 +48 11096 11097 11098 11099 11100 11101 11132 11133 11134 11135 11136 11137 11126 11127 11128 11129 11130 11131 16466 16467 16468 16469 16470 16471 9710 9711 9712 9713 9714 9715 9716 9717 9718 9719 9720 9721 9680 9681 9682 9683 9684 9685 16460 16461 16462 16463 16464 16465 +48 11126 11127 11128 11129 11130 11131 11192 11193 11194 11195 11196 11197 11186 11187 11188 11189 11190 11191 16472 16473 16474 16475 16476 16477 9740 9741 9742 9743 9744 9745 9746 9747 9748 9749 9750 9751 9710 9711 9712 9713 9714 9715 16466 16467 16468 16469 16470 16471 +48 11186 11187 11188 11189 11190 11191 11222 11223 11224 11225 11226 11227 11216 11217 11218 11219 11220 11221 16478 16479 16480 16481 16482 16483 9770 9771 9772 9773 9774 9775 9776 9777 9778 9779 9780 9781 9740 9741 9742 9743 9744 9745 16472 16473 16474 16475 16476 16477 +48 11216 11217 11218 11219 11220 11221 11252 11253 11254 11255 11256 11257 11246 11247 11248 11249 11250 11251 16484 16485 16486 16487 16488 16489 9800 9801 9802 9803 9804 9805 9806 9807 9808 9809 9810 9811 9770 9771 9772 9773 9774 9775 16478 16479 16480 16481 16482 16483 +48 11246 11247 11248 11249 11250 11251 11312 11313 11314 11315 11316 11317 11306 11307 11308 11309 11310 11311 16490 16491 16492 16493 16494 16495 9830 9831 9832 9833 9834 9835 9836 9837 9838 9839 9840 9841 9800 9801 9802 9803 9804 9805 16484 16485 16486 16487 16488 16489 +48 11306 11307 11308 11309 11310 11311 11342 11343 11344 11345 11346 11347 11336 11337 11338 11339 11340 11341 16496 16497 16498 16499 16500 16501 9860 9861 9862 9863 9864 9865 9866 9867 9868 9869 9870 9871 9830 9831 9832 9833 9834 9835 16490 16491 16492 16493 16494 16495 +48 11336 11337 11338 11339 11340 11341 11372 11373 11374 11375 11376 11377 11366 11367 11368 11369 11370 11371 16502 16503 16504 16505 16506 16507 9890 9891 9892 9893 9894 9895 9896 9897 9898 9899 9900 9901 9860 9861 9862 9863 9864 9865 16496 16497 16498 16499 16500 16501 +48 11366 11367 11368 11369 11370 11371 11432 11433 11434 11435 11436 11437 11426 11427 11428 11429 11430 11431 16508 16509 16510 16511 16512 16513 9920 9921 9922 9923 9924 9925 9926 9927 9928 9929 9930 9931 9890 9891 9892 9893 9894 9895 16502 16503 16504 16505 16506 16507 +48 11426 11427 11428 11429 11430 11431 11462 11463 11464 11465 11466 11467 11456 11457 11458 11459 11460 11461 16514 16515 16516 16517 16518 16519 9950 9951 9952 9953 9954 9955 9956 9957 9958 9959 9960 9961 9920 9921 9922 9923 9924 9925 16508 16509 16510 16511 16512 16513 +48 11456 11457 11458 11459 11460 11461 11492 11493 11494 11495 11496 11497 11486 11487 11488 11489 11490 11491 16520 16521 16522 16523 16524 16525 9980 9981 9982 9983 9984 9985 9986 9987 9988 9989 9990 9991 9950 9951 9952 9953 9954 9955 16514 16515 16516 16517 16518 16519 +48 11486 11487 11488 11489 11490 11491 11552 11553 11554 11555 11556 11557 11546 11547 11548 11549 11550 11551 16526 16527 16528 16529 16530 16531 10010 10011 10012 10013 10014 10015 10016 10017 10018 10019 10020 10021 9980 9981 9982 9983 9984 9985 16520 16521 16522 16523 16524 16525 +48 11546 11547 11548 11549 11550 11551 11582 11583 11584 11585 11586 11587 11576 11577 11578 11579 11580 11581 16532 16533 16534 16535 16536 16537 10040 10041 10042 10043 10044 10045 10046 10047 10048 10049 10050 10051 10010 10011 10012 10013 10014 10015 16526 16527 16528 16529 16530 16531 +48 11576 11577 11578 11579 11580 11581 11612 11613 11614 11615 11616 11617 11606 11607 11608 11609 11610 11611 16538 16539 16540 16541 16542 16543 10070 10071 10072 10073 10074 10075 10076 10077 10078 10079 10080 10081 10040 10041 10042 10043 10044 10045 16532 16533 16534 16535 16536 16537 +48 11606 11607 11608 11609 11610 11611 11672 11673 11674 11675 11676 11677 11666 11667 11668 11669 11670 11671 16544 16545 16546 16547 16548 16549 10100 10101 10102 10103 10104 10105 10106 10107 10108 10109 10110 10111 10070 10071 10072 10073 10074 10075 16538 16539 16540 16541 16542 16543 +48 11666 11667 11668 11669 11670 11671 11702 11703 11704 11705 11706 11707 11696 11697 11698 11699 11700 11701 16550 16551 16552 16553 16554 16555 10130 10131 10132 10133 10134 10135 10136 10137 10138 10139 10140 10141 10100 10101 10102 10103 10104 10105 16544 16545 16546 16547 16548 16549 +48 11696 11697 11698 11699 11700 11701 11732 11733 11734 11735 11736 11737 11726 11727 11728 11729 11730 11731 16556 16557 16558 16559 16560 16561 10160 10161 10162 10163 10164 10165 10166 10167 10168 10169 10170 10171 10130 10131 10132 10133 10134 10135 16550 16551 16552 16553 16554 16555 +48 11726 11727 11728 11729 11730 11731 11792 11793 11794 11795 11796 11797 11786 11787 11788 11789 11790 11791 16562 16563 16564 16565 16566 16567 10190 10191 10192 10193 10194 10195 10196 10197 10198 10199 10200 10201 10160 10161 10162 10163 10164 10165 16556 16557 16558 16559 16560 16561 +48 11786 11787 11788 11789 11790 11791 11822 11823 11824 11825 11826 11827 11816 11817 11818 11819 11820 11821 16568 16569 16570 16571 16572 16573 10220 10221 10222 10223 10224 10225 10226 10227 10228 10229 10230 10231 10190 10191 10192 10193 10194 10195 16562 16563 16564 16565 16566 16567 +48 11816 11817 11818 11819 11820 11821 11852 11853 11854 11855 11856 11857 11846 11847 11848 11849 11850 11851 16574 16575 16576 16577 16578 16579 10250 10251 10252 10253 10254 10255 10256 10257 10258 10259 10260 10261 10220 10221 10222 10223 10224 10225 16568 16569 16570 16571 16572 16573 +48 11846 11847 11848 11849 11850 11851 11912 11913 11914 11915 11916 11917 11906 11907 11908 11909 11910 11911 16580 16581 16582 16583 16584 16585 10280 10281 10282 10283 10284 10285 10286 10287 10288 10289 10290 10291 10250 10251 10252 10253 10254 10255 16574 16575 16576 16577 16578 16579 +48 11906 11907 11908 11909 11910 11911 11942 11943 11944 11945 11946 11947 11936 11937 11938 11939 11940 11941 16586 16587 16588 16589 16590 16591 10310 10311 10312 10313 10314 10315 10316 10317 10318 10319 10320 10321 10280 10281 10282 10283 10284 10285 16580 16581 16582 16583 16584 16585 +48 11936 11937 11938 11939 11940 11941 11972 11973 11974 11975 11976 11977 11966 11967 11968 11969 11970 11971 16592 16593 16594 16595 16596 16597 10340 10341 10342 10343 10344 10345 10346 10347 10348 10349 10350 10351 10310 10311 10312 10313 10314 10315 16586 16587 16588 16589 16590 16591 +48 11966 11967 11968 11969 11970 11971 12032 12033 12034 12035 12036 12037 12026 12027 12028 12029 12030 12031 16598 16599 16600 16601 16602 16603 10370 10371 10372 10373 10374 10375 10376 10377 10378 10379 10380 10381 10340 10341 10342 10343 10344 10345 16592 16593 16594 16595 16596 16597 +48 12026 12027 12028 12029 12030 12031 12062 12063 12064 12065 12066 12067 12056 12057 12058 12059 12060 12061 16604 16605 16606 16607 16608 16609 10400 10401 10402 10403 10404 10405 10406 10407 10408 10409 10410 10411 10370 10371 10372 10373 10374 10375 16598 16599 16600 16601 16602 16603 +48 12056 12057 12058 12059 12060 12061 12092 12093 12094 12095 12096 12097 12086 12087 12088 12089 12090 12091 16610 16611 16612 16613 16614 16615 10430 10431 10432 10433 10434 10435 10436 10437 10438 10439 10440 10441 10400 10401 10402 10403 10404 10405 16604 16605 16606 16607 16608 16609 +48 12086 12087 12088 12089 12090 12091 12152 12153 12154 12155 12156 12157 12146 12147 12148 12149 12150 12151 16616 16617 16618 16619 16620 16621 10490 10491 10492 10493 10494 10495 10496 10497 10498 10499 10500 10501 10430 10431 10432 10433 10434 10435 16610 16611 16612 16613 16614 16615 +48 12146 12147 12148 12149 12150 12151 12182 12183 12184 12185 12186 12187 12176 12177 12178 12179 12180 12181 16622 16623 16624 16625 16626 16627 10520 10521 10522 10523 10524 10525 10526 10527 10528 10529 10530 10531 10490 10491 10492 10493 10494 10495 16616 16617 16618 16619 16620 16621 +48 12176 12177 12178 12179 12180 12181 15860 15861 15862 15863 15864 15865 2807 2808 2809 2810 2811 2812 3479 3480 3481 3482 3483 3484 2663 2664 2665 2666 2667 2668 10538 10539 10540 10541 10542 10543 10520 10521 10522 10523 10524 10525 16622 16623 16624 16625 16626 16627 +48 4814 4815 4816 4817 4818 4819 9170 9171 9172 9173 9174 9175 9164 9165 9166 9167 9168 9169 16628 16629 16630 16631 16632 16633 7496 7497 7498 7499 7500 7501 7502 7503 7504 7505 7506 7507 4586 4587 4588 4589 4590 4591 5420 5421 5422 5423 5424 5425 +48 9164 9165 9166 9167 9168 9169 9200 9201 9202 9203 9204 9205 9194 9195 9196 9197 9198 9199 16634 16635 16636 16637 16638 16639 7526 7527 7528 7529 7530 7531 7532 7533 7534 7535 7536 7537 7496 7497 7498 7499 7500 7501 16628 16629 16630 16631 16632 16633 +48 9194 9195 9196 9197 9198 9199 9260 9261 9262 9263 9264 9265 9254 9255 9256 9257 9258 9259 16640 16641 16642 16643 16644 16645 7586 7587 7588 7589 7590 7591 7592 7593 7594 7595 7596 7597 7526 7527 7528 7529 7530 7531 16634 16635 16636 16637 16638 16639 +48 9254 9255 9256 9257 9258 9259 9278 9279 9280 9281 9282 9283 9272 9273 9274 9275 9276 9277 16646 16647 16648 16649 16650 16651 7604 7605 7606 7607 7608 7609 7610 7611 7612 7613 7614 7615 7586 7587 7588 7589 7590 7591 16640 16641 16642 16643 16644 16645 +48 9272 9273 9274 9275 9276 9277 9320 9321 9322 9323 9324 9325 9314 9315 9316 9317 9318 9319 16652 16653 16654 16655 16656 16657 7646 7647 7648 7649 7650 7651 7652 7653 7654 7655 7656 7657 7604 7605 7606 7607 7608 7609 16646 16647 16648 16649 16650 16651 +48 9314 9315 9316 9317 9318 9319 9350 9351 9352 9353 9354 9355 9344 9345 9346 9347 9348 9349 16658 16659 16660 16661 16662 16663 7676 7677 7678 7679 7680 7681 7682 7683 7684 7685 7686 7687 7646 7647 7648 7649 7650 7651 16652 16653 16654 16655 16656 16657 +48 9344 9345 9346 9347 9348 9349 9386 9387 9388 9389 9390 9391 9380 9381 9382 9383 9384 9385 16664 16665 16666 16667 16668 16669 7712 7713 7714 7715 7716 7717 7718 7719 7720 7721 7722 7723 7676 7677 7678 7679 7680 7681 16658 16659 16660 16661 16662 16663 +48 9380 9381 9382 9383 9384 9385 9446 9447 9448 9449 9450 9451 9440 9441 9442 9443 9444 9445 16670 16671 16672 16673 16674 16675 7772 7773 7774 7775 7776 7777 7778 7779 7780 7781 7782 7783 7712 7713 7714 7715 7716 7717 16664 16665 16666 16667 16668 16669 +48 9440 9441 9442 9443 9444 9445 9476 9477 9478 9479 9480 9481 9470 9471 9472 9473 9474 9475 16676 16677 16678 16679 16680 16681 7802 7803 7804 7805 7806 7807 7808 7809 7810 7811 7812 7813 7772 7773 7774 7775 7776 7777 16670 16671 16672 16673 16674 16675 +48 9470 9471 9472 9473 9474 9475 9506 9507 9508 9509 9510 9511 9500 9501 9502 9503 9504 9505 16682 16683 16684 16685 16686 16687 7832 7833 7834 7835 7836 7837 7838 7839 7840 7841 7842 7843 7802 7803 7804 7805 7806 7807 16676 16677 16678 16679 16680 16681 +48 9500 9501 9502 9503 9504 9505 9536 9537 9538 9539 9540 9541 9530 9531 9532 9533 9534 9535 16688 16689 16690 16691 16692 16693 7892 7893 7894 7895 7896 7897 7898 7899 7900 7901 7902 7903 7832 7833 7834 7835 7836 7837 16682 16683 16684 16685 16686 16687 +48 9530 9531 9532 9533 9534 9535 9566 9567 9568 9569 9570 9571 9560 9561 9562 9563 9564 9565 16694 16695 16696 16697 16698 16699 7922 7923 7924 7925 7926 7927 7928 7929 7930 7931 7932 7933 7892 7893 7894 7895 7896 7897 16688 16689 16690 16691 16692 16693 +48 9560 9561 9562 9563 9564 9565 9596 9597 9598 9599 9600 9601 9590 9591 9592 9593 9594 9595 16700 16701 16702 16703 16704 16705 7952 7953 7954 7955 7956 7957 7958 7959 7960 7961 7962 7963 7922 7923 7924 7925 7926 7927 16694 16695 16696 16697 16698 16699 +48 9590 9591 9592 9593 9594 9595 9656 9657 9658 9659 9660 9661 9650 9651 9652 9653 9654 9655 16706 16707 16708 16709 16710 16711 8012 8013 8014 8015 8016 8017 8018 8019 8020 8021 8022 8023 7952 7953 7954 7955 7956 7957 16700 16701 16702 16703 16704 16705 +48 9650 9651 9652 9653 9654 9655 9686 9687 9688 9689 9690 9691 9680 9681 9682 9683 9684 9685 16712 16713 16714 16715 16716 16717 8042 8043 8044 8045 8046 8047 8048 8049 8050 8051 8052 8053 8012 8013 8014 8015 8016 8017 16706 16707 16708 16709 16710 16711 +48 9680 9681 9682 9683 9684 9685 9716 9717 9718 9719 9720 9721 9710 9711 9712 9713 9714 9715 16718 16719 16720 16721 16722 16723 8072 8073 8074 8075 8076 8077 8078 8079 8080 8081 8082 8083 8042 8043 8044 8045 8046 8047 16712 16713 16714 16715 16716 16717 +48 9710 9711 9712 9713 9714 9715 9746 9747 9748 9749 9750 9751 9740 9741 9742 9743 9744 9745 16724 16725 16726 16727 16728 16729 8132 8133 8134 8135 8136 8137 8138 8139 8140 8141 8142 8143 8072 8073 8074 8075 8076 8077 16718 16719 16720 16721 16722 16723 +48 9740 9741 9742 9743 9744 9745 9776 9777 9778 9779 9780 9781 9770 9771 9772 9773 9774 9775 16730 16731 16732 16733 16734 16735 8162 8163 8164 8165 8166 8167 8168 8169 8170 8171 8172 8173 8132 8133 8134 8135 8136 8137 16724 16725 16726 16727 16728 16729 +48 9770 9771 9772 9773 9774 9775 9806 9807 9808 9809 9810 9811 9800 9801 9802 9803 9804 9805 16736 16737 16738 16739 16740 16741 8192 8193 8194 8195 8196 8197 8198 8199 8200 8201 8202 8203 8162 8163 8164 8165 8166 8167 16730 16731 16732 16733 16734 16735 +48 9800 9801 9802 9803 9804 9805 9836 9837 9838 9839 9840 9841 9830 9831 9832 9833 9834 9835 16742 16743 16744 16745 16746 16747 8252 8253 8254 8255 8256 8257 8258 8259 8260 8261 8262 8263 8192 8193 8194 8195 8196 8197 16736 16737 16738 16739 16740 16741 +48 9830 9831 9832 9833 9834 9835 9866 9867 9868 9869 9870 9871 9860 9861 9862 9863 9864 9865 16748 16749 16750 16751 16752 16753 8282 8283 8284 8285 8286 8287 8288 8289 8290 8291 8292 8293 8252 8253 8254 8255 8256 8257 16742 16743 16744 16745 16746 16747 +48 9860 9861 9862 9863 9864 9865 9896 9897 9898 9899 9900 9901 9890 9891 9892 9893 9894 9895 16754 16755 16756 16757 16758 16759 8312 8313 8314 8315 8316 8317 8318 8319 8320 8321 8322 8323 8282 8283 8284 8285 8286 8287 16748 16749 16750 16751 16752 16753 +48 9890 9891 9892 9893 9894 9895 9926 9927 9928 9929 9930 9931 9920 9921 9922 9923 9924 9925 16760 16761 16762 16763 16764 16765 8372 8373 8374 8375 8376 8377 8378 8379 8380 8381 8382 8383 8312 8313 8314 8315 8316 8317 16754 16755 16756 16757 16758 16759 +48 9920 9921 9922 9923 9924 9925 9956 9957 9958 9959 9960 9961 9950 9951 9952 9953 9954 9955 16766 16767 16768 16769 16770 16771 8402 8403 8404 8405 8406 8407 8408 8409 8410 8411 8412 8413 8372 8373 8374 8375 8376 8377 16760 16761 16762 16763 16764 16765 +48 9950 9951 9952 9953 9954 9955 9986 9987 9988 9989 9990 9991 9980 9981 9982 9983 9984 9985 16772 16773 16774 16775 16776 16777 8432 8433 8434 8435 8436 8437 8438 8439 8440 8441 8442 8443 8402 8403 8404 8405 8406 8407 16766 16767 16768 16769 16770 16771 +48 9980 9981 9982 9983 9984 9985 10016 10017 10018 10019 10020 10021 10010 10011 10012 10013 10014 10015 16778 16779 16780 16781 16782 16783 8492 8493 8494 8495 8496 8497 8498 8499 8500 8501 8502 8503 8432 8433 8434 8435 8436 8437 16772 16773 16774 16775 16776 16777 +48 10010 10011 10012 10013 10014 10015 10046 10047 10048 10049 10050 10051 10040 10041 10042 10043 10044 10045 16784 16785 16786 16787 16788 16789 8522 8523 8524 8525 8526 8527 8528 8529 8530 8531 8532 8533 8492 8493 8494 8495 8496 8497 16778 16779 16780 16781 16782 16783 +48 10040 10041 10042 10043 10044 10045 10076 10077 10078 10079 10080 10081 10070 10071 10072 10073 10074 10075 16790 16791 16792 16793 16794 16795 8552 8553 8554 8555 8556 8557 8558 8559 8560 8561 8562 8563 8522 8523 8524 8525 8526 8527 16784 16785 16786 16787 16788 16789 +48 10070 10071 10072 10073 10074 10075 10106 10107 10108 10109 10110 10111 10100 10101 10102 10103 10104 10105 16796 16797 16798 16799 16800 16801 8612 8613 8614 8615 8616 8617 8618 8619 8620 8621 8622 8623 8552 8553 8554 8555 8556 8557 16790 16791 16792 16793 16794 16795 +48 10100 10101 10102 10103 10104 10105 10136 10137 10138 10139 10140 10141 10130 10131 10132 10133 10134 10135 16802 16803 16804 16805 16806 16807 8642 8643 8644 8645 8646 8647 8648 8649 8650 8651 8652 8653 8612 8613 8614 8615 8616 8617 16796 16797 16798 16799 16800 16801 +48 10130 10131 10132 10133 10134 10135 10166 10167 10168 10169 10170 10171 10160 10161 10162 10163 10164 10165 16808 16809 16810 16811 16812 16813 8672 8673 8674 8675 8676 8677 8678 8679 8680 8681 8682 8683 8642 8643 8644 8645 8646 8647 16802 16803 16804 16805 16806 16807 +48 10160 10161 10162 10163 10164 10165 10196 10197 10198 10199 10200 10201 10190 10191 10192 10193 10194 10195 16814 16815 16816 16817 16818 16819 8732 8733 8734 8735 8736 8737 8738 8739 8740 8741 8742 8743 8672 8673 8674 8675 8676 8677 16808 16809 16810 16811 16812 16813 +48 10190 10191 10192 10193 10194 10195 10226 10227 10228 10229 10230 10231 10220 10221 10222 10223 10224 10225 16820 16821 16822 16823 16824 16825 8762 8763 8764 8765 8766 8767 8768 8769 8770 8771 8772 8773 8732 8733 8734 8735 8736 8737 16814 16815 16816 16817 16818 16819 +48 10220 10221 10222 10223 10224 10225 10256 10257 10258 10259 10260 10261 10250 10251 10252 10253 10254 10255 16826 16827 16828 16829 16830 16831 8792 8793 8794 8795 8796 8797 8798 8799 8800 8801 8802 8803 8762 8763 8764 8765 8766 8767 16820 16821 16822 16823 16824 16825 +48 10250 10251 10252 10253 10254 10255 10286 10287 10288 10289 10290 10291 10280 10281 10282 10283 10284 10285 16832 16833 16834 16835 16836 16837 8852 8853 8854 8855 8856 8857 8858 8859 8860 8861 8862 8863 8792 8793 8794 8795 8796 8797 16826 16827 16828 16829 16830 16831 +48 10280 10281 10282 10283 10284 10285 10316 10317 10318 10319 10320 10321 10310 10311 10312 10313 10314 10315 16838 16839 16840 16841 16842 16843 8882 8883 8884 8885 8886 8887 8888 8889 8890 8891 8892 8893 8852 8853 8854 8855 8856 8857 16832 16833 16834 16835 16836 16837 +48 10310 10311 10312 10313 10314 10315 10346 10347 10348 10349 10350 10351 10340 10341 10342 10343 10344 10345 16844 16845 16846 16847 16848 16849 8912 8913 8914 8915 8916 8917 8918 8919 8920 8921 8922 8923 8882 8883 8884 8885 8886 8887 16838 16839 16840 16841 16842 16843 +48 10340 10341 10342 10343 10344 10345 10376 10377 10378 10379 10380 10381 10370 10371 10372 10373 10374 10375 16850 16851 16852 16853 16854 16855 8972 8973 8974 8975 8976 8977 8978 8979 8980 8981 8982 8983 8912 8913 8914 8915 8916 8917 16844 16845 16846 16847 16848 16849 +48 10370 10371 10372 10373 10374 10375 10406 10407 10408 10409 10410 10411 10400 10401 10402 10403 10404 10405 16856 16857 16858 16859 16860 16861 9002 9003 9004 9005 9006 9007 9008 9009 9010 9011 9012 9013 8972 8973 8974 8975 8976 8977 16850 16851 16852 16853 16854 16855 +48 10400 10401 10402 10403 10404 10405 10436 10437 10438 10439 10440 10441 10430 10431 10432 10433 10434 10435 16862 16863 16864 16865 16866 16867 9032 9033 9034 9035 9036 9037 9038 9039 9040 9041 9042 9043 9002 9003 9004 9005 9006 9007 16856 16857 16858 16859 16860 16861 +48 10430 10431 10432 10433 10434 10435 10496 10497 10498 10499 10500 10501 10490 10491 10492 10493 10494 10495 16868 16869 16870 16871 16872 16873 9092 9093 9094 9095 9096 9097 9098 9099 9100 9101 9102 9103 9032 9033 9034 9035 9036 9037 16862 16863 16864 16865 16866 16867 +48 10490 10491 10492 10493 10494 10495 10526 10527 10528 10529 10530 10531 10520 10521 10522 10523 10524 10525 16874 16875 16876 16877 16878 16879 9122 9123 9124 9125 9126 9127 9128 9129 9130 9131 9132 9133 9092 9093 9094 9095 9096 9097 16868 16869 16870 16871 16872 16873 +48 10520 10521 10522 10523 10524 10525 10538 10539 10540 10541 10542 10543 2663 2664 2665 2666 2667 2668 3521 3522 3523 3524 3525 3526 2387 2388 2389 2390 2391 2392 9140 9141 9142 9143 9144 9145 9122 9123 9124 9125 9126 9127 16874 16875 16876 16877 16878 16879 +48 4586 4587 4588 4589 4590 4591 7502 7503 7504 7505 7506 7507 7496 7497 7498 7499 7500 7501 16880 16881 16882 16883 16884 16885 5828 5829 5830 5831 5832 5833 5834 5835 5836 5837 5838 5839 4322 4323 4324 4325 4326 4327 5462 5463 5464 5465 5466 5467 +48 7496 7497 7498 7499 7500 7501 7532 7533 7534 7535 7536 7537 7526 7527 7528 7529 7530 7531 16886 16887 16888 16889 16890 16891 5858 5859 5860 5861 5862 5863 5864 5865 5866 5867 5868 5869 5828 5829 5830 5831 5832 5833 16880 16881 16882 16883 16884 16885 +48 7526 7527 7528 7529 7530 7531 7592 7593 7594 7595 7596 7597 7586 7587 7588 7589 7590 7591 16892 16893 16894 16895 16896 16897 5918 5919 5920 5921 5922 5923 5924 5925 5926 5927 5928 5929 5858 5859 5860 5861 5862 5863 16886 16887 16888 16889 16890 16891 +48 7586 7587 7588 7589 7590 7591 7610 7611 7612 7613 7614 7615 7604 7605 7606 7607 7608 7609 16898 16899 16900 16901 16902 16903 5936 5937 5938 5939 5940 5941 5942 5943 5944 5945 5946 5947 5918 5919 5920 5921 5922 5923 16892 16893 16894 16895 16896 16897 +48 7604 7605 7606 7607 7608 7609 7652 7653 7654 7655 7656 7657 7646 7647 7648 7649 7650 7651 16904 16905 16906 16907 16908 16909 5978 5979 5980 5981 5982 5983 5984 5985 5986 5987 5988 5989 5936 5937 5938 5939 5940 5941 16898 16899 16900 16901 16902 16903 +48 7646 7647 7648 7649 7650 7651 7682 7683 7684 7685 7686 7687 7676 7677 7678 7679 7680 7681 16910 16911 16912 16913 16914 16915 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 5978 5979 5980 5981 5982 5983 16904 16905 16906 16907 16908 16909 +48 7676 7677 7678 7679 7680 7681 7718 7719 7720 7721 7722 7723 7712 7713 7714 7715 7716 7717 16916 16917 16918 16919 16920 16921 6044 6045 6046 6047 6048 6049 6050 6051 6052 6053 6054 6055 6008 6009 6010 6011 6012 6013 16910 16911 16912 16913 16914 16915 +48 7712 7713 7714 7715 7716 7717 7778 7779 7780 7781 7782 7783 7772 7773 7774 7775 7776 7777 16922 16923 16924 16925 16926 16927 6104 6105 6106 6107 6108 6109 6110 6111 6112 6113 6114 6115 6044 6045 6046 6047 6048 6049 16916 16917 16918 16919 16920 16921 +48 7772 7773 7774 7775 7776 7777 7808 7809 7810 7811 7812 7813 7802 7803 7804 7805 7806 7807 16928 16929 16930 16931 16932 16933 6134 6135 6136 6137 6138 6139 6140 6141 6142 6143 6144 6145 6104 6105 6106 6107 6108 6109 16922 16923 16924 16925 16926 16927 +48 7802 7803 7804 7805 7806 7807 7838 7839 7840 7841 7842 7843 7832 7833 7834 7835 7836 7837 16934 16935 16936 16937 16938 16939 6164 6165 6166 6167 6168 6169 6170 6171 6172 6173 6174 6175 6134 6135 6136 6137 6138 6139 16928 16929 16930 16931 16932 16933 +48 7832 7833 7834 7835 7836 7837 7898 7899 7900 7901 7902 7903 7892 7893 7894 7895 7896 7897 16940 16941 16942 16943 16944 16945 6224 6225 6226 6227 6228 6229 6230 6231 6232 6233 6234 6235 6164 6165 6166 6167 6168 6169 16934 16935 16936 16937 16938 16939 +48 7892 7893 7894 7895 7896 7897 7928 7929 7930 7931 7932 7933 7922 7923 7924 7925 7926 7927 16946 16947 16948 16949 16950 16951 6254 6255 6256 6257 6258 6259 6260 6261 6262 6263 6264 6265 6224 6225 6226 6227 6228 6229 16940 16941 16942 16943 16944 16945 +48 7922 7923 7924 7925 7926 7927 7958 7959 7960 7961 7962 7963 7952 7953 7954 7955 7956 7957 16952 16953 16954 16955 16956 16957 6284 6285 6286 6287 6288 6289 6290 6291 6292 6293 6294 6295 6254 6255 6256 6257 6258 6259 16946 16947 16948 16949 16950 16951 +48 7952 7953 7954 7955 7956 7957 8018 8019 8020 8021 8022 8023 8012 8013 8014 8015 8016 8017 16958 16959 16960 16961 16962 16963 6344 6345 6346 6347 6348 6349 6350 6351 6352 6353 6354 6355 6284 6285 6286 6287 6288 6289 16952 16953 16954 16955 16956 16957 +48 8012 8013 8014 8015 8016 8017 8048 8049 8050 8051 8052 8053 8042 8043 8044 8045 8046 8047 16964 16965 16966 16967 16968 16969 6374 6375 6376 6377 6378 6379 6380 6381 6382 6383 6384 6385 6344 6345 6346 6347 6348 6349 16958 16959 16960 16961 16962 16963 +48 8042 8043 8044 8045 8046 8047 8078 8079 8080 8081 8082 8083 8072 8073 8074 8075 8076 8077 16970 16971 16972 16973 16974 16975 6404 6405 6406 6407 6408 6409 6410 6411 6412 6413 6414 6415 6374 6375 6376 6377 6378 6379 16964 16965 16966 16967 16968 16969 +48 8072 8073 8074 8075 8076 8077 8138 8139 8140 8141 8142 8143 8132 8133 8134 8135 8136 8137 16976 16977 16978 16979 16980 16981 6464 6465 6466 6467 6468 6469 6470 6471 6472 6473 6474 6475 6404 6405 6406 6407 6408 6409 16970 16971 16972 16973 16974 16975 +48 8132 8133 8134 8135 8136 8137 8168 8169 8170 8171 8172 8173 8162 8163 8164 8165 8166 8167 16982 16983 16984 16985 16986 16987 6494 6495 6496 6497 6498 6499 6500 6501 6502 6503 6504 6505 6464 6465 6466 6467 6468 6469 16976 16977 16978 16979 16980 16981 +48 8162 8163 8164 8165 8166 8167 8198 8199 8200 8201 8202 8203 8192 8193 8194 8195 8196 8197 16988 16989 16990 16991 16992 16993 6524 6525 6526 6527 6528 6529 6530 6531 6532 6533 6534 6535 6494 6495 6496 6497 6498 6499 16982 16983 16984 16985 16986 16987 +48 8192 8193 8194 8195 8196 8197 8258 8259 8260 8261 8262 8263 8252 8253 8254 8255 8256 8257 16994 16995 16996 16997 16998 16999 6584 6585 6586 6587 6588 6589 6590 6591 6592 6593 6594 6595 6524 6525 6526 6527 6528 6529 16988 16989 16990 16991 16992 16993 +48 8252 8253 8254 8255 8256 8257 8288 8289 8290 8291 8292 8293 8282 8283 8284 8285 8286 8287 17000 17001 17002 17003 17004 17005 6614 6615 6616 6617 6618 6619 6620 6621 6622 6623 6624 6625 6584 6585 6586 6587 6588 6589 16994 16995 16996 16997 16998 16999 +48 8282 8283 8284 8285 8286 8287 8318 8319 8320 8321 8322 8323 8312 8313 8314 8315 8316 8317 17006 17007 17008 17009 17010 17011 6644 6645 6646 6647 6648 6649 6650 6651 6652 6653 6654 6655 6614 6615 6616 6617 6618 6619 17000 17001 17002 17003 17004 17005 +48 8312 8313 8314 8315 8316 8317 8378 8379 8380 8381 8382 8383 8372 8373 8374 8375 8376 8377 17012 17013 17014 17015 17016 17017 6704 6705 6706 6707 6708 6709 6710 6711 6712 6713 6714 6715 6644 6645 6646 6647 6648 6649 17006 17007 17008 17009 17010 17011 +48 8372 8373 8374 8375 8376 8377 8408 8409 8410 8411 8412 8413 8402 8403 8404 8405 8406 8407 17018 17019 17020 17021 17022 17023 6734 6735 6736 6737 6738 6739 6740 6741 6742 6743 6744 6745 6704 6705 6706 6707 6708 6709 17012 17013 17014 17015 17016 17017 +48 8402 8403 8404 8405 8406 8407 8438 8439 8440 8441 8442 8443 8432 8433 8434 8435 8436 8437 17024 17025 17026 17027 17028 17029 6764 6765 6766 6767 6768 6769 6770 6771 6772 6773 6774 6775 6734 6735 6736 6737 6738 6739 17018 17019 17020 17021 17022 17023 +48 8432 8433 8434 8435 8436 8437 8498 8499 8500 8501 8502 8503 8492 8493 8494 8495 8496 8497 17030 17031 17032 17033 17034 17035 6824 6825 6826 6827 6828 6829 6830 6831 6832 6833 6834 6835 6764 6765 6766 6767 6768 6769 17024 17025 17026 17027 17028 17029 +48 8492 8493 8494 8495 8496 8497 8528 8529 8530 8531 8532 8533 8522 8523 8524 8525 8526 8527 17036 17037 17038 17039 17040 17041 6854 6855 6856 6857 6858 6859 6860 6861 6862 6863 6864 6865 6824 6825 6826 6827 6828 6829 17030 17031 17032 17033 17034 17035 +48 8522 8523 8524 8525 8526 8527 8558 8559 8560 8561 8562 8563 8552 8553 8554 8555 8556 8557 17042 17043 17044 17045 17046 17047 6884 6885 6886 6887 6888 6889 6890 6891 6892 6893 6894 6895 6854 6855 6856 6857 6858 6859 17036 17037 17038 17039 17040 17041 +48 8552 8553 8554 8555 8556 8557 8618 8619 8620 8621 8622 8623 8612 8613 8614 8615 8616 8617 17048 17049 17050 17051 17052 17053 6944 6945 6946 6947 6948 6949 6950 6951 6952 6953 6954 6955 6884 6885 6886 6887 6888 6889 17042 17043 17044 17045 17046 17047 +48 8612 8613 8614 8615 8616 8617 8648 8649 8650 8651 8652 8653 8642 8643 8644 8645 8646 8647 17054 17055 17056 17057 17058 17059 6974 6975 6976 6977 6978 6979 6980 6981 6982 6983 6984 6985 6944 6945 6946 6947 6948 6949 17048 17049 17050 17051 17052 17053 +48 8642 8643 8644 8645 8646 8647 8678 8679 8680 8681 8682 8683 8672 8673 8674 8675 8676 8677 17060 17061 17062 17063 17064 17065 7004 7005 7006 7007 7008 7009 7010 7011 7012 7013 7014 7015 6974 6975 6976 6977 6978 6979 17054 17055 17056 17057 17058 17059 +48 8672 8673 8674 8675 8676 8677 8738 8739 8740 8741 8742 8743 8732 8733 8734 8735 8736 8737 17066 17067 17068 17069 17070 17071 7064 7065 7066 7067 7068 7069 7070 7071 7072 7073 7074 7075 7004 7005 7006 7007 7008 7009 17060 17061 17062 17063 17064 17065 +48 8732 8733 8734 8735 8736 8737 8768 8769 8770 8771 8772 8773 8762 8763 8764 8765 8766 8767 17072 17073 17074 17075 17076 17077 7094 7095 7096 7097 7098 7099 7100 7101 7102 7103 7104 7105 7064 7065 7066 7067 7068 7069 17066 17067 17068 17069 17070 17071 +48 8762 8763 8764 8765 8766 8767 8798 8799 8800 8801 8802 8803 8792 8793 8794 8795 8796 8797 17078 17079 17080 17081 17082 17083 7124 7125 7126 7127 7128 7129 7130 7131 7132 7133 7134 7135 7094 7095 7096 7097 7098 7099 17072 17073 17074 17075 17076 17077 +48 8792 8793 8794 8795 8796 8797 8858 8859 8860 8861 8862 8863 8852 8853 8854 8855 8856 8857 17084 17085 17086 17087 17088 17089 7184 7185 7186 7187 7188 7189 7190 7191 7192 7193 7194 7195 7124 7125 7126 7127 7128 7129 17078 17079 17080 17081 17082 17083 +48 8852 8853 8854 8855 8856 8857 8888 8889 8890 8891 8892 8893 8882 8883 8884 8885 8886 8887 17090 17091 17092 17093 17094 17095 7214 7215 7216 7217 7218 7219 7220 7221 7222 7223 7224 7225 7184 7185 7186 7187 7188 7189 17084 17085 17086 17087 17088 17089 +48 8882 8883 8884 8885 8886 8887 8918 8919 8920 8921 8922 8923 8912 8913 8914 8915 8916 8917 17096 17097 17098 17099 17100 17101 7244 7245 7246 7247 7248 7249 7250 7251 7252 7253 7254 7255 7214 7215 7216 7217 7218 7219 17090 17091 17092 17093 17094 17095 +48 8912 8913 8914 8915 8916 8917 8978 8979 8980 8981 8982 8983 8972 8973 8974 8975 8976 8977 17102 17103 17104 17105 17106 17107 7304 7305 7306 7307 7308 7309 7310 7311 7312 7313 7314 7315 7244 7245 7246 7247 7248 7249 17096 17097 17098 17099 17100 17101 +48 8972 8973 8974 8975 8976 8977 9008 9009 9010 9011 9012 9013 9002 9003 9004 9005 9006 9007 17108 17109 17110 17111 17112 17113 7334 7335 7336 7337 7338 7339 7340 7341 7342 7343 7344 7345 7304 7305 7306 7307 7308 7309 17102 17103 17104 17105 17106 17107 +48 9002 9003 9004 9005 9006 9007 9038 9039 9040 9041 9042 9043 9032 9033 9034 9035 9036 9037 17114 17115 17116 17117 17118 17119 7364 7365 7366 7367 7368 7369 7370 7371 7372 7373 7374 7375 7334 7335 7336 7337 7338 7339 17108 17109 17110 17111 17112 17113 +48 9032 9033 9034 9035 9036 9037 9098 9099 9100 9101 9102 9103 9092 9093 9094 9095 9096 9097 17120 17121 17122 17123 17124 17125 7424 7425 7426 7427 7428 7429 7430 7431 7432 7433 7434 7435 7364 7365 7366 7367 7368 7369 17114 17115 17116 17117 17118 17119 +48 9092 9093 9094 9095 9096 9097 9128 9129 9130 9131 9132 9133 9122 9123 9124 9125 9126 9127 17126 17127 17128 17129 17130 17131 7454 7455 7456 7457 7458 7459 7460 7461 7462 7463 7464 7465 7424 7425 7426 7427 7428 7429 17120 17121 17122 17123 17124 17125 +48 9122 9123 9124 9125 9126 9127 9140 9141 9142 9143 9144 9145 2387 2388 2389 2390 2391 2392 3563 3564 3565 3566 3567 3568 2113 2114 2115 2116 2117 2118 7472 7473 7474 7475 7476 7477 7454 7455 7456 7457 7458 7459 17126 17127 17128 17129 17130 17131 +36 1807 1808 1809 1810 1811 1812 2113 2114 2115 2116 2117 2118 7454 7455 7456 7457 7458 7459 3605 3606 3607 3608 3609 3610 7472 7473 7474 7475 7476 7477 17132 17133 17134 17135 17136 17137 +48 5192 5193 5194 5195 5196 5197 14174 14175 14176 14177 14178 14179 14168 14169 14170 14171 14172 14173 17138 17139 17140 17141 17142 17143 12212 12213 12214 12215 12216 12217 15812 15813 15814 15815 15816 15817 5060 5061 5062 5063 5064 5065 5288 5289 5290 5291 5292 5293 +48 14168 14169 14170 14171 14172 14173 14204 14205 14206 14207 14208 14209 14198 14199 14200 14201 14202 14203 17144 17145 17146 17147 17148 17149 637 638 639 640 641 642 12218 12219 12220 12221 12222 12223 12212 12213 12214 12215 12216 12217 17138 17139 17140 17141 17142 17143 +48 14198 14199 14200 14201 14202 14203 14234 14235 14236 14237 14238 14239 14228 14229 14230 14231 14232 14233 17150 17151 17152 17153 17154 17155 649 650 651 652 653 654 12278 12279 12280 12281 12282 12283 637 638 639 640 641 642 17144 17145 17146 17147 17148 17149 +48 14228 14229 14230 14231 14232 14233 14264 14265 14266 14267 14268 14269 14258 14259 14260 14261 14262 14263 17156 17157 17158 17159 17160 17161 661 662 663 664 665 666 12320 12321 12322 12323 12324 12325 649 650 651 652 653 654 17150 17151 17152 17153 17154 17155 +48 14258 14259 14260 14261 14262 14263 14294 14295 14296 14297 14298 14299 14288 14289 14290 14291 14292 14293 17162 17163 17164 17165 17166 17167 673 674 675 676 677 678 12362 12363 12364 12365 12366 12367 661 662 663 664 665 666 17156 17157 17158 17159 17160 17161 +48 14288 14289 14290 14291 14292 14293 14324 14325 14326 14327 14328 14329 14318 14319 14320 14321 14322 14323 17168 17169 17170 17171 17172 17173 685 686 687 688 689 690 12404 12405 12406 12407 12408 12409 673 674 675 676 677 678 17162 17163 17164 17165 17166 17167 +48 14318 14319 14320 14321 14322 14323 14354 14355 14356 14357 14358 14359 14348 14349 14350 14351 14352 14353 17174 17175 17176 17177 17178 17179 697 698 699 700 701 702 12446 12447 12448 12449 12450 12451 685 686 687 688 689 690 17168 17169 17170 17171 17172 17173 +48 14348 14349 14350 14351 14352 14353 14384 14385 14386 14387 14388 14389 14378 14379 14380 14381 14382 14383 17180 17181 17182 17183 17184 17185 12488 12489 12490 12491 12492 12493 12494 12495 12496 12497 12498 12499 697 698 699 700 701 702 17174 17175 17176 17177 17178 17179 +48 14378 14379 14380 14381 14382 14383 14414 14415 14416 14417 14418 14419 14408 14409 14410 14411 14412 14413 17186 17187 17188 17189 17190 17191 12536 12537 12538 12539 12540 12541 12542 12543 12544 12545 12546 12547 12488 12489 12490 12491 12492 12493 17180 17181 17182 17183 17184 17185 +48 14408 14409 14410 14411 14412 14413 14444 14445 14446 14447 14448 14449 14438 14439 14440 14441 14442 14443 17192 17193 17194 17195 17196 17197 12584 12585 12586 12587 12588 12589 12590 12591 12592 12593 12594 12595 12536 12537 12538 12539 12540 12541 17186 17187 17188 17189 17190 17191 +48 14438 14439 14440 14441 14442 14443 14474 14475 14476 14477 14478 14479 14468 14469 14470 14471 14472 14473 17198 17199 17200 17201 17202 17203 12632 12633 12634 12635 12636 12637 12638 12639 12640 12641 12642 12643 12584 12585 12586 12587 12588 12589 17192 17193 17194 17195 17196 17197 +48 14468 14469 14470 14471 14472 14473 14504 14505 14506 14507 14508 14509 14498 14499 14500 14501 14502 14503 17204 17205 17206 17207 17208 17209 12680 12681 12682 12683 12684 12685 12686 12687 12688 12689 12690 12691 12632 12633 12634 12635 12636 12637 17198 17199 17200 17201 17202 17203 +48 14498 14499 14500 14501 14502 14503 14534 14535 14536 14537 14538 14539 14528 14529 14530 14531 14532 14533 17210 17211 17212 17213 17214 17215 12728 12729 12730 12731 12732 12733 12734 12735 12736 12737 12738 12739 12680 12681 12682 12683 12684 12685 17204 17205 17206 17207 17208 17209 +48 14528 14529 14530 14531 14532 14533 14564 14565 14566 14567 14568 14569 14558 14559 14560 14561 14562 14563 17216 17217 17218 17219 17220 17221 12776 12777 12778 12779 12780 12781 12782 12783 12784 12785 12786 12787 12728 12729 12730 12731 12732 12733 17210 17211 17212 17213 17214 17215 +48 14558 14559 14560 14561 14562 14563 14594 14595 14596 14597 14598 14599 14588 14589 14590 14591 14592 14593 17222 17223 17224 17225 17226 17227 12824 12825 12826 12827 12828 12829 12830 12831 12832 12833 12834 12835 12776 12777 12778 12779 12780 12781 17216 17217 17218 17219 17220 17221 +48 14588 14589 14590 14591 14592 14593 14624 14625 14626 14627 14628 14629 14618 14619 14620 14621 14622 14623 17228 17229 17230 17231 17232 17233 12872 12873 12874 12875 12876 12877 12878 12879 12880 12881 12882 12883 12824 12825 12826 12827 12828 12829 17222 17223 17224 17225 17226 17227 +48 14618 14619 14620 14621 14622 14623 14654 14655 14656 14657 14658 14659 14648 14649 14650 14651 14652 14653 17234 17235 17236 17237 17238 17239 12920 12921 12922 12923 12924 12925 12926 12927 12928 12929 12930 12931 12872 12873 12874 12875 12876 12877 17228 17229 17230 17231 17232 17233 +48 14648 14649 14650 14651 14652 14653 14684 14685 14686 14687 14688 14689 14678 14679 14680 14681 14682 14683 17240 17241 17242 17243 17244 17245 12968 12969 12970 12971 12972 12973 12974 12975 12976 12977 12978 12979 12920 12921 12922 12923 12924 12925 17234 17235 17236 17237 17238 17239 +48 14678 14679 14680 14681 14682 14683 14714 14715 14716 14717 14718 14719 14708 14709 14710 14711 14712 14713 17246 17247 17248 17249 17250 17251 13016 13017 13018 13019 13020 13021 13022 13023 13024 13025 13026 13027 12968 12969 12970 12971 12972 12973 17240 17241 17242 17243 17244 17245 +48 14708 14709 14710 14711 14712 14713 14744 14745 14746 14747 14748 14749 14738 14739 14740 14741 14742 14743 17252 17253 17254 17255 17256 17257 13064 13065 13066 13067 13068 13069 13070 13071 13072 13073 13074 13075 13016 13017 13018 13019 13020 13021 17246 17247 17248 17249 17250 17251 +48 14738 14739 14740 14741 14742 14743 14774 14775 14776 14777 14778 14779 14768 14769 14770 14771 14772 14773 17258 17259 17260 17261 17262 17263 13112 13113 13114 13115 13116 13117 13118 13119 13120 13121 13122 13123 13064 13065 13066 13067 13068 13069 17252 17253 17254 17255 17256 17257 +48 14768 14769 14770 14771 14772 14773 14804 14805 14806 14807 14808 14809 14798 14799 14800 14801 14802 14803 17264 17265 17266 17267 17268 17269 13160 13161 13162 13163 13164 13165 13166 13167 13168 13169 13170 13171 13112 13113 13114 13115 13116 13117 17258 17259 17260 17261 17262 17263 +48 14798 14799 14800 14801 14802 14803 14834 14835 14836 14837 14838 14839 14828 14829 14830 14831 14832 14833 17270 17271 17272 17273 17274 17275 13208 13209 13210 13211 13212 13213 13214 13215 13216 13217 13218 13219 13160 13161 13162 13163 13164 13165 17264 17265 17266 17267 17268 17269 +48 14828 14829 14830 14831 14832 14833 14864 14865 14866 14867 14868 14869 14858 14859 14860 14861 14862 14863 17276 17277 17278 17279 17280 17281 13256 13257 13258 13259 13260 13261 13262 13263 13264 13265 13266 13267 13208 13209 13210 13211 13212 13213 17270 17271 17272 17273 17274 17275 +48 14858 14859 14860 14861 14862 14863 14894 14895 14896 14897 14898 14899 14888 14889 14890 14891 14892 14893 17282 17283 17284 17285 17286 17287 13304 13305 13306 13307 13308 13309 13310 13311 13312 13313 13314 13315 13256 13257 13258 13259 13260 13261 17276 17277 17278 17279 17280 17281 +48 14888 14889 14890 14891 14892 14893 14924 14925 14926 14927 14928 14929 14918 14919 14920 14921 14922 14923 17288 17289 17290 17291 17292 17293 13352 13353 13354 13355 13356 13357 13358 13359 13360 13361 13362 13363 13304 13305 13306 13307 13308 13309 17282 17283 17284 17285 17286 17287 +48 14918 14919 14920 14921 14922 14923 14954 14955 14956 14957 14958 14959 14948 14949 14950 14951 14952 14953 17294 17295 17296 17297 17298 17299 13400 13401 13402 13403 13404 13405 13406 13407 13408 13409 13410 13411 13352 13353 13354 13355 13356 13357 17288 17289 17290 17291 17292 17293 +48 14948 14949 14950 14951 14952 14953 14984 14985 14986 14987 14988 14989 14978 14979 14980 14981 14982 14983 17300 17301 17302 17303 17304 17305 13448 13449 13450 13451 13452 13453 13454 13455 13456 13457 13458 13459 13400 13401 13402 13403 13404 13405 17294 17295 17296 17297 17298 17299 +48 14978 14979 14980 14981 14982 14983 15014 15015 15016 15017 15018 15019 15008 15009 15010 15011 15012 15013 17306 17307 17308 17309 17310 17311 13496 13497 13498 13499 13500 13501 13502 13503 13504 13505 13506 13507 13448 13449 13450 13451 13452 13453 17300 17301 17302 17303 17304 17305 +48 15008 15009 15010 15011 15012 15013 15044 15045 15046 15047 15048 15049 15038 15039 15040 15041 15042 15043 17312 17313 17314 17315 17316 17317 13544 13545 13546 13547 13548 13549 13550 13551 13552 13553 13554 13555 13496 13497 13498 13499 13500 13501 17306 17307 17308 17309 17310 17311 +48 15038 15039 15040 15041 15042 15043 15074 15075 15076 15077 15078 15079 15068 15069 15070 15071 15072 15073 17318 17319 17320 17321 17322 17323 13592 13593 13594 13595 13596 13597 13598 13599 13600 13601 13602 13603 13544 13545 13546 13547 13548 13549 17312 17313 17314 17315 17316 17317 +48 15068 15069 15070 15071 15072 15073 15104 15105 15106 15107 15108 15109 15098 15099 15100 15101 15102 15103 17324 17325 17326 17327 17328 17329 13640 13641 13642 13643 13644 13645 13646 13647 13648 13649 13650 13651 13592 13593 13594 13595 13596 13597 17318 17319 17320 17321 17322 17323 +48 15098 15099 15100 15101 15102 15103 15134 15135 15136 15137 15138 15139 15128 15129 15130 15131 15132 15133 17330 17331 17332 17333 17334 17335 13688 13689 13690 13691 13692 13693 13694 13695 13696 13697 13698 13699 13640 13641 13642 13643 13644 13645 17324 17325 17326 17327 17328 17329 +48 15128 15129 15130 15131 15132 15133 15164 15165 15166 15167 15168 15169 15158 15159 15160 15161 15162 15163 17336 17337 17338 17339 17340 17341 13736 13737 13738 13739 13740 13741 13742 13743 13744 13745 13746 13747 13688 13689 13690 13691 13692 13693 17330 17331 17332 17333 17334 17335 +48 15158 15159 15160 15161 15162 15163 15194 15195 15196 15197 15198 15199 15188 15189 15190 15191 15192 15193 17342 17343 17344 17345 17346 17347 13784 13785 13786 13787 13788 13789 13790 13791 13792 13793 13794 13795 13736 13737 13738 13739 13740 13741 17336 17337 17338 17339 17340 17341 +48 15188 15189 15190 15191 15192 15193 15224 15225 15226 15227 15228 15229 15218 15219 15220 15221 15222 15223 17348 17349 17350 17351 17352 17353 13832 13833 13834 13835 13836 13837 13838 13839 13840 13841 13842 13843 13784 13785 13786 13787 13788 13789 17342 17343 17344 17345 17346 17347 +48 15218 15219 15220 15221 15222 15223 15254 15255 15256 15257 15258 15259 15248 15249 15250 15251 15252 15253 17354 17355 17356 17357 17358 17359 13880 13881 13882 13883 13884 13885 13886 13887 13888 13889 13890 13891 13832 13833 13834 13835 13836 13837 17348 17349 17350 17351 17352 17353 +48 15248 15249 15250 15251 15252 15253 15284 15285 15286 15287 15288 15289 15278 15279 15280 15281 15282 15283 17360 17361 17362 17363 17364 17365 13928 13929 13930 13931 13932 13933 13934 13935 13936 13937 13938 13939 13880 13881 13882 13883 13884 13885 17354 17355 17356 17357 17358 17359 +48 15278 15279 15280 15281 15282 15283 15314 15315 15316 15317 15318 15319 15308 15309 15310 15311 15312 15313 17366 17367 17368 17369 17370 17371 13976 13977 13978 13979 13980 13981 13982 13983 13984 13985 13986 13987 13928 13929 13930 13931 13932 13933 17360 17361 17362 17363 17364 17365 +48 15308 15309 15310 15311 15312 15313 15344 15345 15346 15347 15348 15349 15338 15339 15340 15341 15342 15343 17372 17373 17374 17375 17376 17377 14024 14025 14026 14027 14028 14029 14030 14031 14032 14033 14034 14035 13976 13977 13978 13979 13980 13981 17366 17367 17368 17369 17370 17371 +48 15338 15339 15340 15341 15342 15343 15374 15375 15376 15377 15378 15379 15368 15369 15370 15371 15372 15373 17378 17379 17380 17381 17382 17383 14072 14073 14074 14075 14076 14077 14078 14079 14080 14081 14082 14083 14024 14025 14026 14027 14028 14029 17372 17373 17374 17375 17376 17377 +48 15368 15369 15370 15371 15372 15373 15404 15405 15406 15407 15408 15409 15398 15399 15400 15401 15402 15403 17384 17385 17386 17387 17388 17389 14120 14121 14122 14123 14124 14125 14126 14127 14128 14129 14130 14131 14072 14073 14074 14075 14076 14077 17378 17379 17380 17381 17382 17383 +48 15398 15399 15400 15401 15402 15403 15416 15417 15418 15419 15420 15421 3233 3234 3235 3236 3237 3238 3359 3360 3361 3362 3363 3364 3047 3048 3049 3050 3051 3052 15842 15843 15844 15845 15846 15847 14120 14121 14122 14123 14124 14125 17384 17385 17386 17387 17388 17389 +48 5060 5061 5062 5063 5064 5065 15812 15813 15814 15815 15816 15817 12212 12213 12214 12215 12216 12217 17390 17391 17392 17393 17394 17395 10544 10545 10546 10547 10548 10549 15836 15837 15838 15839 15840 15841 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 +48 12212 12213 12214 12215 12216 12217 12218 12219 12220 12221 12222 12223 637 638 639 640 641 642 17396 17397 17398 17399 17400 17401 10556 10557 10558 10559 10560 10561 10550 10551 10552 10553 10554 10555 10544 10545 10546 10547 10548 10549 17390 17391 17392 17393 17394 17395 +48 637 638 639 640 641 642 12278 12279 12280 12281 12282 12283 649 650 651 652 653 654 17402 17403 17404 17405 17406 17407 10592 10593 10594 10595 10596 10597 10628 10629 10630 10631 10632 10633 10556 10557 10558 10559 10560 10561 17396 17397 17398 17399 17400 17401 +48 649 650 651 652 653 654 12320 12321 12322 12323 12324 12325 661 662 663 664 665 666 17408 17409 17410 17411 17412 17413 10604 10605 10606 10607 10608 10609 10598 10599 10600 10601 10602 10603 10592 10593 10594 10595 10596 10597 17402 17403 17404 17405 17406 17407 +48 661 662 663 664 665 666 12362 12363 12364 12365 12366 12367 673 674 675 676 677 678 17414 17415 17416 17417 17418 17419 10688 10689 10690 10691 10692 10693 10682 10683 10684 10685 10686 10687 10604 10605 10606 10607 10608 10609 17408 17409 17410 17411 17412 17413 +48 673 674 675 676 677 678 12404 12405 12406 12407 12408 12409 685 686 687 688 689 690 17420 17421 17422 17423 17424 17425 10718 10719 10720 10721 10722 10723 10712 10713 10714 10715 10716 10717 10688 10689 10690 10691 10692 10693 17414 17415 17416 17417 17418 17419 +48 685 686 687 688 689 690 12446 12447 12448 12449 12450 12451 697 698 699 700 701 702 17426 17427 17428 17429 17430 17431 10754 10755 10756 10757 10758 10759 10748 10749 10750 10751 10752 10753 10718 10719 10720 10721 10722 10723 17420 17421 17422 17423 17424 17425 +48 697 698 699 700 701 702 12494 12495 12496 12497 12498 12499 12488 12489 12490 12491 12492 12493 17432 17433 17434 17435 17436 17437 10814 10815 10816 10817 10818 10819 10808 10809 10810 10811 10812 10813 10754 10755 10756 10757 10758 10759 17426 17427 17428 17429 17430 17431 +48 12488 12489 12490 12491 12492 12493 12542 12543 12544 12545 12546 12547 12536 12537 12538 12539 12540 12541 17438 17439 17440 17441 17442 17443 10844 10845 10846 10847 10848 10849 10838 10839 10840 10841 10842 10843 10814 10815 10816 10817 10818 10819 17432 17433 17434 17435 17436 17437 +48 12536 12537 12538 12539 12540 12541 12590 12591 12592 12593 12594 12595 12584 12585 12586 12587 12588 12589 17444 17445 17446 17447 17448 17449 10874 10875 10876 10877 10878 10879 10868 10869 10870 10871 10872 10873 10844 10845 10846 10847 10848 10849 17438 17439 17440 17441 17442 17443 +48 12584 12585 12586 12587 12588 12589 12638 12639 12640 12641 12642 12643 12632 12633 12634 12635 12636 12637 17450 17451 17452 17453 17454 17455 10922 10923 10924 10925 10926 10927 10928 10929 10930 10931 10932 10933 10874 10875 10876 10877 10878 10879 17444 17445 17446 17447 17448 17449 +48 12632 12633 12634 12635 12636 12637 12686 12687 12688 12689 12690 12691 12680 12681 12682 12683 12684 12685 17456 17457 17458 17459 17460 17461 10964 10965 10966 10967 10968 10969 10958 10959 10960 10961 10962 10963 10922 10923 10924 10925 10926 10927 17450 17451 17452 17453 17454 17455 +48 12680 12681 12682 12683 12684 12685 12734 12735 12736 12737 12738 12739 12728 12729 12730 12731 12732 12733 17462 17463 17464 17465 17466 17467 10994 10995 10996 10997 10998 10999 10988 10989 10990 10991 10992 10993 10964 10965 10966 10967 10968 10969 17456 17457 17458 17459 17460 17461 +48 12728 12729 12730 12731 12732 12733 12782 12783 12784 12785 12786 12787 12776 12777 12778 12779 12780 12781 17468 17469 17470 17471 17472 17473 11042 11043 11044 11045 11046 11047 11048 11049 11050 11051 11052 11053 10994 10995 10996 10997 10998 10999 17462 17463 17464 17465 17466 17467 +48 12776 12777 12778 12779 12780 12781 12830 12831 12832 12833 12834 12835 12824 12825 12826 12827 12828 12829 17474 17475 17476 17477 17478 17479 11084 11085 11086 11087 11088 11089 11078 11079 11080 11081 11082 11083 11042 11043 11044 11045 11046 11047 17468 17469 17470 17471 17472 17473 +48 12824 12825 12826 12827 12828 12829 12878 12879 12880 12881 12882 12883 12872 12873 12874 12875 12876 12877 17480 17481 17482 17483 17484 17485 11114 11115 11116 11117 11118 11119 11108 11109 11110 11111 11112 11113 11084 11085 11086 11087 11088 11089 17474 17475 17476 17477 17478 17479 +48 12872 12873 12874 12875 12876 12877 12926 12927 12928 12929 12930 12931 12920 12921 12922 12923 12924 12925 17486 17487 17488 17489 17490 17491 11162 11163 11164 11165 11166 11167 11168 11169 11170 11171 11172 11173 11114 11115 11116 11117 11118 11119 17480 17481 17482 17483 17484 17485 +48 12920 12921 12922 12923 12924 12925 12974 12975 12976 12977 12978 12979 12968 12969 12970 12971 12972 12973 17492 17493 17494 17495 17496 17497 11204 11205 11206 11207 11208 11209 11198 11199 11200 11201 11202 11203 11162 11163 11164 11165 11166 11167 17486 17487 17488 17489 17490 17491 +48 12968 12969 12970 12971 12972 12973 13022 13023 13024 13025 13026 13027 13016 13017 13018 13019 13020 13021 17498 17499 17500 17501 17502 17503 11234 11235 11236 11237 11238 11239 11228 11229 11230 11231 11232 11233 11204 11205 11206 11207 11208 11209 17492 17493 17494 17495 17496 17497 +48 13016 13017 13018 13019 13020 13021 13070 13071 13072 13073 13074 13075 13064 13065 13066 13067 13068 13069 17504 17505 17506 17507 17508 17509 11282 11283 11284 11285 11286 11287 11288 11289 11290 11291 11292 11293 11234 11235 11236 11237 11238 11239 17498 17499 17500 17501 17502 17503 +48 13064 13065 13066 13067 13068 13069 13118 13119 13120 13121 13122 13123 13112 13113 13114 13115 13116 13117 17510 17511 17512 17513 17514 17515 11324 11325 11326 11327 11328 11329 11318 11319 11320 11321 11322 11323 11282 11283 11284 11285 11286 11287 17504 17505 17506 17507 17508 17509 +48 13112 13113 13114 13115 13116 13117 13166 13167 13168 13169 13170 13171 13160 13161 13162 13163 13164 13165 17516 17517 17518 17519 17520 17521 11354 11355 11356 11357 11358 11359 11348 11349 11350 11351 11352 11353 11324 11325 11326 11327 11328 11329 17510 17511 17512 17513 17514 17515 +48 13160 13161 13162 13163 13164 13165 13214 13215 13216 13217 13218 13219 13208 13209 13210 13211 13212 13213 17522 17523 17524 17525 17526 17527 11402 11403 11404 11405 11406 11407 11408 11409 11410 11411 11412 11413 11354 11355 11356 11357 11358 11359 17516 17517 17518 17519 17520 17521 +48 13208 13209 13210 13211 13212 13213 13262 13263 13264 13265 13266 13267 13256 13257 13258 13259 13260 13261 17528 17529 17530 17531 17532 17533 11444 11445 11446 11447 11448 11449 11438 11439 11440 11441 11442 11443 11402 11403 11404 11405 11406 11407 17522 17523 17524 17525 17526 17527 +48 13256 13257 13258 13259 13260 13261 13310 13311 13312 13313 13314 13315 13304 13305 13306 13307 13308 13309 17534 17535 17536 17537 17538 17539 11474 11475 11476 11477 11478 11479 11468 11469 11470 11471 11472 11473 11444 11445 11446 11447 11448 11449 17528 17529 17530 17531 17532 17533 +48 13304 13305 13306 13307 13308 13309 13358 13359 13360 13361 13362 13363 13352 13353 13354 13355 13356 13357 17540 17541 17542 17543 17544 17545 11522 11523 11524 11525 11526 11527 11528 11529 11530 11531 11532 11533 11474 11475 11476 11477 11478 11479 17534 17535 17536 17537 17538 17539 +48 13352 13353 13354 13355 13356 13357 13406 13407 13408 13409 13410 13411 13400 13401 13402 13403 13404 13405 17546 17547 17548 17549 17550 17551 11564 11565 11566 11567 11568 11569 11558 11559 11560 11561 11562 11563 11522 11523 11524 11525 11526 11527 17540 17541 17542 17543 17544 17545 +48 13400 13401 13402 13403 13404 13405 13454 13455 13456 13457 13458 13459 13448 13449 13450 13451 13452 13453 17552 17553 17554 17555 17556 17557 11594 11595 11596 11597 11598 11599 11588 11589 11590 11591 11592 11593 11564 11565 11566 11567 11568 11569 17546 17547 17548 17549 17550 17551 +48 13448 13449 13450 13451 13452 13453 13502 13503 13504 13505 13506 13507 13496 13497 13498 13499 13500 13501 17558 17559 17560 17561 17562 17563 11642 11643 11644 11645 11646 11647 11648 11649 11650 11651 11652 11653 11594 11595 11596 11597 11598 11599 17552 17553 17554 17555 17556 17557 +48 13496 13497 13498 13499 13500 13501 13550 13551 13552 13553 13554 13555 13544 13545 13546 13547 13548 13549 17564 17565 17566 17567 17568 17569 11684 11685 11686 11687 11688 11689 11678 11679 11680 11681 11682 11683 11642 11643 11644 11645 11646 11647 17558 17559 17560 17561 17562 17563 +48 13544 13545 13546 13547 13548 13549 13598 13599 13600 13601 13602 13603 13592 13593 13594 13595 13596 13597 17570 17571 17572 17573 17574 17575 11714 11715 11716 11717 11718 11719 11708 11709 11710 11711 11712 11713 11684 11685 11686 11687 11688 11689 17564 17565 17566 17567 17568 17569 +48 13592 13593 13594 13595 13596 13597 13646 13647 13648 13649 13650 13651 13640 13641 13642 13643 13644 13645 17576 17577 17578 17579 17580 17581 11762 11763 11764 11765 11766 11767 11768 11769 11770 11771 11772 11773 11714 11715 11716 11717 11718 11719 17570 17571 17572 17573 17574 17575 +48 13640 13641 13642 13643 13644 13645 13694 13695 13696 13697 13698 13699 13688 13689 13690 13691 13692 13693 17582 17583 17584 17585 17586 17587 11804 11805 11806 11807 11808 11809 11798 11799 11800 11801 11802 11803 11762 11763 11764 11765 11766 11767 17576 17577 17578 17579 17580 17581 +48 13688 13689 13690 13691 13692 13693 13742 13743 13744 13745 13746 13747 13736 13737 13738 13739 13740 13741 17588 17589 17590 17591 17592 17593 11834 11835 11836 11837 11838 11839 11828 11829 11830 11831 11832 11833 11804 11805 11806 11807 11808 11809 17582 17583 17584 17585 17586 17587 +48 13736 13737 13738 13739 13740 13741 13790 13791 13792 13793 13794 13795 13784 13785 13786 13787 13788 13789 17594 17595 17596 17597 17598 17599 11882 11883 11884 11885 11886 11887 11888 11889 11890 11891 11892 11893 11834 11835 11836 11837 11838 11839 17588 17589 17590 17591 17592 17593 +48 13784 13785 13786 13787 13788 13789 13838 13839 13840 13841 13842 13843 13832 13833 13834 13835 13836 13837 17600 17601 17602 17603 17604 17605 11924 11925 11926 11927 11928 11929 11918 11919 11920 11921 11922 11923 11882 11883 11884 11885 11886 11887 17594 17595 17596 17597 17598 17599 +48 13832 13833 13834 13835 13836 13837 13886 13887 13888 13889 13890 13891 13880 13881 13882 13883 13884 13885 17606 17607 17608 17609 17610 17611 11954 11955 11956 11957 11958 11959 11948 11949 11950 11951 11952 11953 11924 11925 11926 11927 11928 11929 17600 17601 17602 17603 17604 17605 +48 13880 13881 13882 13883 13884 13885 13934 13935 13936 13937 13938 13939 13928 13929 13930 13931 13932 13933 17612 17613 17614 17615 17616 17617 12002 12003 12004 12005 12006 12007 12008 12009 12010 12011 12012 12013 11954 11955 11956 11957 11958 11959 17606 17607 17608 17609 17610 17611 +48 13928 13929 13930 13931 13932 13933 13982 13983 13984 13985 13986 13987 13976 13977 13978 13979 13980 13981 17618 17619 17620 17621 17622 17623 12044 12045 12046 12047 12048 12049 12038 12039 12040 12041 12042 12043 12002 12003 12004 12005 12006 12007 17612 17613 17614 17615 17616 17617 +48 13976 13977 13978 13979 13980 13981 14030 14031 14032 14033 14034 14035 14024 14025 14026 14027 14028 14029 17624 17625 17626 17627 17628 17629 12074 12075 12076 12077 12078 12079 12068 12069 12070 12071 12072 12073 12044 12045 12046 12047 12048 12049 17618 17619 17620 17621 17622 17623 +48 14024 14025 14026 14027 14028 14029 14078 14079 14080 14081 14082 14083 14072 14073 14074 14075 14076 14077 17630 17631 17632 17633 17634 17635 12122 12123 12124 12125 12126 12127 12128 12129 12130 12131 12132 12133 12074 12075 12076 12077 12078 12079 17624 17625 17626 17627 17628 17629 +48 14072 14073 14074 14075 14076 14077 14126 14127 14128 14129 14130 14131 14120 14121 14122 14123 14124 14125 17636 17637 17638 17639 17640 17641 12164 12165 12166 12167 12168 12169 12158 12159 12160 12161 12162 12163 12122 12123 12124 12125 12126 12127 17630 17631 17632 17633 17634 17635 +48 14120 14121 14122 14123 14124 14125 15842 15843 15844 15845 15846 15847 3047 3048 3049 3050 3051 3052 3437 3438 3439 3440 3441 3442 2807 2808 2809 2810 2811 2812 15866 15867 15868 15869 15870 15871 12164 12165 12166 12167 12168 12169 17636 17637 17638 17639 17640 17641 +48 5330 5331 5332 5333 5334 5335 15836 15837 15838 15839 15840 15841 10544 10545 10546 10547 10548 10549 17642 17643 17644 17645 17646 17647 9152 9153 9154 9155 9156 9157 9146 9147 9148 9149 9150 9151 4802 4803 4804 4805 4806 4807 5522 5523 5524 5525 5526 5527 +48 10544 10545 10546 10547 10548 10549 10550 10551 10552 10553 10554 10555 10556 10557 10558 10559 10560 10561 17648 17649 17650 17651 17652 17653 9182 9183 9184 9185 9186 9187 9176 9177 9178 9179 9180 9181 9152 9153 9154 9155 9156 9157 17642 17643 17644 17645 17646 17647 +48 10556 10557 10558 10559 10560 10561 10628 10629 10630 10631 10632 10633 10592 10593 10594 10595 10596 10597 17654 17655 17656 17657 17658 17659 9206 9207 9208 9209 9210 9211 9242 9243 9244 9245 9246 9247 9182 9183 9184 9185 9186 9187 17648 17649 17650 17651 17652 17653 +48 10592 10593 10594 10595 10596 10597 10598 10599 10600 10601 10602 10603 10604 10605 10606 10607 10608 10609 17660 17661 17662 17663 17664 17665 9218 9219 9220 9221 9222 9223 9212 9213 9214 9215 9216 9217 9206 9207 9208 9209 9210 9211 17654 17655 17656 17657 17658 17659 +48 10604 10605 10606 10607 10608 10609 10682 10683 10684 10685 10686 10687 10688 10689 10690 10691 10692 10693 17666 17667 17668 17669 17670 17671 9302 9303 9304 9305 9306 9307 9296 9297 9298 9299 9300 9301 9218 9219 9220 9221 9222 9223 17660 17661 17662 17663 17664 17665 +48 10688 10689 10690 10691 10692 10693 10712 10713 10714 10715 10716 10717 10718 10719 10720 10721 10722 10723 17672 17673 17674 17675 17676 17677 9332 9333 9334 9335 9336 9337 9326 9327 9328 9329 9330 9331 9302 9303 9304 9305 9306 9307 17666 17667 17668 17669 17670 17671 +48 10718 10719 10720 10721 10722 10723 10748 10749 10750 10751 10752 10753 10754 10755 10756 10757 10758 10759 17678 17679 17680 17681 17682 17683 9368 9369 9370 9371 9372 9373 9362 9363 9364 9365 9366 9367 9332 9333 9334 9335 9336 9337 17672 17673 17674 17675 17676 17677 +48 10754 10755 10756 10757 10758 10759 10808 10809 10810 10811 10812 10813 10814 10815 10816 10817 10818 10819 17684 17685 17686 17687 17688 17689 9428 9429 9430 9431 9432 9433 9422 9423 9424 9425 9426 9427 9368 9369 9370 9371 9372 9373 17678 17679 17680 17681 17682 17683 +48 10814 10815 10816 10817 10818 10819 10838 10839 10840 10841 10842 10843 10844 10845 10846 10847 10848 10849 17690 17691 17692 17693 17694 17695 9458 9459 9460 9461 9462 9463 9452 9453 9454 9455 9456 9457 9428 9429 9430 9431 9432 9433 17684 17685 17686 17687 17688 17689 +48 10844 10845 10846 10847 10848 10849 10868 10869 10870 10871 10872 10873 10874 10875 10876 10877 10878 10879 17696 17697 17698 17699 17700 17701 9488 9489 9490 9491 9492 9493 9482 9483 9484 9485 9486 9487 9458 9459 9460 9461 9462 9463 17690 17691 17692 17693 17694 17695 +48 10874 10875 10876 10877 10878 10879 10928 10929 10930 10931 10932 10933 10922 10923 10924 10925 10926 10927 17702 17703 17704 17705 17706 17707 9518 9519 9520 9521 9522 9523 9512 9513 9514 9515 9516 9517 9488 9489 9490 9491 9492 9493 17696 17697 17698 17699 17700 17701 +48 10922 10923 10924 10925 10926 10927 10958 10959 10960 10961 10962 10963 10964 10965 10966 10967 10968 10969 17708 17709 17710 17711 17712 17713 9548 9549 9550 9551 9552 9553 9542 9543 9544 9545 9546 9547 9518 9519 9520 9521 9522 9523 17702 17703 17704 17705 17706 17707 +48 10964 10965 10966 10967 10968 10969 10988 10989 10990 10991 10992 10993 10994 10995 10996 10997 10998 10999 17714 17715 17716 17717 17718 17719 9578 9579 9580 9581 9582 9583 9572 9573 9574 9575 9576 9577 9548 9549 9550 9551 9552 9553 17708 17709 17710 17711 17712 17713 +48 10994 10995 10996 10997 10998 10999 11048 11049 11050 11051 11052 11053 11042 11043 11044 11045 11046 11047 17720 17721 17722 17723 17724 17725 9626 9627 9628 9629 9630 9631 9632 9633 9634 9635 9636 9637 9578 9579 9580 9581 9582 9583 17714 17715 17716 17717 17718 17719 +48 11042 11043 11044 11045 11046 11047 11078 11079 11080 11081 11082 11083 11084 11085 11086 11087 11088 11089 17726 17727 17728 17729 17730 17731 9668 9669 9670 9671 9672 9673 9662 9663 9664 9665 9666 9667 9626 9627 9628 9629 9630 9631 17720 17721 17722 17723 17724 17725 +48 11084 11085 11086 11087 11088 11089 11108 11109 11110 11111 11112 11113 11114 11115 11116 11117 11118 11119 17732 17733 17734 17735 17736 17737 9698 9699 9700 9701 9702 9703 9692 9693 9694 9695 9696 9697 9668 9669 9670 9671 9672 9673 17726 17727 17728 17729 17730 17731 +48 11114 11115 11116 11117 11118 11119 11168 11169 11170 11171 11172 11173 11162 11163 11164 11165 11166 11167 17738 17739 17740 17741 17742 17743 9728 9729 9730 9731 9732 9733 9722 9723 9724 9725 9726 9727 9698 9699 9700 9701 9702 9703 17732 17733 17734 17735 17736 17737 +48 11162 11163 11164 11165 11166 11167 11198 11199 11200 11201 11202 11203 11204 11205 11206 11207 11208 11209 17744 17745 17746 17747 17748 17749 9758 9759 9760 9761 9762 9763 9752 9753 9754 9755 9756 9757 9728 9729 9730 9731 9732 9733 17738 17739 17740 17741 17742 17743 +48 11204 11205 11206 11207 11208 11209 11228 11229 11230 11231 11232 11233 11234 11235 11236 11237 11238 11239 17750 17751 17752 17753 17754 17755 9788 9789 9790 9791 9792 9793 9782 9783 9784 9785 9786 9787 9758 9759 9760 9761 9762 9763 17744 17745 17746 17747 17748 17749 +48 11234 11235 11236 11237 11238 11239 11288 11289 11290 11291 11292 11293 11282 11283 11284 11285 11286 11287 17756 17757 17758 17759 17760 17761 9818 9819 9820 9821 9822 9823 9812 9813 9814 9815 9816 9817 9788 9789 9790 9791 9792 9793 17750 17751 17752 17753 17754 17755 +48 11282 11283 11284 11285 11286 11287 11318 11319 11320 11321 11322 11323 11324 11325 11326 11327 11328 11329 17762 17763 17764 17765 17766 17767 9848 9849 9850 9851 9852 9853 9842 9843 9844 9845 9846 9847 9818 9819 9820 9821 9822 9823 17756 17757 17758 17759 17760 17761 +48 11324 11325 11326 11327 11328 11329 11348 11349 11350 11351 11352 11353 11354 11355 11356 11357 11358 11359 17768 17769 17770 17771 17772 17773 9878 9879 9880 9881 9882 9883 9872 9873 9874 9875 9876 9877 9848 9849 9850 9851 9852 9853 17762 17763 17764 17765 17766 17767 +48 11354 11355 11356 11357 11358 11359 11408 11409 11410 11411 11412 11413 11402 11403 11404 11405 11406 11407 17774 17775 17776 17777 17778 17779 9908 9909 9910 9911 9912 9913 9902 9903 9904 9905 9906 9907 9878 9879 9880 9881 9882 9883 17768 17769 17770 17771 17772 17773 +48 11402 11403 11404 11405 11406 11407 11438 11439 11440 11441 11442 11443 11444 11445 11446 11447 11448 11449 17780 17781 17782 17783 17784 17785 9938 9939 9940 9941 9942 9943 9932 9933 9934 9935 9936 9937 9908 9909 9910 9911 9912 9913 17774 17775 17776 17777 17778 17779 +48 11444 11445 11446 11447 11448 11449 11468 11469 11470 11471 11472 11473 11474 11475 11476 11477 11478 11479 17786 17787 17788 17789 17790 17791 9968 9969 9970 9971 9972 9973 9962 9963 9964 9965 9966 9967 9938 9939 9940 9941 9942 9943 17780 17781 17782 17783 17784 17785 +48 11474 11475 11476 11477 11478 11479 11528 11529 11530 11531 11532 11533 11522 11523 11524 11525 11526 11527 17792 17793 17794 17795 17796 17797 9998 9999 10000 10001 10002 10003 9992 9993 9994 9995 9996 9997 9968 9969 9970 9971 9972 9973 17786 17787 17788 17789 17790 17791 +48 11522 11523 11524 11525 11526 11527 11558 11559 11560 11561 11562 11563 11564 11565 11566 11567 11568 11569 17798 17799 17800 17801 17802 17803 10028 10029 10030 10031 10032 10033 10022 10023 10024 10025 10026 10027 9998 9999 10000 10001 10002 10003 17792 17793 17794 17795 17796 17797 +48 11564 11565 11566 11567 11568 11569 11588 11589 11590 11591 11592 11593 11594 11595 11596 11597 11598 11599 17804 17805 17806 17807 17808 17809 10058 10059 10060 10061 10062 10063 10052 10053 10054 10055 10056 10057 10028 10029 10030 10031 10032 10033 17798 17799 17800 17801 17802 17803 +48 11594 11595 11596 11597 11598 11599 11648 11649 11650 11651 11652 11653 11642 11643 11644 11645 11646 11647 17810 17811 17812 17813 17814 17815 10088 10089 10090 10091 10092 10093 10082 10083 10084 10085 10086 10087 10058 10059 10060 10061 10062 10063 17804 17805 17806 17807 17808 17809 +48 11642 11643 11644 11645 11646 11647 11678 11679 11680 11681 11682 11683 11684 11685 11686 11687 11688 11689 17816 17817 17818 17819 17820 17821 10118 10119 10120 10121 10122 10123 10112 10113 10114 10115 10116 10117 10088 10089 10090 10091 10092 10093 17810 17811 17812 17813 17814 17815 +48 11684 11685 11686 11687 11688 11689 11708 11709 11710 11711 11712 11713 11714 11715 11716 11717 11718 11719 17822 17823 17824 17825 17826 17827 10148 10149 10150 10151 10152 10153 10142 10143 10144 10145 10146 10147 10118 10119 10120 10121 10122 10123 17816 17817 17818 17819 17820 17821 +48 11714 11715 11716 11717 11718 11719 11768 11769 11770 11771 11772 11773 11762 11763 11764 11765 11766 11767 17828 17829 17830 17831 17832 17833 10178 10179 10180 10181 10182 10183 10172 10173 10174 10175 10176 10177 10148 10149 10150 10151 10152 10153 17822 17823 17824 17825 17826 17827 +48 11762 11763 11764 11765 11766 11767 11798 11799 11800 11801 11802 11803 11804 11805 11806 11807 11808 11809 17834 17835 17836 17837 17838 17839 10208 10209 10210 10211 10212 10213 10202 10203 10204 10205 10206 10207 10178 10179 10180 10181 10182 10183 17828 17829 17830 17831 17832 17833 +48 11804 11805 11806 11807 11808 11809 11828 11829 11830 11831 11832 11833 11834 11835 11836 11837 11838 11839 17840 17841 17842 17843 17844 17845 10238 10239 10240 10241 10242 10243 10232 10233 10234 10235 10236 10237 10208 10209 10210 10211 10212 10213 17834 17835 17836 17837 17838 17839 +48 11834 11835 11836 11837 11838 11839 11888 11889 11890 11891 11892 11893 11882 11883 11884 11885 11886 11887 17846 17847 17848 17849 17850 17851 10268 10269 10270 10271 10272 10273 10262 10263 10264 10265 10266 10267 10238 10239 10240 10241 10242 10243 17840 17841 17842 17843 17844 17845 +48 11882 11883 11884 11885 11886 11887 11918 11919 11920 11921 11922 11923 11924 11925 11926 11927 11928 11929 17852 17853 17854 17855 17856 17857 10298 10299 10300 10301 10302 10303 10292 10293 10294 10295 10296 10297 10268 10269 10270 10271 10272 10273 17846 17847 17848 17849 17850 17851 +48 11924 11925 11926 11927 11928 11929 11948 11949 11950 11951 11952 11953 11954 11955 11956 11957 11958 11959 17858 17859 17860 17861 17862 17863 10328 10329 10330 10331 10332 10333 10322 10323 10324 10325 10326 10327 10298 10299 10300 10301 10302 10303 17852 17853 17854 17855 17856 17857 +48 11954 11955 11956 11957 11958 11959 12008 12009 12010 12011 12012 12013 12002 12003 12004 12005 12006 12007 17864 17865 17866 17867 17868 17869 10358 10359 10360 10361 10362 10363 10352 10353 10354 10355 10356 10357 10328 10329 10330 10331 10332 10333 17858 17859 17860 17861 17862 17863 +48 12002 12003 12004 12005 12006 12007 12038 12039 12040 12041 12042 12043 12044 12045 12046 12047 12048 12049 17870 17871 17872 17873 17874 17875 10388 10389 10390 10391 10392 10393 10382 10383 10384 10385 10386 10387 10358 10359 10360 10361 10362 10363 17864 17865 17866 17867 17868 17869 +48 12044 12045 12046 12047 12048 12049 12068 12069 12070 12071 12072 12073 12074 12075 12076 12077 12078 12079 17876 17877 17878 17879 17880 17881 10418 10419 10420 10421 10422 10423 10412 10413 10414 10415 10416 10417 10388 10389 10390 10391 10392 10393 17870 17871 17872 17873 17874 17875 +48 12074 12075 12076 12077 12078 12079 12128 12129 12130 12131 12132 12133 12122 12123 12124 12125 12126 12127 17882 17883 17884 17885 17886 17887 10466 10467 10468 10469 10470 10471 10472 10473 10474 10475 10476 10477 10418 10419 10420 10421 10422 10423 17876 17877 17878 17879 17880 17881 +48 12122 12123 12124 12125 12126 12127 12158 12159 12160 12161 12162 12163 12164 12165 12166 12167 12168 12169 17888 17889 17890 17891 17892 17893 10508 10509 10510 10511 10512 10513 10502 10503 10504 10505 10506 10507 10466 10467 10468 10469 10470 10471 17882 17883 17884 17885 17886 17887 +48 12164 12165 12166 12167 12168 12169 15866 15867 15868 15869 15870 15871 2807 2808 2809 2810 2811 2812 3653 3654 3655 3656 3657 3658 2579 2580 2581 2582 2583 2584 10532 10533 10534 10535 10536 10537 10508 10509 10510 10511 10512 10513 17888 17889 17890 17891 17892 17893 +48 4802 4803 4804 4805 4806 4807 9146 9147 9148 9149 9150 9151 9152 9153 9154 9155 9156 9157 17894 17895 17896 17897 17898 17899 7484 7485 7486 7487 7488 7489 7478 7479 7480 7481 7482 7483 4574 4575 4576 4577 4578 4579 5558 5559 5560 5561 5562 5563 +48 9152 9153 9154 9155 9156 9157 9176 9177 9178 9179 9180 9181 9182 9183 9184 9185 9186 9187 17900 17901 17902 17903 17904 17905 7514 7515 7516 7517 7518 7519 7508 7509 7510 7511 7512 7513 7484 7485 7486 7487 7488 7489 17894 17895 17896 17897 17898 17899 +48 9182 9183 9184 9185 9186 9187 9242 9243 9244 9245 9246 9247 9206 9207 9208 9209 9210 9211 17906 17907 17908 17909 17910 17911 7538 7539 7540 7541 7542 7543 7574 7575 7576 7577 7578 7579 7514 7515 7516 7517 7518 7519 17900 17901 17902 17903 17904 17905 +48 9206 9207 9208 9209 9210 9211 9212 9213 9214 9215 9216 9217 9218 9219 9220 9221 9222 9223 17912 17913 17914 17915 17916 17917 7550 7551 7552 7553 7554 7555 7544 7545 7546 7547 7548 7549 7538 7539 7540 7541 7542 7543 17906 17907 17908 17909 17910 17911 +48 9218 9219 9220 9221 9222 9223 9296 9297 9298 9299 9300 9301 9302 9303 9304 9305 9306 9307 17918 17919 17920 17921 17922 17923 7634 7635 7636 7637 7638 7639 7628 7629 7630 7631 7632 7633 7550 7551 7552 7553 7554 7555 17912 17913 17914 17915 17916 17917 +48 9302 9303 9304 9305 9306 9307 9326 9327 9328 9329 9330 9331 9332 9333 9334 9335 9336 9337 17924 17925 17926 17927 17928 17929 7664 7665 7666 7667 7668 7669 7658 7659 7660 7661 7662 7663 7634 7635 7636 7637 7638 7639 17918 17919 17920 17921 17922 17923 +48 9332 9333 9334 9335 9336 9337 9362 9363 9364 9365 9366 9367 9368 9369 9370 9371 9372 9373 17930 17931 17932 17933 17934 17935 7700 7701 7702 7703 7704 7705 7694 7695 7696 7697 7698 7699 7664 7665 7666 7667 7668 7669 17924 17925 17926 17927 17928 17929 +48 9368 9369 9370 9371 9372 9373 9422 9423 9424 9425 9426 9427 9428 9429 9430 9431 9432 9433 17936 17937 17938 17939 17940 17941 7760 7761 7762 7763 7764 7765 7754 7755 7756 7757 7758 7759 7700 7701 7702 7703 7704 7705 17930 17931 17932 17933 17934 17935 +48 9428 9429 9430 9431 9432 9433 9452 9453 9454 9455 9456 9457 9458 9459 9460 9461 9462 9463 17942 17943 17944 17945 17946 17947 7790 7791 7792 7793 7794 7795 7784 7785 7786 7787 7788 7789 7760 7761 7762 7763 7764 7765 17936 17937 17938 17939 17940 17941 +48 9458 9459 9460 9461 9462 9463 9482 9483 9484 9485 9486 9487 9488 9489 9490 9491 9492 9493 17948 17949 17950 17951 17952 17953 7820 7821 7822 7823 7824 7825 7814 7815 7816 7817 7818 7819 7790 7791 7792 7793 7794 7795 17942 17943 17944 17945 17946 17947 +48 9488 9489 9490 9491 9492 9493 9512 9513 9514 9515 9516 9517 9518 9519 9520 9521 9522 9523 17954 17955 17956 17957 17958 17959 7868 7869 7870 7871 7872 7873 7874 7875 7876 7877 7878 7879 7820 7821 7822 7823 7824 7825 17948 17949 17950 17951 17952 17953 +48 9518 9519 9520 9521 9522 9523 9542 9543 9544 9545 9546 9547 9548 9549 9550 9551 9552 9553 17960 17961 17962 17963 17964 17965 7910 7911 7912 7913 7914 7915 7904 7905 7906 7907 7908 7909 7868 7869 7870 7871 7872 7873 17954 17955 17956 17957 17958 17959 +48 9548 9549 9550 9551 9552 9553 9572 9573 9574 9575 9576 9577 9578 9579 9580 9581 9582 9583 17966 17967 17968 17969 17970 17971 7940 7941 7942 7943 7944 7945 7934 7935 7936 7937 7938 7939 7910 7911 7912 7913 7914 7915 17960 17961 17962 17963 17964 17965 +48 9578 9579 9580 9581 9582 9583 9632 9633 9634 9635 9636 9637 9626 9627 9628 9629 9630 9631 17972 17973 17974 17975 17976 17977 7988 7989 7990 7991 7992 7993 7994 7995 7996 7997 7998 7999 7940 7941 7942 7943 7944 7945 17966 17967 17968 17969 17970 17971 +48 9626 9627 9628 9629 9630 9631 9662 9663 9664 9665 9666 9667 9668 9669 9670 9671 9672 9673 17978 17979 17980 17981 17982 17983 8030 8031 8032 8033 8034 8035 8024 8025 8026 8027 8028 8029 7988 7989 7990 7991 7992 7993 17972 17973 17974 17975 17976 17977 +48 9668 9669 9670 9671 9672 9673 9692 9693 9694 9695 9696 9697 9698 9699 9700 9701 9702 9703 17984 17985 17986 17987 17988 17989 8060 8061 8062 8063 8064 8065 8054 8055 8056 8057 8058 8059 8030 8031 8032 8033 8034 8035 17978 17979 17980 17981 17982 17983 +48 9698 9699 9700 9701 9702 9703 9722 9723 9724 9725 9726 9727 9728 9729 9730 9731 9732 9733 17990 17991 17992 17993 17994 17995 8108 8109 8110 8111 8112 8113 8114 8115 8116 8117 8118 8119 8060 8061 8062 8063 8064 8065 17984 17985 17986 17987 17988 17989 +48 9728 9729 9730 9731 9732 9733 9752 9753 9754 9755 9756 9757 9758 9759 9760 9761 9762 9763 17996 17997 17998 17999 18000 18001 8150 8151 8152 8153 8154 8155 8144 8145 8146 8147 8148 8149 8108 8109 8110 8111 8112 8113 17990 17991 17992 17993 17994 17995 +48 9758 9759 9760 9761 9762 9763 9782 9783 9784 9785 9786 9787 9788 9789 9790 9791 9792 9793 18002 18003 18004 18005 18006 18007 8180 8181 8182 8183 8184 8185 8174 8175 8176 8177 8178 8179 8150 8151 8152 8153 8154 8155 17996 17997 17998 17999 18000 18001 +48 9788 9789 9790 9791 9792 9793 9812 9813 9814 9815 9816 9817 9818 9819 9820 9821 9822 9823 18008 18009 18010 18011 18012 18013 8228 8229 8230 8231 8232 8233 8234 8235 8236 8237 8238 8239 8180 8181 8182 8183 8184 8185 18002 18003 18004 18005 18006 18007 +48 9818 9819 9820 9821 9822 9823 9842 9843 9844 9845 9846 9847 9848 9849 9850 9851 9852 9853 18014 18015 18016 18017 18018 18019 8270 8271 8272 8273 8274 8275 8264 8265 8266 8267 8268 8269 8228 8229 8230 8231 8232 8233 18008 18009 18010 18011 18012 18013 +48 9848 9849 9850 9851 9852 9853 9872 9873 9874 9875 9876 9877 9878 9879 9880 9881 9882 9883 18020 18021 18022 18023 18024 18025 8300 8301 8302 8303 8304 8305 8294 8295 8296 8297 8298 8299 8270 8271 8272 8273 8274 8275 18014 18015 18016 18017 18018 18019 +48 9878 9879 9880 9881 9882 9883 9902 9903 9904 9905 9906 9907 9908 9909 9910 9911 9912 9913 18026 18027 18028 18029 18030 18031 8348 8349 8350 8351 8352 8353 8354 8355 8356 8357 8358 8359 8300 8301 8302 8303 8304 8305 18020 18021 18022 18023 18024 18025 +48 9908 9909 9910 9911 9912 9913 9932 9933 9934 9935 9936 9937 9938 9939 9940 9941 9942 9943 18032 18033 18034 18035 18036 18037 8390 8391 8392 8393 8394 8395 8384 8385 8386 8387 8388 8389 8348 8349 8350 8351 8352 8353 18026 18027 18028 18029 18030 18031 +48 9938 9939 9940 9941 9942 9943 9962 9963 9964 9965 9966 9967 9968 9969 9970 9971 9972 9973 18038 18039 18040 18041 18042 18043 8420 8421 8422 8423 8424 8425 8414 8415 8416 8417 8418 8419 8390 8391 8392 8393 8394 8395 18032 18033 18034 18035 18036 18037 +48 9968 9969 9970 9971 9972 9973 9992 9993 9994 9995 9996 9997 9998 9999 10000 10001 10002 10003 18044 18045 18046 18047 18048 18049 8468 8469 8470 8471 8472 8473 8474 8475 8476 8477 8478 8479 8420 8421 8422 8423 8424 8425 18038 18039 18040 18041 18042 18043 +48 9998 9999 10000 10001 10002 10003 10022 10023 10024 10025 10026 10027 10028 10029 10030 10031 10032 10033 18050 18051 18052 18053 18054 18055 8510 8511 8512 8513 8514 8515 8504 8505 8506 8507 8508 8509 8468 8469 8470 8471 8472 8473 18044 18045 18046 18047 18048 18049 +48 10028 10029 10030 10031 10032 10033 10052 10053 10054 10055 10056 10057 10058 10059 10060 10061 10062 10063 18056 18057 18058 18059 18060 18061 8540 8541 8542 8543 8544 8545 8534 8535 8536 8537 8538 8539 8510 8511 8512 8513 8514 8515 18050 18051 18052 18053 18054 18055 +48 10058 10059 10060 10061 10062 10063 10082 10083 10084 10085 10086 10087 10088 10089 10090 10091 10092 10093 18062 18063 18064 18065 18066 18067 8588 8589 8590 8591 8592 8593 8594 8595 8596 8597 8598 8599 8540 8541 8542 8543 8544 8545 18056 18057 18058 18059 18060 18061 +48 10088 10089 10090 10091 10092 10093 10112 10113 10114 10115 10116 10117 10118 10119 10120 10121 10122 10123 18068 18069 18070 18071 18072 18073 8630 8631 8632 8633 8634 8635 8624 8625 8626 8627 8628 8629 8588 8589 8590 8591 8592 8593 18062 18063 18064 18065 18066 18067 +48 10118 10119 10120 10121 10122 10123 10142 10143 10144 10145 10146 10147 10148 10149 10150 10151 10152 10153 18074 18075 18076 18077 18078 18079 8660 8661 8662 8663 8664 8665 8654 8655 8656 8657 8658 8659 8630 8631 8632 8633 8634 8635 18068 18069 18070 18071 18072 18073 +48 10148 10149 10150 10151 10152 10153 10172 10173 10174 10175 10176 10177 10178 10179 10180 10181 10182 10183 18080 18081 18082 18083 18084 18085 8708 8709 8710 8711 8712 8713 8714 8715 8716 8717 8718 8719 8660 8661 8662 8663 8664 8665 18074 18075 18076 18077 18078 18079 +48 10178 10179 10180 10181 10182 10183 10202 10203 10204 10205 10206 10207 10208 10209 10210 10211 10212 10213 18086 18087 18088 18089 18090 18091 8750 8751 8752 8753 8754 8755 8744 8745 8746 8747 8748 8749 8708 8709 8710 8711 8712 8713 18080 18081 18082 18083 18084 18085 +48 10208 10209 10210 10211 10212 10213 10232 10233 10234 10235 10236 10237 10238 10239 10240 10241 10242 10243 18092 18093 18094 18095 18096 18097 8780 8781 8782 8783 8784 8785 8774 8775 8776 8777 8778 8779 8750 8751 8752 8753 8754 8755 18086 18087 18088 18089 18090 18091 +48 10238 10239 10240 10241 10242 10243 10262 10263 10264 10265 10266 10267 10268 10269 10270 10271 10272 10273 18098 18099 18100 18101 18102 18103 8828 8829 8830 8831 8832 8833 8834 8835 8836 8837 8838 8839 8780 8781 8782 8783 8784 8785 18092 18093 18094 18095 18096 18097 +48 10268 10269 10270 10271 10272 10273 10292 10293 10294 10295 10296 10297 10298 10299 10300 10301 10302 10303 18104 18105 18106 18107 18108 18109 8870 8871 8872 8873 8874 8875 8864 8865 8866 8867 8868 8869 8828 8829 8830 8831 8832 8833 18098 18099 18100 18101 18102 18103 +48 10298 10299 10300 10301 10302 10303 10322 10323 10324 10325 10326 10327 10328 10329 10330 10331 10332 10333 18110 18111 18112 18113 18114 18115 8900 8901 8902 8903 8904 8905 8894 8895 8896 8897 8898 8899 8870 8871 8872 8873 8874 8875 18104 18105 18106 18107 18108 18109 +48 10328 10329 10330 10331 10332 10333 10352 10353 10354 10355 10356 10357 10358 10359 10360 10361 10362 10363 18116 18117 18118 18119 18120 18121 8948 8949 8950 8951 8952 8953 8954 8955 8956 8957 8958 8959 8900 8901 8902 8903 8904 8905 18110 18111 18112 18113 18114 18115 +48 10358 10359 10360 10361 10362 10363 10382 10383 10384 10385 10386 10387 10388 10389 10390 10391 10392 10393 18122 18123 18124 18125 18126 18127 8990 8991 8992 8993 8994 8995 8984 8985 8986 8987 8988 8989 8948 8949 8950 8951 8952 8953 18116 18117 18118 18119 18120 18121 +48 10388 10389 10390 10391 10392 10393 10412 10413 10414 10415 10416 10417 10418 10419 10420 10421 10422 10423 18128 18129 18130 18131 18132 18133 9020 9021 9022 9023 9024 9025 9014 9015 9016 9017 9018 9019 8990 8991 8992 8993 8994 8995 18122 18123 18124 18125 18126 18127 +48 10418 10419 10420 10421 10422 10423 10472 10473 10474 10475 10476 10477 10466 10467 10468 10469 10470 10471 18134 18135 18136 18137 18138 18139 9068 9069 9070 9071 9072 9073 9074 9075 9076 9077 9078 9079 9020 9021 9022 9023 9024 9025 18128 18129 18130 18131 18132 18133 +48 10466 10467 10468 10469 10470 10471 10502 10503 10504 10505 10506 10507 10508 10509 10510 10511 10512 10513 18140 18141 18142 18143 18144 18145 9110 9111 9112 9113 9114 9115 9104 9105 9106 9107 9108 9109 9068 9069 9070 9071 9072 9073 18134 18135 18136 18137 18138 18139 +48 10508 10509 10510 10511 10512 10513 10532 10533 10534 10535 10536 10537 2579 2580 2581 2582 2583 2584 3683 3684 3685 3686 3687 3688 2305 2306 2307 2308 2309 2310 9134 9135 9136 9137 9138 9139 9110 9111 9112 9113 9114 9115 18140 18141 18142 18143 18144 18145 +48 4574 4575 4576 4577 4578 4579 7478 7479 7480 7481 7482 7483 7484 7485 7486 7487 7488 7489 18146 18147 18148 18149 18150 18151 5816 5817 5818 5819 5820 5821 5810 5811 5812 5813 5814 5815 4310 4311 4312 4313 4314 4315 5594 5595 5596 5597 5598 5599 +48 7484 7485 7486 7487 7488 7489 7508 7509 7510 7511 7512 7513 7514 7515 7516 7517 7518 7519 18152 18153 18154 18155 18156 18157 5846 5847 5848 5849 5850 5851 5840 5841 5842 5843 5844 5845 5816 5817 5818 5819 5820 5821 18146 18147 18148 18149 18150 18151 +48 7514 7515 7516 7517 7518 7519 7574 7575 7576 7577 7578 7579 7538 7539 7540 7541 7542 7543 18158 18159 18160 18161 18162 18163 5870 5871 5872 5873 5874 5875 5906 5907 5908 5909 5910 5911 5846 5847 5848 5849 5850 5851 18152 18153 18154 18155 18156 18157 +48 7538 7539 7540 7541 7542 7543 7544 7545 7546 7547 7548 7549 7550 7551 7552 7553 7554 7555 18164 18165 18166 18167 18168 18169 5882 5883 5884 5885 5886 5887 5876 5877 5878 5879 5880 5881 5870 5871 5872 5873 5874 5875 18158 18159 18160 18161 18162 18163 +48 7550 7551 7552 7553 7554 7555 7628 7629 7630 7631 7632 7633 7634 7635 7636 7637 7638 7639 18170 18171 18172 18173 18174 18175 5966 5967 5968 5969 5970 5971 5960 5961 5962 5963 5964 5965 5882 5883 5884 5885 5886 5887 18164 18165 18166 18167 18168 18169 +48 7634 7635 7636 7637 7638 7639 7658 7659 7660 7661 7662 7663 7664 7665 7666 7667 7668 7669 18176 18177 18178 18179 18180 18181 5996 5997 5998 5999 6000 6001 5990 5991 5992 5993 5994 5995 5966 5967 5968 5969 5970 5971 18170 18171 18172 18173 18174 18175 +48 7664 7665 7666 7667 7668 7669 7694 7695 7696 7697 7698 7699 7700 7701 7702 7703 7704 7705 18182 18183 18184 18185 18186 18187 6032 6033 6034 6035 6036 6037 6026 6027 6028 6029 6030 6031 5996 5997 5998 5999 6000 6001 18176 18177 18178 18179 18180 18181 +48 7700 7701 7702 7703 7704 7705 7754 7755 7756 7757 7758 7759 7760 7761 7762 7763 7764 7765 18188 18189 18190 18191 18192 18193 6092 6093 6094 6095 6096 6097 6086 6087 6088 6089 6090 6091 6032 6033 6034 6035 6036 6037 18182 18183 18184 18185 18186 18187 +48 7760 7761 7762 7763 7764 7765 7784 7785 7786 7787 7788 7789 7790 7791 7792 7793 7794 7795 18194 18195 18196 18197 18198 18199 6122 6123 6124 6125 6126 6127 6116 6117 6118 6119 6120 6121 6092 6093 6094 6095 6096 6097 18188 18189 18190 18191 18192 18193 +48 7790 7791 7792 7793 7794 7795 7814 7815 7816 7817 7818 7819 7820 7821 7822 7823 7824 7825 18200 18201 18202 18203 18204 18205 6152 6153 6154 6155 6156 6157 6146 6147 6148 6149 6150 6151 6122 6123 6124 6125 6126 6127 18194 18195 18196 18197 18198 18199 +48 7820 7821 7822 7823 7824 7825 7874 7875 7876 7877 7878 7879 7868 7869 7870 7871 7872 7873 18206 18207 18208 18209 18210 18211 6200 6201 6202 6203 6204 6205 6206 6207 6208 6209 6210 6211 6152 6153 6154 6155 6156 6157 18200 18201 18202 18203 18204 18205 +48 7868 7869 7870 7871 7872 7873 7904 7905 7906 7907 7908 7909 7910 7911 7912 7913 7914 7915 18212 18213 18214 18215 18216 18217 6242 6243 6244 6245 6246 6247 6236 6237 6238 6239 6240 6241 6200 6201 6202 6203 6204 6205 18206 18207 18208 18209 18210 18211 +48 7910 7911 7912 7913 7914 7915 7934 7935 7936 7937 7938 7939 7940 7941 7942 7943 7944 7945 18218 18219 18220 18221 18222 18223 6272 6273 6274 6275 6276 6277 6266 6267 6268 6269 6270 6271 6242 6243 6244 6245 6246 6247 18212 18213 18214 18215 18216 18217 +48 7940 7941 7942 7943 7944 7945 7994 7995 7996 7997 7998 7999 7988 7989 7990 7991 7992 7993 18224 18225 18226 18227 18228 18229 6320 6321 6322 6323 6324 6325 6326 6327 6328 6329 6330 6331 6272 6273 6274 6275 6276 6277 18218 18219 18220 18221 18222 18223 +48 7988 7989 7990 7991 7992 7993 8024 8025 8026 8027 8028 8029 8030 8031 8032 8033 8034 8035 18230 18231 18232 18233 18234 18235 6362 6363 6364 6365 6366 6367 6356 6357 6358 6359 6360 6361 6320 6321 6322 6323 6324 6325 18224 18225 18226 18227 18228 18229 +48 8030 8031 8032 8033 8034 8035 8054 8055 8056 8057 8058 8059 8060 8061 8062 8063 8064 8065 18236 18237 18238 18239 18240 18241 6392 6393 6394 6395 6396 6397 6386 6387 6388 6389 6390 6391 6362 6363 6364 6365 6366 6367 18230 18231 18232 18233 18234 18235 +48 8060 8061 8062 8063 8064 8065 8114 8115 8116 8117 8118 8119 8108 8109 8110 8111 8112 8113 18242 18243 18244 18245 18246 18247 6440 6441 6442 6443 6444 6445 6446 6447 6448 6449 6450 6451 6392 6393 6394 6395 6396 6397 18236 18237 18238 18239 18240 18241 +48 8108 8109 8110 8111 8112 8113 8144 8145 8146 8147 8148 8149 8150 8151 8152 8153 8154 8155 18248 18249 18250 18251 18252 18253 6482 6483 6484 6485 6486 6487 6476 6477 6478 6479 6480 6481 6440 6441 6442 6443 6444 6445 18242 18243 18244 18245 18246 18247 +48 8150 8151 8152 8153 8154 8155 8174 8175 8176 8177 8178 8179 8180 8181 8182 8183 8184 8185 18254 18255 18256 18257 18258 18259 6512 6513 6514 6515 6516 6517 6506 6507 6508 6509 6510 6511 6482 6483 6484 6485 6486 6487 18248 18249 18250 18251 18252 18253 +48 8180 8181 8182 8183 8184 8185 8234 8235 8236 8237 8238 8239 8228 8229 8230 8231 8232 8233 18260 18261 18262 18263 18264 18265 6560 6561 6562 6563 6564 6565 6566 6567 6568 6569 6570 6571 6512 6513 6514 6515 6516 6517 18254 18255 18256 18257 18258 18259 +48 8228 8229 8230 8231 8232 8233 8264 8265 8266 8267 8268 8269 8270 8271 8272 8273 8274 8275 18266 18267 18268 18269 18270 18271 6602 6603 6604 6605 6606 6607 6596 6597 6598 6599 6600 6601 6560 6561 6562 6563 6564 6565 18260 18261 18262 18263 18264 18265 +48 8270 8271 8272 8273 8274 8275 8294 8295 8296 8297 8298 8299 8300 8301 8302 8303 8304 8305 18272 18273 18274 18275 18276 18277 6632 6633 6634 6635 6636 6637 6626 6627 6628 6629 6630 6631 6602 6603 6604 6605 6606 6607 18266 18267 18268 18269 18270 18271 +48 8300 8301 8302 8303 8304 8305 8354 8355 8356 8357 8358 8359 8348 8349 8350 8351 8352 8353 18278 18279 18280 18281 18282 18283 6680 6681 6682 6683 6684 6685 6686 6687 6688 6689 6690 6691 6632 6633 6634 6635 6636 6637 18272 18273 18274 18275 18276 18277 +48 8348 8349 8350 8351 8352 8353 8384 8385 8386 8387 8388 8389 8390 8391 8392 8393 8394 8395 18284 18285 18286 18287 18288 18289 6722 6723 6724 6725 6726 6727 6716 6717 6718 6719 6720 6721 6680 6681 6682 6683 6684 6685 18278 18279 18280 18281 18282 18283 +48 8390 8391 8392 8393 8394 8395 8414 8415 8416 8417 8418 8419 8420 8421 8422 8423 8424 8425 18290 18291 18292 18293 18294 18295 6752 6753 6754 6755 6756 6757 6746 6747 6748 6749 6750 6751 6722 6723 6724 6725 6726 6727 18284 18285 18286 18287 18288 18289 +48 8420 8421 8422 8423 8424 8425 8474 8475 8476 8477 8478 8479 8468 8469 8470 8471 8472 8473 18296 18297 18298 18299 18300 18301 6800 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810 6811 6752 6753 6754 6755 6756 6757 18290 18291 18292 18293 18294 18295 +48 8468 8469 8470 8471 8472 8473 8504 8505 8506 8507 8508 8509 8510 8511 8512 8513 8514 8515 18302 18303 18304 18305 18306 18307 6842 6843 6844 6845 6846 6847 6836 6837 6838 6839 6840 6841 6800 6801 6802 6803 6804 6805 18296 18297 18298 18299 18300 18301 +48 8510 8511 8512 8513 8514 8515 8534 8535 8536 8537 8538 8539 8540 8541 8542 8543 8544 8545 18308 18309 18310 18311 18312 18313 6872 6873 6874 6875 6876 6877 6866 6867 6868 6869 6870 6871 6842 6843 6844 6845 6846 6847 18302 18303 18304 18305 18306 18307 +48 8540 8541 8542 8543 8544 8545 8594 8595 8596 8597 8598 8599 8588 8589 8590 8591 8592 8593 18314 18315 18316 18317 18318 18319 6920 6921 6922 6923 6924 6925 6926 6927 6928 6929 6930 6931 6872 6873 6874 6875 6876 6877 18308 18309 18310 18311 18312 18313 +48 8588 8589 8590 8591 8592 8593 8624 8625 8626 8627 8628 8629 8630 8631 8632 8633 8634 8635 18320 18321 18322 18323 18324 18325 6962 6963 6964 6965 6966 6967 6956 6957 6958 6959 6960 6961 6920 6921 6922 6923 6924 6925 18314 18315 18316 18317 18318 18319 +48 8630 8631 8632 8633 8634 8635 8654 8655 8656 8657 8658 8659 8660 8661 8662 8663 8664 8665 18326 18327 18328 18329 18330 18331 6992 6993 6994 6995 6996 6997 6986 6987 6988 6989 6990 6991 6962 6963 6964 6965 6966 6967 18320 18321 18322 18323 18324 18325 +48 8660 8661 8662 8663 8664 8665 8714 8715 8716 8717 8718 8719 8708 8709 8710 8711 8712 8713 18332 18333 18334 18335 18336 18337 7040 7041 7042 7043 7044 7045 7046 7047 7048 7049 7050 7051 6992 6993 6994 6995 6996 6997 18326 18327 18328 18329 18330 18331 +48 8708 8709 8710 8711 8712 8713 8744 8745 8746 8747 8748 8749 8750 8751 8752 8753 8754 8755 18338 18339 18340 18341 18342 18343 7082 7083 7084 7085 7086 7087 7076 7077 7078 7079 7080 7081 7040 7041 7042 7043 7044 7045 18332 18333 18334 18335 18336 18337 +48 8750 8751 8752 8753 8754 8755 8774 8775 8776 8777 8778 8779 8780 8781 8782 8783 8784 8785 18344 18345 18346 18347 18348 18349 7112 7113 7114 7115 7116 7117 7106 7107 7108 7109 7110 7111 7082 7083 7084 7085 7086 7087 18338 18339 18340 18341 18342 18343 +48 8780 8781 8782 8783 8784 8785 8834 8835 8836 8837 8838 8839 8828 8829 8830 8831 8832 8833 18350 18351 18352 18353 18354 18355 7160 7161 7162 7163 7164 7165 7166 7167 7168 7169 7170 7171 7112 7113 7114 7115 7116 7117 18344 18345 18346 18347 18348 18349 +48 8828 8829 8830 8831 8832 8833 8864 8865 8866 8867 8868 8869 8870 8871 8872 8873 8874 8875 18356 18357 18358 18359 18360 18361 7202 7203 7204 7205 7206 7207 7196 7197 7198 7199 7200 7201 7160 7161 7162 7163 7164 7165 18350 18351 18352 18353 18354 18355 +48 8870 8871 8872 8873 8874 8875 8894 8895 8896 8897 8898 8899 8900 8901 8902 8903 8904 8905 18362 18363 18364 18365 18366 18367 7232 7233 7234 7235 7236 7237 7226 7227 7228 7229 7230 7231 7202 7203 7204 7205 7206 7207 18356 18357 18358 18359 18360 18361 +48 8900 8901 8902 8903 8904 8905 8954 8955 8956 8957 8958 8959 8948 8949 8950 8951 8952 8953 18368 18369 18370 18371 18372 18373 7280 7281 7282 7283 7284 7285 7286 7287 7288 7289 7290 7291 7232 7233 7234 7235 7236 7237 18362 18363 18364 18365 18366 18367 +48 8948 8949 8950 8951 8952 8953 8984 8985 8986 8987 8988 8989 8990 8991 8992 8993 8994 8995 18374 18375 18376 18377 18378 18379 7322 7323 7324 7325 7326 7327 7316 7317 7318 7319 7320 7321 7280 7281 7282 7283 7284 7285 18368 18369 18370 18371 18372 18373 +48 8990 8991 8992 8993 8994 8995 9014 9015 9016 9017 9018 9019 9020 9021 9022 9023 9024 9025 18380 18381 18382 18383 18384 18385 7352 7353 7354 7355 7356 7357 7346 7347 7348 7349 7350 7351 7322 7323 7324 7325 7326 7327 18374 18375 18376 18377 18378 18379 +48 9020 9021 9022 9023 9024 9025 9074 9075 9076 9077 9078 9079 9068 9069 9070 9071 9072 9073 18386 18387 18388 18389 18390 18391 7400 7401 7402 7403 7404 7405 7406 7407 7408 7409 7410 7411 7352 7353 7354 7355 7356 7357 18380 18381 18382 18383 18384 18385 +48 9068 9069 9070 9071 9072 9073 9104 9105 9106 9107 9108 9109 9110 9111 9112 9113 9114 9115 18392 18393 18394 18395 18396 18397 7442 7443 7444 7445 7446 7447 7436 7437 7438 7439 7440 7441 7400 7401 7402 7403 7404 7405 18386 18387 18388 18389 18390 18391 +48 9110 9111 9112 9113 9114 9115 9134 9135 9136 9137 9138 9139 2305 2306 2307 2308 2309 2310 3719 3720 3721 3722 3723 3724 2083 2084 2085 2086 2087 2088 7466 7467 7468 7469 7470 7471 7442 7443 7444 7445 7446 7447 18392 18393 18394 18395 18396 18397 +48 5180 5181 5182 5183 5184 5185 14150 14151 14152 14153 14154 14155 14156 14157 14158 14159 14160 14161 18398 18399 18400 18401 18402 18403 12188 12189 12190 12191 12192 12193 15818 15819 15820 15821 15822 15823 5048 5049 5050 5051 5052 5053 5618 5619 5620 5621 5622 5623 +48 14156 14157 14158 14159 14160 14161 14180 14181 14182 14183 14184 14185 14186 14187 14188 14189 14190 14191 18404 18405 18406 18407 18408 18409 12200 12201 12202 12203 12204 12205 12194 12195 12196 12197 12198 12199 12188 12189 12190 12191 12192 12193 18398 18399 18400 18401 18402 18403 +48 14186 14187 14188 14189 14190 14191 14210 14211 14212 14213 14214 14215 14216 14217 14218 14219 14220 14221 18410 18411 18412 18413 18414 18415 12266 12267 12268 12269 12270 12271 12260 12261 12262 12263 12264 12265 12200 12201 12202 12203 12204 12205 18404 18405 18406 18407 18408 18409 +48 14216 14217 14218 14219 14220 14221 14240 14241 14242 14243 14244 14245 14246 14247 14248 14249 14250 14251 18416 18417 18418 18419 18420 18421 12308 12309 12310 12311 12312 12313 12302 12303 12304 12305 12306 12307 12266 12267 12268 12269 12270 12271 18410 18411 18412 18413 18414 18415 +48 14246 14247 14248 14249 14250 14251 14270 14271 14272 14273 14274 14275 14276 14277 14278 14279 14280 14281 18422 18423 18424 18425 18426 18427 12350 12351 12352 12353 12354 12355 12344 12345 12346 12347 12348 12349 12308 12309 12310 12311 12312 12313 18416 18417 18418 18419 18420 18421 +48 14276 14277 14278 14279 14280 14281 14300 14301 14302 14303 14304 14305 14306 14307 14308 14309 14310 14311 18428 18429 18430 18431 18432 18433 12392 12393 12394 12395 12396 12397 12386 12387 12388 12389 12390 12391 12350 12351 12352 12353 12354 12355 18422 18423 18424 18425 18426 18427 +48 14306 14307 14308 14309 14310 14311 14330 14331 14332 14333 14334 14335 14336 14337 14338 14339 14340 14341 18434 18435 18436 18437 18438 18439 12434 12435 12436 12437 12438 12439 12428 12429 12430 12431 12432 12433 12392 12393 12394 12395 12396 12397 18428 18429 18430 18431 18432 18433 +48 14336 14337 14338 14339 14340 14341 14360 14361 14362 14363 14364 14365 14366 14367 14368 14369 14370 14371 18440 18441 18442 18443 18444 18445 12476 12477 12478 12479 12480 12481 12470 12471 12472 12473 12474 12475 12434 12435 12436 12437 12438 12439 18434 18435 18436 18437 18438 18439 +48 14366 14367 14368 14369 14370 14371 14390 14391 14392 14393 14394 14395 14396 14397 14398 14399 14400 14401 18446 18447 18448 18449 18450 18451 12524 12525 12526 12527 12528 12529 12518 12519 12520 12521 12522 12523 12476 12477 12478 12479 12480 12481 18440 18441 18442 18443 18444 18445 +48 14396 14397 14398 14399 14400 14401 14420 14421 14422 14423 14424 14425 14426 14427 14428 14429 14430 14431 18452 18453 18454 18455 18456 18457 12572 12573 12574 12575 12576 12577 12566 12567 12568 12569 12570 12571 12524 12525 12526 12527 12528 12529 18446 18447 18448 18449 18450 18451 +48 14426 14427 14428 14429 14430 14431 14450 14451 14452 14453 14454 14455 14456 14457 14458 14459 14460 14461 18458 18459 18460 18461 18462 18463 12620 12621 12622 12623 12624 12625 12614 12615 12616 12617 12618 12619 12572 12573 12574 12575 12576 12577 18452 18453 18454 18455 18456 18457 +48 14456 14457 14458 14459 14460 14461 14480 14481 14482 14483 14484 14485 14486 14487 14488 14489 14490 14491 18464 18465 18466 18467 18468 18469 12668 12669 12670 12671 12672 12673 12662 12663 12664 12665 12666 12667 12620 12621 12622 12623 12624 12625 18458 18459 18460 18461 18462 18463 +48 14486 14487 14488 14489 14490 14491 14510 14511 14512 14513 14514 14515 14516 14517 14518 14519 14520 14521 18470 18471 18472 18473 18474 18475 12716 12717 12718 12719 12720 12721 12710 12711 12712 12713 12714 12715 12668 12669 12670 12671 12672 12673 18464 18465 18466 18467 18468 18469 +48 14516 14517 14518 14519 14520 14521 14540 14541 14542 14543 14544 14545 14546 14547 14548 14549 14550 14551 18476 18477 18478 18479 18480 18481 12764 12765 12766 12767 12768 12769 12758 12759 12760 12761 12762 12763 12716 12717 12718 12719 12720 12721 18470 18471 18472 18473 18474 18475 +48 14546 14547 14548 14549 14550 14551 14570 14571 14572 14573 14574 14575 14576 14577 14578 14579 14580 14581 18482 18483 18484 18485 18486 18487 12812 12813 12814 12815 12816 12817 12806 12807 12808 12809 12810 12811 12764 12765 12766 12767 12768 12769 18476 18477 18478 18479 18480 18481 +48 14576 14577 14578 14579 14580 14581 14600 14601 14602 14603 14604 14605 14606 14607 14608 14609 14610 14611 18488 18489 18490 18491 18492 18493 12860 12861 12862 12863 12864 12865 12854 12855 12856 12857 12858 12859 12812 12813 12814 12815 12816 12817 18482 18483 18484 18485 18486 18487 +48 14606 14607 14608 14609 14610 14611 14630 14631 14632 14633 14634 14635 14636 14637 14638 14639 14640 14641 18494 18495 18496 18497 18498 18499 12908 12909 12910 12911 12912 12913 12902 12903 12904 12905 12906 12907 12860 12861 12862 12863 12864 12865 18488 18489 18490 18491 18492 18493 +48 14636 14637 14638 14639 14640 14641 14660 14661 14662 14663 14664 14665 14666 14667 14668 14669 14670 14671 18500 18501 18502 18503 18504 18505 12956 12957 12958 12959 12960 12961 12950 12951 12952 12953 12954 12955 12908 12909 12910 12911 12912 12913 18494 18495 18496 18497 18498 18499 +48 14666 14667 14668 14669 14670 14671 14690 14691 14692 14693 14694 14695 14696 14697 14698 14699 14700 14701 18506 18507 18508 18509 18510 18511 13004 13005 13006 13007 13008 13009 12998 12999 13000 13001 13002 13003 12956 12957 12958 12959 12960 12961 18500 18501 18502 18503 18504 18505 +48 14696 14697 14698 14699 14700 14701 14720 14721 14722 14723 14724 14725 14726 14727 14728 14729 14730 14731 18512 18513 18514 18515 18516 18517 13052 13053 13054 13055 13056 13057 13046 13047 13048 13049 13050 13051 13004 13005 13006 13007 13008 13009 18506 18507 18508 18509 18510 18511 +48 14726 14727 14728 14729 14730 14731 14750 14751 14752 14753 14754 14755 14756 14757 14758 14759 14760 14761 18518 18519 18520 18521 18522 18523 13100 13101 13102 13103 13104 13105 13094 13095 13096 13097 13098 13099 13052 13053 13054 13055 13056 13057 18512 18513 18514 18515 18516 18517 +48 14756 14757 14758 14759 14760 14761 14780 14781 14782 14783 14784 14785 14786 14787 14788 14789 14790 14791 18524 18525 18526 18527 18528 18529 13148 13149 13150 13151 13152 13153 13142 13143 13144 13145 13146 13147 13100 13101 13102 13103 13104 13105 18518 18519 18520 18521 18522 18523 +48 14786 14787 14788 14789 14790 14791 14810 14811 14812 14813 14814 14815 14816 14817 14818 14819 14820 14821 18530 18531 18532 18533 18534 18535 13196 13197 13198 13199 13200 13201 13190 13191 13192 13193 13194 13195 13148 13149 13150 13151 13152 13153 18524 18525 18526 18527 18528 18529 +48 14816 14817 14818 14819 14820 14821 14840 14841 14842 14843 14844 14845 14846 14847 14848 14849 14850 14851 18536 18537 18538 18539 18540 18541 13244 13245 13246 13247 13248 13249 13238 13239 13240 13241 13242 13243 13196 13197 13198 13199 13200 13201 18530 18531 18532 18533 18534 18535 +48 14846 14847 14848 14849 14850 14851 14870 14871 14872 14873 14874 14875 14876 14877 14878 14879 14880 14881 18542 18543 18544 18545 18546 18547 13292 13293 13294 13295 13296 13297 13286 13287 13288 13289 13290 13291 13244 13245 13246 13247 13248 13249 18536 18537 18538 18539 18540 18541 +48 14876 14877 14878 14879 14880 14881 14900 14901 14902 14903 14904 14905 14906 14907 14908 14909 14910 14911 18548 18549 18550 18551 18552 18553 13340 13341 13342 13343 13344 13345 13334 13335 13336 13337 13338 13339 13292 13293 13294 13295 13296 13297 18542 18543 18544 18545 18546 18547 +48 14906 14907 14908 14909 14910 14911 14930 14931 14932 14933 14934 14935 14936 14937 14938 14939 14940 14941 18554 18555 18556 18557 18558 18559 13388 13389 13390 13391 13392 13393 13382 13383 13384 13385 13386 13387 13340 13341 13342 13343 13344 13345 18548 18549 18550 18551 18552 18553 +48 14936 14937 14938 14939 14940 14941 14960 14961 14962 14963 14964 14965 14966 14967 14968 14969 14970 14971 18560 18561 18562 18563 18564 18565 13436 13437 13438 13439 13440 13441 13430 13431 13432 13433 13434 13435 13388 13389 13390 13391 13392 13393 18554 18555 18556 18557 18558 18559 +48 14966 14967 14968 14969 14970 14971 14990 14991 14992 14993 14994 14995 14996 14997 14998 14999 15000 15001 18566 18567 18568 18569 18570 18571 13484 13485 13486 13487 13488 13489 13478 13479 13480 13481 13482 13483 13436 13437 13438 13439 13440 13441 18560 18561 18562 18563 18564 18565 +48 14996 14997 14998 14999 15000 15001 15020 15021 15022 15023 15024 15025 15026 15027 15028 15029 15030 15031 18572 18573 18574 18575 18576 18577 13532 13533 13534 13535 13536 13537 13526 13527 13528 13529 13530 13531 13484 13485 13486 13487 13488 13489 18566 18567 18568 18569 18570 18571 +48 15026 15027 15028 15029 15030 15031 15050 15051 15052 15053 15054 15055 15056 15057 15058 15059 15060 15061 18578 18579 18580 18581 18582 18583 13580 13581 13582 13583 13584 13585 13574 13575 13576 13577 13578 13579 13532 13533 13534 13535 13536 13537 18572 18573 18574 18575 18576 18577 +48 15056 15057 15058 15059 15060 15061 15080 15081 15082 15083 15084 15085 15086 15087 15088 15089 15090 15091 18584 18585 18586 18587 18588 18589 13628 13629 13630 13631 13632 13633 13622 13623 13624 13625 13626 13627 13580 13581 13582 13583 13584 13585 18578 18579 18580 18581 18582 18583 +48 15086 15087 15088 15089 15090 15091 15110 15111 15112 15113 15114 15115 15116 15117 15118 15119 15120 15121 18590 18591 18592 18593 18594 18595 13676 13677 13678 13679 13680 13681 13670 13671 13672 13673 13674 13675 13628 13629 13630 13631 13632 13633 18584 18585 18586 18587 18588 18589 +48 15116 15117 15118 15119 15120 15121 15140 15141 15142 15143 15144 15145 15146 15147 15148 15149 15150 15151 18596 18597 18598 18599 18600 18601 13724 13725 13726 13727 13728 13729 13718 13719 13720 13721 13722 13723 13676 13677 13678 13679 13680 13681 18590 18591 18592 18593 18594 18595 +48 15146 15147 15148 15149 15150 15151 15170 15171 15172 15173 15174 15175 15176 15177 15178 15179 15180 15181 18602 18603 18604 18605 18606 18607 13772 13773 13774 13775 13776 13777 13766 13767 13768 13769 13770 13771 13724 13725 13726 13727 13728 13729 18596 18597 18598 18599 18600 18601 +48 15176 15177 15178 15179 15180 15181 15200 15201 15202 15203 15204 15205 15206 15207 15208 15209 15210 15211 18608 18609 18610 18611 18612 18613 13820 13821 13822 13823 13824 13825 13814 13815 13816 13817 13818 13819 13772 13773 13774 13775 13776 13777 18602 18603 18604 18605 18606 18607 +48 15206 15207 15208 15209 15210 15211 15230 15231 15232 15233 15234 15235 15236 15237 15238 15239 15240 15241 18614 18615 18616 18617 18618 18619 13868 13869 13870 13871 13872 13873 13862 13863 13864 13865 13866 13867 13820 13821 13822 13823 13824 13825 18608 18609 18610 18611 18612 18613 +48 15236 15237 15238 15239 15240 15241 15260 15261 15262 15263 15264 15265 15266 15267 15268 15269 15270 15271 18620 18621 18622 18623 18624 18625 13916 13917 13918 13919 13920 13921 13910 13911 13912 13913 13914 13915 13868 13869 13870 13871 13872 13873 18614 18615 18616 18617 18618 18619 +48 15266 15267 15268 15269 15270 15271 15290 15291 15292 15293 15294 15295 15296 15297 15298 15299 15300 15301 18626 18627 18628 18629 18630 18631 13964 13965 13966 13967 13968 13969 13958 13959 13960 13961 13962 13963 13916 13917 13918 13919 13920 13921 18620 18621 18622 18623 18624 18625 +48 15296 15297 15298 15299 15300 15301 15320 15321 15322 15323 15324 15325 15326 15327 15328 15329 15330 15331 18632 18633 18634 18635 18636 18637 14012 14013 14014 14015 14016 14017 14006 14007 14008 14009 14010 14011 13964 13965 13966 13967 13968 13969 18626 18627 18628 18629 18630 18631 +48 15326 15327 15328 15329 15330 15331 15350 15351 15352 15353 15354 15355 15356 15357 15358 15359 15360 15361 18638 18639 18640 18641 18642 18643 14060 14061 14062 14063 14064 14065 14054 14055 14056 14057 14058 14059 14012 14013 14014 14015 14016 14017 18632 18633 18634 18635 18636 18637 +48 15356 15357 15358 15359 15360 15361 15380 15381 15382 15383 15384 15385 15386 15387 15388 15389 15390 15391 18644 18645 18646 18647 18648 18649 14108 14109 14110 14111 14112 14113 14102 14103 14104 14105 14106 14107 14060 14061 14062 14063 14064 14065 18638 18639 18640 18641 18642 18643 +48 15386 15387 15388 15389 15390 15391 15410 15411 15412 15413 15414 15415 3203 3204 3205 3206 3207 3208 3779 3780 3781 3782 3783 3784 3017 3018 3019 3020 3021 3022 15848 15849 15850 15851 15852 15853 14108 14109 14110 14111 14112 14113 18644 18645 18646 18647 18648 18649 +48 12572 12573 12574 12575 12576 12577 12614 12615 12616 12617 12618 12619 12620 12621 12622 12623 12624 12625 18650 18651 18652 18653 18654 18655 10910 10911 10912 10913 10914 10915 10904 10905 10906 10907 10908 10909 10898 10899 10900 10901 10902 10903 18656 18657 18658 18659 18660 18661 +48 12716 12717 12718 12719 12720 12721 12758 12759 12760 12761 12762 12763 12764 12765 12766 12767 12768 12769 18662 18663 18664 18665 18666 18667 11030 11031 11032 11033 11034 11035 11024 11025 11026 11027 11028 11029 11018 11019 11020 11021 11022 11023 18668 18669 18670 18671 18672 18673 +48 12860 12861 12862 12863 12864 12865 12902 12903 12904 12905 12906 12907 12908 12909 12910 12911 12912 12913 18674 18675 18676 18677 18678 18679 11150 11151 11152 11153 11154 11155 11144 11145 11146 11147 11148 11149 11138 11139 11140 11141 11142 11143 18680 18681 18682 18683 18684 18685 +48 13004 13005 13006 13007 13008 13009 13046 13047 13048 13049 13050 13051 13052 13053 13054 13055 13056 13057 18686 18687 18688 18689 18690 18691 11270 11271 11272 11273 11274 11275 11264 11265 11266 11267 11268 11269 11258 11259 11260 11261 11262 11263 18692 18693 18694 18695 18696 18697 +48 13148 13149 13150 13151 13152 13153 13190 13191 13192 13193 13194 13195 13196 13197 13198 13199 13200 13201 18698 18699 18700 18701 18702 18703 11390 11391 11392 11393 11394 11395 11384 11385 11386 11387 11388 11389 11378 11379 11380 11381 11382 11383 18704 18705 18706 18707 18708 18709 +48 13292 13293 13294 13295 13296 13297 13334 13335 13336 13337 13338 13339 13340 13341 13342 13343 13344 13345 18710 18711 18712 18713 18714 18715 11510 11511 11512 11513 11514 11515 11504 11505 11506 11507 11508 11509 11498 11499 11500 11501 11502 11503 18716 18717 18718 18719 18720 18721 +48 13436 13437 13438 13439 13440 13441 13478 13479 13480 13481 13482 13483 13484 13485 13486 13487 13488 13489 18722 18723 18724 18725 18726 18727 11630 11631 11632 11633 11634 11635 11624 11625 11626 11627 11628 11629 11618 11619 11620 11621 11622 11623 18728 18729 18730 18731 18732 18733 +48 13580 13581 13582 13583 13584 13585 13622 13623 13624 13625 13626 13627 13628 13629 13630 13631 13632 13633 18734 18735 18736 18737 18738 18739 11750 11751 11752 11753 11754 11755 11744 11745 11746 11747 11748 11749 11738 11739 11740 11741 11742 11743 18740 18741 18742 18743 18744 18745 +48 13724 13725 13726 13727 13728 13729 13766 13767 13768 13769 13770 13771 13772 13773 13774 13775 13776 13777 18746 18747 18748 18749 18750 18751 11870 11871 11872 11873 11874 11875 11864 11865 11866 11867 11868 11869 11858 11859 11860 11861 11862 11863 18752 18753 18754 18755 18756 18757 +48 13868 13869 13870 13871 13872 13873 13910 13911 13912 13913 13914 13915 13916 13917 13918 13919 13920 13921 18758 18759 18760 18761 18762 18763 11990 11991 11992 11993 11994 11995 11984 11985 11986 11987 11988 11989 11978 11979 11980 11981 11982 11983 18764 18765 18766 18767 18768 18769 +48 14012 14013 14014 14015 14016 14017 14054 14055 14056 14057 14058 14059 14060 14061 14062 14063 14064 14065 18770 18771 18772 18773 18774 18775 12110 12111 12112 12113 12114 12115 12104 12105 12106 12107 12108 12109 12098 12099 12100 12101 12102 12103 18776 18777 18778 18779 18780 18781 +48 10898 10899 10900 10901 10902 10903 10904 10905 10906 10907 10908 10909 10910 10911 10912 10913 10914 10915 18782 18783 18784 18785 18786 18787 18788 18789 18790 18791 18792 18793 18800 18801 18802 18803 18804 18805 18794 18795 18796 18797 18798 18799 18806 18807 18808 18809 18810 18811 +48 11018 11019 11020 11021 11022 11023 11024 11025 11026 11027 11028 11029 11030 11031 11032 11033 11034 11035 18812 18813 18814 18815 18816 18817 9614 9615 9616 9617 9618 9619 9608 9609 9610 9611 9612 9613 9602 9603 9604 9605 9606 9607 18818 18819 18820 18821 18822 18823 +48 11138 11139 11140 11141 11142 11143 11144 11145 11146 11147 11148 11149 11150 11151 11152 11153 11154 11155 18824 18825 18826 18827 18828 18829 18830 18831 18832 18833 18834 18835 18842 18843 18844 18845 18846 18847 18836 18837 18838 18839 18840 18841 18848 18849 18850 18851 18852 18853 +48 11258 11259 11260 11261 11262 11263 11264 11265 11266 11267 11268 11269 11270 11271 11272 11273 11274 11275 18854 18855 18856 18857 18858 18859 18860 18861 18862 18863 18864 18865 18872 18873 18874 18875 18876 18877 18866 18867 18868 18869 18870 18871 18878 18879 18880 18881 18882 18883 +48 11378 11379 11380 11381 11382 11383 11384 11385 11386 11387 11388 11389 11390 11391 11392 11393 11394 11395 18884 18885 18886 18887 18888 18889 18890 18891 18892 18893 18894 18895 18902 18903 18904 18905 18906 18907 18896 18897 18898 18899 18900 18901 18908 18909 18910 18911 18912 18913 +48 11498 11499 11500 11501 11502 11503 11504 11505 11506 11507 11508 11509 11510 11511 11512 11513 11514 11515 18914 18915 18916 18917 18918 18919 18920 18921 18922 18923 18924 18925 18932 18933 18934 18935 18936 18937 18926 18927 18928 18929 18930 18931 18938 18939 18940 18941 18942 18943 +48 11618 11619 11620 11621 11622 11623 11624 11625 11626 11627 11628 11629 11630 11631 11632 11633 11634 11635 18944 18945 18946 18947 18948 18949 18950 18951 18952 18953 18954 18955 18962 18963 18964 18965 18966 18967 18956 18957 18958 18959 18960 18961 18968 18969 18970 18971 18972 18973 +48 11738 11739 11740 11741 11742 11743 11744 11745 11746 11747 11748 11749 11750 11751 11752 11753 11754 11755 18974 18975 18976 18977 18978 18979 18980 18981 18982 18983 18984 18985 18992 18993 18994 18995 18996 18997 18986 18987 18988 18989 18990 18991 18998 18999 19000 19001 19002 19003 +48 11858 11859 11860 11861 11862 11863 11864 11865 11866 11867 11868 11869 11870 11871 11872 11873 11874 11875 19004 19005 19006 19007 19008 19009 19010 19011 19012 19013 19014 19015 19022 19023 19024 19025 19026 19027 19016 19017 19018 19019 19020 19021 19028 19029 19030 19031 19032 19033 +48 11978 11979 11980 11981 11982 11983 11984 11985 11986 11987 11988 11989 11990 11991 11992 11993 11994 11995 19034 19035 19036 19037 19038 19039 19040 19041 19042 19043 19044 19045 19052 19053 19054 19055 19056 19057 19046 19047 19048 19049 19050 19051 19058 19059 19060 19061 19062 19063 +48 12098 12099 12100 12101 12102 12103 12104 12105 12106 12107 12108 12109 12110 12111 12112 12113 12114 12115 19064 19065 19066 19067 19068 19069 10454 10455 10456 10457 10458 10459 10448 10449 10450 10451 10452 10453 10442 10443 10444 10445 10446 10447 19070 19071 19072 19073 19074 19075 +48 18794 18795 18796 18797 18798 18799 18800 18801 18802 18803 18804 18805 18788 18789 18790 18791 18792 18793 19076 19077 19078 19079 19080 19081 7856 7857 7858 7859 7860 7861 7850 7851 7852 7853 7854 7855 7844 7845 7846 7847 7848 7849 19082 19083 19084 19085 19086 19087 +48 9602 9603 9604 9605 9606 9607 9608 9609 9610 9611 9612 9613 9614 9615 9616 9617 9618 9619 19088 19089 19090 19091 19092 19093 7976 7977 7978 7979 7980 7981 7970 7971 7972 7973 7974 7975 7964 7965 7966 7967 7968 7969 19094 19095 19096 19097 19098 19099 +48 18836 18837 18838 18839 18840 18841 18842 18843 18844 18845 18846 18847 18830 18831 18832 18833 18834 18835 19100 19101 19102 19103 19104 19105 8096 8097 8098 8099 8100 8101 8090 8091 8092 8093 8094 8095 8084 8085 8086 8087 8088 8089 19106 19107 19108 19109 19110 19111 +48 18866 18867 18868 18869 18870 18871 18872 18873 18874 18875 18876 18877 18860 18861 18862 18863 18864 18865 19112 19113 19114 19115 19116 19117 8216 8217 8218 8219 8220 8221 8210 8211 8212 8213 8214 8215 8204 8205 8206 8207 8208 8209 19118 19119 19120 19121 19122 19123 +48 18896 18897 18898 18899 18900 18901 18902 18903 18904 18905 18906 18907 18890 18891 18892 18893 18894 18895 19124 19125 19126 19127 19128 19129 8336 8337 8338 8339 8340 8341 8330 8331 8332 8333 8334 8335 8324 8325 8326 8327 8328 8329 19130 19131 19132 19133 19134 19135 +48 18926 18927 18928 18929 18930 18931 18932 18933 18934 18935 18936 18937 18920 18921 18922 18923 18924 18925 19136 19137 19138 19139 19140 19141 8456 8457 8458 8459 8460 8461 8450 8451 8452 8453 8454 8455 8444 8445 8446 8447 8448 8449 19142 19143 19144 19145 19146 19147 +48 18956 18957 18958 18959 18960 18961 18962 18963 18964 18965 18966 18967 18950 18951 18952 18953 18954 18955 19148 19149 19150 19151 19152 19153 8576 8577 8578 8579 8580 8581 8570 8571 8572 8573 8574 8575 8564 8565 8566 8567 8568 8569 19154 19155 19156 19157 19158 19159 +48 18986 18987 18988 18989 18990 18991 18992 18993 18994 18995 18996 18997 18980 18981 18982 18983 18984 18985 19160 19161 19162 19163 19164 19165 8696 8697 8698 8699 8700 8701 8690 8691 8692 8693 8694 8695 8684 8685 8686 8687 8688 8689 19166 19167 19168 19169 19170 19171 +48 19016 19017 19018 19019 19020 19021 19022 19023 19024 19025 19026 19027 19010 19011 19012 19013 19014 19015 19172 19173 19174 19175 19176 19177 8816 8817 8818 8819 8820 8821 8810 8811 8812 8813 8814 8815 8804 8805 8806 8807 8808 8809 19178 19179 19180 19181 19182 19183 +48 19046 19047 19048 19049 19050 19051 19052 19053 19054 19055 19056 19057 19040 19041 19042 19043 19044 19045 19184 19185 19186 19187 19188 19189 8936 8937 8938 8939 8940 8941 8930 8931 8932 8933 8934 8935 8924 8925 8926 8927 8928 8929 19190 19191 19192 19193 19194 19195 +48 10442 10443 10444 10445 10446 10447 10448 10449 10450 10451 10452 10453 10454 10455 10456 10457 10458 10459 19196 19197 19198 19199 19200 19201 9056 9057 9058 9059 9060 9061 9050 9051 9052 9053 9054 9055 9044 9045 9046 9047 9048 9049 19202 19203 19204 19205 19206 19207 +48 7844 7845 7846 7847 7848 7849 7850 7851 7852 7853 7854 7855 7856 7857 7858 7859 7860 7861 19208 19209 19210 19211 19212 19213 6188 6189 6190 6191 6192 6193 6182 6183 6184 6185 6186 6187 6176 6177 6178 6179 6180 6181 19214 19215 19216 19217 19218 19219 +48 7964 7965 7966 7967 7968 7969 7970 7971 7972 7973 7974 7975 7976 7977 7978 7979 7980 7981 19220 19221 19222 19223 19224 19225 6308 6309 6310 6311 6312 6313 6302 6303 6304 6305 6306 6307 6296 6297 6298 6299 6300 6301 19226 19227 19228 19229 19230 19231 +48 8084 8085 8086 8087 8088 8089 8090 8091 8092 8093 8094 8095 8096 8097 8098 8099 8100 8101 19232 19233 19234 19235 19236 19237 6428 6429 6430 6431 6432 6433 6422 6423 6424 6425 6426 6427 6416 6417 6418 6419 6420 6421 19238 19239 19240 19241 19242 19243 +48 8204 8205 8206 8207 8208 8209 8210 8211 8212 8213 8214 8215 8216 8217 8218 8219 8220 8221 19244 19245 19246 19247 19248 19249 6548 6549 6550 6551 6552 6553 6542 6543 6544 6545 6546 6547 6536 6537 6538 6539 6540 6541 19250 19251 19252 19253 19254 19255 +48 8324 8325 8326 8327 8328 8329 8330 8331 8332 8333 8334 8335 8336 8337 8338 8339 8340 8341 19256 19257 19258 19259 19260 19261 6668 6669 6670 6671 6672 6673 6662 6663 6664 6665 6666 6667 6656 6657 6658 6659 6660 6661 19262 19263 19264 19265 19266 19267 +48 8444 8445 8446 8447 8448 8449 8450 8451 8452 8453 8454 8455 8456 8457 8458 8459 8460 8461 19268 19269 19270 19271 19272 19273 6788 6789 6790 6791 6792 6793 6782 6783 6784 6785 6786 6787 6776 6777 6778 6779 6780 6781 19274 19275 19276 19277 19278 19279 +48 8564 8565 8566 8567 8568 8569 8570 8571 8572 8573 8574 8575 8576 8577 8578 8579 8580 8581 19280 19281 19282 19283 19284 19285 6908 6909 6910 6911 6912 6913 6902 6903 6904 6905 6906 6907 6896 6897 6898 6899 6900 6901 19286 19287 19288 19289 19290 19291 +48 8684 8685 8686 8687 8688 8689 8690 8691 8692 8693 8694 8695 8696 8697 8698 8699 8700 8701 19292 19293 19294 19295 19296 19297 7028 7029 7030 7031 7032 7033 7022 7023 7024 7025 7026 7027 7016 7017 7018 7019 7020 7021 19298 19299 19300 19301 19302 19303 +48 8804 8805 8806 8807 8808 8809 8810 8811 8812 8813 8814 8815 8816 8817 8818 8819 8820 8821 19304 19305 19306 19307 19308 19309 7148 7149 7150 7151 7152 7153 7142 7143 7144 7145 7146 7147 7136 7137 7138 7139 7140 7141 19310 19311 19312 19313 19314 19315 +48 8924 8925 8926 8927 8928 8929 8930 8931 8932 8933 8934 8935 8936 8937 8938 8939 8940 8941 19316 19317 19318 19319 19320 19321 7268 7269 7270 7271 7272 7273 7262 7263 7264 7265 7266 7267 7256 7257 7258 7259 7260 7261 19322 19323 19324 19325 19326 19327 +48 9044 9045 9046 9047 9048 9049 9050 9051 9052 9053 9054 9055 9056 9057 9058 9059 9060 9061 19328 19329 19330 19331 19332 19333 7388 7389 7390 7391 7392 7393 7382 7383 7384 7385 7386 7387 7376 7377 7378 7379 7380 7381 19334 19335 19336 19337 19338 19339 +48 14156 14157 14158 14159 14160 14161 14162 14163 14164 14165 14166 14167 14168 14169 14170 14171 14172 14173 17138 17139 17140 17141 17142 17143 12212 12213 12214 12215 12216 12217 12224 12225 12226 12227 12228 12229 12188 12189 12190 12191 12192 12193 18398 18399 18400 18401 18402 18403 +36 12242 12243 12244 12245 12246 12247 12212 12213 12214 12215 12216 12217 14168 14169 14170 14171 14172 14173 12254 12255 12256 12257 12258 12259 17138 17139 17140 17141 17142 17143 15872 15873 15874 15875 15876 15877 +48 12188 12189 12190 12191 12192 12193 12224 12225 12226 12227 12228 12229 12212 12213 12214 12215 12216 12217 17390 17391 17392 17393 17394 17395 10544 10545 10546 10547 10548 10549 10784 10785 10786 10787 10788 10789 10778 10779 10780 10781 10782 10783 19340 19341 19342 19343 19344 19345 +48 12212 12213 12214 12215 12216 12217 12254 12255 12256 12257 12258 12259 12242 12243 12244 12245 12246 12247 16124 16125 16126 16127 16128 16129 10574 10575 10576 10577 10578 10579 10586 10587 10588 10589 10590 10591 10544 10545 10546 10547 10548 10549 17390 17391 17392 17393 17394 17395 +48 10544 10545 10546 10547 10548 10549 10586 10587 10588 10589 10590 10591 10574 10575 10576 10577 10578 10579 16376 16377 16378 16379 16380 16381 9164 9165 9166 9167 9168 9169 9158 9159 9160 9161 9162 9163 9152 9153 9154 9155 9156 9157 17642 17643 17644 17645 17646 17647 +48 9152 9153 9154 9155 9156 9157 9158 9159 9160 9161 9162 9163 9164 9165 9166 9167 9168 9169 16628 16629 16630 16631 16632 16633 7496 7497 7498 7499 7500 7501 7490 7491 7492 7493 7494 7495 7484 7485 7486 7487 7488 7489 17894 17895 17896 17897 17898 17899 +48 7724 7725 7726 7727 7728 7729 7730 7731 7732 7733 7734 7735 7484 7485 7486 7487 7488 7489 18146 18147 18148 18149 18150 18151 5816 5817 5818 5819 5820 5821 6062 6063 6064 6065 6066 6067 6056 6057 6058 6059 6060 6061 19346 19347 19348 19349 19350 19351 +48 7484 7485 7486 7487 7488 7489 7490 7491 7492 7493 7494 7495 7496 7497 7498 7499 7500 7501 16880 16881 16882 16883 16884 16885 5828 5829 5830 5831 5832 5833 5822 5823 5824 5825 5826 5827 5816 5817 5818 5819 5820 5821 18146 18147 18148 18149 18150 18151 +48 14186 14187 14188 14189 14190 14191 14192 14193 14194 14195 14196 14197 14198 14199 14200 14201 14202 14203 17144 17145 17146 17147 17148 17149 637 638 639 640 641 642 12206 12207 12208 12209 12210 12211 12200 12201 12202 12203 12204 12205 18404 18405 18406 18407 18408 18409 +36 12236 12237 12238 12239 12240 12241 637 638 639 640 641 642 14198 14199 14200 14201 14202 14203 12230 12231 12232 12233 12234 12235 17144 17145 17146 17147 17148 17149 15878 15879 15880 15881 15882 15883 +48 637 638 639 640 641 642 12230 12231 12232 12233 12234 12235 12236 12237 12238 12239 12240 12241 16130 16131 16132 16133 16134 16135 10568 10569 10570 10571 10572 10573 10562 10563 10564 10565 10566 10567 10556 10557 10558 10559 10560 10561 17396 17397 17398 17399 17400 17401 +48 10556 10557 10558 10559 10560 10561 10562 10563 10564 10565 10566 10567 10568 10569 10570 10571 10572 10573 16382 16383 16384 16385 16386 16387 9194 9195 9196 9197 9198 9199 9188 9189 9190 9191 9192 9193 9182 9183 9184 9185 9186 9187 17648 17649 17650 17651 17652 17653 +48 9182 9183 9184 9185 9186 9187 9188 9189 9190 9191 9192 9193 9194 9195 9196 9197 9198 9199 16634 16635 16636 16637 16638 16639 7526 7527 7528 7529 7530 7531 7520 7521 7522 7523 7524 7525 7514 7515 7516 7517 7518 7519 17900 17901 17902 17903 17904 17905 +48 7514 7515 7516 7517 7518 7519 7520 7521 7522 7523 7524 7525 7526 7527 7528 7529 7530 7531 16886 16887 16888 16889 16890 16891 5858 5859 5860 5861 5862 5863 5852 5853 5854 5855 5856 5857 5846 5847 5848 5849 5850 5851 18152 18153 18154 18155 18156 18157 +48 14216 14217 14218 14219 14220 14221 14222 14223 14224 14225 14226 14227 14228 14229 14230 14231 14232 14233 17150 17151 17152 17153 17154 17155 649 650 651 652 653 654 12272 12273 12274 12275 12276 12277 12266 12267 12268 12269 12270 12271 18410 18411 18412 18413 18414 18415 +36 12290 12291 12292 12293 12294 12295 649 650 651 652 653 654 14228 14229 14230 14231 14232 14233 12284 12285 12286 12287 12288 12289 17150 17151 17152 17153 17154 17155 15884 15885 15886 15887 15888 15889 +48 649 650 651 652 653 654 12284 12285 12286 12287 12288 12289 12290 12291 12292 12293 12294 12295 16136 16137 16138 16139 16140 16141 10640 10641 10642 10643 10644 10645 10634 10635 10636 10637 10638 10639 10592 10593 10594 10595 10596 10597 17402 17403 17404 17405 17406 17407 +48 10592 10593 10594 10595 10596 10597 10634 10635 10636 10637 10638 10639 10640 10641 10642 10643 10644 10645 16388 16389 16390 16391 16392 16393 9254 9255 9256 9257 9258 9259 9248 9249 9250 9251 9252 9253 9206 9207 9208 9209 9210 9211 17654 17655 17656 17657 17658 17659 +48 9206 9207 9208 9209 9210 9211 9248 9249 9250 9251 9252 9253 9254 9255 9256 9257 9258 9259 16640 16641 16642 16643 16644 16645 7586 7587 7588 7589 7590 7591 7580 7581 7582 7583 7584 7585 7538 7539 7540 7541 7542 7543 17906 17907 17908 17909 17910 17911 +48 7538 7539 7540 7541 7542 7543 7580 7581 7582 7583 7584 7585 7586 7587 7588 7589 7590 7591 16892 16893 16894 16895 16896 16897 5918 5919 5920 5921 5922 5923 5912 5913 5914 5915 5916 5917 5870 5871 5872 5873 5874 5875 18158 18159 18160 18161 18162 18163 +48 14246 14247 14248 14249 14250 14251 14252 14253 14254 14255 14256 14257 14258 14259 14260 14261 14262 14263 17156 17157 17158 17159 17160 17161 661 662 663 664 665 666 12314 12315 12316 12317 12318 12319 12308 12309 12310 12311 12312 12313 18416 18417 18418 18419 18420 18421 +36 12332 12333 12334 12335 12336 12337 661 662 663 664 665 666 14258 14259 14260 14261 14262 14263 12326 12327 12328 12329 12330 12331 17156 17157 17158 17159 17160 17161 15890 15891 15892 15893 15894 15895 +48 661 662 663 664 665 666 12326 12327 12328 12329 12330 12331 12332 12333 12334 12335 12336 12337 16142 16143 16144 16145 16146 16147 10658 10659 10660 10661 10662 10663 10652 10653 10654 10655 10656 10657 10604 10605 10606 10607 10608 10609 17408 17409 17410 17411 17412 17413 +48 10604 10605 10606 10607 10608 10609 10652 10653 10654 10655 10656 10657 10658 10659 10660 10661 10662 10663 16394 16395 16396 16397 16398 16399 9272 9273 9274 9275 9276 9277 9266 9267 9268 9269 9270 9271 9218 9219 9220 9221 9222 9223 17660 17661 17662 17663 17664 17665 +48 9218 9219 9220 9221 9222 9223 9266 9267 9268 9269 9270 9271 9272 9273 9274 9275 9276 9277 16646 16647 16648 16649 16650 16651 7604 7605 7606 7607 7608 7609 7598 7599 7600 7601 7602 7603 7550 7551 7552 7553 7554 7555 17912 17913 17914 17915 17916 17917 +48 7550 7551 7552 7553 7554 7555 7598 7599 7600 7601 7602 7603 7604 7605 7606 7607 7608 7609 16898 16899 16900 16901 16902 16903 5936 5937 5938 5939 5940 5941 5930 5931 5932 5933 5934 5935 5882 5883 5884 5885 5886 5887 18164 18165 18166 18167 18168 18169 +48 14276 14277 14278 14279 14280 14281 14282 14283 14284 14285 14286 14287 14288 14289 14290 14291 14292 14293 17162 17163 17164 17165 17166 17167 673 674 675 676 677 678 12356 12357 12358 12359 12360 12361 12350 12351 12352 12353 12354 12355 18422 18423 18424 18425 18426 18427 +36 12374 12375 12376 12377 12378 12379 673 674 675 676 677 678 14288 14289 14290 14291 14292 14293 12368 12369 12370 12371 12372 12373 17162 17163 17164 17165 17166 17167 15896 15897 15898 15899 15900 15901 +48 673 674 675 676 677 678 12368 12369 12370 12371 12372 12373 12374 12375 12376 12377 12378 12379 16148 16149 16150 16151 16152 16153 10700 10701 10702 10703 10704 10705 10694 10695 10696 10697 10698 10699 10688 10689 10690 10691 10692 10693 17414 17415 17416 17417 17418 17419 +48 10688 10689 10690 10691 10692 10693 10694 10695 10696 10697 10698 10699 10700 10701 10702 10703 10704 10705 16400 16401 16402 16403 16404 16405 9314 9315 9316 9317 9318 9319 9308 9309 9310 9311 9312 9313 9302 9303 9304 9305 9306 9307 17666 17667 17668 17669 17670 17671 +48 9302 9303 9304 9305 9306 9307 9308 9309 9310 9311 9312 9313 9314 9315 9316 9317 9318 9319 16652 16653 16654 16655 16656 16657 7646 7647 7648 7649 7650 7651 7640 7641 7642 7643 7644 7645 7634 7635 7636 7637 7638 7639 17918 17919 17920 17921 17922 17923 +48 7634 7635 7636 7637 7638 7639 7640 7641 7642 7643 7644 7645 7646 7647 7648 7649 7650 7651 16904 16905 16906 16907 16908 16909 5978 5979 5980 5981 5982 5983 5972 5973 5974 5975 5976 5977 5966 5967 5968 5969 5970 5971 18170 18171 18172 18173 18174 18175 +48 14306 14307 14308 14309 14310 14311 14312 14313 14314 14315 14316 14317 14318 14319 14320 14321 14322 14323 17168 17169 17170 17171 17172 17173 685 686 687 688 689 690 12398 12399 12400 12401 12402 12403 12392 12393 12394 12395 12396 12397 18428 18429 18430 18431 18432 18433 +36 12416 12417 12418 12419 12420 12421 685 686 687 688 689 690 14318 14319 14320 14321 14322 14323 12410 12411 12412 12413 12414 12415 17168 17169 17170 17171 17172 17173 15902 15903 15904 15905 15906 15907 +48 685 686 687 688 689 690 12410 12411 12412 12413 12414 12415 12416 12417 12418 12419 12420 12421 16154 16155 16156 16157 16158 16159 10730 10731 10732 10733 10734 10735 10724 10725 10726 10727 10728 10729 10718 10719 10720 10721 10722 10723 17420 17421 17422 17423 17424 17425 +48 10718 10719 10720 10721 10722 10723 10724 10725 10726 10727 10728 10729 10730 10731 10732 10733 10734 10735 16406 16407 16408 16409 16410 16411 9344 9345 9346 9347 9348 9349 9338 9339 9340 9341 9342 9343 9332 9333 9334 9335 9336 9337 17672 17673 17674 17675 17676 17677 +48 9332 9333 9334 9335 9336 9337 9338 9339 9340 9341 9342 9343 9344 9345 9346 9347 9348 9349 16658 16659 16660 16661 16662 16663 7676 7677 7678 7679 7680 7681 7670 7671 7672 7673 7674 7675 7664 7665 7666 7667 7668 7669 17924 17925 17926 17927 17928 17929 +48 7664 7665 7666 7667 7668 7669 7670 7671 7672 7673 7674 7675 7676 7677 7678 7679 7680 7681 16910 16911 16912 16913 16914 16915 6008 6009 6010 6011 6012 6013 6002 6003 6004 6005 6006 6007 5996 5997 5998 5999 6000 6001 18176 18177 18178 18179 18180 18181 +48 14336 14337 14338 14339 14340 14341 14342 14343 14344 14345 14346 14347 14348 14349 14350 14351 14352 14353 17174 17175 17176 17177 17178 17179 697 698 699 700 701 702 12440 12441 12442 12443 12444 12445 12434 12435 12436 12437 12438 12439 18434 18435 18436 18437 18438 18439 +36 12458 12459 12460 12461 12462 12463 697 698 699 700 701 702 14348 14349 14350 14351 14352 14353 12452 12453 12454 12455 12456 12457 17174 17175 17176 17177 17178 17179 15908 15909 15910 15911 15912 15913 +48 697 698 699 700 701 702 12452 12453 12454 12455 12456 12457 12458 12459 12460 12461 12462 12463 16160 16161 16162 16163 16164 16165 10766 10767 10768 10769 10770 10771 10760 10761 10762 10763 10764 10765 10754 10755 10756 10757 10758 10759 17426 17427 17428 17429 17430 17431 +48 10754 10755 10756 10757 10758 10759 10760 10761 10762 10763 10764 10765 10766 10767 10768 10769 10770 10771 16412 16413 16414 16415 16416 16417 9380 9381 9382 9383 9384 9385 9374 9375 9376 9377 9378 9379 9368 9369 9370 9371 9372 9373 17678 17679 17680 17681 17682 17683 +48 9368 9369 9370 9371 9372 9373 9374 9375 9376 9377 9378 9379 9380 9381 9382 9383 9384 9385 16664 16665 16666 16667 16668 16669 7712 7713 7714 7715 7716 7717 7706 7707 7708 7709 7710 7711 7700 7701 7702 7703 7704 7705 17930 17931 17932 17933 17934 17935 +48 7700 7701 7702 7703 7704 7705 7706 7707 7708 7709 7710 7711 7712 7713 7714 7715 7716 7717 16916 16917 16918 16919 16920 16921 6044 6045 6046 6047 6048 6049 6038 6039 6040 6041 6042 6043 6032 6033 6034 6035 6036 6037 18182 18183 18184 18185 18186 18187 +48 14366 14367 14368 14369 14370 14371 14372 14373 14374 14375 14376 14377 14378 14379 14380 14381 14382 14383 17180 17181 17182 17183 17184 17185 12488 12489 12490 12491 12492 12493 12482 12483 12484 12485 12486 12487 12476 12477 12478 12479 12480 12481 18440 18441 18442 18443 18444 18445 +36 12506 12507 12508 12509 12510 12511 12488 12489 12490 12491 12492 12493 14378 14379 14380 14381 14382 14383 12500 12501 12502 12503 12504 12505 17180 17181 17182 17183 17184 17185 15914 15915 15916 15917 15918 15919 +48 12476 12477 12478 12479 12480 12481 12482 12483 12484 12485 12486 12487 12488 12489 12490 12491 12492 12493 17432 17433 17434 17435 17436 17437 10814 10815 10816 10817 10818 10819 19358 19359 19360 19361 19362 19363 19352 19353 19354 19355 19356 19357 19364 19365 19366 19367 19368 19369 +48 12488 12489 12490 12491 12492 12493 12500 12501 12502 12503 12504 12505 12506 12507 12508 12509 12510 12511 16166 16167 16168 16169 16170 16171 10826 10827 10828 10829 10830 10831 10820 10821 10822 10823 10824 10825 10814 10815 10816 10817 10818 10819 17432 17433 17434 17435 17436 17437 +48 10814 10815 10816 10817 10818 10819 10820 10821 10822 10823 10824 10825 10826 10827 10828 10829 10830 10831 16418 16419 16420 16421 16422 16423 9440 9441 9442 9443 9444 9445 9434 9435 9436 9437 9438 9439 9428 9429 9430 9431 9432 9433 17684 17685 17686 17687 17688 17689 +48 9428 9429 9430 9431 9432 9433 9434 9435 9436 9437 9438 9439 9440 9441 9442 9443 9444 9445 16670 16671 16672 16673 16674 16675 7772 7773 7774 7775 7776 7777 7766 7767 7768 7769 7770 7771 7760 7761 7762 7763 7764 7765 17936 17937 17938 17939 17940 17941 +48 19370 19371 19372 19373 19374 19375 19376 19377 19378 19379 19380 19381 7760 7761 7762 7763 7764 7765 18188 18189 18190 18191 18192 18193 6092 6093 6094 6095 6096 6097 19388 19389 19390 19391 19392 19393 19382 19383 19384 19385 19386 19387 19394 19395 19396 19397 19398 19399 +48 7760 7761 7762 7763 7764 7765 7766 7767 7768 7769 7770 7771 7772 7773 7774 7775 7776 7777 16922 16923 16924 16925 16926 16927 6104 6105 6106 6107 6108 6109 6098 6099 6100 6101 6102 6103 6092 6093 6094 6095 6096 6097 18188 18189 18190 18191 18192 18193 +48 14396 14397 14398 14399 14400 14401 14402 14403 14404 14405 14406 14407 14408 14409 14410 14411 14412 14413 17186 17187 17188 17189 17190 17191 12536 12537 12538 12539 12540 12541 12530 12531 12532 12533 12534 12535 12524 12525 12526 12527 12528 12529 18446 18447 18448 18449 18450 18451 +36 12554 12555 12556 12557 12558 12559 12536 12537 12538 12539 12540 12541 14408 14409 14410 14411 14412 14413 12548 12549 12550 12551 12552 12553 17186 17187 17188 17189 17190 17191 15920 15921 15922 15923 15924 15925 +48 12536 12537 12538 12539 12540 12541 12548 12549 12550 12551 12552 12553 12554 12555 12556 12557 12558 12559 16172 16173 16174 16175 16176 16177 10856 10857 10858 10859 10860 10861 10850 10851 10852 10853 10854 10855 10844 10845 10846 10847 10848 10849 17438 17439 17440 17441 17442 17443 +48 10844 10845 10846 10847 10848 10849 10850 10851 10852 10853 10854 10855 10856 10857 10858 10859 10860 10861 16424 16425 16426 16427 16428 16429 9470 9471 9472 9473 9474 9475 9464 9465 9466 9467 9468 9469 9458 9459 9460 9461 9462 9463 17690 17691 17692 17693 17694 17695 +48 9458 9459 9460 9461 9462 9463 9464 9465 9466 9467 9468 9469 9470 9471 9472 9473 9474 9475 16676 16677 16678 16679 16680 16681 7802 7803 7804 7805 7806 7807 7796 7797 7798 7799 7800 7801 7790 7791 7792 7793 7794 7795 17942 17943 17944 17945 17946 17947 +48 7790 7791 7792 7793 7794 7795 7796 7797 7798 7799 7800 7801 7802 7803 7804 7805 7806 7807 16928 16929 16930 16931 16932 16933 6134 6135 6136 6137 6138 6139 6128 6129 6130 6131 6132 6133 6122 6123 6124 6125 6126 6127 18194 18195 18196 18197 18198 18199 +48 14426 14427 14428 14429 14430 14431 14432 14433 14434 14435 14436 14437 14438 14439 14440 14441 14442 14443 17192 17193 17194 17195 17196 17197 12584 12585 12586 12587 12588 12589 12578 12579 12580 12581 12582 12583 12572 12573 12574 12575 12576 12577 18452 18453 18454 18455 18456 18457 +36 12602 12603 12604 12605 12606 12607 12584 12585 12586 12587 12588 12589 14438 14439 14440 14441 14442 14443 12596 12597 12598 12599 12600 12601 17192 17193 17194 17195 17196 17197 15926 15927 15928 15929 15930 15931 +48 12572 12573 12574 12575 12576 12577 12578 12579 12580 12581 12582 12583 12584 12585 12586 12587 12588 12589 17444 17445 17446 17447 17448 17449 10874 10875 10876 10877 10878 10879 10934 10935 10936 10937 10938 10939 10898 10899 10900 10901 10902 10903 18656 18657 18658 18659 18660 18661 +48 12584 12585 12586 12587 12588 12589 12596 12597 12598 12599 12600 12601 12602 12603 12604 12605 12606 12607 16178 16179 16180 16181 16182 16183 10886 10887 10888 10889 10890 10891 10880 10881 10882 10883 10884 10885 10874 10875 10876 10877 10878 10879 17444 17445 17446 17447 17448 17449 +48 10874 10875 10876 10877 10878 10879 10880 10881 10882 10883 10884 10885 10886 10887 10888 10889 10890 10891 16430 16431 16432 16433 16434 16435 9500 9501 9502 9503 9504 9505 9494 9495 9496 9497 9498 9499 9488 9489 9490 9491 9492 9493 17696 17697 17698 17699 17700 17701 +48 9488 9489 9490 9491 9492 9493 9494 9495 9496 9497 9498 9499 9500 9501 9502 9503 9504 9505 16682 16683 16684 16685 16686 16687 7832 7833 7834 7835 7836 7837 7826 7827 7828 7829 7830 7831 7820 7821 7822 7823 7824 7825 17948 17949 17950 17951 17952 17953 +48 7844 7845 7846 7847 7848 7849 7880 7881 7882 7883 7884 7885 7820 7821 7822 7823 7824 7825 18200 18201 18202 18203 18204 18205 6152 6153 6154 6155 6156 6157 6212 6213 6214 6215 6216 6217 6176 6177 6178 6179 6180 6181 19214 19215 19216 19217 19218 19219 +48 7820 7821 7822 7823 7824 7825 7826 7827 7828 7829 7830 7831 7832 7833 7834 7835 7836 7837 16934 16935 16936 16937 16938 16939 6164 6165 6166 6167 6168 6169 6158 6159 6160 6161 6162 6163 6152 6153 6154 6155 6156 6157 18200 18201 18202 18203 18204 18205 +48 14456 14457 14458 14459 14460 14461 14462 14463 14464 14465 14466 14467 14468 14469 14470 14471 14472 14473 17198 17199 17200 17201 17202 17203 12632 12633 12634 12635 12636 12637 12626 12627 12628 12629 12630 12631 12620 12621 12622 12623 12624 12625 18458 18459 18460 18461 18462 18463 +36 12650 12651 12652 12653 12654 12655 12632 12633 12634 12635 12636 12637 14468 14469 14470 14471 14472 14473 12644 12645 12646 12647 12648 12649 17198 17199 17200 17201 17202 17203 15932 15933 15934 15935 15936 15937 +48 12620 12621 12622 12623 12624 12625 12626 12627 12628 12629 12630 12631 12632 12633 12634 12635 12636 12637 17450 17451 17452 17453 17454 17455 10922 10923 10924 10925 10926 10927 10916 10917 10918 10919 10920 10921 10910 10911 10912 10913 10914 10915 18650 18651 18652 18653 18654 18655 +48 12632 12633 12634 12635 12636 12637 12644 12645 12646 12647 12648 12649 12650 12651 12652 12653 12654 12655 16184 16185 16186 16187 16188 16189 10946 10947 10948 10949 10950 10951 10940 10941 10942 10943 10944 10945 10922 10923 10924 10925 10926 10927 17450 17451 17452 17453 17454 17455 +48 10922 10923 10924 10925 10926 10927 10940 10941 10942 10943 10944 10945 10946 10947 10948 10949 10950 10951 16436 16437 16438 16439 16440 16441 9530 9531 9532 9533 9534 9535 9524 9525 9526 9527 9528 9529 9518 9519 9520 9521 9522 9523 17702 17703 17704 17705 17706 17707 +48 9518 9519 9520 9521 9522 9523 9524 9525 9526 9527 9528 9529 9530 9531 9532 9533 9534 9535 16688 16689 16690 16691 16692 16693 7892 7893 7894 7895 7896 7897 7886 7887 7888 7889 7890 7891 7868 7869 7870 7871 7872 7873 17954 17955 17956 17957 17958 17959 +48 7856 7857 7858 7859 7860 7861 7862 7863 7864 7865 7866 7867 7868 7869 7870 7871 7872 7873 18206 18207 18208 18209 18210 18211 6200 6201 6202 6203 6204 6205 6194 6195 6196 6197 6198 6199 6188 6189 6190 6191 6192 6193 19208 19209 19210 19211 19212 19213 +48 7868 7869 7870 7871 7872 7873 7886 7887 7888 7889 7890 7891 7892 7893 7894 7895 7896 7897 16940 16941 16942 16943 16944 16945 6224 6225 6226 6227 6228 6229 6218 6219 6220 6221 6222 6223 6200 6201 6202 6203 6204 6205 18206 18207 18208 18209 18210 18211 +48 14486 14487 14488 14489 14490 14491 14492 14493 14494 14495 14496 14497 14498 14499 14500 14501 14502 14503 17204 17205 17206 17207 17208 17209 12680 12681 12682 12683 12684 12685 12674 12675 12676 12677 12678 12679 12668 12669 12670 12671 12672 12673 18464 18465 18466 18467 18468 18469 +36 12698 12699 12700 12701 12702 12703 12680 12681 12682 12683 12684 12685 14498 14499 14500 14501 14502 14503 12692 12693 12694 12695 12696 12697 17204 17205 17206 17207 17208 17209 15938 15939 15940 15941 15942 15943 +48 12680 12681 12682 12683 12684 12685 12692 12693 12694 12695 12696 12697 12698 12699 12700 12701 12702 12703 16190 16191 16192 16193 16194 16195 10976 10977 10978 10979 10980 10981 10970 10971 10972 10973 10974 10975 10964 10965 10966 10967 10968 10969 17456 17457 17458 17459 17460 17461 +48 10964 10965 10966 10967 10968 10969 10970 10971 10972 10973 10974 10975 10976 10977 10978 10979 10980 10981 16442 16443 16444 16445 16446 16447 9560 9561 9562 9563 9564 9565 9554 9555 9556 9557 9558 9559 9548 9549 9550 9551 9552 9553 17708 17709 17710 17711 17712 17713 +48 9548 9549 9550 9551 9552 9553 9554 9555 9556 9557 9558 9559 9560 9561 9562 9563 9564 9565 16694 16695 16696 16697 16698 16699 7922 7923 7924 7925 7926 7927 7916 7917 7918 7919 7920 7921 7910 7911 7912 7913 7914 7915 17960 17961 17962 17963 17964 17965 +48 7910 7911 7912 7913 7914 7915 7916 7917 7918 7919 7920 7921 7922 7923 7924 7925 7926 7927 16946 16947 16948 16949 16950 16951 6254 6255 6256 6257 6258 6259 6248 6249 6250 6251 6252 6253 6242 6243 6244 6245 6246 6247 18212 18213 18214 18215 18216 18217 +48 14516 14517 14518 14519 14520 14521 14522 14523 14524 14525 14526 14527 14528 14529 14530 14531 14532 14533 17210 17211 17212 17213 17214 17215 12728 12729 12730 12731 12732 12733 12722 12723 12724 12725 12726 12727 12716 12717 12718 12719 12720 12721 18470 18471 18472 18473 18474 18475 +36 12746 12747 12748 12749 12750 12751 12728 12729 12730 12731 12732 12733 14528 14529 14530 14531 14532 14533 12740 12741 12742 12743 12744 12745 17210 17211 17212 17213 17214 17215 15944 15945 15946 15947 15948 15949 +48 12716 12717 12718 12719 12720 12721 12722 12723 12724 12725 12726 12727 12728 12729 12730 12731 12732 12733 17462 17463 17464 17465 17466 17467 10994 10995 10996 10997 10998 10999 11054 11055 11056 11057 11058 11059 11018 11019 11020 11021 11022 11023 18668 18669 18670 18671 18672 18673 +48 12728 12729 12730 12731 12732 12733 12740 12741 12742 12743 12744 12745 12746 12747 12748 12749 12750 12751 16196 16197 16198 16199 16200 16201 11006 11007 11008 11009 11010 11011 11000 11001 11002 11003 11004 11005 10994 10995 10996 10997 10998 10999 17462 17463 17464 17465 17466 17467 +48 11018 11019 11020 11021 11022 11023 11054 11055 11056 11057 11058 11059 10994 10995 10996 10997 10998 10999 17714 17715 17716 17717 17718 17719 9578 9579 9580 9581 9582 9583 9638 9639 9640 9641 9642 9643 9602 9603 9604 9605 9606 9607 18818 18819 18820 18821 18822 18823 +48 10994 10995 10996 10997 10998 10999 11000 11001 11002 11003 11004 11005 11006 11007 11008 11009 11010 11011 16448 16449 16450 16451 16452 16453 9590 9591 9592 9593 9594 9595 9584 9585 9586 9587 9588 9589 9578 9579 9580 9581 9582 9583 17714 17715 17716 17717 17718 17719 +48 9602 9603 9604 9605 9606 9607 9638 9639 9640 9641 9642 9643 9578 9579 9580 9581 9582 9583 17966 17967 17968 17969 17970 17971 7940 7941 7942 7943 7944 7945 8000 8001 8002 8003 8004 8005 7964 7965 7966 7967 7968 7969 19094 19095 19096 19097 19098 19099 +48 9578 9579 9580 9581 9582 9583 9584 9585 9586 9587 9588 9589 9590 9591 9592 9593 9594 9595 16700 16701 16702 16703 16704 16705 7952 7953 7954 7955 7956 7957 7946 7947 7948 7949 7950 7951 7940 7941 7942 7943 7944 7945 17966 17967 17968 17969 17970 17971 +48 7964 7965 7966 7967 7968 7969 8000 8001 8002 8003 8004 8005 7940 7941 7942 7943 7944 7945 18218 18219 18220 18221 18222 18223 6272 6273 6274 6275 6276 6277 6332 6333 6334 6335 6336 6337 6296 6297 6298 6299 6300 6301 19226 19227 19228 19229 19230 19231 +48 7940 7941 7942 7943 7944 7945 7946 7947 7948 7949 7950 7951 7952 7953 7954 7955 7956 7957 16952 16953 16954 16955 16956 16957 6284 6285 6286 6287 6288 6289 6278 6279 6280 6281 6282 6283 6272 6273 6274 6275 6276 6277 18218 18219 18220 18221 18222 18223 +48 14546 14547 14548 14549 14550 14551 14552 14553 14554 14555 14556 14557 14558 14559 14560 14561 14562 14563 17216 17217 17218 17219 17220 17221 12776 12777 12778 12779 12780 12781 12770 12771 12772 12773 12774 12775 12764 12765 12766 12767 12768 12769 18476 18477 18478 18479 18480 18481 +36 12794 12795 12796 12797 12798 12799 12776 12777 12778 12779 12780 12781 14558 14559 14560 14561 14562 14563 12788 12789 12790 12791 12792 12793 17216 17217 17218 17219 17220 17221 15950 15951 15952 15953 15954 15955 +48 12764 12765 12766 12767 12768 12769 12770 12771 12772 12773 12774 12775 12776 12777 12778 12779 12780 12781 17468 17469 17470 17471 17472 17473 11042 11043 11044 11045 11046 11047 11036 11037 11038 11039 11040 11041 11030 11031 11032 11033 11034 11035 18662 18663 18664 18665 18666 18667 +48 12776 12777 12778 12779 12780 12781 12788 12789 12790 12791 12792 12793 12794 12795 12796 12797 12798 12799 16202 16203 16204 16205 16206 16207 11066 11067 11068 11069 11070 11071 11060 11061 11062 11063 11064 11065 11042 11043 11044 11045 11046 11047 17468 17469 17470 17471 17472 17473 +48 11030 11031 11032 11033 11034 11035 11036 11037 11038 11039 11040 11041 11042 11043 11044 11045 11046 11047 17720 17721 17722 17723 17724 17725 9626 9627 9628 9629 9630 9631 9620 9621 9622 9623 9624 9625 9614 9615 9616 9617 9618 9619 18812 18813 18814 18815 18816 18817 +48 11042 11043 11044 11045 11046 11047 11060 11061 11062 11063 11064 11065 11066 11067 11068 11069 11070 11071 16454 16455 16456 16457 16458 16459 9650 9651 9652 9653 9654 9655 9644 9645 9646 9647 9648 9649 9626 9627 9628 9629 9630 9631 17720 17721 17722 17723 17724 17725 +48 9614 9615 9616 9617 9618 9619 9620 9621 9622 9623 9624 9625 9626 9627 9628 9629 9630 9631 17972 17973 17974 17975 17976 17977 7988 7989 7990 7991 7992 7993 7982 7983 7984 7985 7986 7987 7976 7977 7978 7979 7980 7981 19088 19089 19090 19091 19092 19093 +48 9626 9627 9628 9629 9630 9631 9644 9645 9646 9647 9648 9649 9650 9651 9652 9653 9654 9655 16706 16707 16708 16709 16710 16711 8012 8013 8014 8015 8016 8017 8006 8007 8008 8009 8010 8011 7988 7989 7990 7991 7992 7993 17972 17973 17974 17975 17976 17977 +48 7976 7977 7978 7979 7980 7981 7982 7983 7984 7985 7986 7987 7988 7989 7990 7991 7992 7993 18224 18225 18226 18227 18228 18229 6320 6321 6322 6323 6324 6325 6314 6315 6316 6317 6318 6319 6308 6309 6310 6311 6312 6313 19220 19221 19222 19223 19224 19225 +48 7988 7989 7990 7991 7992 7993 8006 8007 8008 8009 8010 8011 8012 8013 8014 8015 8016 8017 16958 16959 16960 16961 16962 16963 6344 6345 6346 6347 6348 6349 6338 6339 6340 6341 6342 6343 6320 6321 6322 6323 6324 6325 18224 18225 18226 18227 18228 18229 +48 14576 14577 14578 14579 14580 14581 14582 14583 14584 14585 14586 14587 14588 14589 14590 14591 14592 14593 17222 17223 17224 17225 17226 17227 12824 12825 12826 12827 12828 12829 12818 12819 12820 12821 12822 12823 12812 12813 12814 12815 12816 12817 18482 18483 18484 18485 18486 18487 +36 12842 12843 12844 12845 12846 12847 12824 12825 12826 12827 12828 12829 14588 14589 14590 14591 14592 14593 12836 12837 12838 12839 12840 12841 17222 17223 17224 17225 17226 17227 15956 15957 15958 15959 15960 15961 +48 12824 12825 12826 12827 12828 12829 12836 12837 12838 12839 12840 12841 12842 12843 12844 12845 12846 12847 16208 16209 16210 16211 16212 16213 11096 11097 11098 11099 11100 11101 11090 11091 11092 11093 11094 11095 11084 11085 11086 11087 11088 11089 17474 17475 17476 17477 17478 17479 +48 11084 11085 11086 11087 11088 11089 11090 11091 11092 11093 11094 11095 11096 11097 11098 11099 11100 11101 16460 16461 16462 16463 16464 16465 9680 9681 9682 9683 9684 9685 9674 9675 9676 9677 9678 9679 9668 9669 9670 9671 9672 9673 17726 17727 17728 17729 17730 17731 +48 9668 9669 9670 9671 9672 9673 9674 9675 9676 9677 9678 9679 9680 9681 9682 9683 9684 9685 16712 16713 16714 16715 16716 16717 8042 8043 8044 8045 8046 8047 8036 8037 8038 8039 8040 8041 8030 8031 8032 8033 8034 8035 17978 17979 17980 17981 17982 17983 +48 8030 8031 8032 8033 8034 8035 8036 8037 8038 8039 8040 8041 8042 8043 8044 8045 8046 8047 16964 16965 16966 16967 16968 16969 6374 6375 6376 6377 6378 6379 6368 6369 6370 6371 6372 6373 6362 6363 6364 6365 6366 6367 18230 18231 18232 18233 18234 18235 +48 14606 14607 14608 14609 14610 14611 14612 14613 14614 14615 14616 14617 14618 14619 14620 14621 14622 14623 17228 17229 17230 17231 17232 17233 12872 12873 12874 12875 12876 12877 12866 12867 12868 12869 12870 12871 12860 12861 12862 12863 12864 12865 18488 18489 18490 18491 18492 18493 +36 12890 12891 12892 12893 12894 12895 12872 12873 12874 12875 12876 12877 14618 14619 14620 14621 14622 14623 12884 12885 12886 12887 12888 12889 17228 17229 17230 17231 17232 17233 15962 15963 15964 15965 15966 15967 +48 12860 12861 12862 12863 12864 12865 12866 12867 12868 12869 12870 12871 12872 12873 12874 12875 12876 12877 17480 17481 17482 17483 17484 17485 11114 11115 11116 11117 11118 11119 11174 11175 11176 11177 11178 11179 11138 11139 11140 11141 11142 11143 18680 18681 18682 18683 18684 18685 +48 12872 12873 12874 12875 12876 12877 12884 12885 12886 12887 12888 12889 12890 12891 12892 12893 12894 12895 16214 16215 16216 16217 16218 16219 11126 11127 11128 11129 11130 11131 11120 11121 11122 11123 11124 11125 11114 11115 11116 11117 11118 11119 17480 17481 17482 17483 17484 17485 +48 11114 11115 11116 11117 11118 11119 11120 11121 11122 11123 11124 11125 11126 11127 11128 11129 11130 11131 16466 16467 16468 16469 16470 16471 9710 9711 9712 9713 9714 9715 9704 9705 9706 9707 9708 9709 9698 9699 9700 9701 9702 9703 17732 17733 17734 17735 17736 17737 +48 9698 9699 9700 9701 9702 9703 9704 9705 9706 9707 9708 9709 9710 9711 9712 9713 9714 9715 16718 16719 16720 16721 16722 16723 8072 8073 8074 8075 8076 8077 8066 8067 8068 8069 8070 8071 8060 8061 8062 8063 8064 8065 17984 17985 17986 17987 17988 17989 +48 8084 8085 8086 8087 8088 8089 8120 8121 8122 8123 8124 8125 8060 8061 8062 8063 8064 8065 18236 18237 18238 18239 18240 18241 6392 6393 6394 6395 6396 6397 6452 6453 6454 6455 6456 6457 6416 6417 6418 6419 6420 6421 19238 19239 19240 19241 19242 19243 +48 8060 8061 8062 8063 8064 8065 8066 8067 8068 8069 8070 8071 8072 8073 8074 8075 8076 8077 16970 16971 16972 16973 16974 16975 6404 6405 6406 6407 6408 6409 6398 6399 6400 6401 6402 6403 6392 6393 6394 6395 6396 6397 18236 18237 18238 18239 18240 18241 +48 14636 14637 14638 14639 14640 14641 14642 14643 14644 14645 14646 14647 14648 14649 14650 14651 14652 14653 17234 17235 17236 17237 17238 17239 12920 12921 12922 12923 12924 12925 12914 12915 12916 12917 12918 12919 12908 12909 12910 12911 12912 12913 18494 18495 18496 18497 18498 18499 +36 12938 12939 12940 12941 12942 12943 12920 12921 12922 12923 12924 12925 14648 14649 14650 14651 14652 14653 12932 12933 12934 12935 12936 12937 17234 17235 17236 17237 17238 17239 15968 15969 15970 15971 15972 15973 +48 12908 12909 12910 12911 12912 12913 12914 12915 12916 12917 12918 12919 12920 12921 12922 12923 12924 12925 17486 17487 17488 17489 17490 17491 11162 11163 11164 11165 11166 11167 11156 11157 11158 11159 11160 11161 11150 11151 11152 11153 11154 11155 18674 18675 18676 18677 18678 18679 +48 12920 12921 12922 12923 12924 12925 12932 12933 12934 12935 12936 12937 12938 12939 12940 12941 12942 12943 16220 16221 16222 16223 16224 16225 11186 11187 11188 11189 11190 11191 11180 11181 11182 11183 11184 11185 11162 11163 11164 11165 11166 11167 17486 17487 17488 17489 17490 17491 +48 11162 11163 11164 11165 11166 11167 11180 11181 11182 11183 11184 11185 11186 11187 11188 11189 11190 11191 16472 16473 16474 16475 16476 16477 9740 9741 9742 9743 9744 9745 9734 9735 9736 9737 9738 9739 9728 9729 9730 9731 9732 9733 17738 17739 17740 17741 17742 17743 +48 9728 9729 9730 9731 9732 9733 9734 9735 9736 9737 9738 9739 9740 9741 9742 9743 9744 9745 16724 16725 16726 16727 16728 16729 8132 8133 8134 8135 8136 8137 8126 8127 8128 8129 8130 8131 8108 8109 8110 8111 8112 8113 17990 17991 17992 17993 17994 17995 +48 8096 8097 8098 8099 8100 8101 8102 8103 8104 8105 8106 8107 8108 8109 8110 8111 8112 8113 18242 18243 18244 18245 18246 18247 6440 6441 6442 6443 6444 6445 6434 6435 6436 6437 6438 6439 6428 6429 6430 6431 6432 6433 19232 19233 19234 19235 19236 19237 +48 8108 8109 8110 8111 8112 8113 8126 8127 8128 8129 8130 8131 8132 8133 8134 8135 8136 8137 16976 16977 16978 16979 16980 16981 6464 6465 6466 6467 6468 6469 6458 6459 6460 6461 6462 6463 6440 6441 6442 6443 6444 6445 18242 18243 18244 18245 18246 18247 +48 14666 14667 14668 14669 14670 14671 14672 14673 14674 14675 14676 14677 14678 14679 14680 14681 14682 14683 17240 17241 17242 17243 17244 17245 12968 12969 12970 12971 12972 12973 12962 12963 12964 12965 12966 12967 12956 12957 12958 12959 12960 12961 18500 18501 18502 18503 18504 18505 +36 12986 12987 12988 12989 12990 12991 12968 12969 12970 12971 12972 12973 14678 14679 14680 14681 14682 14683 12980 12981 12982 12983 12984 12985 17240 17241 17242 17243 17244 17245 15974 15975 15976 15977 15978 15979 +48 12968 12969 12970 12971 12972 12973 12980 12981 12982 12983 12984 12985 12986 12987 12988 12989 12990 12991 16226 16227 16228 16229 16230 16231 11216 11217 11218 11219 11220 11221 11210 11211 11212 11213 11214 11215 11204 11205 11206 11207 11208 11209 17492 17493 17494 17495 17496 17497 +48 11204 11205 11206 11207 11208 11209 11210 11211 11212 11213 11214 11215 11216 11217 11218 11219 11220 11221 16478 16479 16480 16481 16482 16483 9770 9771 9772 9773 9774 9775 9764 9765 9766 9767 9768 9769 9758 9759 9760 9761 9762 9763 17744 17745 17746 17747 17748 17749 +48 9758 9759 9760 9761 9762 9763 9764 9765 9766 9767 9768 9769 9770 9771 9772 9773 9774 9775 16730 16731 16732 16733 16734 16735 8162 8163 8164 8165 8166 8167 8156 8157 8158 8159 8160 8161 8150 8151 8152 8153 8154 8155 17996 17997 17998 17999 18000 18001 +48 8150 8151 8152 8153 8154 8155 8156 8157 8158 8159 8160 8161 8162 8163 8164 8165 8166 8167 16982 16983 16984 16985 16986 16987 6494 6495 6496 6497 6498 6499 6488 6489 6490 6491 6492 6493 6482 6483 6484 6485 6486 6487 18248 18249 18250 18251 18252 18253 +48 14696 14697 14698 14699 14700 14701 14702 14703 14704 14705 14706 14707 14708 14709 14710 14711 14712 14713 17246 17247 17248 17249 17250 17251 13016 13017 13018 13019 13020 13021 13010 13011 13012 13013 13014 13015 13004 13005 13006 13007 13008 13009 18506 18507 18508 18509 18510 18511 +36 13034 13035 13036 13037 13038 13039 13016 13017 13018 13019 13020 13021 14708 14709 14710 14711 14712 14713 13028 13029 13030 13031 13032 13033 17246 17247 17248 17249 17250 17251 15980 15981 15982 15983 15984 15985 +48 13004 13005 13006 13007 13008 13009 13010 13011 13012 13013 13014 13015 13016 13017 13018 13019 13020 13021 17498 17499 17500 17501 17502 17503 11234 11235 11236 11237 11238 11239 11294 11295 11296 11297 11298 11299 11258 11259 11260 11261 11262 11263 18692 18693 18694 18695 18696 18697 +48 13016 13017 13018 13019 13020 13021 13028 13029 13030 13031 13032 13033 13034 13035 13036 13037 13038 13039 16232 16233 16234 16235 16236 16237 11246 11247 11248 11249 11250 11251 11240 11241 11242 11243 11244 11245 11234 11235 11236 11237 11238 11239 17498 17499 17500 17501 17502 17503 +48 11258 11259 11260 11261 11262 11263 11294 11295 11296 11297 11298 11299 11234 11235 11236 11237 11238 11239 17750 17751 17752 17753 17754 17755 9788 9789 9790 9791 9792 9793 19400 19401 19402 19403 19404 19405 18866 18867 18868 18869 18870 18871 18878 18879 18880 18881 18882 18883 +48 11234 11235 11236 11237 11238 11239 11240 11241 11242 11243 11244 11245 11246 11247 11248 11249 11250 11251 16484 16485 16486 16487 16488 16489 9800 9801 9802 9803 9804 9805 9794 9795 9796 9797 9798 9799 9788 9789 9790 9791 9792 9793 17750 17751 17752 17753 17754 17755 +48 18866 18867 18868 18869 18870 18871 19400 19401 19402 19403 19404 19405 9788 9789 9790 9791 9792 9793 18002 18003 18004 18005 18006 18007 8180 8181 8182 8183 8184 8185 8240 8241 8242 8243 8244 8245 8204 8205 8206 8207 8208 8209 19118 19119 19120 19121 19122 19123 +48 9788 9789 9790 9791 9792 9793 9794 9795 9796 9797 9798 9799 9800 9801 9802 9803 9804 9805 16736 16737 16738 16739 16740 16741 8192 8193 8194 8195 8196 8197 8186 8187 8188 8189 8190 8191 8180 8181 8182 8183 8184 8185 18002 18003 18004 18005 18006 18007 +48 8204 8205 8206 8207 8208 8209 8240 8241 8242 8243 8244 8245 8180 8181 8182 8183 8184 8185 18254 18255 18256 18257 18258 18259 6512 6513 6514 6515 6516 6517 6572 6573 6574 6575 6576 6577 6536 6537 6538 6539 6540 6541 19250 19251 19252 19253 19254 19255 +48 8180 8181 8182 8183 8184 8185 8186 8187 8188 8189 8190 8191 8192 8193 8194 8195 8196 8197 16988 16989 16990 16991 16992 16993 6524 6525 6526 6527 6528 6529 6518 6519 6520 6521 6522 6523 6512 6513 6514 6515 6516 6517 18254 18255 18256 18257 18258 18259 +48 14726 14727 14728 14729 14730 14731 14732 14733 14734 14735 14736 14737 14738 14739 14740 14741 14742 14743 17252 17253 17254 17255 17256 17257 13064 13065 13066 13067 13068 13069 13058 13059 13060 13061 13062 13063 13052 13053 13054 13055 13056 13057 18512 18513 18514 18515 18516 18517 +36 13082 13083 13084 13085 13086 13087 13064 13065 13066 13067 13068 13069 14738 14739 14740 14741 14742 14743 13076 13077 13078 13079 13080 13081 17252 17253 17254 17255 17256 17257 15986 15987 15988 15989 15990 15991 +48 13052 13053 13054 13055 13056 13057 13058 13059 13060 13061 13062 13063 13064 13065 13066 13067 13068 13069 17504 17505 17506 17507 17508 17509 11282 11283 11284 11285 11286 11287 11276 11277 11278 11279 11280 11281 11270 11271 11272 11273 11274 11275 18686 18687 18688 18689 18690 18691 +48 13064 13065 13066 13067 13068 13069 13076 13077 13078 13079 13080 13081 13082 13083 13084 13085 13086 13087 16238 16239 16240 16241 16242 16243 11306 11307 11308 11309 11310 11311 11300 11301 11302 11303 11304 11305 11282 11283 11284 11285 11286 11287 17504 17505 17506 17507 17508 17509 +48 11282 11283 11284 11285 11286 11287 11300 11301 11302 11303 11304 11305 11306 11307 11308 11309 11310 11311 16490 16491 16492 16493 16494 16495 9830 9831 9832 9833 9834 9835 9824 9825 9826 9827 9828 9829 9818 9819 9820 9821 9822 9823 17756 17757 17758 17759 17760 17761 +48 9818 9819 9820 9821 9822 9823 9824 9825 9826 9827 9828 9829 9830 9831 9832 9833 9834 9835 16742 16743 16744 16745 16746 16747 8252 8253 8254 8255 8256 8257 8246 8247 8248 8249 8250 8251 8228 8229 8230 8231 8232 8233 18008 18009 18010 18011 18012 18013 +48 8216 8217 8218 8219 8220 8221 8222 8223 8224 8225 8226 8227 8228 8229 8230 8231 8232 8233 18260 18261 18262 18263 18264 18265 6560 6561 6562 6563 6564 6565 6554 6555 6556 6557 6558 6559 6548 6549 6550 6551 6552 6553 19244 19245 19246 19247 19248 19249 +48 8228 8229 8230 8231 8232 8233 8246 8247 8248 8249 8250 8251 8252 8253 8254 8255 8256 8257 16994 16995 16996 16997 16998 16999 6584 6585 6586 6587 6588 6589 6578 6579 6580 6581 6582 6583 6560 6561 6562 6563 6564 6565 18260 18261 18262 18263 18264 18265 +48 14756 14757 14758 14759 14760 14761 14762 14763 14764 14765 14766 14767 14768 14769 14770 14771 14772 14773 17258 17259 17260 17261 17262 17263 13112 13113 13114 13115 13116 13117 13106 13107 13108 13109 13110 13111 13100 13101 13102 13103 13104 13105 18518 18519 18520 18521 18522 18523 +36 13130 13131 13132 13133 13134 13135 13112 13113 13114 13115 13116 13117 14768 14769 14770 14771 14772 14773 13124 13125 13126 13127 13128 13129 17258 17259 17260 17261 17262 17263 15992 15993 15994 15995 15996 15997 +48 13112 13113 13114 13115 13116 13117 13124 13125 13126 13127 13128 13129 13130 13131 13132 13133 13134 13135 16244 16245 16246 16247 16248 16249 11336 11337 11338 11339 11340 11341 11330 11331 11332 11333 11334 11335 11324 11325 11326 11327 11328 11329 17510 17511 17512 17513 17514 17515 +48 11324 11325 11326 11327 11328 11329 11330 11331 11332 11333 11334 11335 11336 11337 11338 11339 11340 11341 16496 16497 16498 16499 16500 16501 9860 9861 9862 9863 9864 9865 9854 9855 9856 9857 9858 9859 9848 9849 9850 9851 9852 9853 17762 17763 17764 17765 17766 17767 +48 9848 9849 9850 9851 9852 9853 9854 9855 9856 9857 9858 9859 9860 9861 9862 9863 9864 9865 16748 16749 16750 16751 16752 16753 8282 8283 8284 8285 8286 8287 8276 8277 8278 8279 8280 8281 8270 8271 8272 8273 8274 8275 18014 18015 18016 18017 18018 18019 +48 8270 8271 8272 8273 8274 8275 8276 8277 8278 8279 8280 8281 8282 8283 8284 8285 8286 8287 17000 17001 17002 17003 17004 17005 6614 6615 6616 6617 6618 6619 6608 6609 6610 6611 6612 6613 6602 6603 6604 6605 6606 6607 18266 18267 18268 18269 18270 18271 +48 14786 14787 14788 14789 14790 14791 14792 14793 14794 14795 14796 14797 14798 14799 14800 14801 14802 14803 17264 17265 17266 17267 17268 17269 13160 13161 13162 13163 13164 13165 13154 13155 13156 13157 13158 13159 13148 13149 13150 13151 13152 13153 18524 18525 18526 18527 18528 18529 +36 13178 13179 13180 13181 13182 13183 13160 13161 13162 13163 13164 13165 14798 14799 14800 14801 14802 14803 13172 13173 13174 13175 13176 13177 17264 17265 17266 17267 17268 17269 15998 15999 16000 16001 16002 16003 +48 13148 13149 13150 13151 13152 13153 13154 13155 13156 13157 13158 13159 13160 13161 13162 13163 13164 13165 17516 17517 17518 17519 17520 17521 11354 11355 11356 11357 11358 11359 11414 11415 11416 11417 11418 11419 11378 11379 11380 11381 11382 11383 18704 18705 18706 18707 18708 18709 +48 13160 13161 13162 13163 13164 13165 13172 13173 13174 13175 13176 13177 13178 13179 13180 13181 13182 13183 16250 16251 16252 16253 16254 16255 11366 11367 11368 11369 11370 11371 11360 11361 11362 11363 11364 11365 11354 11355 11356 11357 11358 11359 17516 17517 17518 17519 17520 17521 +48 11354 11355 11356 11357 11358 11359 11360 11361 11362 11363 11364 11365 11366 11367 11368 11369 11370 11371 16502 16503 16504 16505 16506 16507 9890 9891 9892 9893 9894 9895 9884 9885 9886 9887 9888 9889 9878 9879 9880 9881 9882 9883 17768 17769 17770 17771 17772 17773 +48 9878 9879 9880 9881 9882 9883 9884 9885 9886 9887 9888 9889 9890 9891 9892 9893 9894 9895 16754 16755 16756 16757 16758 16759 8312 8313 8314 8315 8316 8317 8306 8307 8308 8309 8310 8311 8300 8301 8302 8303 8304 8305 18020 18021 18022 18023 18024 18025 +48 8324 8325 8326 8327 8328 8329 8360 8361 8362 8363 8364 8365 8300 8301 8302 8303 8304 8305 18272 18273 18274 18275 18276 18277 6632 6633 6634 6635 6636 6637 6692 6693 6694 6695 6696 6697 6656 6657 6658 6659 6660 6661 19262 19263 19264 19265 19266 19267 +48 8300 8301 8302 8303 8304 8305 8306 8307 8308 8309 8310 8311 8312 8313 8314 8315 8316 8317 17006 17007 17008 17009 17010 17011 6644 6645 6646 6647 6648 6649 6638 6639 6640 6641 6642 6643 6632 6633 6634 6635 6636 6637 18272 18273 18274 18275 18276 18277 +48 14816 14817 14818 14819 14820 14821 14822 14823 14824 14825 14826 14827 14828 14829 14830 14831 14832 14833 17270 17271 17272 17273 17274 17275 13208 13209 13210 13211 13212 13213 13202 13203 13204 13205 13206 13207 13196 13197 13198 13199 13200 13201 18530 18531 18532 18533 18534 18535 +36 13226 13227 13228 13229 13230 13231 13208 13209 13210 13211 13212 13213 14828 14829 14830 14831 14832 14833 13220 13221 13222 13223 13224 13225 17270 17271 17272 17273 17274 17275 16004 16005 16006 16007 16008 16009 +48 13196 13197 13198 13199 13200 13201 13202 13203 13204 13205 13206 13207 13208 13209 13210 13211 13212 13213 17522 17523 17524 17525 17526 17527 11402 11403 11404 11405 11406 11407 11396 11397 11398 11399 11400 11401 11390 11391 11392 11393 11394 11395 18698 18699 18700 18701 18702 18703 +48 13208 13209 13210 13211 13212 13213 13220 13221 13222 13223 13224 13225 13226 13227 13228 13229 13230 13231 16256 16257 16258 16259 16260 16261 11426 11427 11428 11429 11430 11431 11420 11421 11422 11423 11424 11425 11402 11403 11404 11405 11406 11407 17522 17523 17524 17525 17526 17527 +48 11402 11403 11404 11405 11406 11407 11420 11421 11422 11423 11424 11425 11426 11427 11428 11429 11430 11431 16508 16509 16510 16511 16512 16513 9920 9921 9922 9923 9924 9925 9914 9915 9916 9917 9918 9919 9908 9909 9910 9911 9912 9913 17774 17775 17776 17777 17778 17779 +48 9908 9909 9910 9911 9912 9913 9914 9915 9916 9917 9918 9919 9920 9921 9922 9923 9924 9925 16760 16761 16762 16763 16764 16765 8372 8373 8374 8375 8376 8377 8366 8367 8368 8369 8370 8371 8348 8349 8350 8351 8352 8353 18026 18027 18028 18029 18030 18031 +48 8336 8337 8338 8339 8340 8341 8342 8343 8344 8345 8346 8347 8348 8349 8350 8351 8352 8353 18278 18279 18280 18281 18282 18283 6680 6681 6682 6683 6684 6685 6674 6675 6676 6677 6678 6679 6668 6669 6670 6671 6672 6673 19256 19257 19258 19259 19260 19261 +48 8348 8349 8350 8351 8352 8353 8366 8367 8368 8369 8370 8371 8372 8373 8374 8375 8376 8377 17012 17013 17014 17015 17016 17017 6704 6705 6706 6707 6708 6709 6698 6699 6700 6701 6702 6703 6680 6681 6682 6683 6684 6685 18278 18279 18280 18281 18282 18283 +48 14846 14847 14848 14849 14850 14851 14852 14853 14854 14855 14856 14857 14858 14859 14860 14861 14862 14863 17276 17277 17278 17279 17280 17281 13256 13257 13258 13259 13260 13261 13250 13251 13252 13253 13254 13255 13244 13245 13246 13247 13248 13249 18536 18537 18538 18539 18540 18541 +36 13274 13275 13276 13277 13278 13279 13256 13257 13258 13259 13260 13261 14858 14859 14860 14861 14862 14863 13268 13269 13270 13271 13272 13273 17276 17277 17278 17279 17280 17281 16010 16011 16012 16013 16014 16015 +48 13256 13257 13258 13259 13260 13261 13268 13269 13270 13271 13272 13273 13274 13275 13276 13277 13278 13279 16262 16263 16264 16265 16266 16267 11456 11457 11458 11459 11460 11461 11450 11451 11452 11453 11454 11455 11444 11445 11446 11447 11448 11449 17528 17529 17530 17531 17532 17533 +48 11444 11445 11446 11447 11448 11449 11450 11451 11452 11453 11454 11455 11456 11457 11458 11459 11460 11461 16514 16515 16516 16517 16518 16519 9950 9951 9952 9953 9954 9955 9944 9945 9946 9947 9948 9949 9938 9939 9940 9941 9942 9943 17780 17781 17782 17783 17784 17785 +48 9938 9939 9940 9941 9942 9943 9944 9945 9946 9947 9948 9949 9950 9951 9952 9953 9954 9955 16766 16767 16768 16769 16770 16771 8402 8403 8404 8405 8406 8407 8396 8397 8398 8399 8400 8401 8390 8391 8392 8393 8394 8395 18032 18033 18034 18035 18036 18037 +48 8390 8391 8392 8393 8394 8395 8396 8397 8398 8399 8400 8401 8402 8403 8404 8405 8406 8407 17018 17019 17020 17021 17022 17023 6734 6735 6736 6737 6738 6739 6728 6729 6730 6731 6732 6733 6722 6723 6724 6725 6726 6727 18284 18285 18286 18287 18288 18289 +48 14876 14877 14878 14879 14880 14881 14882 14883 14884 14885 14886 14887 14888 14889 14890 14891 14892 14893 17282 17283 17284 17285 17286 17287 13304 13305 13306 13307 13308 13309 13298 13299 13300 13301 13302 13303 13292 13293 13294 13295 13296 13297 18542 18543 18544 18545 18546 18547 +36 13322 13323 13324 13325 13326 13327 13304 13305 13306 13307 13308 13309 14888 14889 14890 14891 14892 14893 13316 13317 13318 13319 13320 13321 17282 17283 17284 17285 17286 17287 16016 16017 16018 16019 16020 16021 +48 13292 13293 13294 13295 13296 13297 13298 13299 13300 13301 13302 13303 13304 13305 13306 13307 13308 13309 17534 17535 17536 17537 17538 17539 11474 11475 11476 11477 11478 11479 11534 11535 11536 11537 11538 11539 11498 11499 11500 11501 11502 11503 18716 18717 18718 18719 18720 18721 +48 13304 13305 13306 13307 13308 13309 13316 13317 13318 13319 13320 13321 13322 13323 13324 13325 13326 13327 16268 16269 16270 16271 16272 16273 11486 11487 11488 11489 11490 11491 11480 11481 11482 11483 11484 11485 11474 11475 11476 11477 11478 11479 17534 17535 17536 17537 17538 17539 +48 11498 11499 11500 11501 11502 11503 11534 11535 11536 11537 11538 11539 11474 11475 11476 11477 11478 11479 17786 17787 17788 17789 17790 17791 9968 9969 9970 9971 9972 9973 19406 19407 19408 19409 19410 19411 18926 18927 18928 18929 18930 18931 18938 18939 18940 18941 18942 18943 +48 11474 11475 11476 11477 11478 11479 11480 11481 11482 11483 11484 11485 11486 11487 11488 11489 11490 11491 16520 16521 16522 16523 16524 16525 9980 9981 9982 9983 9984 9985 9974 9975 9976 9977 9978 9979 9968 9969 9970 9971 9972 9973 17786 17787 17788 17789 17790 17791 +48 18926 18927 18928 18929 18930 18931 19406 19407 19408 19409 19410 19411 9968 9969 9970 9971 9972 9973 18038 18039 18040 18041 18042 18043 8420 8421 8422 8423 8424 8425 8480 8481 8482 8483 8484 8485 8444 8445 8446 8447 8448 8449 19142 19143 19144 19145 19146 19147 +48 9968 9969 9970 9971 9972 9973 9974 9975 9976 9977 9978 9979 9980 9981 9982 9983 9984 9985 16772 16773 16774 16775 16776 16777 8432 8433 8434 8435 8436 8437 8426 8427 8428 8429 8430 8431 8420 8421 8422 8423 8424 8425 18038 18039 18040 18041 18042 18043 +48 8444 8445 8446 8447 8448 8449 8480 8481 8482 8483 8484 8485 8420 8421 8422 8423 8424 8425 18290 18291 18292 18293 18294 18295 6752 6753 6754 6755 6756 6757 6812 6813 6814 6815 6816 6817 6776 6777 6778 6779 6780 6781 19274 19275 19276 19277 19278 19279 +48 8420 8421 8422 8423 8424 8425 8426 8427 8428 8429 8430 8431 8432 8433 8434 8435 8436 8437 17024 17025 17026 17027 17028 17029 6764 6765 6766 6767 6768 6769 6758 6759 6760 6761 6762 6763 6752 6753 6754 6755 6756 6757 18290 18291 18292 18293 18294 18295 +48 14906 14907 14908 14909 14910 14911 14912 14913 14914 14915 14916 14917 14918 14919 14920 14921 14922 14923 17288 17289 17290 17291 17292 17293 13352 13353 13354 13355 13356 13357 13346 13347 13348 13349 13350 13351 13340 13341 13342 13343 13344 13345 18548 18549 18550 18551 18552 18553 +36 13370 13371 13372 13373 13374 13375 13352 13353 13354 13355 13356 13357 14918 14919 14920 14921 14922 14923 13364 13365 13366 13367 13368 13369 17288 17289 17290 17291 17292 17293 16022 16023 16024 16025 16026 16027 +48 13340 13341 13342 13343 13344 13345 13346 13347 13348 13349 13350 13351 13352 13353 13354 13355 13356 13357 17540 17541 17542 17543 17544 17545 11522 11523 11524 11525 11526 11527 11516 11517 11518 11519 11520 11521 11510 11511 11512 11513 11514 11515 18710 18711 18712 18713 18714 18715 +48 13352 13353 13354 13355 13356 13357 13364 13365 13366 13367 13368 13369 13370 13371 13372 13373 13374 13375 16274 16275 16276 16277 16278 16279 11546 11547 11548 11549 11550 11551 11540 11541 11542 11543 11544 11545 11522 11523 11524 11525 11526 11527 17540 17541 17542 17543 17544 17545 +48 11522 11523 11524 11525 11526 11527 11540 11541 11542 11543 11544 11545 11546 11547 11548 11549 11550 11551 16526 16527 16528 16529 16530 16531 10010 10011 10012 10013 10014 10015 10004 10005 10006 10007 10008 10009 9998 9999 10000 10001 10002 10003 17792 17793 17794 17795 17796 17797 +48 9998 9999 10000 10001 10002 10003 10004 10005 10006 10007 10008 10009 10010 10011 10012 10013 10014 10015 16778 16779 16780 16781 16782 16783 8492 8493 8494 8495 8496 8497 8486 8487 8488 8489 8490 8491 8468 8469 8470 8471 8472 8473 18044 18045 18046 18047 18048 18049 +48 8456 8457 8458 8459 8460 8461 8462 8463 8464 8465 8466 8467 8468 8469 8470 8471 8472 8473 18296 18297 18298 18299 18300 18301 6800 6801 6802 6803 6804 6805 6794 6795 6796 6797 6798 6799 6788 6789 6790 6791 6792 6793 19268 19269 19270 19271 19272 19273 +48 8468 8469 8470 8471 8472 8473 8486 8487 8488 8489 8490 8491 8492 8493 8494 8495 8496 8497 17030 17031 17032 17033 17034 17035 6824 6825 6826 6827 6828 6829 6818 6819 6820 6821 6822 6823 6800 6801 6802 6803 6804 6805 18296 18297 18298 18299 18300 18301 +48 14936 14937 14938 14939 14940 14941 14942 14943 14944 14945 14946 14947 14948 14949 14950 14951 14952 14953 17294 17295 17296 17297 17298 17299 13400 13401 13402 13403 13404 13405 13394 13395 13396 13397 13398 13399 13388 13389 13390 13391 13392 13393 18554 18555 18556 18557 18558 18559 +36 13418 13419 13420 13421 13422 13423 13400 13401 13402 13403 13404 13405 14948 14949 14950 14951 14952 14953 13412 13413 13414 13415 13416 13417 17294 17295 17296 17297 17298 17299 16028 16029 16030 16031 16032 16033 +48 13400 13401 13402 13403 13404 13405 13412 13413 13414 13415 13416 13417 13418 13419 13420 13421 13422 13423 16280 16281 16282 16283 16284 16285 11576 11577 11578 11579 11580 11581 11570 11571 11572 11573 11574 11575 11564 11565 11566 11567 11568 11569 17546 17547 17548 17549 17550 17551 +48 11564 11565 11566 11567 11568 11569 11570 11571 11572 11573 11574 11575 11576 11577 11578 11579 11580 11581 16532 16533 16534 16535 16536 16537 10040 10041 10042 10043 10044 10045 10034 10035 10036 10037 10038 10039 10028 10029 10030 10031 10032 10033 17798 17799 17800 17801 17802 17803 +48 10028 10029 10030 10031 10032 10033 10034 10035 10036 10037 10038 10039 10040 10041 10042 10043 10044 10045 16784 16785 16786 16787 16788 16789 8522 8523 8524 8525 8526 8527 8516 8517 8518 8519 8520 8521 8510 8511 8512 8513 8514 8515 18050 18051 18052 18053 18054 18055 +48 8510 8511 8512 8513 8514 8515 8516 8517 8518 8519 8520 8521 8522 8523 8524 8525 8526 8527 17036 17037 17038 17039 17040 17041 6854 6855 6856 6857 6858 6859 6848 6849 6850 6851 6852 6853 6842 6843 6844 6845 6846 6847 18302 18303 18304 18305 18306 18307 +48 14966 14967 14968 14969 14970 14971 14972 14973 14974 14975 14976 14977 14978 14979 14980 14981 14982 14983 17300 17301 17302 17303 17304 17305 13448 13449 13450 13451 13452 13453 13442 13443 13444 13445 13446 13447 13436 13437 13438 13439 13440 13441 18560 18561 18562 18563 18564 18565 +36 13466 13467 13468 13469 13470 13471 13448 13449 13450 13451 13452 13453 14978 14979 14980 14981 14982 14983 13460 13461 13462 13463 13464 13465 17300 17301 17302 17303 17304 17305 16034 16035 16036 16037 16038 16039 +48 13436 13437 13438 13439 13440 13441 13442 13443 13444 13445 13446 13447 13448 13449 13450 13451 13452 13453 17552 17553 17554 17555 17556 17557 11594 11595 11596 11597 11598 11599 11654 11655 11656 11657 11658 11659 11618 11619 11620 11621 11622 11623 18728 18729 18730 18731 18732 18733 +48 13448 13449 13450 13451 13452 13453 13460 13461 13462 13463 13464 13465 13466 13467 13468 13469 13470 13471 16286 16287 16288 16289 16290 16291 11606 11607 11608 11609 11610 11611 11600 11601 11602 11603 11604 11605 11594 11595 11596 11597 11598 11599 17552 17553 17554 17555 17556 17557 +48 11594 11595 11596 11597 11598 11599 11600 11601 11602 11603 11604 11605 11606 11607 11608 11609 11610 11611 16538 16539 16540 16541 16542 16543 10070 10071 10072 10073 10074 10075 10064 10065 10066 10067 10068 10069 10058 10059 10060 10061 10062 10063 17804 17805 17806 17807 17808 17809 +48 10058 10059 10060 10061 10062 10063 10064 10065 10066 10067 10068 10069 10070 10071 10072 10073 10074 10075 16790 16791 16792 16793 16794 16795 8552 8553 8554 8555 8556 8557 8546 8547 8548 8549 8550 8551 8540 8541 8542 8543 8544 8545 18056 18057 18058 18059 18060 18061 +48 8564 8565 8566 8567 8568 8569 8600 8601 8602 8603 8604 8605 8540 8541 8542 8543 8544 8545 18308 18309 18310 18311 18312 18313 6872 6873 6874 6875 6876 6877 6932 6933 6934 6935 6936 6937 6896 6897 6898 6899 6900 6901 19286 19287 19288 19289 19290 19291 +48 8540 8541 8542 8543 8544 8545 8546 8547 8548 8549 8550 8551 8552 8553 8554 8555 8556 8557 17042 17043 17044 17045 17046 17047 6884 6885 6886 6887 6888 6889 6878 6879 6880 6881 6882 6883 6872 6873 6874 6875 6876 6877 18308 18309 18310 18311 18312 18313 +48 14996 14997 14998 14999 15000 15001 15002 15003 15004 15005 15006 15007 15008 15009 15010 15011 15012 15013 17306 17307 17308 17309 17310 17311 13496 13497 13498 13499 13500 13501 13490 13491 13492 13493 13494 13495 13484 13485 13486 13487 13488 13489 18566 18567 18568 18569 18570 18571 +36 13514 13515 13516 13517 13518 13519 13496 13497 13498 13499 13500 13501 15008 15009 15010 15011 15012 15013 13508 13509 13510 13511 13512 13513 17306 17307 17308 17309 17310 17311 16040 16041 16042 16043 16044 16045 +48 13484 13485 13486 13487 13488 13489 13490 13491 13492 13493 13494 13495 13496 13497 13498 13499 13500 13501 17558 17559 17560 17561 17562 17563 11642 11643 11644 11645 11646 11647 11636 11637 11638 11639 11640 11641 11630 11631 11632 11633 11634 11635 18722 18723 18724 18725 18726 18727 +48 13496 13497 13498 13499 13500 13501 13508 13509 13510 13511 13512 13513 13514 13515 13516 13517 13518 13519 16292 16293 16294 16295 16296 16297 11666 11667 11668 11669 11670 11671 11660 11661 11662 11663 11664 11665 11642 11643 11644 11645 11646 11647 17558 17559 17560 17561 17562 17563 +48 11642 11643 11644 11645 11646 11647 11660 11661 11662 11663 11664 11665 11666 11667 11668 11669 11670 11671 16544 16545 16546 16547 16548 16549 10100 10101 10102 10103 10104 10105 10094 10095 10096 10097 10098 10099 10088 10089 10090 10091 10092 10093 17810 17811 17812 17813 17814 17815 +48 10088 10089 10090 10091 10092 10093 10094 10095 10096 10097 10098 10099 10100 10101 10102 10103 10104 10105 16796 16797 16798 16799 16800 16801 8612 8613 8614 8615 8616 8617 8606 8607 8608 8609 8610 8611 8588 8589 8590 8591 8592 8593 18062 18063 18064 18065 18066 18067 +48 8576 8577 8578 8579 8580 8581 8582 8583 8584 8585 8586 8587 8588 8589 8590 8591 8592 8593 18314 18315 18316 18317 18318 18319 6920 6921 6922 6923 6924 6925 6914 6915 6916 6917 6918 6919 6908 6909 6910 6911 6912 6913 19280 19281 19282 19283 19284 19285 +48 8588 8589 8590 8591 8592 8593 8606 8607 8608 8609 8610 8611 8612 8613 8614 8615 8616 8617 17048 17049 17050 17051 17052 17053 6944 6945 6946 6947 6948 6949 6938 6939 6940 6941 6942 6943 6920 6921 6922 6923 6924 6925 18314 18315 18316 18317 18318 18319 +48 15026 15027 15028 15029 15030 15031 15032 15033 15034 15035 15036 15037 15038 15039 15040 15041 15042 15043 17312 17313 17314 17315 17316 17317 13544 13545 13546 13547 13548 13549 13538 13539 13540 13541 13542 13543 13532 13533 13534 13535 13536 13537 18572 18573 18574 18575 18576 18577 +36 13562 13563 13564 13565 13566 13567 13544 13545 13546 13547 13548 13549 15038 15039 15040 15041 15042 15043 13556 13557 13558 13559 13560 13561 17312 17313 17314 17315 17316 17317 16046 16047 16048 16049 16050 16051 +48 13544 13545 13546 13547 13548 13549 13556 13557 13558 13559 13560 13561 13562 13563 13564 13565 13566 13567 16298 16299 16300 16301 16302 16303 11696 11697 11698 11699 11700 11701 11690 11691 11692 11693 11694 11695 11684 11685 11686 11687 11688 11689 17564 17565 17566 17567 17568 17569 +48 11684 11685 11686 11687 11688 11689 11690 11691 11692 11693 11694 11695 11696 11697 11698 11699 11700 11701 16550 16551 16552 16553 16554 16555 10130 10131 10132 10133 10134 10135 10124 10125 10126 10127 10128 10129 10118 10119 10120 10121 10122 10123 17816 17817 17818 17819 17820 17821 +48 10118 10119 10120 10121 10122 10123 10124 10125 10126 10127 10128 10129 10130 10131 10132 10133 10134 10135 16802 16803 16804 16805 16806 16807 8642 8643 8644 8645 8646 8647 8636 8637 8638 8639 8640 8641 8630 8631 8632 8633 8634 8635 18068 18069 18070 18071 18072 18073 +48 8630 8631 8632 8633 8634 8635 8636 8637 8638 8639 8640 8641 8642 8643 8644 8645 8646 8647 17054 17055 17056 17057 17058 17059 6974 6975 6976 6977 6978 6979 6968 6969 6970 6971 6972 6973 6962 6963 6964 6965 6966 6967 18320 18321 18322 18323 18324 18325 +48 15056 15057 15058 15059 15060 15061 15062 15063 15064 15065 15066 15067 15068 15069 15070 15071 15072 15073 17318 17319 17320 17321 17322 17323 13592 13593 13594 13595 13596 13597 13586 13587 13588 13589 13590 13591 13580 13581 13582 13583 13584 13585 18578 18579 18580 18581 18582 18583 +36 13610 13611 13612 13613 13614 13615 13592 13593 13594 13595 13596 13597 15068 15069 15070 15071 15072 15073 13604 13605 13606 13607 13608 13609 17318 17319 17320 17321 17322 17323 16052 16053 16054 16055 16056 16057 +48 13580 13581 13582 13583 13584 13585 13586 13587 13588 13589 13590 13591 13592 13593 13594 13595 13596 13597 17570 17571 17572 17573 17574 17575 11714 11715 11716 11717 11718 11719 11774 11775 11776 11777 11778 11779 11738 11739 11740 11741 11742 11743 18740 18741 18742 18743 18744 18745 +48 13592 13593 13594 13595 13596 13597 13604 13605 13606 13607 13608 13609 13610 13611 13612 13613 13614 13615 16304 16305 16306 16307 16308 16309 11726 11727 11728 11729 11730 11731 11720 11721 11722 11723 11724 11725 11714 11715 11716 11717 11718 11719 17570 17571 17572 17573 17574 17575 +48 11738 11739 11740 11741 11742 11743 11774 11775 11776 11777 11778 11779 11714 11715 11716 11717 11718 11719 17822 17823 17824 17825 17826 17827 10148 10149 10150 10151 10152 10153 19412 19413 19414 19415 19416 19417 18986 18987 18988 18989 18990 18991 18998 18999 19000 19001 19002 19003 +48 11714 11715 11716 11717 11718 11719 11720 11721 11722 11723 11724 11725 11726 11727 11728 11729 11730 11731 16556 16557 16558 16559 16560 16561 10160 10161 10162 10163 10164 10165 10154 10155 10156 10157 10158 10159 10148 10149 10150 10151 10152 10153 17822 17823 17824 17825 17826 17827 +48 18986 18987 18988 18989 18990 18991 19412 19413 19414 19415 19416 19417 10148 10149 10150 10151 10152 10153 18074 18075 18076 18077 18078 18079 8660 8661 8662 8663 8664 8665 8720 8721 8722 8723 8724 8725 8684 8685 8686 8687 8688 8689 19166 19167 19168 19169 19170 19171 +48 10148 10149 10150 10151 10152 10153 10154 10155 10156 10157 10158 10159 10160 10161 10162 10163 10164 10165 16808 16809 16810 16811 16812 16813 8672 8673 8674 8675 8676 8677 8666 8667 8668 8669 8670 8671 8660 8661 8662 8663 8664 8665 18074 18075 18076 18077 18078 18079 +48 8684 8685 8686 8687 8688 8689 8720 8721 8722 8723 8724 8725 8660 8661 8662 8663 8664 8665 18326 18327 18328 18329 18330 18331 6992 6993 6994 6995 6996 6997 7052 7053 7054 7055 7056 7057 7016 7017 7018 7019 7020 7021 19298 19299 19300 19301 19302 19303 +48 8660 8661 8662 8663 8664 8665 8666 8667 8668 8669 8670 8671 8672 8673 8674 8675 8676 8677 17060 17061 17062 17063 17064 17065 7004 7005 7006 7007 7008 7009 6998 6999 7000 7001 7002 7003 6992 6993 6994 6995 6996 6997 18326 18327 18328 18329 18330 18331 +48 15086 15087 15088 15089 15090 15091 15092 15093 15094 15095 15096 15097 15098 15099 15100 15101 15102 15103 17324 17325 17326 17327 17328 17329 13640 13641 13642 13643 13644 13645 13634 13635 13636 13637 13638 13639 13628 13629 13630 13631 13632 13633 18584 18585 18586 18587 18588 18589 +36 13658 13659 13660 13661 13662 13663 13640 13641 13642 13643 13644 13645 15098 15099 15100 15101 15102 15103 13652 13653 13654 13655 13656 13657 17324 17325 17326 17327 17328 17329 16058 16059 16060 16061 16062 16063 +48 13628 13629 13630 13631 13632 13633 13634 13635 13636 13637 13638 13639 13640 13641 13642 13643 13644 13645 17576 17577 17578 17579 17580 17581 11762 11763 11764 11765 11766 11767 11756 11757 11758 11759 11760 11761 11750 11751 11752 11753 11754 11755 18734 18735 18736 18737 18738 18739 +48 13640 13641 13642 13643 13644 13645 13652 13653 13654 13655 13656 13657 13658 13659 13660 13661 13662 13663 16310 16311 16312 16313 16314 16315 11786 11787 11788 11789 11790 11791 11780 11781 11782 11783 11784 11785 11762 11763 11764 11765 11766 11767 17576 17577 17578 17579 17580 17581 +48 11762 11763 11764 11765 11766 11767 11780 11781 11782 11783 11784 11785 11786 11787 11788 11789 11790 11791 16562 16563 16564 16565 16566 16567 10190 10191 10192 10193 10194 10195 10184 10185 10186 10187 10188 10189 10178 10179 10180 10181 10182 10183 17828 17829 17830 17831 17832 17833 +48 10178 10179 10180 10181 10182 10183 10184 10185 10186 10187 10188 10189 10190 10191 10192 10193 10194 10195 16814 16815 16816 16817 16818 16819 8732 8733 8734 8735 8736 8737 8726 8727 8728 8729 8730 8731 8708 8709 8710 8711 8712 8713 18080 18081 18082 18083 18084 18085 +48 8696 8697 8698 8699 8700 8701 8702 8703 8704 8705 8706 8707 8708 8709 8710 8711 8712 8713 18332 18333 18334 18335 18336 18337 7040 7041 7042 7043 7044 7045 7034 7035 7036 7037 7038 7039 7028 7029 7030 7031 7032 7033 19292 19293 19294 19295 19296 19297 +48 8708 8709 8710 8711 8712 8713 8726 8727 8728 8729 8730 8731 8732 8733 8734 8735 8736 8737 17066 17067 17068 17069 17070 17071 7064 7065 7066 7067 7068 7069 7058 7059 7060 7061 7062 7063 7040 7041 7042 7043 7044 7045 18332 18333 18334 18335 18336 18337 +48 15116 15117 15118 15119 15120 15121 15122 15123 15124 15125 15126 15127 15128 15129 15130 15131 15132 15133 17330 17331 17332 17333 17334 17335 13688 13689 13690 13691 13692 13693 13682 13683 13684 13685 13686 13687 13676 13677 13678 13679 13680 13681 18590 18591 18592 18593 18594 18595 +36 13706 13707 13708 13709 13710 13711 13688 13689 13690 13691 13692 13693 15128 15129 15130 15131 15132 15133 13700 13701 13702 13703 13704 13705 17330 17331 17332 17333 17334 17335 16064 16065 16066 16067 16068 16069 +48 13688 13689 13690 13691 13692 13693 13700 13701 13702 13703 13704 13705 13706 13707 13708 13709 13710 13711 16316 16317 16318 16319 16320 16321 11816 11817 11818 11819 11820 11821 11810 11811 11812 11813 11814 11815 11804 11805 11806 11807 11808 11809 17582 17583 17584 17585 17586 17587 +48 11804 11805 11806 11807 11808 11809 11810 11811 11812 11813 11814 11815 11816 11817 11818 11819 11820 11821 16568 16569 16570 16571 16572 16573 10220 10221 10222 10223 10224 10225 10214 10215 10216 10217 10218 10219 10208 10209 10210 10211 10212 10213 17834 17835 17836 17837 17838 17839 +48 10208 10209 10210 10211 10212 10213 10214 10215 10216 10217 10218 10219 10220 10221 10222 10223 10224 10225 16820 16821 16822 16823 16824 16825 8762 8763 8764 8765 8766 8767 8756 8757 8758 8759 8760 8761 8750 8751 8752 8753 8754 8755 18086 18087 18088 18089 18090 18091 +48 8750 8751 8752 8753 8754 8755 8756 8757 8758 8759 8760 8761 8762 8763 8764 8765 8766 8767 17072 17073 17074 17075 17076 17077 7094 7095 7096 7097 7098 7099 7088 7089 7090 7091 7092 7093 7082 7083 7084 7085 7086 7087 18338 18339 18340 18341 18342 18343 +48 15146 15147 15148 15149 15150 15151 15152 15153 15154 15155 15156 15157 15158 15159 15160 15161 15162 15163 17336 17337 17338 17339 17340 17341 13736 13737 13738 13739 13740 13741 13730 13731 13732 13733 13734 13735 13724 13725 13726 13727 13728 13729 18596 18597 18598 18599 18600 18601 +36 13754 13755 13756 13757 13758 13759 13736 13737 13738 13739 13740 13741 15158 15159 15160 15161 15162 15163 13748 13749 13750 13751 13752 13753 17336 17337 17338 17339 17340 17341 16070 16071 16072 16073 16074 16075 +48 13724 13725 13726 13727 13728 13729 13730 13731 13732 13733 13734 13735 13736 13737 13738 13739 13740 13741 17588 17589 17590 17591 17592 17593 11834 11835 11836 11837 11838 11839 11894 11895 11896 11897 11898 11899 11858 11859 11860 11861 11862 11863 18752 18753 18754 18755 18756 18757 +48 13736 13737 13738 13739 13740 13741 13748 13749 13750 13751 13752 13753 13754 13755 13756 13757 13758 13759 16322 16323 16324 16325 16326 16327 11846 11847 11848 11849 11850 11851 11840 11841 11842 11843 11844 11845 11834 11835 11836 11837 11838 11839 17588 17589 17590 17591 17592 17593 +48 11834 11835 11836 11837 11838 11839 11840 11841 11842 11843 11844 11845 11846 11847 11848 11849 11850 11851 16574 16575 16576 16577 16578 16579 10250 10251 10252 10253 10254 10255 10244 10245 10246 10247 10248 10249 10238 10239 10240 10241 10242 10243 17840 17841 17842 17843 17844 17845 +48 10238 10239 10240 10241 10242 10243 10244 10245 10246 10247 10248 10249 10250 10251 10252 10253 10254 10255 16826 16827 16828 16829 16830 16831 8792 8793 8794 8795 8796 8797 8786 8787 8788 8789 8790 8791 8780 8781 8782 8783 8784 8785 18092 18093 18094 18095 18096 18097 +48 8804 8805 8806 8807 8808 8809 8840 8841 8842 8843 8844 8845 8780 8781 8782 8783 8784 8785 18344 18345 18346 18347 18348 18349 7112 7113 7114 7115 7116 7117 7172 7173 7174 7175 7176 7177 7136 7137 7138 7139 7140 7141 19310 19311 19312 19313 19314 19315 +48 8780 8781 8782 8783 8784 8785 8786 8787 8788 8789 8790 8791 8792 8793 8794 8795 8796 8797 17078 17079 17080 17081 17082 17083 7124 7125 7126 7127 7128 7129 7118 7119 7120 7121 7122 7123 7112 7113 7114 7115 7116 7117 18344 18345 18346 18347 18348 18349 +48 15176 15177 15178 15179 15180 15181 15182 15183 15184 15185 15186 15187 15188 15189 15190 15191 15192 15193 17342 17343 17344 17345 17346 17347 13784 13785 13786 13787 13788 13789 13778 13779 13780 13781 13782 13783 13772 13773 13774 13775 13776 13777 18602 18603 18604 18605 18606 18607 +36 13802 13803 13804 13805 13806 13807 13784 13785 13786 13787 13788 13789 15188 15189 15190 15191 15192 15193 13796 13797 13798 13799 13800 13801 17342 17343 17344 17345 17346 17347 16076 16077 16078 16079 16080 16081 +48 13772 13773 13774 13775 13776 13777 13778 13779 13780 13781 13782 13783 13784 13785 13786 13787 13788 13789 17594 17595 17596 17597 17598 17599 11882 11883 11884 11885 11886 11887 11876 11877 11878 11879 11880 11881 11870 11871 11872 11873 11874 11875 18746 18747 18748 18749 18750 18751 +48 13784 13785 13786 13787 13788 13789 13796 13797 13798 13799 13800 13801 13802 13803 13804 13805 13806 13807 16328 16329 16330 16331 16332 16333 11906 11907 11908 11909 11910 11911 11900 11901 11902 11903 11904 11905 11882 11883 11884 11885 11886 11887 17594 17595 17596 17597 17598 17599 +48 11882 11883 11884 11885 11886 11887 11900 11901 11902 11903 11904 11905 11906 11907 11908 11909 11910 11911 16580 16581 16582 16583 16584 16585 10280 10281 10282 10283 10284 10285 10274 10275 10276 10277 10278 10279 10268 10269 10270 10271 10272 10273 17846 17847 17848 17849 17850 17851 +48 10268 10269 10270 10271 10272 10273 10274 10275 10276 10277 10278 10279 10280 10281 10282 10283 10284 10285 16832 16833 16834 16835 16836 16837 8852 8853 8854 8855 8856 8857 8846 8847 8848 8849 8850 8851 8828 8829 8830 8831 8832 8833 18098 18099 18100 18101 18102 18103 +48 8816 8817 8818 8819 8820 8821 8822 8823 8824 8825 8826 8827 8828 8829 8830 8831 8832 8833 18350 18351 18352 18353 18354 18355 7160 7161 7162 7163 7164 7165 7154 7155 7156 7157 7158 7159 7148 7149 7150 7151 7152 7153 19304 19305 19306 19307 19308 19309 +48 8828 8829 8830 8831 8832 8833 8846 8847 8848 8849 8850 8851 8852 8853 8854 8855 8856 8857 17084 17085 17086 17087 17088 17089 7184 7185 7186 7187 7188 7189 7178 7179 7180 7181 7182 7183 7160 7161 7162 7163 7164 7165 18350 18351 18352 18353 18354 18355 +48 15206 15207 15208 15209 15210 15211 15212 15213 15214 15215 15216 15217 15218 15219 15220 15221 15222 15223 17348 17349 17350 17351 17352 17353 13832 13833 13834 13835 13836 13837 13826 13827 13828 13829 13830 13831 13820 13821 13822 13823 13824 13825 18608 18609 18610 18611 18612 18613 +36 13850 13851 13852 13853 13854 13855 13832 13833 13834 13835 13836 13837 15218 15219 15220 15221 15222 15223 13844 13845 13846 13847 13848 13849 17348 17349 17350 17351 17352 17353 16082 16083 16084 16085 16086 16087 +48 13832 13833 13834 13835 13836 13837 13844 13845 13846 13847 13848 13849 13850 13851 13852 13853 13854 13855 16334 16335 16336 16337 16338 16339 11936 11937 11938 11939 11940 11941 11930 11931 11932 11933 11934 11935 11924 11925 11926 11927 11928 11929 17600 17601 17602 17603 17604 17605 +48 11924 11925 11926 11927 11928 11929 11930 11931 11932 11933 11934 11935 11936 11937 11938 11939 11940 11941 16586 16587 16588 16589 16590 16591 10310 10311 10312 10313 10314 10315 10304 10305 10306 10307 10308 10309 10298 10299 10300 10301 10302 10303 17852 17853 17854 17855 17856 17857 +48 10298 10299 10300 10301 10302 10303 10304 10305 10306 10307 10308 10309 10310 10311 10312 10313 10314 10315 16838 16839 16840 16841 16842 16843 8882 8883 8884 8885 8886 8887 8876 8877 8878 8879 8880 8881 8870 8871 8872 8873 8874 8875 18104 18105 18106 18107 18108 18109 +48 8870 8871 8872 8873 8874 8875 8876 8877 8878 8879 8880 8881 8882 8883 8884 8885 8886 8887 17090 17091 17092 17093 17094 17095 7214 7215 7216 7217 7218 7219 7208 7209 7210 7211 7212 7213 7202 7203 7204 7205 7206 7207 18356 18357 18358 18359 18360 18361 +48 15236 15237 15238 15239 15240 15241 15242 15243 15244 15245 15246 15247 15248 15249 15250 15251 15252 15253 17354 17355 17356 17357 17358 17359 13880 13881 13882 13883 13884 13885 13874 13875 13876 13877 13878 13879 13868 13869 13870 13871 13872 13873 18614 18615 18616 18617 18618 18619 +36 13898 13899 13900 13901 13902 13903 13880 13881 13882 13883 13884 13885 15248 15249 15250 15251 15252 15253 13892 13893 13894 13895 13896 13897 17354 17355 17356 17357 17358 17359 16088 16089 16090 16091 16092 16093 +48 13868 13869 13870 13871 13872 13873 13874 13875 13876 13877 13878 13879 13880 13881 13882 13883 13884 13885 17606 17607 17608 17609 17610 17611 11954 11955 11956 11957 11958 11959 12014 12015 12016 12017 12018 12019 11978 11979 11980 11981 11982 11983 18764 18765 18766 18767 18768 18769 +48 13880 13881 13882 13883 13884 13885 13892 13893 13894 13895 13896 13897 13898 13899 13900 13901 13902 13903 16340 16341 16342 16343 16344 16345 11966 11967 11968 11969 11970 11971 11960 11961 11962 11963 11964 11965 11954 11955 11956 11957 11958 11959 17606 17607 17608 17609 17610 17611 +48 11978 11979 11980 11981 11982 11983 12014 12015 12016 12017 12018 12019 11954 11955 11956 11957 11958 11959 17858 17859 17860 17861 17862 17863 10328 10329 10330 10331 10332 10333 19418 19419 19420 19421 19422 19423 19046 19047 19048 19049 19050 19051 19058 19059 19060 19061 19062 19063 +48 11954 11955 11956 11957 11958 11959 11960 11961 11962 11963 11964 11965 11966 11967 11968 11969 11970 11971 16592 16593 16594 16595 16596 16597 10340 10341 10342 10343 10344 10345 10334 10335 10336 10337 10338 10339 10328 10329 10330 10331 10332 10333 17858 17859 17860 17861 17862 17863 +48 19046 19047 19048 19049 19050 19051 19418 19419 19420 19421 19422 19423 10328 10329 10330 10331 10332 10333 18110 18111 18112 18113 18114 18115 8900 8901 8902 8903 8904 8905 8960 8961 8962 8963 8964 8965 8924 8925 8926 8927 8928 8929 19190 19191 19192 19193 19194 19195 +48 10328 10329 10330 10331 10332 10333 10334 10335 10336 10337 10338 10339 10340 10341 10342 10343 10344 10345 16844 16845 16846 16847 16848 16849 8912 8913 8914 8915 8916 8917 8906 8907 8908 8909 8910 8911 8900 8901 8902 8903 8904 8905 18110 18111 18112 18113 18114 18115 +48 8924 8925 8926 8927 8928 8929 8960 8961 8962 8963 8964 8965 8900 8901 8902 8903 8904 8905 18362 18363 18364 18365 18366 18367 7232 7233 7234 7235 7236 7237 7292 7293 7294 7295 7296 7297 7256 7257 7258 7259 7260 7261 19322 19323 19324 19325 19326 19327 +48 8900 8901 8902 8903 8904 8905 8906 8907 8908 8909 8910 8911 8912 8913 8914 8915 8916 8917 17096 17097 17098 17099 17100 17101 7244 7245 7246 7247 7248 7249 7238 7239 7240 7241 7242 7243 7232 7233 7234 7235 7236 7237 18362 18363 18364 18365 18366 18367 +48 15266 15267 15268 15269 15270 15271 15272 15273 15274 15275 15276 15277 15278 15279 15280 15281 15282 15283 17360 17361 17362 17363 17364 17365 13928 13929 13930 13931 13932 13933 13922 13923 13924 13925 13926 13927 13916 13917 13918 13919 13920 13921 18620 18621 18622 18623 18624 18625 +36 13946 13947 13948 13949 13950 13951 13928 13929 13930 13931 13932 13933 15278 15279 15280 15281 15282 15283 13940 13941 13942 13943 13944 13945 17360 17361 17362 17363 17364 17365 16094 16095 16096 16097 16098 16099 +48 13916 13917 13918 13919 13920 13921 13922 13923 13924 13925 13926 13927 13928 13929 13930 13931 13932 13933 17612 17613 17614 17615 17616 17617 12002 12003 12004 12005 12006 12007 11996 11997 11998 11999 12000 12001 11990 11991 11992 11993 11994 11995 18758 18759 18760 18761 18762 18763 +48 13928 13929 13930 13931 13932 13933 13940 13941 13942 13943 13944 13945 13946 13947 13948 13949 13950 13951 16346 16347 16348 16349 16350 16351 12026 12027 12028 12029 12030 12031 12020 12021 12022 12023 12024 12025 12002 12003 12004 12005 12006 12007 17612 17613 17614 17615 17616 17617 +48 12002 12003 12004 12005 12006 12007 12020 12021 12022 12023 12024 12025 12026 12027 12028 12029 12030 12031 16598 16599 16600 16601 16602 16603 10370 10371 10372 10373 10374 10375 10364 10365 10366 10367 10368 10369 10358 10359 10360 10361 10362 10363 17864 17865 17866 17867 17868 17869 +48 10358 10359 10360 10361 10362 10363 10364 10365 10366 10367 10368 10369 10370 10371 10372 10373 10374 10375 16850 16851 16852 16853 16854 16855 8972 8973 8974 8975 8976 8977 8966 8967 8968 8969 8970 8971 8948 8949 8950 8951 8952 8953 18116 18117 18118 18119 18120 18121 +48 8936 8937 8938 8939 8940 8941 8942 8943 8944 8945 8946 8947 8948 8949 8950 8951 8952 8953 18368 18369 18370 18371 18372 18373 7280 7281 7282 7283 7284 7285 7274 7275 7276 7277 7278 7279 7268 7269 7270 7271 7272 7273 19316 19317 19318 19319 19320 19321 +48 8948 8949 8950 8951 8952 8953 8966 8967 8968 8969 8970 8971 8972 8973 8974 8975 8976 8977 17102 17103 17104 17105 17106 17107 7304 7305 7306 7307 7308 7309 7298 7299 7300 7301 7302 7303 7280 7281 7282 7283 7284 7285 18368 18369 18370 18371 18372 18373 +48 15296 15297 15298 15299 15300 15301 15302 15303 15304 15305 15306 15307 15308 15309 15310 15311 15312 15313 17366 17367 17368 17369 17370 17371 13976 13977 13978 13979 13980 13981 13970 13971 13972 13973 13974 13975 13964 13965 13966 13967 13968 13969 18626 18627 18628 18629 18630 18631 +36 13994 13995 13996 13997 13998 13999 13976 13977 13978 13979 13980 13981 15308 15309 15310 15311 15312 15313 13988 13989 13990 13991 13992 13993 17366 17367 17368 17369 17370 17371 16100 16101 16102 16103 16104 16105 +48 13976 13977 13978 13979 13980 13981 13988 13989 13990 13991 13992 13993 13994 13995 13996 13997 13998 13999 16352 16353 16354 16355 16356 16357 12056 12057 12058 12059 12060 12061 12050 12051 12052 12053 12054 12055 12044 12045 12046 12047 12048 12049 17618 17619 17620 17621 17622 17623 +48 12044 12045 12046 12047 12048 12049 12050 12051 12052 12053 12054 12055 12056 12057 12058 12059 12060 12061 16604 16605 16606 16607 16608 16609 10400 10401 10402 10403 10404 10405 10394 10395 10396 10397 10398 10399 10388 10389 10390 10391 10392 10393 17870 17871 17872 17873 17874 17875 +48 10388 10389 10390 10391 10392 10393 10394 10395 10396 10397 10398 10399 10400 10401 10402 10403 10404 10405 16856 16857 16858 16859 16860 16861 9002 9003 9004 9005 9006 9007 8996 8997 8998 8999 9000 9001 8990 8991 8992 8993 8994 8995 18122 18123 18124 18125 18126 18127 +48 8990 8991 8992 8993 8994 8995 8996 8997 8998 8999 9000 9001 9002 9003 9004 9005 9006 9007 17108 17109 17110 17111 17112 17113 7334 7335 7336 7337 7338 7339 7328 7329 7330 7331 7332 7333 7322 7323 7324 7325 7326 7327 18374 18375 18376 18377 18378 18379 +48 15326 15327 15328 15329 15330 15331 15332 15333 15334 15335 15336 15337 15338 15339 15340 15341 15342 15343 17372 17373 17374 17375 17376 17377 14024 14025 14026 14027 14028 14029 14018 14019 14020 14021 14022 14023 14012 14013 14014 14015 14016 14017 18632 18633 18634 18635 18636 18637 +36 14042 14043 14044 14045 14046 14047 14024 14025 14026 14027 14028 14029 15338 15339 15340 15341 15342 15343 14036 14037 14038 14039 14040 14041 17372 17373 17374 17375 17376 17377 16106 16107 16108 16109 16110 16111 +48 14012 14013 14014 14015 14016 14017 14018 14019 14020 14021 14022 14023 14024 14025 14026 14027 14028 14029 17624 17625 17626 17627 17628 17629 12074 12075 12076 12077 12078 12079 12134 12135 12136 12137 12138 12139 12098 12099 12100 12101 12102 12103 18776 18777 18778 18779 18780 18781 +48 14024 14025 14026 14027 14028 14029 14036 14037 14038 14039 14040 14041 14042 14043 14044 14045 14046 14047 16358 16359 16360 16361 16362 16363 12086 12087 12088 12089 12090 12091 12080 12081 12082 12083 12084 12085 12074 12075 12076 12077 12078 12079 17624 17625 17626 17627 17628 17629 +48 12098 12099 12100 12101 12102 12103 12134 12135 12136 12137 12138 12139 12074 12075 12076 12077 12078 12079 17876 17877 17878 17879 17880 17881 10418 10419 10420 10421 10422 10423 10478 10479 10480 10481 10482 10483 10442 10443 10444 10445 10446 10447 19070 19071 19072 19073 19074 19075 +48 12074 12075 12076 12077 12078 12079 12080 12081 12082 12083 12084 12085 12086 12087 12088 12089 12090 12091 16610 16611 16612 16613 16614 16615 10430 10431 10432 10433 10434 10435 10424 10425 10426 10427 10428 10429 10418 10419 10420 10421 10422 10423 17876 17877 17878 17879 17880 17881 +48 10442 10443 10444 10445 10446 10447 10478 10479 10480 10481 10482 10483 10418 10419 10420 10421 10422 10423 18128 18129 18130 18131 18132 18133 9020 9021 9022 9023 9024 9025 9080 9081 9082 9083 9084 9085 9044 9045 9046 9047 9048 9049 19202 19203 19204 19205 19206 19207 +48 10418 10419 10420 10421 10422 10423 10424 10425 10426 10427 10428 10429 10430 10431 10432 10433 10434 10435 16862 16863 16864 16865 16866 16867 9032 9033 9034 9035 9036 9037 9026 9027 9028 9029 9030 9031 9020 9021 9022 9023 9024 9025 18128 18129 18130 18131 18132 18133 +48 9044 9045 9046 9047 9048 9049 9080 9081 9082 9083 9084 9085 9020 9021 9022 9023 9024 9025 18380 18381 18382 18383 18384 18385 7352 7353 7354 7355 7356 7357 7412 7413 7414 7415 7416 7417 7376 7377 7378 7379 7380 7381 19334 19335 19336 19337 19338 19339 +48 9020 9021 9022 9023 9024 9025 9026 9027 9028 9029 9030 9031 9032 9033 9034 9035 9036 9037 17114 17115 17116 17117 17118 17119 7364 7365 7366 7367 7368 7369 7358 7359 7360 7361 7362 7363 7352 7353 7354 7355 7356 7357 18380 18381 18382 18383 18384 18385 +48 15356 15357 15358 15359 15360 15361 15362 15363 15364 15365 15366 15367 15368 15369 15370 15371 15372 15373 17378 17379 17380 17381 17382 17383 14072 14073 14074 14075 14076 14077 14066 14067 14068 14069 14070 14071 14060 14061 14062 14063 14064 14065 18638 18639 18640 18641 18642 18643 +36 14090 14091 14092 14093 14094 14095 14072 14073 14074 14075 14076 14077 15368 15369 15370 15371 15372 15373 14084 14085 14086 14087 14088 14089 17378 17379 17380 17381 17382 17383 16112 16113 16114 16115 16116 16117 +48 14060 14061 14062 14063 14064 14065 14066 14067 14068 14069 14070 14071 14072 14073 14074 14075 14076 14077 17630 17631 17632 17633 17634 17635 12122 12123 12124 12125 12126 12127 12116 12117 12118 12119 12120 12121 12110 12111 12112 12113 12114 12115 18770 18771 18772 18773 18774 18775 +48 14072 14073 14074 14075 14076 14077 14084 14085 14086 14087 14088 14089 14090 14091 14092 14093 14094 14095 16364 16365 16366 16367 16368 16369 12146 12147 12148 12149 12150 12151 12140 12141 12142 12143 12144 12145 12122 12123 12124 12125 12126 12127 17630 17631 17632 17633 17634 17635 +48 12110 12111 12112 12113 12114 12115 12116 12117 12118 12119 12120 12121 12122 12123 12124 12125 12126 12127 17882 17883 17884 17885 17886 17887 10466 10467 10468 10469 10470 10471 10460 10461 10462 10463 10464 10465 10454 10455 10456 10457 10458 10459 19064 19065 19066 19067 19068 19069 +48 12122 12123 12124 12125 12126 12127 12140 12141 12142 12143 12144 12145 12146 12147 12148 12149 12150 12151 16616 16617 16618 16619 16620 16621 10490 10491 10492 10493 10494 10495 10484 10485 10486 10487 10488 10489 10466 10467 10468 10469 10470 10471 17882 17883 17884 17885 17886 17887 +48 10454 10455 10456 10457 10458 10459 10460 10461 10462 10463 10464 10465 10466 10467 10468 10469 10470 10471 18134 18135 18136 18137 18138 18139 9068 9069 9070 9071 9072 9073 9062 9063 9064 9065 9066 9067 9056 9057 9058 9059 9060 9061 19196 19197 19198 19199 19200 19201 +48 10466 10467 10468 10469 10470 10471 10484 10485 10486 10487 10488 10489 10490 10491 10492 10493 10494 10495 16868 16869 16870 16871 16872 16873 9092 9093 9094 9095 9096 9097 9086 9087 9088 9089 9090 9091 9068 9069 9070 9071 9072 9073 18134 18135 18136 18137 18138 18139 +48 9056 9057 9058 9059 9060 9061 9062 9063 9064 9065 9066 9067 9068 9069 9070 9071 9072 9073 18386 18387 18388 18389 18390 18391 7400 7401 7402 7403 7404 7405 7394 7395 7396 7397 7398 7399 7388 7389 7390 7391 7392 7393 19328 19329 19330 19331 19332 19333 +48 9068 9069 9070 9071 9072 9073 9086 9087 9088 9089 9090 9091 9092 9093 9094 9095 9096 9097 17120 17121 17122 17123 17124 17125 7424 7425 7426 7427 7428 7429 7418 7419 7420 7421 7422 7423 7400 7401 7402 7403 7404 7405 18386 18387 18388 18389 18390 18391 +48 15386 15387 15388 15389 15390 15391 15392 15393 15394 15395 15396 15397 15398 15399 15400 15401 15402 15403 17384 17385 17386 17387 17388 17389 14120 14121 14122 14123 14124 14125 14114 14115 14116 14117 14118 14119 14108 14109 14110 14111 14112 14113 18644 18645 18646 18647 18648 18649 +36 14138 14139 14140 14141 14142 14143 14120 14121 14122 14123 14124 14125 15398 15399 15400 15401 15402 15403 14132 14133 14134 14135 14136 14137 17384 17385 17386 17387 17388 17389 16118 16119 16120 16121 16122 16123 +48 14120 14121 14122 14123 14124 14125 14132 14133 14134 14135 14136 14137 14138 14139 14140 14141 14142 14143 16370 16371 16372 16373 16374 16375 12176 12177 12178 12179 12180 12181 12170 12171 12172 12173 12174 12175 12164 12165 12166 12167 12168 12169 17636 17637 17638 17639 17640 17641 +48 12164 12165 12166 12167 12168 12169 12170 12171 12172 12173 12174 12175 12176 12177 12178 12179 12180 12181 16622 16623 16624 16625 16626 16627 10520 10521 10522 10523 10524 10525 10514 10515 10516 10517 10518 10519 10508 10509 10510 10511 10512 10513 17888 17889 17890 17891 17892 17893 +48 10508 10509 10510 10511 10512 10513 10514 10515 10516 10517 10518 10519 10520 10521 10522 10523 10524 10525 16874 16875 16876 16877 16878 16879 9122 9123 9124 9125 9126 9127 9116 9117 9118 9119 9120 9121 9110 9111 9112 9113 9114 9115 18140 18141 18142 18143 18144 18145 +48 9110 9111 9112 9113 9114 9115 9116 9117 9118 9119 9120 9121 9122 9123 9124 9125 9126 9127 17126 17127 17128 17129 17130 17131 7454 7455 7456 7457 7458 7459 7448 7449 7450 7451 7452 7453 7442 7443 7444 7445 7446 7447 18392 18393 18394 18395 18396 18397 +48 4310 4311 4312 4313 4314 4315 5810 5811 5812 5813 5814 5815 5816 5817 5818 5819 5820 5821 19424 19425 19426 19427 19428 19429 127 128 129 130 131 132 121 122 123 124 125 126 115 116 117 118 119 120 5780 5781 5782 5783 5784 5785 +48 5816 5817 5818 5819 5820 5821 5840 5841 5842 5843 5844 5845 5846 5847 5848 5849 5850 5851 19430 19431 19432 19433 19434 19435 139 140 141 142 143 144 133 134 135 136 137 138 127 128 129 130 131 132 19424 19425 19426 19427 19428 19429 +48 5846 5847 5848 5849 5850 5851 5906 5907 5908 5909 5910 5911 5870 5871 5872 5873 5874 5875 19436 19437 19438 19439 19440 19441 151 152 153 154 155 156 145 146 147 148 149 150 139 140 141 142 143 144 19430 19431 19432 19433 19434 19435 +48 5870 5871 5872 5873 5874 5875 5876 5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 19442 19443 19444 19445 19446 19447 163 164 165 166 167 168 157 158 159 160 161 162 151 152 153 154 155 156 19436 19437 19438 19439 19440 19441 +48 5882 5883 5884 5885 5886 5887 5960 5961 5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 19448 19449 19450 19451 19452 19453 175 176 177 178 179 180 169 170 171 172 173 174 163 164 165 166 167 168 19442 19443 19444 19445 19446 19447 +48 5966 5967 5968 5969 5970 5971 5990 5991 5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 19454 19455 19456 19457 19458 19459 187 188 189 190 191 192 181 182 183 184 185 186 175 176 177 178 179 180 19448 19449 19450 19451 19452 19453 +48 5996 5997 5998 5999 6000 6001 6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 19460 19461 19462 19463 19464 19465 199 200 201 202 203 204 193 194 195 196 197 198 187 188 189 190 191 192 19454 19455 19456 19457 19458 19459 +48 6032 6033 6034 6035 6036 6037 6086 6087 6088 6089 6090 6091 6092 6093 6094 6095 6096 6097 19466 19467 19468 19469 19470 19471 211 212 213 214 215 216 205 206 207 208 209 210 199 200 201 202 203 204 19460 19461 19462 19463 19464 19465 +48 6092 6093 6094 6095 6096 6097 6116 6117 6118 6119 6120 6121 6122 6123 6124 6125 6126 6127 19472 19473 19474 19475 19476 19477 223 224 225 226 227 228 217 218 219 220 221 222 211 212 213 214 215 216 19466 19467 19468 19469 19470 19471 +48 6122 6123 6124 6125 6126 6127 6146 6147 6148 6149 6150 6151 6152 6153 6154 6155 6156 6157 19478 19479 19480 19481 19482 19483 235 236 237 238 239 240 229 230 231 232 233 234 223 224 225 226 227 228 19472 19473 19474 19475 19476 19477 +48 6152 6153 6154 6155 6156 6157 6206 6207 6208 6209 6210 6211 6200 6201 6202 6203 6204 6205 19484 19485 19486 19487 19488 19489 247 248 249 250 251 252 241 242 243 244 245 246 235 236 237 238 239 240 19478 19479 19480 19481 19482 19483 +48 6200 6201 6202 6203 6204 6205 6236 6237 6238 6239 6240 6241 6242 6243 6244 6245 6246 6247 19490 19491 19492 19493 19494 19495 259 260 261 262 263 264 253 254 255 256 257 258 247 248 249 250 251 252 19484 19485 19486 19487 19488 19489 +48 6242 6243 6244 6245 6246 6247 6266 6267 6268 6269 6270 6271 6272 6273 6274 6275 6276 6277 19496 19497 19498 19499 19500 19501 271 272 273 274 275 276 265 266 267 268 269 270 259 260 261 262 263 264 19490 19491 19492 19493 19494 19495 +48 6272 6273 6274 6275 6276 6277 6326 6327 6328 6329 6330 6331 6320 6321 6322 6323 6324 6325 19502 19503 19504 19505 19506 19507 283 284 285 286 287 288 277 278 279 280 281 282 271 272 273 274 275 276 19496 19497 19498 19499 19500 19501 +48 6320 6321 6322 6323 6324 6325 6356 6357 6358 6359 6360 6361 6362 6363 6364 6365 6366 6367 19508 19509 19510 19511 19512 19513 295 296 297 298 299 300 289 290 291 292 293 294 283 284 285 286 287 288 19502 19503 19504 19505 19506 19507 +48 6362 6363 6364 6365 6366 6367 6386 6387 6388 6389 6390 6391 6392 6393 6394 6395 6396 6397 19514 19515 19516 19517 19518 19519 307 308 309 310 311 312 301 302 303 304 305 306 295 296 297 298 299 300 19508 19509 19510 19511 19512 19513 +48 6392 6393 6394 6395 6396 6397 6446 6447 6448 6449 6450 6451 6440 6441 6442 6443 6444 6445 19520 19521 19522 19523 19524 19525 319 320 321 322 323 324 313 314 315 316 317 318 307 308 309 310 311 312 19514 19515 19516 19517 19518 19519 +48 6440 6441 6442 6443 6444 6445 6476 6477 6478 6479 6480 6481 6482 6483 6484 6485 6486 6487 19526 19527 19528 19529 19530 19531 331 332 333 334 335 336 325 326 327 328 329 330 319 320 321 322 323 324 19520 19521 19522 19523 19524 19525 +48 6482 6483 6484 6485 6486 6487 6506 6507 6508 6509 6510 6511 6512 6513 6514 6515 6516 6517 19532 19533 19534 19535 19536 19537 343 344 345 346 347 348 337 338 339 340 341 342 331 332 333 334 335 336 19526 19527 19528 19529 19530 19531 +48 6512 6513 6514 6515 6516 6517 6566 6567 6568 6569 6570 6571 6560 6561 6562 6563 6564 6565 19538 19539 19540 19541 19542 19543 355 356 357 358 359 360 349 350 351 352 353 354 343 344 345 346 347 348 19532 19533 19534 19535 19536 19537 +48 6560 6561 6562 6563 6564 6565 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 19544 19545 19546 19547 19548 19549 367 368 369 370 371 372 361 362 363 364 365 366 355 356 357 358 359 360 19538 19539 19540 19541 19542 19543 +48 6602 6603 6604 6605 6606 6607 6626 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 6637 19550 19551 19552 19553 19554 19555 379 380 381 382 383 384 373 374 375 376 377 378 367 368 369 370 371 372 19544 19545 19546 19547 19548 19549 +48 6632 6633 6634 6635 6636 6637 6686 6687 6688 6689 6690 6691 6680 6681 6682 6683 6684 6685 19556 19557 19558 19559 19560 19561 391 392 393 394 395 396 385 386 387 388 389 390 379 380 381 382 383 384 19550 19551 19552 19553 19554 19555 +48 6680 6681 6682 6683 6684 6685 6716 6717 6718 6719 6720 6721 6722 6723 6724 6725 6726 6727 19562 19563 19564 19565 19566 19567 403 404 405 406 407 408 397 398 399 400 401 402 391 392 393 394 395 396 19556 19557 19558 19559 19560 19561 +48 6722 6723 6724 6725 6726 6727 6746 6747 6748 6749 6750 6751 6752 6753 6754 6755 6756 6757 19568 19569 19570 19571 19572 19573 415 416 417 418 419 420 409 410 411 412 413 414 403 404 405 406 407 408 19562 19563 19564 19565 19566 19567 +48 6752 6753 6754 6755 6756 6757 6806 6807 6808 6809 6810 6811 6800 6801 6802 6803 6804 6805 19574 19575 19576 19577 19578 19579 427 428 429 430 431 432 421 422 423 424 425 426 415 416 417 418 419 420 19568 19569 19570 19571 19572 19573 +48 6800 6801 6802 6803 6804 6805 6836 6837 6838 6839 6840 6841 6842 6843 6844 6845 6846 6847 19580 19581 19582 19583 19584 19585 439 440 441 442 443 444 433 434 435 436 437 438 427 428 429 430 431 432 19574 19575 19576 19577 19578 19579 +48 6842 6843 6844 6845 6846 6847 6866 6867 6868 6869 6870 6871 6872 6873 6874 6875 6876 6877 19586 19587 19588 19589 19590 19591 451 452 453 454 455 456 445 446 447 448 449 450 439 440 441 442 443 444 19580 19581 19582 19583 19584 19585 +48 6872 6873 6874 6875 6876 6877 6926 6927 6928 6929 6930 6931 6920 6921 6922 6923 6924 6925 19592 19593 19594 19595 19596 19597 463 464 465 466 467 468 457 458 459 460 461 462 451 452 453 454 455 456 19586 19587 19588 19589 19590 19591 +48 6920 6921 6922 6923 6924 6925 6956 6957 6958 6959 6960 6961 6962 6963 6964 6965 6966 6967 19598 19599 19600 19601 19602 19603 475 476 477 478 479 480 469 470 471 472 473 474 463 464 465 466 467 468 19592 19593 19594 19595 19596 19597 +48 6962 6963 6964 6965 6966 6967 6986 6987 6988 6989 6990 6991 6992 6993 6994 6995 6996 6997 19604 19605 19606 19607 19608 19609 487 488 489 490 491 492 481 482 483 484 485 486 475 476 477 478 479 480 19598 19599 19600 19601 19602 19603 +48 6992 6993 6994 6995 6996 6997 7046 7047 7048 7049 7050 7051 7040 7041 7042 7043 7044 7045 19610 19611 19612 19613 19614 19615 499 500 501 502 503 504 493 494 495 496 497 498 487 488 489 490 491 492 19604 19605 19606 19607 19608 19609 +48 7040 7041 7042 7043 7044 7045 7076 7077 7078 7079 7080 7081 7082 7083 7084 7085 7086 7087 19616 19617 19618 19619 19620 19621 511 512 513 514 515 516 505 506 507 508 509 510 499 500 501 502 503 504 19610 19611 19612 19613 19614 19615 +48 7082 7083 7084 7085 7086 7087 7106 7107 7108 7109 7110 7111 7112 7113 7114 7115 7116 7117 19622 19623 19624 19625 19626 19627 523 524 525 526 527 528 517 518 519 520 521 522 511 512 513 514 515 516 19616 19617 19618 19619 19620 19621 +48 7112 7113 7114 7115 7116 7117 7166 7167 7168 7169 7170 7171 7160 7161 7162 7163 7164 7165 19628 19629 19630 19631 19632 19633 535 536 537 538 539 540 529 530 531 532 533 534 523 524 525 526 527 528 19622 19623 19624 19625 19626 19627 +48 7160 7161 7162 7163 7164 7165 7196 7197 7198 7199 7200 7201 7202 7203 7204 7205 7206 7207 19634 19635 19636 19637 19638 19639 547 548 549 550 551 552 541 542 543 544 545 546 535 536 537 538 539 540 19628 19629 19630 19631 19632 19633 +48 7202 7203 7204 7205 7206 7207 7226 7227 7228 7229 7230 7231 7232 7233 7234 7235 7236 7237 19640 19641 19642 19643 19644 19645 559 560 561 562 563 564 553 554 555 556 557 558 547 548 549 550 551 552 19634 19635 19636 19637 19638 19639 +48 7232 7233 7234 7235 7236 7237 7286 7287 7288 7289 7290 7291 7280 7281 7282 7283 7284 7285 19646 19647 19648 19649 19650 19651 571 572 573 574 575 576 565 566 567 568 569 570 559 560 561 562 563 564 19640 19641 19642 19643 19644 19645 +48 7280 7281 7282 7283 7284 7285 7316 7317 7318 7319 7320 7321 7322 7323 7324 7325 7326 7327 19652 19653 19654 19655 19656 19657 583 584 585 586 587 588 577 578 579 580 581 582 571 572 573 574 575 576 19646 19647 19648 19649 19650 19651 +48 7322 7323 7324 7325 7326 7327 7346 7347 7348 7349 7350 7351 7352 7353 7354 7355 7356 7357 19658 19659 19660 19661 19662 19663 595 596 597 598 599 600 589 590 591 592 593 594 583 584 585 586 587 588 19652 19653 19654 19655 19656 19657 +48 7352 7353 7354 7355 7356 7357 7406 7407 7408 7409 7410 7411 7400 7401 7402 7403 7404 7405 19664 19665 19666 19667 19668 19669 607 608 609 610 611 612 601 602 603 604 605 606 595 596 597 598 599 600 19658 19659 19660 19661 19662 19663 +48 7400 7401 7402 7403 7404 7405 7436 7437 7438 7439 7440 7441 7442 7443 7444 7445 7446 7447 19670 19671 19672 19673 19674 19675 619 620 621 622 623 624 613 614 615 616 617 618 607 608 609 610 611 612 19664 19665 19666 19667 19668 19669 +48 7442 7443 7444 7445 7446 7447 7466 7467 7468 7469 7470 7471 2083 2084 2085 2086 2087 2088 19676 19677 19678 19679 19680 19681 631 632 633 634 635 636 625 626 627 628 629 630 619 620 621 622 623 624 19670 19671 19672 19673 19674 19675 +48 6056 6057 6058 6059 6060 6061 6062 6063 6064 6065 6066 6067 5816 5817 5818 5819 5820 5821 19424 19425 19426 19427 19428 19429 127 128 129 130 131 132 15446 15447 15448 15449 15450 15451 15422 15423 15424 15425 15426 15427 19682 19683 19684 19685 19686 19687 +48 19382 19383 19384 19385 19386 19387 19388 19389 19390 19391 19392 19393 6092 6093 6094 6095 6096 6097 19466 19467 19468 19469 19470 19471 211 212 213 214 215 216 15470 15471 15472 15473 15474 15475 15464 15465 15466 15467 15468 15469 19688 19689 19690 19691 19692 19693 +48 6176 6177 6178 6179 6180 6181 6212 6213 6214 6215 6216 6217 6152 6153 6154 6155 6156 6157 19478 19479 19480 19481 19482 19483 235 236 237 238 239 240 15506 15507 15508 15509 15510 15511 15482 15483 15484 15485 15486 15487 19694 19695 19696 19697 19698 19699 +48 6188 6189 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201 6202 6203 6204 6205 19484 19485 19486 19487 19488 19489 247 248 249 250 251 252 15500 15501 15502 15503 15504 15505 15494 15495 15496 15497 15498 15499 19700 19701 19702 19703 19704 19705 +48 6296 6297 6298 6299 6300 6301 6332 6333 6334 6335 6336 6337 6272 6273 6274 6275 6276 6277 19496 19497 19498 19499 19500 19501 271 272 273 274 275 276 15536 15537 15538 15539 15540 15541 15512 15513 15514 15515 15516 15517 19706 19707 19708 19709 19710 19711 +48 6308 6309 6310 6311 6312 6313 6314 6315 6316 6317 6318 6319 6320 6321 6322 6323 6324 6325 19502 19503 19504 19505 19506 19507 283 284 285 286 287 288 15530 15531 15532 15533 15534 15535 15524 15525 15526 15527 15528 15529 19712 19713 19714 19715 19716 19717 +48 6416 6417 6418 6419 6420 6421 6452 6453 6454 6455 6456 6457 6392 6393 6394 6395 6396 6397 19514 19515 19516 19517 19518 19519 307 308 309 310 311 312 15566 15567 15568 15569 15570 15571 15542 15543 15544 15545 15546 15547 19718 19719 19720 19721 19722 19723 +48 6428 6429 6430 6431 6432 6433 6434 6435 6436 6437 6438 6439 6440 6441 6442 6443 6444 6445 19520 19521 19522 19523 19524 19525 319 320 321 322 323 324 15560 15561 15562 15563 15564 15565 15554 15555 15556 15557 15558 15559 19724 19725 19726 19727 19728 19729 +48 6536 6537 6538 6539 6540 6541 6572 6573 6574 6575 6576 6577 6512 6513 6514 6515 6516 6517 19532 19533 19534 19535 19536 19537 343 344 345 346 347 348 15596 15597 15598 15599 15600 15601 15572 15573 15574 15575 15576 15577 19730 19731 19732 19733 19734 19735 +48 6548 6549 6550 6551 6552 6553 6554 6555 6556 6557 6558 6559 6560 6561 6562 6563 6564 6565 19538 19539 19540 19541 19542 19543 355 356 357 358 359 360 15590 15591 15592 15593 15594 15595 15584 15585 15586 15587 15588 15589 19736 19737 19738 19739 19740 19741 +48 6656 6657 6658 6659 6660 6661 6692 6693 6694 6695 6696 6697 6632 6633 6634 6635 6636 6637 19550 19551 19552 19553 19554 19555 379 380 381 382 383 384 15626 15627 15628 15629 15630 15631 15602 15603 15604 15605 15606 15607 19742 19743 19744 19745 19746 19747 +48 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679 6680 6681 6682 6683 6684 6685 19556 19557 19558 19559 19560 19561 391 392 393 394 395 396 15620 15621 15622 15623 15624 15625 15614 15615 15616 15617 15618 15619 19748 19749 19750 19751 19752 19753 +48 6776 6777 6778 6779 6780 6781 6812 6813 6814 6815 6816 6817 6752 6753 6754 6755 6756 6757 19568 19569 19570 19571 19572 19573 415 416 417 418 419 420 15656 15657 15658 15659 15660 15661 15632 15633 15634 15635 15636 15637 19754 19755 19756 19757 19758 19759 +48 6788 6789 6790 6791 6792 6793 6794 6795 6796 6797 6798 6799 6800 6801 6802 6803 6804 6805 19574 19575 19576 19577 19578 19579 427 428 429 430 431 432 15650 15651 15652 15653 15654 15655 15644 15645 15646 15647 15648 15649 19760 19761 19762 19763 19764 19765 +48 6896 6897 6898 6899 6900 6901 6932 6933 6934 6935 6936 6937 6872 6873 6874 6875 6876 6877 19586 19587 19588 19589 19590 19591 451 452 453 454 455 456 15686 15687 15688 15689 15690 15691 15662 15663 15664 15665 15666 15667 19766 19767 19768 19769 19770 19771 +48 6908 6909 6910 6911 6912 6913 6914 6915 6916 6917 6918 6919 6920 6921 6922 6923 6924 6925 19592 19593 19594 19595 19596 19597 463 464 465 466 467 468 15680 15681 15682 15683 15684 15685 15674 15675 15676 15677 15678 15679 19772 19773 19774 19775 19776 19777 +48 7016 7017 7018 7019 7020 7021 7052 7053 7054 7055 7056 7057 6992 6993 6994 6995 6996 6997 19604 19605 19606 19607 19608 19609 487 488 489 490 491 492 15716 15717 15718 15719 15720 15721 15692 15693 15694 15695 15696 15697 19778 19779 19780 19781 19782 19783 +48 7028 7029 7030 7031 7032 7033 7034 7035 7036 7037 7038 7039 7040 7041 7042 7043 7044 7045 19610 19611 19612 19613 19614 19615 499 500 501 502 503 504 15710 15711 15712 15713 15714 15715 15704 15705 15706 15707 15708 15709 19784 19785 19786 19787 19788 19789 +48 7136 7137 7138 7139 7140 7141 7172 7173 7174 7175 7176 7177 7112 7113 7114 7115 7116 7117 19622 19623 19624 19625 19626 19627 523 524 525 526 527 528 15746 15747 15748 15749 15750 15751 15722 15723 15724 15725 15726 15727 19790 19791 19792 19793 19794 19795 +48 7148 7149 7150 7151 7152 7153 7154 7155 7156 7157 7158 7159 7160 7161 7162 7163 7164 7165 19628 19629 19630 19631 19632 19633 535 536 537 538 539 540 15740 15741 15742 15743 15744 15745 15734 15735 15736 15737 15738 15739 19796 19797 19798 19799 19800 19801 +48 7256 7257 7258 7259 7260 7261 7292 7293 7294 7295 7296 7297 7232 7233 7234 7235 7236 7237 19640 19641 19642 19643 19644 19645 559 560 561 562 563 564 15776 15777 15778 15779 15780 15781 15752 15753 15754 15755 15756 15757 19802 19803 19804 19805 19806 19807 +48 7268 7269 7270 7271 7272 7273 7274 7275 7276 7277 7278 7279 7280 7281 7282 7283 7284 7285 19646 19647 19648 19649 19650 19651 571 572 573 574 575 576 15770 15771 15772 15773 15774 15775 15764 15765 15766 15767 15768 15769 19808 19809 19810 19811 19812 19813 +48 7376 7377 7378 7379 7380 7381 7412 7413 7414 7415 7416 7417 7352 7353 7354 7355 7356 7357 19658 19659 19660 19661 19662 19663 595 596 597 598 599 600 15806 15807 15808 15809 15810 15811 15782 15783 15784 15785 15786 15787 19814 19815 19816 19817 19818 19819 +48 7388 7389 7390 7391 7392 7393 7394 7395 7396 7397 7398 7399 7400 7401 7402 7403 7404 7405 19664 19665 19666 19667 19668 19669 607 608 609 610 611 612 15800 15801 15802 15803 15804 15805 15794 15795 15796 15797 15798 15799 19820 19821 19822 19823 19824 19825 +48 2053 2054 2055 2056 2057 2058 2095 2096 2097 2098 2099 2100 2083 2084 2085 2086 2087 2088 19676 19677 19678 19679 19680 19681 631 632 633 634 635 636 19832 19833 19834 19835 19836 19837 19826 19827 19828 19829 19830 19831 19838 19839 19840 19841 19842 19843 +30 19844 19845 19846 19847 19848 19849 19850 19851 19852 19853 19854 19855 19856 19857 19858 19859 19860 19861 19865 19866 19867 19862 19863 19864 19868 19869 19870 19871 19872 19873 +30 19862 19863 19864 19865 19866 19867 19859 19860 19861 19874 19875 19876 19877 19878 19879 19880 19881 19882 19886 19887 19888 19883 19884 19885 19889 19890 19891 19892 19893 19894 +30 19850 19851 19852 19895 19896 19897 19898 19899 19900 19901 19902 19903 19904 19905 19906 19907 19908 19909 19910 19911 19912 19859 19860 19861 19853 19854 19855 19856 19857 19858 +36 19859 19860 19861 19910 19911 19912 19907 19908 19909 19913 19914 19915 19916 19917 19918 19919 19920 19921 19922 19923 19924 19925 19926 19927 19928 19929 19930 19880 19881 19882 19874 19875 19876 19877 19878 19879 +30 19931 19932 19933 19934 19935 19936 19937 19938 19939 19940 19941 19942 19943 19944 19945 19946 19947 19948 19952 19953 19954 19949 19950 19951 19955 19956 19957 19958 19959 19960 +30 19949 19950 19951 19952 19953 19954 19946 19947 19948 19961 19962 19963 19964 19965 19966 19967 19968 19969 19973 19974 19975 19970 19971 19972 19976 19977 19978 19979 19980 19981 +30 19937 19938 19939 19982 19983 19984 19985 19986 19987 19988 19989 19990 19991 19992 19993 19994 19995 19996 19997 19998 19999 19946 19947 19948 19940 19941 19942 19943 19944 19945 +30 19844 19845 19846 19868 19869 19870 19871 19872 19873 19862 19863 19864 20000 20001 20002 19949 19950 19951 19955 19956 19957 19958 19959 19960 19931 19932 19933 20003 20004 20005 +30 20006 20007 20008 20009 20010 20011 20012 20013 20014 20015 20016 20017 20018 20019 20020 20021 20022 20023 20027 20028 20029 20024 20025 20026 20030 20031 20032 20033 20034 20035 +30 20012 20013 20014 20036 20037 20038 20039 20040 20041 20042 20043 20044 20045 20046 20047 20048 20049 20050 20051 20052 20053 20021 20022 20023 20015 20016 20017 20018 20019 20020 +30 20054 20055 20056 20057 20058 20059 20060 20061 20062 20063 20064 20065 20066 20067 20068 20069 20070 20071 20075 20076 20077 20072 20073 20074 20078 20079 20080 20081 20082 20083 +30 20060 20061 20062 20084 20085 20086 20087 20088 20089 20090 20091 20092 20093 20094 20095 20096 20097 20098 20099 20100 20101 20069 20070 20071 20063 20064 20065 20066 20067 20068 +30 20102 20103 20104 20105 20106 20107 20108 20109 20110 20111 20112 20113 20114 20115 20116 20117 20118 20119 20123 20124 20125 20120 20121 20122 20126 20127 20128 20129 20130 20131 +42 5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5981 5982 5983 20132 20133 20134 20135 20136 20137 19883 19884 19885 19889 19890 19891 19892 19893 19894 19862 19863 19864 20138 20139 20140 20141 20142 20143 +30 20108 20109 20110 20144 20145 20146 20147 20148 20149 20150 20151 20152 20153 20154 20155 20156 20157 20158 20159 20160 20161 20117 20118 20119 20111 20112 20113 20114 20115 20116 +39 20117 20118 20119 20159 20160 20161 20156 20157 20158 20162 20163 20164 20165 20166 20167 20168 20169 20170 20171 20172 20173 20180 20181 20182 20183 20184 20185 20174 20175 20176 20177 20178 20179 20186 20187 20188 20189 20190 20191 +42 20192 20193 20194 20195 20196 20197 20198 20199 20200 20201 20202 20203 5966 5967 5968 5969 5970 5971 20138 20139 20140 20141 20142 20143 19862 19863 19864 19868 19869 19870 19871 19872 19873 19844 19845 19846 20204 20205 20206 20207 20208 20209 +30 20210 20211 20212 20213 20214 20215 20216 20217 20218 20219 20220 20221 20222 20223 20224 20225 20226 20227 20231 20232 20233 20228 20229 20230 20234 20235 20236 20237 20238 20239 +30 19862 19863 19864 19889 19890 19891 19892 19893 19894 19883 19884 19885 20240 20241 20242 19970 19971 19972 19976 19977 19978 19979 19980 19981 19949 19950 19951 20000 20001 20002 +30 19931 19932 19933 19955 19956 19957 19958 19959 19960 19949 19950 19951 20243 20244 20245 20024 20025 20026 20030 20031 20032 20033 20034 20035 20006 20007 20008 20246 20247 20248 +30 20006 20007 20008 20030 20031 20032 20033 20034 20035 20024 20025 20026 20249 20250 20251 20072 20073 20074 20078 20079 20080 20081 20082 20083 20054 20055 20056 20252 20253 20254 +30 20054 20055 20056 20078 20079 20080 20081 20082 20083 20072 20073 20074 20255 20256 20257 20120 20121 20122 20126 20127 20128 20129 20130 20131 20102 20103 20104 20258 20259 20260 +27 20174 20175 20176 20177 20178 20179 20117 20118 20119 20069 20070 20071 20186 20187 20188 20189 20190 20191 20267 20268 20269 20261 20262 20263 20264 20265 20266 +27 20168 20169 20170 20171 20172 20173 20156 20157 20158 20096 20097 20098 20162 20163 20164 20165 20166 20167 20276 20277 20278 20270 20271 20272 20273 20274 20275 +42 20279 20280 20281 20282 20283 20284 20285 20286 20287 20288 20289 20290 5996 5997 5998 5999 6000 6001 20291 20292 20293 20294 20295 20296 19859 19860 19861 19853 19854 19855 19856 19857 19858 19850 19851 19852 20297 20298 20299 20300 20301 20302 +42 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 20303 20304 20305 20306 20307 20308 19880 19881 19882 19874 19875 19876 19877 19878 19879 19859 19860 19861 20291 20292 20293 20294 20295 20296 +30 19850 19851 19852 19853 19854 19855 19856 19857 19858 19859 19860 19861 20309 20310 20311 19946 19947 19948 19940 19941 19942 19943 19944 19945 19937 19938 19939 20312 20313 20314 +30 19859 19860 19861 19874 19875 19876 19877 19878 19879 19880 19881 19882 20315 20316 20317 19967 19968 19969 19961 19962 19963 19964 19965 19966 19946 19947 19948 20309 20310 20311 +30 19937 19938 19939 19940 19941 19942 19943 19944 19945 19946 19947 19948 20318 20319 20320 20021 20022 20023 20015 20016 20017 20018 20019 20020 20012 20013 20014 20321 20322 20323 +30 20012 20013 20014 20015 20016 20017 20018 20019 20020 20021 20022 20023 20324 20325 20326 20069 20070 20071 20063 20064 20065 20066 20067 20068 20060 20061 20062 20327 20328 20329 +30 20060 20061 20062 20063 20064 20065 20066 20067 20068 20069 20070 20071 20267 20268 20269 20117 20118 20119 20111 20112 20113 20114 20115 20116 20108 20109 20110 20330 20331 20332 +30 20108 20109 20110 20111 20112 20113 20114 20115 20116 20117 20118 20119 20333 20334 20335 20228 20229 20230 20234 20235 20236 20237 20238 20239 20210 20211 20212 20336 20337 20338 +42 20339 20340 20341 20342 20343 20344 20345 20346 20347 20348 20349 20350 6032 6033 6034 6035 6036 6037 20351 20352 20353 20354 20355 20356 19907 19908 19909 19901 19902 19903 19904 19905 19906 19898 19899 19900 20357 20358 20359 20360 20361 20362 +45 6032 6033 6034 6035 6036 6037 6038 6039 6040 6041 6042 6043 6044 6045 6046 6047 6048 6049 20363 20364 20365 20366 20367 20368 19919 19920 19921 19922 19923 19924 19913 19914 19915 19916 19917 19918 19907 19908 19909 20351 20352 20353 20354 20355 20356 +30 19898 19899 19900 19901 19902 19903 19904 19905 19906 19907 19908 19909 20369 20370 20371 19994 19995 19996 19988 19989 19990 19991 19992 19993 19985 19986 19987 20372 20373 20374 +30 19985 19986 19987 19988 19989 19990 19991 19992 19993 19994 19995 19996 20375 20376 20377 20048 20049 20050 20042 20043 20044 20045 20046 20047 20039 20040 20041 20378 20379 20380 +30 20039 20040 20041 20042 20043 20044 20045 20046 20047 20048 20049 20050 20381 20382 20383 20096 20097 20098 20090 20091 20092 20093 20094 20095 20087 20088 20089 20384 20385 20386 +30 20087 20088 20089 20090 20091 20092 20093 20094 20095 20096 20097 20098 20276 20277 20278 20156 20157 20158 20150 20151 20152 20153 20154 20155 20147 20148 20149 20387 20388 20389 +30 20147 20148 20149 20150 20151 20152 20153 20154 20155 20156 20157 20158 20390 20391 20392 20225 20226 20227 20219 20220 20221 20222 20223 20224 20216 20217 20218 20393 20394 20395 +39 20192 20193 20194 20195 20196 20197 20204 20205 20206 20207 20208 20209 19844 19845 19846 19847 19848 19849 19850 19851 19852 20297 20298 20299 20300 20301 20302 20279 20280 20281 20282 20283 20284 20396 20397 20398 20399 20400 20401 +39 20279 20280 20281 20282 20283 20284 20297 20298 20299 20300 20301 20302 19850 19851 19852 19895 19896 19897 19898 19899 19900 20357 20358 20359 20360 20361 20362 20339 20340 20341 20342 20343 20344 20402 20403 20404 20405 20406 20407 +24 19844 19845 19846 20003 20004 20005 19931 19932 19933 19934 19935 19936 19937 19938 19939 20312 20313 20314 19850 19851 19852 19847 19848 19849 +24 19850 19851 19852 20312 20313 20314 19937 19938 19939 19982 19983 19984 19985 19986 19987 20372 20373 20374 19898 19899 19900 19895 19896 19897 +24 19931 19932 19933 20246 20247 20248 20006 20007 20008 20009 20010 20011 20012 20013 20014 20321 20322 20323 19937 19938 19939 19934 19935 19936 +24 19937 19938 19939 20321 20322 20323 20012 20013 20014 20036 20037 20038 20039 20040 20041 20378 20379 20380 19985 19986 19987 19982 19983 19984 +24 20006 20007 20008 20252 20253 20254 20054 20055 20056 20057 20058 20059 20060 20061 20062 20327 20328 20329 20012 20013 20014 20009 20010 20011 +24 20012 20013 20014 20327 20328 20329 20060 20061 20062 20084 20085 20086 20087 20088 20089 20384 20385 20386 20039 20040 20041 20036 20037 20038 +24 20054 20055 20056 20258 20259 20260 20102 20103 20104 20105 20106 20107 20108 20109 20110 20330 20331 20332 20060 20061 20062 20057 20058 20059 +24 20060 20061 20062 20330 20331 20332 20108 20109 20110 20144 20145 20146 20147 20148 20149 20387 20388 20389 20087 20088 20089 20084 20085 20086 +24 20108 20109 20110 20336 20337 20338 20210 20211 20212 20213 20214 20215 20216 20217 20218 20393 20394 20395 20147 20148 20149 20144 20145 20146 +39 5966 5967 5968 5969 5970 5971 20138 20139 20140 20141 20142 20143 19862 19863 19864 19865 19866 19867 19859 19860 19861 20291 20292 20293 20294 20295 20296 5996 5997 5998 5999 6000 6001 5990 5991 5992 5993 5994 5995 +39 5996 5997 5998 5999 6000 6001 20291 20292 20293 20294 20295 20296 19859 19860 19861 19910 19911 19912 19907 19908 19909 20351 20352 20353 20354 20355 20356 6032 6033 6034 6035 6036 6037 6026 6027 6028 6029 6030 6031 +24 19862 19863 19864 20000 20001 20002 19949 19950 19951 19952 19953 19954 19946 19947 19948 20309 20310 20311 19859 19860 19861 19865 19866 19867 +24 19859 19860 19861 20309 20310 20311 19946 19947 19948 19997 19998 19999 19994 19995 19996 20369 20370 20371 19907 19908 19909 19910 19911 19912 +24 19949 19950 19951 20243 20244 20245 20024 20025 20026 20027 20028 20029 20021 20022 20023 20318 20319 20320 19946 19947 19948 19952 19953 19954 +24 19946 19947 19948 20318 20319 20320 20021 20022 20023 20051 20052 20053 20048 20049 20050 20375 20376 20377 19994 19995 19996 19997 19998 19999 +24 20024 20025 20026 20249 20250 20251 20072 20073 20074 20075 20076 20077 20069 20070 20071 20324 20325 20326 20021 20022 20023 20027 20028 20029 +24 20021 20022 20023 20324 20325 20326 20069 20070 20071 20099 20100 20101 20096 20097 20098 20381 20382 20383 20048 20049 20050 20051 20052 20053 +24 20072 20073 20074 20255 20256 20257 20120 20121 20122 20123 20124 20125 20117 20118 20119 20267 20268 20269 20069 20070 20071 20075 20076 20077 +24 20069 20070 20071 20267 20268 20269 20117 20118 20119 20159 20160 20161 20156 20157 20158 20276 20277 20278 20096 20097 20098 20099 20100 20101 +24 20117 20118 20119 20333 20334 20335 20228 20229 20230 20231 20232 20233 20225 20226 20227 20390 20391 20392 20156 20157 20158 20159 20160 20161 +39 5978 5979 5980 5981 5982 5983 20132 20133 20134 20135 20136 20137 19883 19884 19885 19886 19887 19888 19880 19881 19882 20303 20304 20305 20306 20307 20308 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 +45 6008 6009 6010 6011 6012 6013 20303 20304 20305 20306 20307 20308 19880 19881 19882 19925 19926 19927 19928 19929 19930 19919 19920 19921 19922 19923 19924 20363 20364 20365 20366 20367 20368 6044 6045 6046 6047 6048 6049 6050 6051 6052 6053 6054 6055 +24 19883 19884 19885 20240 20241 20242 19970 19971 19972 19973 19974 19975 19967 19968 19969 20315 20316 20317 19880 19881 19882 19886 19887 19888 +48 10688 10689 10690 10691 10692 10693 10682 10683 10684 10685 10686 10687 10604 10605 10606 10607 10608 10609 10622 10623 10624 10625 10626 10627 667 668 669 670 671 672 20408 20409 20410 20411 20412 20413 679 680 681 682 683 684 20414 20415 20416 20417 20418 20419 +48 10718 10719 10720 10721 10722 10723 10712 10713 10714 10715 10716 10717 10688 10689 10690 10691 10692 10693 20414 20415 20416 20417 20418 20419 679 680 681 682 683 684 20420 20421 20422 20423 20424 20425 691 692 693 694 695 696 20426 20427 20428 20429 20430 20431 +48 10754 10755 10756 10757 10758 10759 10748 10749 10750 10751 10752 10753 10718 10719 10720 10721 10722 10723 20426 20427 20428 20429 20430 20431 691 692 693 694 695 696 20432 20433 20434 20435 20436 20437 703 704 705 706 707 708 20438 20439 20440 20441 20442 20443 +48 20444 20445 20446 20447 20448 20449 20450 20451 20452 20453 20454 20455 19352 19353 19354 19355 19356 19357 19358 19359 19360 19361 19362 19363 10814 10815 10816 10817 10818 10819 20456 20457 20458 20459 20460 20461 703 704 705 706 707 708 20462 20463 20464 20465 20466 20467 +36 10754 10755 10756 10757 10758 10759 703 704 705 706 707 708 10814 10815 10816 10817 10818 10819 20438 20439 20440 20441 20442 20443 20456 20457 20458 20459 20460 20461 10808 10809 10810 10811 10812 10813 +48 9302 9303 9304 9305 9306 9307 9296 9297 9298 9299 9300 9301 9218 9219 9220 9221 9222 9223 9236 9237 9238 9239 9240 9241 721 722 723 724 725 726 20468 20469 20470 20471 20472 20473 727 728 729 730 731 732 20474 20475 20476 20477 20478 20479 +48 9332 9333 9334 9335 9336 9337 9326 9327 9328 9329 9330 9331 9302 9303 9304 9305 9306 9307 20474 20475 20476 20477 20478 20479 727 728 729 730 731 732 20480 20481 20482 20483 20484 20485 733 734 735 736 737 738 20486 20487 20488 20489 20490 20491 +48 9368 9369 9370 9371 9372 9373 9362 9363 9364 9365 9366 9367 9332 9333 9334 9335 9336 9337 20486 20487 20488 20489 20490 20491 733 734 735 736 737 738 20492 20493 20494 20495 20496 20497 739 740 741 742 743 744 20498 20499 20500 20501 20502 20503 +48 20504 20505 20506 20507 20508 20509 20510 20511 20512 20513 20514 20515 20516 20517 20518 20519 20520 20521 20522 20523 20524 20525 20526 20527 9428 9429 9430 9431 9432 9433 20528 20529 20530 20531 20532 20533 739 740 741 742 743 744 20534 20535 20536 20537 20538 20539 +36 9368 9369 9370 9371 9372 9373 739 740 741 742 743 744 9428 9429 9430 9431 9432 9433 20498 20499 20500 20501 20502 20503 20528 20529 20530 20531 20532 20533 9422 9423 9424 9425 9426 9427 +48 7634 7635 7636 7637 7638 7639 7628 7629 7630 7631 7632 7633 7550 7551 7552 7553 7554 7555 7568 7569 7570 7571 7572 7573 757 758 759 760 761 762 20540 20541 20542 20543 20544 20545 763 764 765 766 767 768 20546 20547 20548 20549 20550 20551 +48 7664 7665 7666 7667 7668 7669 7658 7659 7660 7661 7662 7663 7634 7635 7636 7637 7638 7639 20546 20547 20548 20549 20550 20551 763 764 765 766 767 768 20552 20553 20554 20555 20556 20557 769 770 771 772 773 774 20558 20559 20560 20561 20562 20563 +48 7700 7701 7702 7703 7704 7705 7694 7695 7696 7697 7698 7699 7664 7665 7666 7667 7668 7669 20558 20559 20560 20561 20562 20563 769 770 771 772 773 774 20564 20565 20566 20567 20568 20569 775 776 777 778 779 780 20570 20571 20572 20573 20574 20575 +48 20576 20577 20578 20579 20580 20581 20582 20583 20584 20585 20586 20587 19370 19371 19372 19373 19374 19375 19376 19377 19378 19379 19380 19381 7760 7761 7762 7763 7764 7765 20588 20589 20590 20591 20592 20593 775 776 777 778 779 780 20594 20595 20596 20597 20598 20599 +36 7700 7701 7702 7703 7704 7705 775 776 777 778 779 780 7760 7761 7762 7763 7764 7765 20570 20571 20572 20573 20574 20575 20588 20589 20590 20591 20592 20593 7754 7755 7756 7757 7758 7759 +48 5966 5967 5968 5969 5970 5971 5960 5961 5962 5963 5964 5965 5882 5883 5884 5885 5886 5887 5900 5901 5902 5903 5904 5905 793 794 795 796 797 798 20600 20601 20602 20603 20604 20605 799 800 801 802 803 804 20606 20607 20608 20609 20610 20611 +48 5996 5997 5998 5999 6000 6001 5990 5991 5992 5993 5994 5995 5966 5967 5968 5969 5970 5971 20606 20607 20608 20609 20610 20611 799 800 801 802 803 804 20612 20613 20614 20615 20616 20617 805 806 807 808 809 810 20618 20619 20620 20621 20622 20623 +48 6032 6033 6034 6035 6036 6037 6026 6027 6028 6029 6030 6031 5996 5997 5998 5999 6000 6001 20618 20619 20620 20621 20622 20623 805 806 807 808 809 810 20624 20625 20626 20627 20628 20629 811 812 813 814 815 816 20630 20631 20632 20633 20634 20635 +48 20339 20340 20341 20342 20343 20344 20636 20637 20638 20639 20640 20641 19382 19383 19384 19385 19386 19387 19388 19389 19390 19391 19392 19393 6092 6093 6094 6095 6096 6097 20642 20643 20644 20645 20646 20647 811 812 813 814 815 816 20648 20649 20650 20651 20652 20653 +36 6032 6033 6034 6035 6036 6037 811 812 813 814 815 816 6092 6093 6094 6095 6096 6097 20630 20631 20632 20633 20634 20635 20642 20643 20644 20645 20646 20647 6086 6087 6088 6089 6090 6091 +36 20654 20655 20656 20657 20658 20659 823 824 825 826 827 828 20666 20667 20668 20669 20670 20671 20672 20673 20674 20675 20676 20677 20678 20679 20680 20681 20682 20683 20660 20661 20662 20663 20664 20665 +48 20339 20340 20341 20342 20343 20344 20636 20637 20638 20639 20640 20641 19382 19383 19384 19385 19386 19387 20684 20685 20686 20687 20688 20689 20666 20667 20668 20669 20670 20671 20678 20679 20680 20681 20682 20683 823 824 825 826 827 828 20690 20691 20692 20693 20694 20695 +48 20654 20655 20656 20657 20658 20659 20702 20703 20704 20705 20706 20707 20696 20697 20698 20699 20700 20701 20708 20709 20710 20711 20712 20713 835 836 837 838 839 840 20714 20715 20716 20717 20718 20719 823 824 825 826 827 828 20672 20673 20674 20675 20676 20677 +48 20696 20697 20698 20699 20700 20701 20726 20727 20728 20729 20730 20731 20720 20721 20722 20723 20724 20725 20732 20733 20734 20735 20736 20737 847 848 849 850 851 852 20738 20739 20740 20741 20742 20743 835 836 837 838 839 840 20708 20709 20710 20711 20712 20713 +48 20720 20721 20722 20723 20724 20725 20750 20751 20752 20753 20754 20755 20744 20745 20746 20747 20748 20749 20756 20757 20758 20759 20760 20761 859 860 861 862 863 864 20762 20763 20764 20765 20766 20767 847 848 849 850 851 852 20732 20733 20734 20735 20736 20737 +36 20768 20769 20770 20771 20772 20773 817 818 819 820 821 822 20780 20781 20782 20783 20784 20785 20786 20787 20788 20789 20790 20791 20792 20793 20794 20795 20796 20797 20774 20775 20776 20777 20778 20779 +48 20576 20577 20578 20579 20580 20581 20582 20583 20584 20585 20586 20587 19370 19371 19372 19373 19374 19375 20798 20799 20800 20801 20802 20803 20780 20781 20782 20783 20784 20785 20792 20793 20794 20795 20796 20797 817 818 819 820 821 822 20804 20805 20806 20807 20808 20809 +48 20768 20769 20770 20771 20772 20773 20816 20817 20818 20819 20820 20821 20810 20811 20812 20813 20814 20815 20822 20823 20824 20825 20826 20827 829 830 831 832 833 834 20828 20829 20830 20831 20832 20833 817 818 819 820 821 822 20786 20787 20788 20789 20790 20791 +48 20810 20811 20812 20813 20814 20815 20840 20841 20842 20843 20844 20845 20834 20835 20836 20837 20838 20839 20846 20847 20848 20849 20850 20851 841 842 843 844 845 846 20852 20853 20854 20855 20856 20857 829 830 831 832 833 834 20822 20823 20824 20825 20826 20827 +48 20834 20835 20836 20837 20838 20839 20864 20865 20866 20867 20868 20869 20858 20859 20860 20861 20862 20863 20870 20871 20872 20873 20874 20875 853 854 855 856 857 858 20876 20877 20878 20879 20880 20881 841 842 843 844 845 846 20846 20847 20848 20849 20850 20851 +36 20882 20883 20884 20885 20886 20887 889 890 891 892 893 894 20894 20895 20896 20897 20898 20899 20900 20901 20902 20903 20904 20905 20906 20907 20908 20909 20910 20911 20888 20889 20890 20891 20892 20893 +48 20504 20505 20506 20507 20508 20509 20510 20511 20512 20513 20514 20515 20516 20517 20518 20519 20520 20521 20912 20913 20914 20915 20916 20917 20894 20895 20896 20897 20898 20899 20906 20907 20908 20909 20910 20911 889 890 891 892 893 894 20918 20919 20920 20921 20922 20923 +48 20882 20883 20884 20885 20886 20887 20930 20931 20932 20933 20934 20935 20924 20925 20926 20927 20928 20929 20936 20937 20938 20939 20940 20941 895 896 897 898 899 900 20942 20943 20944 20945 20946 20947 889 890 891 892 893 894 20900 20901 20902 20903 20904 20905 +48 20924 20925 20926 20927 20928 20929 20954 20955 20956 20957 20958 20959 20948 20949 20950 20951 20952 20953 20960 20961 20962 20963 20964 20965 901 902 903 904 905 906 20966 20967 20968 20969 20970 20971 895 896 897 898 899 900 20936 20937 20938 20939 20940 20941 +48 20948 20949 20950 20951 20952 20953 20978 20979 20980 20981 20982 20983 20972 20973 20974 20975 20976 20977 20984 20985 20986 20987 20988 20989 907 908 909 910 911 912 20990 20991 20992 20993 20994 20995 901 902 903 904 905 906 20960 20961 20962 20963 20964 20965 +36 20996 20997 20998 20999 21000 21001 925 926 927 928 929 930 21008 21009 21010 21011 21012 21013 21014 21015 21016 21017 21018 21019 21020 21021 21022 21023 21024 21025 21002 21003 21004 21005 21006 21007 +48 20444 20445 20446 20447 20448 20449 20450 20451 20452 20453 20454 20455 19352 19353 19354 19355 19356 19357 21026 21027 21028 21029 21030 21031 21008 21009 21010 21011 21012 21013 21020 21021 21022 21023 21024 21025 925 926 927 928 929 930 21032 21033 21034 21035 21036 21037 +48 20996 20997 20998 20999 21000 21001 21044 21045 21046 21047 21048 21049 21038 21039 21040 21041 21042 21043 21050 21051 21052 21053 21054 21055 931 932 933 934 935 936 21056 21057 21058 21059 21060 21061 925 926 927 928 929 930 21014 21015 21016 21017 21018 21019 +48 21038 21039 21040 21041 21042 21043 21068 21069 21070 21071 21072 21073 21062 21063 21064 21065 21066 21067 21074 21075 21076 21077 21078 21079 937 938 939 940 941 942 21080 21081 21082 21083 21084 21085 931 932 933 934 935 936 21050 21051 21052 21053 21054 21055 +48 21062 21063 21064 21065 21066 21067 21092 21093 21094 21095 21096 21097 21086 21087 21088 21089 21090 21091 21098 21099 21100 21101 21102 21103 943 944 945 946 947 948 21104 21105 21106 21107 21108 21109 937 938 939 940 941 942 21074 21075 21076 21077 21078 21079 +24 21110 21111 21112 21113 21114 21115 21116 21117 21118 21119 21120 21121 21122 21123 21124 21128 21129 21130 21125 21126 21127 21131 21132 21133 +45 21134 21135 21136 21137 21138 21139 21140 21141 21142 21143 21144 21145 21125 21126 21127 21146 21147 21148 21149 21150 21151 21152 21153 21154 21155 21156 21157 21164 21165 21166 21167 21168 21169 21158 21159 21160 21161 21162 21163 21170 21171 21172 21173 21174 21175 +39 21176 21177 21178 21179 21180 21181 21182 21183 21184 21185 21186 21187 21110 21111 21112 21131 21132 21133 21125 21126 21127 21140 21141 21142 21143 21144 21145 21134 21135 21136 21137 21138 21139 21188 21189 21190 21191 21192 21193 +24 21194 21195 21196 21197 21198 21199 21200 21201 21202 21203 21204 21205 21206 21207 21208 21212 21213 21214 21209 21210 21211 21215 21216 21217 +24 21221 21222 21223 21218 21219 21220 21194 21195 21196 21215 21216 21217 21209 21210 21211 21224 21225 21226 21227 21228 21229 21230 21231 21232 +24 21233 21234 21235 21236 21237 21238 21239 21240 21241 21242 21243 21244 21194 21195 21196 21218 21219 21220 21221 21222 21223 21245 21246 21247 +24 21248 21249 21250 21251 21252 21253 21221 21222 21223 21230 21231 21232 21227 21228 21229 21257 21258 21259 21254 21255 21256 21260 21261 21262 +24 21263 21264 21265 21266 21267 21268 21233 21234 21235 21245 21246 21247 21221 21222 21223 21251 21252 21253 21248 21249 21250 21269 21270 21271 +24 21272 21273 21274 21275 21276 21277 21248 21249 21250 21260 21261 21262 21254 21255 21256 21281 21282 21283 21278 21279 21280 21284 21285 21286 +24 21287 21288 21289 21290 21291 21292 21263 21264 21265 21269 21270 21271 21248 21249 21250 21275 21276 21277 21272 21273 21274 21293 21294 21295 +24 21296 21297 21298 21299 21300 21301 21272 21273 21274 21284 21285 21286 21278 21279 21280 21305 21306 21307 21302 21303 21304 21308 21309 21310 +24 21311 21312 21313 21314 21315 21316 21287 21288 21289 21293 21294 21295 21272 21273 21274 21299 21300 21301 21296 21297 21298 21317 21318 21319 +39 20696 20697 20698 20699 20700 20701 21320 21321 21322 21323 21324 21325 21296 21297 21298 21308 21309 21310 21302 21303 21304 21326 21327 21328 21329 21330 21331 20654 20655 20656 20657 20658 20659 20702 20703 20704 20705 20706 20707 +39 20720 20721 20722 20723 20724 20725 21332 21333 21334 21335 21336 21337 21311 21312 21313 21317 21318 21319 21296 21297 21298 21320 21321 21322 21323 21324 21325 20696 20697 20698 20699 20700 20701 20726 20727 20728 20729 20730 20731 +30 20147 20148 20149 21338 21339 21340 21341 21342 21343 21209 21210 21211 21212 21213 21214 21206 21207 21208 21344 21345 21346 21347 21348 21349 20216 20217 20218 20393 20394 20395 +30 20087 20088 20089 21350 21351 21352 21353 21354 21355 21227 21228 21229 21224 21225 21226 21209 21210 21211 21338 21339 21340 21341 21342 21343 20147 20148 20149 20387 20388 20389 +30 20039 20040 20041 21356 21357 21358 21359 21360 21361 21254 21255 21256 21257 21258 21259 21227 21228 21229 21350 21351 21352 21353 21354 21355 20087 20088 20089 20384 20385 20386 +30 19985 19986 19987 21362 21363 21364 21365 21366 21367 21278 21279 21280 21281 21282 21283 21254 21255 21256 21356 21357 21358 21359 21360 21361 20039 20040 20041 20378 20379 20380 +30 19898 19899 19900 21368 21369 21370 21371 21372 21373 21302 21303 21304 21305 21306 21307 21278 21279 21280 21362 21363 21364 21365 21366 21367 19985 19986 19987 20372 20373 20374 +45 20654 20655 20656 20657 20658 20659 21374 21375 21376 21377 21378 21379 21158 21159 21160 21161 21162 21163 21164 21165 21166 21167 21168 21169 21152 21153 21154 21155 21156 21157 21380 21381 21382 21383 21384 21385 21302 21303 21304 21326 21327 21328 21329 21330 21331 +42 20339 20340 20341 20342 20343 20344 21386 21387 21388 21389 21390 21391 20654 20655 20656 20657 20658 20659 21326 21327 21328 21329 21330 21331 21302 21303 21304 21368 21369 21370 21371 21372 21373 19898 19899 19900 20357 20358 20359 20360 20361 20362 +30 20108 20109 20110 21392 21393 21394 21395 21396 21397 21194 21195 21196 21197 21198 21199 21200 21201 21202 21398 21399 21400 21401 21402 21403 20210 20211 20212 20336 20337 20338 +30 20060 20061 20062 21404 21405 21406 21407 21408 21409 21221 21222 21223 21218 21219 21220 21194 21195 21196 21392 21393 21394 21395 21396 21397 20108 20109 20110 20330 20331 20332 +30 20012 20013 20014 21410 21411 21412 21413 21414 21415 21248 21249 21250 21251 21252 21253 21221 21222 21223 21404 21405 21406 21407 21408 21409 20060 20061 20062 20327 20328 20329 +30 19937 19938 19939 21416 21417 21418 21419 21420 21421 21272 21273 21274 21275 21276 21277 21248 21249 21250 21410 21411 21412 21413 21414 21415 20012 20013 20014 20321 20322 20323 +30 21296 21297 21298 21422 21423 21424 21425 21426 21427 21125 21126 21127 21128 21129 21130 21122 21123 21124 21428 21429 21430 21431 21432 21433 21272 21273 21274 21299 21300 21301 +30 19850 19851 19852 21434 21435 21436 21437 21438 21439 21296 21297 21298 21299 21300 21301 21272 21273 21274 21416 21417 21418 21419 21420 21421 19937 19938 19939 20312 20313 20314 +42 20696 20697 20698 20699 20700 20701 21440 21441 21442 21443 21444 21445 21134 21135 21136 21137 21138 21139 21140 21141 21142 21143 21144 21145 21125 21126 21127 21422 21423 21424 21425 21426 21427 21296 21297 21298 21320 21321 21322 21323 21324 21325 +42 20279 20280 20281 20282 20283 20284 21446 21447 21448 21449 21450 21451 20696 20697 20698 20699 20700 20701 21320 21321 21322 21323 21324 21325 21296 21297 21298 21434 21435 21436 21437 21438 21439 19850 19851 19852 20297 20298 20299 20300 20301 20302 +27 21458 21459 21460 21461 21462 21463 21209 21210 21211 21227 21228 21229 21464 21465 21466 21467 21468 21469 21224 21225 21226 21452 21453 21454 21455 21456 21457 +27 21476 21477 21478 21479 21480 21481 21194 21195 21196 21221 21222 21223 21482 21483 21484 21485 21486 21487 21218 21219 21220 21470 21471 21472 21473 21474 21475 +30 20054 20055 20056 21488 21489 21490 21491 21492 21493 21233 21234 21235 21236 21237 21238 21239 21240 21241 21494 21495 21496 21497 21498 21499 20102 20103 20104 20258 20259 20260 +30 20006 20007 20008 21500 21501 21502 21503 21504 21505 21263 21264 21265 21266 21267 21268 21233 21234 21235 21488 21489 21490 21491 21492 21493 20054 20055 20056 20252 20253 20254 +30 19931 19932 19933 21506 21507 21508 21509 21510 21511 21287 21288 21289 21290 21291 21292 21263 21264 21265 21500 21501 21502 21503 21504 21505 20006 20007 20008 20246 20247 20248 +30 21311 21312 21313 21512 21513 21514 21515 21516 21517 21110 21111 21112 21113 21114 21115 21116 21117 21118 21518 21519 21520 21521 21522 21523 21287 21288 21289 21314 21315 21316 +30 20210 20211 20212 20213 20214 20215 20216 20217 20218 21344 21345 21346 21347 21348 21349 21206 21207 21208 21203 21204 21205 21200 21201 21202 21398 21399 21400 21401 21402 21403 +42 20192 20193 20194 20195 20196 20197 21524 21525 21526 21527 21528 21529 20720 20721 20722 20723 20724 20725 21332 21333 21334 21335 21336 21337 21311 21312 21313 21530 21531 21532 21533 21534 21535 19844 19845 19846 20204 20205 20206 20207 20208 20209 +39 21194 21195 21196 21215 21216 21217 21209 21210 21211 21464 21465 21466 21467 21468 21469 21458 21459 21460 21461 21462 21463 21536 21537 21538 21539 21540 21541 21476 21477 21478 21479 21480 21481 21482 21483 21484 21485 21486 21487 +30 20108 20109 20110 20144 20145 20146 20147 20148 20149 21338 21339 21340 21341 21342 21343 21209 21210 21211 21215 21216 21217 21194 21195 21196 21392 21393 21394 21395 21396 21397 +42 20720 20721 20722 20723 20724 20725 21542 21543 21544 21545 21546 21547 21176 21177 21178 21179 21180 21181 21182 21183 21184 21185 21186 21187 21110 21111 21112 21512 21513 21514 21515 21516 21517 21311 21312 21313 21332 21333 21334 21335 21336 21337 +30 20102 20103 20104 20105 20106 20107 20108 20109 20110 21392 21393 21394 21395 21396 21397 21194 21195 21196 21242 21243 21244 21239 21240 21241 21494 21495 21496 21497 21498 21499 +30 20060 20061 20062 20084 20085 20086 20087 20088 20089 21350 21351 21352 21353 21354 21355 21227 21228 21229 21230 21231 21232 21221 21222 21223 21404 21405 21406 21407 21408 21409 +30 20054 20055 20056 20057 20058 20059 20060 20061 20062 21404 21405 21406 21407 21408 21409 21221 21222 21223 21245 21246 21247 21233 21234 21235 21488 21489 21490 21491 21492 21493 +30 20012 20013 20014 20036 20037 20038 20039 20040 20041 21356 21357 21358 21359 21360 21361 21254 21255 21256 21260 21261 21262 21248 21249 21250 21410 21411 21412 21413 21414 21415 +30 20006 20007 20008 20009 20010 20011 20012 20013 20014 21410 21411 21412 21413 21414 21415 21248 21249 21250 21269 21270 21271 21263 21264 21265 21500 21501 21502 21503 21504 21505 +30 19844 19845 19846 21530 21531 21532 21533 21534 21535 21311 21312 21313 21314 21315 21316 21287 21288 21289 21506 21507 21508 21509 21510 21511 19931 19932 19933 20003 20004 20005 +30 19937 19938 19939 19982 19983 19984 19985 19986 19987 21362 21363 21364 21365 21366 21367 21278 21279 21280 21284 21285 21286 21272 21273 21274 21416 21417 21418 21419 21420 21421 +30 21287 21288 21289 21293 21294 21295 21272 21273 21274 21428 21429 21430 21431 21432 21433 21122 21123 21124 21119 21120 21121 21116 21117 21118 21518 21519 21520 21521 21522 21523 +30 19931 19932 19933 19934 19935 19936 19937 19938 19939 21416 21417 21418 21419 21420 21421 21272 21273 21274 21293 21294 21295 21287 21288 21289 21506 21507 21508 21509 21510 21511 +36 21296 21297 21298 21308 21309 21310 21302 21303 21304 21380 21381 21382 21383 21384 21385 21152 21153 21154 21155 21156 21157 21146 21147 21148 21149 21150 21151 21125 21126 21127 21422 21423 21424 21425 21426 21427 +30 19850 19851 19852 19895 19896 19897 19898 19899 19900 21368 21369 21370 21371 21372 21373 21302 21303 21304 21308 21309 21310 21296 21297 21298 21434 21435 21436 21437 21438 21439 +30 21311 21312 21313 21317 21318 21319 21296 21297 21298 21422 21423 21424 21425 21426 21427 21125 21126 21127 21131 21132 21133 21110 21111 21112 21512 21513 21514 21515 21516 21517 +30 19844 19845 19846 19847 19848 19849 19850 19851 19852 21434 21435 21436 21437 21438 21439 21296 21297 21298 21317 21318 21319 21311 21312 21313 21530 21531 21532 21533 21534 21535 +48 2053 2054 2055 2056 2057 2058 21548 21549 21550 21551 21552 21553 21554 21555 21556 21557 21558 21559 21560 21561 21562 21563 21564 21565 1009 1010 1011 1012 1013 1014 21566 21567 21568 21569 21570 21571 19826 19827 19828 19829 19830 19831 19838 19839 19840 19841 19842 19843 +48 7388 7389 7390 7391 7392 7393 21572 21573 21574 21575 21576 21577 21578 21579 21580 21581 21582 21583 21584 21585 21586 21587 21588 21589 1015 1016 1017 1018 1019 1020 21590 21591 21592 21593 21594 21595 15794 15795 15796 15797 15798 15799 19820 19821 19822 19823 19824 19825 +48 7376 7377 7378 7379 7380 7381 21596 21597 21598 21599 21600 21601 21602 21603 21604 21605 21606 21607 21608 21609 21610 21611 21612 21613 1027 1028 1029 1030 1031 1032 21614 21615 21616 21617 21618 21619 15782 15783 15784 15785 15786 15787 19814 19815 19816 19817 19818 19819 +48 7268 7269 7270 7271 7272 7273 21620 21621 21622 21623 21624 21625 21626 21627 21628 21629 21630 21631 21632 21633 21634 21635 21636 21637 1051 1052 1053 1054 1055 1056 21638 21639 21640 21641 21642 21643 15764 15765 15766 15767 15768 15769 19808 19809 19810 19811 19812 19813 +48 7256 7257 7258 7259 7260 7261 21644 21645 21646 21647 21648 21649 21650 21651 21652 21653 21654 21655 21656 21657 21658 21659 21660 21661 1063 1064 1065 1066 1067 1068 21662 21663 21664 21665 21666 21667 15752 15753 15754 15755 15756 15757 19802 19803 19804 19805 19806 19807 +48 7148 7149 7150 7151 7152 7153 21668 21669 21670 21671 21672 21673 21674 21675 21676 21677 21678 21679 21680 21681 21682 21683 21684 21685 1087 1088 1089 1090 1091 1092 21686 21687 21688 21689 21690 21691 15734 15735 15736 15737 15738 15739 19796 19797 19798 19799 19800 19801 +48 7136 7137 7138 7139 7140 7141 21692 21693 21694 21695 21696 21697 21698 21699 21700 21701 21702 21703 21704 21705 21706 21707 21708 21709 1099 1100 1101 1102 1103 1104 21710 21711 21712 21713 21714 21715 15722 15723 15724 15725 15726 15727 19790 19791 19792 19793 19794 19795 +48 7028 7029 7030 7031 7032 7033 21716 21717 21718 21719 21720 21721 21722 21723 21724 21725 21726 21727 21728 21729 21730 21731 21732 21733 1123 1124 1125 1126 1127 1128 21734 21735 21736 21737 21738 21739 15704 15705 15706 15707 15708 15709 19784 19785 19786 19787 19788 19789 +48 7016 7017 7018 7019 7020 7021 21740 21741 21742 21743 21744 21745 21746 21747 21748 21749 21750 21751 21752 21753 21754 21755 21756 21757 1135 1136 1137 1138 1139 1140 21758 21759 21760 21761 21762 21763 15692 15693 15694 15695 15696 15697 19778 19779 19780 19781 19782 19783 +48 6908 6909 6910 6911 6912 6913 21764 21765 21766 21767 21768 21769 21770 21771 21772 21773 21774 21775 21776 21777 21778 21779 21780 21781 1159 1160 1161 1162 1163 1164 21782 21783 21784 21785 21786 21787 15674 15675 15676 15677 15678 15679 19772 19773 19774 19775 19776 19777 +48 6896 6897 6898 6899 6900 6901 21788 21789 21790 21791 21792 21793 21794 21795 21796 21797 21798 21799 21800 21801 21802 21803 21804 21805 1171 1172 1173 1174 1175 1176 21806 21807 21808 21809 21810 21811 15662 15663 15664 15665 15666 15667 19766 19767 19768 19769 19770 19771 +48 6788 6789 6790 6791 6792 6793 21812 21813 21814 21815 21816 21817 21818 21819 21820 21821 21822 21823 21824 21825 21826 21827 21828 21829 1195 1196 1197 1198 1199 1200 21830 21831 21832 21833 21834 21835 15644 15645 15646 15647 15648 15649 19760 19761 19762 19763 19764 19765 +48 6776 6777 6778 6779 6780 6781 21836 21837 21838 21839 21840 21841 21842 21843 21844 21845 21846 21847 21848 21849 21850 21851 21852 21853 1207 1208 1209 1210 1211 1212 21854 21855 21856 21857 21858 21859 15632 15633 15634 15635 15636 15637 19754 19755 19756 19757 19758 19759 +48 6668 6669 6670 6671 6672 6673 21860 21861 21862 21863 21864 21865 21866 21867 21868 21869 21870 21871 21872 21873 21874 21875 21876 21877 1231 1232 1233 1234 1235 1236 21878 21879 21880 21881 21882 21883 15614 15615 15616 15617 15618 15619 19748 19749 19750 19751 19752 19753 +48 6656 6657 6658 6659 6660 6661 21884 21885 21886 21887 21888 21889 21890 21891 21892 21893 21894 21895 21896 21897 21898 21899 21900 21901 1243 1244 1245 1246 1247 1248 21902 21903 21904 21905 21906 21907 15602 15603 15604 15605 15606 15607 19742 19743 19744 19745 19746 19747 +48 6548 6549 6550 6551 6552 6553 21908 21909 21910 21911 21912 21913 21914 21915 21916 21917 21918 21919 21920 21921 21922 21923 21924 21925 1267 1268 1269 1270 1271 1272 21926 21927 21928 21929 21930 21931 15584 15585 15586 15587 15588 15589 19736 19737 19738 19739 19740 19741 +48 6536 6537 6538 6539 6540 6541 21932 21933 21934 21935 21936 21937 21938 21939 21940 21941 21942 21943 21944 21945 21946 21947 21948 21949 1279 1280 1281 1282 1283 1284 21950 21951 21952 21953 21954 21955 15572 15573 15574 15575 15576 15577 19730 19731 19732 19733 19734 19735 +48 6428 6429 6430 6431 6432 6433 21956 21957 21958 21959 21960 21961 21962 21963 21964 21965 21966 21967 21968 21969 21970 21971 21972 21973 1303 1304 1305 1306 1307 1308 21974 21975 21976 21977 21978 21979 15554 15555 15556 15557 15558 15559 19724 19725 19726 19727 19728 19729 +48 6416 6417 6418 6419 6420 6421 21980 21981 21982 21983 21984 21985 21986 21987 21988 21989 21990 21991 21992 21993 21994 21995 21996 21997 1315 1316 1317 1318 1319 1320 21998 21999 22000 22001 22002 22003 15542 15543 15544 15545 15546 15547 19718 19719 19720 19721 19722 19723 +48 6308 6309 6310 6311 6312 6313 22004 22005 22006 22007 22008 22009 22010 22011 22012 22013 22014 22015 22016 22017 22018 22019 22020 22021 1339 1340 1341 1342 1343 1344 22022 22023 22024 22025 22026 22027 15524 15525 15526 15527 15528 15529 19712 19713 19714 19715 19716 19717 +48 6296 6297 6298 6299 6300 6301 22028 22029 22030 22031 22032 22033 22034 22035 22036 22037 22038 22039 22040 22041 22042 22043 22044 22045 1351 1352 1353 1354 1355 1356 22046 22047 22048 22049 22050 22051 15512 15513 15514 15515 15516 15517 19706 19707 19708 19709 19710 19711 +48 6188 6189 6190 6191 6192 6193 22052 22053 22054 22055 22056 22057 22058 22059 22060 22061 22062 22063 22064 22065 22066 22067 22068 22069 1375 1376 1377 1378 1379 1380 22070 22071 22072 22073 22074 22075 15494 15495 15496 15497 15498 15499 19700 19701 19702 19703 19704 19705 +48 6176 6177 6178 6179 6180 6181 22076 22077 22078 22079 22080 22081 22082 22083 22084 22085 22086 22087 22088 22089 22090 22091 22092 22093 1387 1388 1389 1390 1391 1392 22094 22095 22096 22097 22098 22099 15482 15483 15484 15485 15486 15487 19694 19695 19696 19697 19698 19699 +48 19382 19383 19384 19385 19386 19387 20684 20685 20686 20687 20688 20689 20666 20667 20668 20669 20670 20671 22100 22101 22102 22103 22104 22105 1411 1412 1413 1414 1415 1416 22106 22107 22108 22109 22110 22111 15464 15465 15466 15467 15468 15469 19688 19689 19690 19691 19692 19693 +48 6056 6057 6058 6059 6060 6061 22112 22113 22114 22115 22116 22117 22118 22119 22120 22121 22122 22123 22124 22125 22126 22127 22128 22129 1495 1496 1497 1498 1499 1500 22130 22131 22132 22133 22134 22135 15422 15423 15424 15425 15426 15427 19682 19683 19684 19685 19686 19687 +48 22136 22137 22138 22139 22140 22141 22142 22143 22144 22145 22146 22147 21554 21555 21556 21557 21558 21559 21560 21561 21562 21563 21564 21565 1009 1010 1011 1012 1013 1014 1003 1004 1005 1006 1007 1008 997 998 999 1000 1001 1002 22148 22149 22150 22151 22152 22153 +48 21578 21579 21580 21581 21582 21583 22154 22155 22156 22157 22158 22159 22136 22137 22138 22139 22140 22141 22148 22149 22150 22151 22152 22153 997 998 999 1000 1001 1002 1021 1022 1023 1024 1025 1026 1015 1016 1017 1018 1019 1020 21584 21585 21586 21587 21588 21589 +48 21602 21603 21604 21605 21606 21607 22160 22161 22162 22163 22164 22165 21578 21579 21580 21581 21582 21583 21584 21585 21586 21587 21588 21589 1015 1016 1017 1018 1019 1020 1033 1034 1035 1036 1037 1038 1027 1028 1029 1030 1031 1032 21608 21609 21610 21611 21612 21613 +48 22166 22167 22168 22169 22170 22171 22172 22173 22174 22175 22176 22177 21602 21603 21604 21605 21606 21607 21608 21609 21610 21611 21612 21613 1027 1028 1029 1030 1031 1032 1045 1046 1047 1048 1049 1050 1039 1040 1041 1042 1043 1044 22178 22179 22180 22181 22182 22183 +48 21626 21627 21628 21629 21630 21631 22184 22185 22186 22187 22188 22189 22166 22167 22168 22169 22170 22171 22178 22179 22180 22181 22182 22183 1039 1040 1041 1042 1043 1044 1057 1058 1059 1060 1061 1062 1051 1052 1053 1054 1055 1056 21632 21633 21634 21635 21636 21637 +48 21650 21651 21652 21653 21654 21655 22190 22191 22192 22193 22194 22195 21626 21627 21628 21629 21630 21631 21632 21633 21634 21635 21636 21637 1051 1052 1053 1054 1055 1056 1069 1070 1071 1072 1073 1074 1063 1064 1065 1066 1067 1068 21656 21657 21658 21659 21660 21661 +48 22196 22197 22198 22199 22200 22201 22202 22203 22204 22205 22206 22207 21650 21651 21652 21653 21654 21655 21656 21657 21658 21659 21660 21661 1063 1064 1065 1066 1067 1068 1081 1082 1083 1084 1085 1086 1075 1076 1077 1078 1079 1080 22208 22209 22210 22211 22212 22213 +48 21674 21675 21676 21677 21678 21679 22214 22215 22216 22217 22218 22219 22196 22197 22198 22199 22200 22201 22208 22209 22210 22211 22212 22213 1075 1076 1077 1078 1079 1080 1093 1094 1095 1096 1097 1098 1087 1088 1089 1090 1091 1092 21680 21681 21682 21683 21684 21685 +48 21698 21699 21700 21701 21702 21703 22220 22221 22222 22223 22224 22225 21674 21675 21676 21677 21678 21679 21680 21681 21682 21683 21684 21685 1087 1088 1089 1090 1091 1092 1105 1106 1107 1108 1109 1110 1099 1100 1101 1102 1103 1104 21704 21705 21706 21707 21708 21709 +48 22226 22227 22228 22229 22230 22231 22232 22233 22234 22235 22236 22237 21698 21699 21700 21701 21702 21703 21704 21705 21706 21707 21708 21709 1099 1100 1101 1102 1103 1104 1117 1118 1119 1120 1121 1122 1111 1112 1113 1114 1115 1116 22238 22239 22240 22241 22242 22243 +48 21722 21723 21724 21725 21726 21727 22244 22245 22246 22247 22248 22249 22226 22227 22228 22229 22230 22231 22238 22239 22240 22241 22242 22243 1111 1112 1113 1114 1115 1116 1129 1130 1131 1132 1133 1134 1123 1124 1125 1126 1127 1128 21728 21729 21730 21731 21732 21733 +48 21746 21747 21748 21749 21750 21751 22250 22251 22252 22253 22254 22255 21722 21723 21724 21725 21726 21727 21728 21729 21730 21731 21732 21733 1123 1124 1125 1126 1127 1128 1141 1142 1143 1144 1145 1146 1135 1136 1137 1138 1139 1140 21752 21753 21754 21755 21756 21757 +48 22256 22257 22258 22259 22260 22261 22262 22263 22264 22265 22266 22267 21746 21747 21748 21749 21750 21751 21752 21753 21754 21755 21756 21757 1135 1136 1137 1138 1139 1140 1153 1154 1155 1156 1157 1158 1147 1148 1149 1150 1151 1152 22268 22269 22270 22271 22272 22273 +48 21770 21771 21772 21773 21774 21775 22274 22275 22276 22277 22278 22279 22256 22257 22258 22259 22260 22261 22268 22269 22270 22271 22272 22273 1147 1148 1149 1150 1151 1152 1165 1166 1167 1168 1169 1170 1159 1160 1161 1162 1163 1164 21776 21777 21778 21779 21780 21781 +48 21794 21795 21796 21797 21798 21799 22280 22281 22282 22283 22284 22285 21770 21771 21772 21773 21774 21775 21776 21777 21778 21779 21780 21781 1159 1160 1161 1162 1163 1164 1177 1178 1179 1180 1181 1182 1171 1172 1173 1174 1175 1176 21800 21801 21802 21803 21804 21805 +48 22286 22287 22288 22289 22290 22291 22292 22293 22294 22295 22296 22297 21794 21795 21796 21797 21798 21799 21800 21801 21802 21803 21804 21805 1171 1172 1173 1174 1175 1176 1189 1190 1191 1192 1193 1194 1183 1184 1185 1186 1187 1188 22298 22299 22300 22301 22302 22303 +48 21818 21819 21820 21821 21822 21823 22304 22305 22306 22307 22308 22309 22286 22287 22288 22289 22290 22291 22298 22299 22300 22301 22302 22303 1183 1184 1185 1186 1187 1188 1201 1202 1203 1204 1205 1206 1195 1196 1197 1198 1199 1200 21824 21825 21826 21827 21828 21829 +48 21842 21843 21844 21845 21846 21847 22310 22311 22312 22313 22314 22315 21818 21819 21820 21821 21822 21823 21824 21825 21826 21827 21828 21829 1195 1196 1197 1198 1199 1200 1213 1214 1215 1216 1217 1218 1207 1208 1209 1210 1211 1212 21848 21849 21850 21851 21852 21853 +48 22316 22317 22318 22319 22320 22321 22322 22323 22324 22325 22326 22327 21842 21843 21844 21845 21846 21847 21848 21849 21850 21851 21852 21853 1207 1208 1209 1210 1211 1212 1225 1226 1227 1228 1229 1230 1219 1220 1221 1222 1223 1224 22328 22329 22330 22331 22332 22333 +48 21866 21867 21868 21869 21870 21871 22334 22335 22336 22337 22338 22339 22316 22317 22318 22319 22320 22321 22328 22329 22330 22331 22332 22333 1219 1220 1221 1222 1223 1224 1237 1238 1239 1240 1241 1242 1231 1232 1233 1234 1235 1236 21872 21873 21874 21875 21876 21877 +48 21890 21891 21892 21893 21894 21895 22340 22341 22342 22343 22344 22345 21866 21867 21868 21869 21870 21871 21872 21873 21874 21875 21876 21877 1231 1232 1233 1234 1235 1236 1249 1250 1251 1252 1253 1254 1243 1244 1245 1246 1247 1248 21896 21897 21898 21899 21900 21901 +48 22346 22347 22348 22349 22350 22351 22352 22353 22354 22355 22356 22357 21890 21891 21892 21893 21894 21895 21896 21897 21898 21899 21900 21901 1243 1244 1245 1246 1247 1248 1261 1262 1263 1264 1265 1266 1255 1256 1257 1258 1259 1260 22358 22359 22360 22361 22362 22363 +48 21914 21915 21916 21917 21918 21919 22364 22365 22366 22367 22368 22369 22346 22347 22348 22349 22350 22351 22358 22359 22360 22361 22362 22363 1255 1256 1257 1258 1259 1260 1273 1274 1275 1276 1277 1278 1267 1268 1269 1270 1271 1272 21920 21921 21922 21923 21924 21925 +48 21938 21939 21940 21941 21942 21943 22370 22371 22372 22373 22374 22375 21914 21915 21916 21917 21918 21919 21920 21921 21922 21923 21924 21925 1267 1268 1269 1270 1271 1272 1285 1286 1287 1288 1289 1290 1279 1280 1281 1282 1283 1284 21944 21945 21946 21947 21948 21949 +48 22376 22377 22378 22379 22380 22381 22382 22383 22384 22385 22386 22387 21938 21939 21940 21941 21942 21943 21944 21945 21946 21947 21948 21949 1279 1280 1281 1282 1283 1284 1297 1298 1299 1300 1301 1302 1291 1292 1293 1294 1295 1296 22388 22389 22390 22391 22392 22393 +48 21962 21963 21964 21965 21966 21967 22394 22395 22396 22397 22398 22399 22376 22377 22378 22379 22380 22381 22388 22389 22390 22391 22392 22393 1291 1292 1293 1294 1295 1296 1309 1310 1311 1312 1313 1314 1303 1304 1305 1306 1307 1308 21968 21969 21970 21971 21972 21973 +48 21986 21987 21988 21989 21990 21991 22400 22401 22402 22403 22404 22405 21962 21963 21964 21965 21966 21967 21968 21969 21970 21971 21972 21973 1303 1304 1305 1306 1307 1308 1321 1322 1323 1324 1325 1326 1315 1316 1317 1318 1319 1320 21992 21993 21994 21995 21996 21997 +48 22406 22407 22408 22409 22410 22411 22412 22413 22414 22415 22416 22417 21986 21987 21988 21989 21990 21991 21992 21993 21994 21995 21996 21997 1315 1316 1317 1318 1319 1320 1333 1334 1335 1336 1337 1338 1327 1328 1329 1330 1331 1332 22418 22419 22420 22421 22422 22423 +48 22010 22011 22012 22013 22014 22015 22424 22425 22426 22427 22428 22429 22406 22407 22408 22409 22410 22411 22418 22419 22420 22421 22422 22423 1327 1328 1329 1330 1331 1332 1345 1346 1347 1348 1349 1350 1339 1340 1341 1342 1343 1344 22016 22017 22018 22019 22020 22021 +48 22034 22035 22036 22037 22038 22039 22430 22431 22432 22433 22434 22435 22010 22011 22012 22013 22014 22015 22016 22017 22018 22019 22020 22021 1339 1340 1341 1342 1343 1344 1357 1358 1359 1360 1361 1362 1351 1352 1353 1354 1355 1356 22040 22041 22042 22043 22044 22045 +48 22436 22437 22438 22439 22440 22441 22442 22443 22444 22445 22446 22447 22034 22035 22036 22037 22038 22039 22040 22041 22042 22043 22044 22045 1351 1352 1353 1354 1355 1356 1369 1370 1371 1372 1373 1374 1363 1364 1365 1366 1367 1368 22448 22449 22450 22451 22452 22453 +48 22058 22059 22060 22061 22062 22063 22454 22455 22456 22457 22458 22459 22436 22437 22438 22439 22440 22441 22448 22449 22450 22451 22452 22453 1363 1364 1365 1366 1367 1368 1381 1382 1383 1384 1385 1386 1375 1376 1377 1378 1379 1380 22064 22065 22066 22067 22068 22069 +48 22082 22083 22084 22085 22086 22087 22460 22461 22462 22463 22464 22465 22058 22059 22060 22061 22062 22063 22064 22065 22066 22067 22068 22069 1375 1376 1377 1378 1379 1380 1393 1394 1395 1396 1397 1398 1387 1388 1389 1390 1391 1392 22088 22089 22090 22091 22092 22093 +48 22466 22467 22468 22469 22470 22471 22472 22473 22474 22475 22476 22477 22082 22083 22084 22085 22086 22087 22088 22089 22090 22091 22092 22093 1387 1388 1389 1390 1391 1392 1405 1406 1407 1408 1409 1410 1399 1400 1401 1402 1403 1404 22478 22479 22480 22481 22482 22483 +48 20666 20667 20668 20669 20670 20671 22484 22485 22486 22487 22488 22489 22466 22467 22468 22469 22470 22471 22478 22479 22480 22481 22482 22483 1399 1400 1401 1402 1403 1404 1417 1418 1419 1420 1421 1422 1411 1412 1413 1414 1415 1416 22100 22101 22102 22103 22104 22105 +48 20654 20655 20656 20657 20658 20659 20660 20661 20662 20663 20664 20665 20666 20667 20668 20669 20670 20671 22100 22101 22102 22103 22104 22105 1411 1412 1413 1414 1415 1416 1429 1430 1431 1432 1433 1434 1423 1424 1425 1426 1427 1428 22490 22491 22492 22493 22494 22495 +48 20696 20697 20698 20699 20700 20701 20702 20703 20704 20705 20706 20707 20654 20655 20656 20657 20658 20659 22490 22491 22492 22493 22494 22495 1423 1424 1425 1426 1427 1428 1441 1442 1443 1444 1445 1446 1435 1436 1437 1438 1439 1440 22496 22497 22498 22499 22500 22501 +48 20720 20721 20722 20723 20724 20725 20726 20727 20728 20729 20730 20731 20696 20697 20698 20699 20700 20701 22496 22497 22498 22499 22500 22501 1435 1436 1437 1438 1439 1440 1453 1454 1455 1456 1457 1458 1447 1448 1449 1450 1451 1452 22502 22503 22504 22505 22506 22507 +48 20744 20745 20746 20747 20748 20749 20750 20751 20752 20753 20754 20755 20720 20721 20722 20723 20724 20725 22502 22503 22504 22505 22506 22507 1447 1448 1449 1450 1451 1452 1465 1466 1467 1468 1469 1470 1459 1460 1461 1462 1463 1464 22508 22509 22510 22511 22512 22513 +48 22514 22515 22516 22517 22518 22519 22520 22521 22522 22523 22524 22525 20744 20745 20746 20747 20748 20749 22508 22509 22510 22511 22512 22513 1459 1460 1461 1462 1463 1464 1477 1478 1479 1480 1481 1482 1471 1472 1473 1474 1475 1476 22526 22527 22528 22529 22530 22531 +48 22532 22533 22534 22535 22536 22537 22538 22539 22540 22541 22542 22543 22514 22515 22516 22517 22518 22519 22526 22527 22528 22529 22530 22531 1471 1472 1473 1474 1475 1476 1489 1490 1491 1492 1493 1494 1483 1484 1485 1486 1487 1488 22544 22545 22546 22547 22548 22549 +48 22118 22119 22120 22121 22122 22123 22550 22551 22552 22553 22554 22555 22532 22533 22534 22535 22536 22537 22544 22545 22546 22547 22548 22549 1483 1484 1485 1486 1487 1488 1501 1502 1503 1504 1505 1506 1495 1496 1497 1498 1499 1500 22124 22125 22126 22127 22128 22129 +48 22556 22557 22558 22559 22560 22561 22562 22563 22564 22565 22566 22567 22118 22119 22120 22121 22122 22123 22124 22125 22126 22127 22128 22129 1495 1496 1497 1498 1499 1500 1513 1514 1515 1516 1517 1518 1507 1508 1509 1510 1511 1512 22568 22569 22570 22571 22572 22573 +48 22574 22575 22576 22577 22578 22579 22580 22581 22582 22583 22584 22585 22586 22587 22588 22589 22590 22591 22592 22593 22594 22595 22596 22597 22598 22599 22600 22601 22602 22603 22604 22605 22606 22607 22608 22609 22136 22137 22138 22139 22140 22141 22610 22611 22612 22613 22614 22615 +48 22616 22617 22618 22619 22620 22621 22622 22623 22624 22625 22626 22627 22628 22629 22630 22631 22632 22633 22634 22635 22636 22637 22638 22639 22586 22587 22588 22589 22590 22591 22580 22581 22582 22583 22584 22585 22574 22575 22576 22577 22578 22579 22640 22641 22642 22643 22644 22645 +48 22646 22647 22648 22649 22650 22651 22652 22653 22654 22655 22656 22657 22658 22659 22660 22661 22662 22663 22664 22665 22666 22667 22668 22669 22628 22629 22630 22631 22632 22633 22622 22623 22624 22625 22626 22627 22616 22617 22618 22619 22620 22621 22670 22671 22672 22673 22674 22675 +48 22676 22677 22678 22679 22680 22681 22682 22683 22684 22685 22686 22687 22688 22689 22690 22691 22692 22693 22694 22695 22696 22697 22698 22699 22658 22659 22660 22661 22662 22663 22652 22653 22654 22655 22656 22657 22646 22647 22648 22649 22650 22651 22700 22701 22702 22703 22704 22705 +36 22688 22689 22690 22691 22692 22693 22676 22677 22678 22679 22680 22681 22706 22707 22708 22709 22710 22711 22682 22683 22684 22685 22686 22687 22718 22719 22720 22721 22722 22723 22712 22713 22714 22715 22716 22717 +48 15386 15387 15388 15389 15390 15391 22724 22725 22726 22727 22728 22729 22706 22707 22708 22709 22710 22711 22718 22719 22720 22721 22722 22723 22676 22677 22678 22679 22680 22681 22730 22731 22732 22733 22734 22735 14108 14109 14110 14111 14112 14113 18644 18645 18646 18647 18648 18649 +48 22736 22737 22738 22739 22740 22741 22742 22743 22744 22745 22746 22747 22748 22749 22750 22751 22752 22753 22754 22755 22756 22757 22758 22759 22760 22761 22762 22763 22764 22765 22766 22767 22768 22769 22770 22771 21578 21579 21580 21581 21582 21583 22772 22773 22774 22775 22776 22777 +48 9056 9057 9058 9059 9060 9061 22778 22779 22780 22781 22782 22783 22736 22737 22738 22739 22740 22741 22772 22773 22774 22775 22776 22777 21578 21579 21580 21581 21582 21583 21572 21573 21574 21575 21576 21577 7388 7389 7390 7391 7392 7393 19328 19329 19330 19331 19332 19333 +48 22784 22785 22786 22787 22788 22789 22790 22791 22792 22793 22794 22795 22796 22797 22798 22799 22800 22801 22802 22803 22804 22805 22806 22807 22748 22749 22750 22751 22752 22753 22742 22743 22744 22745 22746 22747 22736 22737 22738 22739 22740 22741 22808 22809 22810 22811 22812 22813 +48 10454 10455 10456 10457 10458 10459 22814 22815 22816 22817 22818 22819 22784 22785 22786 22787 22788 22789 22808 22809 22810 22811 22812 22813 22736 22737 22738 22739 22740 22741 22778 22779 22780 22781 22782 22783 9056 9057 9058 9059 9060 9061 19196 19197 19198 19199 19200 19201 +48 22820 22821 22822 22823 22824 22825 22826 22827 22828 22829 22830 22831 22832 22833 22834 22835 22836 22837 22838 22839 22840 22841 22842 22843 22796 22797 22798 22799 22800 22801 22790 22791 22792 22793 22794 22795 22784 22785 22786 22787 22788 22789 22844 22845 22846 22847 22848 22849 +48 12110 12111 12112 12113 12114 12115 22850 22851 22852 22853 22854 22855 22820 22821 22822 22823 22824 22825 22844 22845 22846 22847 22848 22849 22784 22785 22786 22787 22788 22789 22814 22815 22816 22817 22818 22819 10454 10455 10456 10457 10458 10459 19064 19065 19066 19067 19068 19069 +48 22856 22857 22858 22859 22860 22861 22862 22863 22864 22865 22866 22867 22868 22869 22870 22871 22872 22873 22874 22875 22876 22877 22878 22879 22832 22833 22834 22835 22836 22837 22826 22827 22828 22829 22830 22831 22820 22821 22822 22823 22824 22825 22880 22881 22882 22883 22884 22885 +48 14060 14061 14062 14063 14064 14065 22886 22887 22888 22889 22890 22891 22856 22857 22858 22859 22860 22861 22880 22881 22882 22883 22884 22885 22820 22821 22822 22823 22824 22825 22850 22851 22852 22853 22854 22855 12110 12111 12112 12113 12114 12115 18770 18771 18772 18773 18774 18775 +36 22868 22869 22870 22871 22872 22873 22856 22857 22858 22859 22860 22861 22892 22893 22894 22895 22896 22897 22862 22863 22864 22865 22866 22867 22904 22905 22906 22907 22908 22909 22898 22899 22900 22901 22902 22903 +48 15356 15357 15358 15359 15360 15361 22910 22911 22912 22913 22914 22915 22892 22893 22894 22895 22896 22897 22904 22905 22906 22907 22908 22909 22856 22857 22858 22859 22860 22861 22886 22887 22888 22889 22890 22891 14060 14061 14062 14063 14064 14065 18638 18639 18640 18641 18642 18643 +48 22916 22917 22918 22919 22920 22921 22922 22923 22924 22925 22926 22927 22928 22929 22930 22931 22932 22933 22934 22935 22936 22937 22938 22939 22940 22941 22942 22943 22944 22945 22946 22947 22948 22949 22950 22951 21602 21603 21604 21605 21606 21607 22952 22953 22954 22955 22956 22957 +48 9044 9045 9046 9047 9048 9049 22958 22959 22960 22961 22962 22963 22916 22917 22918 22919 22920 22921 22952 22953 22954 22955 22956 22957 21602 21603 21604 21605 21606 21607 21596 21597 21598 21599 21600 21601 7376 7377 7378 7379 7380 7381 19334 19335 19336 19337 19338 19339 +48 22964 22965 22966 22967 22968 22969 22970 22971 22972 22973 22974 22975 22976 22977 22978 22979 22980 22981 22982 22983 22984 22985 22986 22987 22928 22929 22930 22931 22932 22933 22922 22923 22924 22925 22926 22927 22916 22917 22918 22919 22920 22921 22988 22989 22990 22991 22992 22993 +48 10442 10443 10444 10445 10446 10447 22994 22995 22996 22997 22998 22999 22964 22965 22966 22967 22968 22969 22988 22989 22990 22991 22992 22993 22916 22917 22918 22919 22920 22921 22958 22959 22960 22961 22962 22963 9044 9045 9046 9047 9048 9049 19202 19203 19204 19205 19206 19207 +48 23000 23001 23002 23003 23004 23005 23006 23007 23008 23009 23010 23011 23012 23013 23014 23015 23016 23017 23018 23019 23020 23021 23022 23023 22976 22977 22978 22979 22980 22981 22970 22971 22972 22973 22974 22975 22964 22965 22966 22967 22968 22969 23024 23025 23026 23027 23028 23029 +48 12098 12099 12100 12101 12102 12103 23030 23031 23032 23033 23034 23035 23000 23001 23002 23003 23004 23005 23024 23025 23026 23027 23028 23029 22964 22965 22966 22967 22968 22969 22994 22995 22996 22997 22998 22999 10442 10443 10444 10445 10446 10447 19070 19071 19072 19073 19074 19075 +48 23036 23037 23038 23039 23040 23041 23042 23043 23044 23045 23046 23047 23048 23049 23050 23051 23052 23053 23054 23055 23056 23057 23058 23059 23012 23013 23014 23015 23016 23017 23006 23007 23008 23009 23010 23011 23000 23001 23002 23003 23004 23005 23060 23061 23062 23063 23064 23065 +48 14012 14013 14014 14015 14016 14017 23066 23067 23068 23069 23070 23071 23036 23037 23038 23039 23040 23041 23060 23061 23062 23063 23064 23065 23000 23001 23002 23003 23004 23005 23030 23031 23032 23033 23034 23035 12098 12099 12100 12101 12102 12103 18776 18777 18778 18779 18780 18781 +36 23048 23049 23050 23051 23052 23053 23036 23037 23038 23039 23040 23041 23072 23073 23074 23075 23076 23077 23042 23043 23044 23045 23046 23047 23084 23085 23086 23087 23088 23089 23078 23079 23080 23081 23082 23083 +48 15326 15327 15328 15329 15330 15331 23090 23091 23092 23093 23094 23095 23072 23073 23074 23075 23076 23077 23084 23085 23086 23087 23088 23089 23036 23037 23038 23039 23040 23041 23066 23067 23068 23069 23070 23071 14012 14013 14014 14015 14016 14017 18632 18633 18634 18635 18636 18637 +48 23096 23097 23098 23099 23100 23101 23102 23103 23104 23105 23106 23107 23108 23109 23110 23111 23112 23113 23114 23115 23116 23117 23118 23119 23120 23121 23122 23123 23124 23125 23126 23127 23128 23129 23130 23131 22166 22167 22168 22169 22170 22171 23132 23133 23134 23135 23136 23137 +48 23138 23139 23140 23141 23142 23143 23144 23145 23146 23147 23148 23149 23150 23151 23152 23153 23154 23155 23156 23157 23158 23159 23160 23161 23108 23109 23110 23111 23112 23113 23102 23103 23104 23105 23106 23107 23096 23097 23098 23099 23100 23101 23162 23163 23164 23165 23166 23167 +48 23168 23169 23170 23171 23172 23173 23174 23175 23176 23177 23178 23179 23180 23181 23182 23183 23184 23185 23186 23187 23188 23189 23190 23191 23150 23151 23152 23153 23154 23155 23144 23145 23146 23147 23148 23149 23138 23139 23140 23141 23142 23143 23192 23193 23194 23195 23196 23197 +48 23198 23199 23200 23201 23202 23203 23204 23205 23206 23207 23208 23209 23210 23211 23212 23213 23214 23215 23216 23217 23218 23219 23220 23221 23180 23181 23182 23183 23184 23185 23174 23175 23176 23177 23178 23179 23168 23169 23170 23171 23172 23173 23222 23223 23224 23225 23226 23227 +36 23210 23211 23212 23213 23214 23215 23198 23199 23200 23201 23202 23203 23228 23229 23230 23231 23232 23233 23204 23205 23206 23207 23208 23209 23240 23241 23242 23243 23244 23245 23234 23235 23236 23237 23238 23239 +48 15296 15297 15298 15299 15300 15301 23246 23247 23248 23249 23250 23251 23228 23229 23230 23231 23232 23233 23240 23241 23242 23243 23244 23245 23198 23199 23200 23201 23202 23203 23252 23253 23254 23255 23256 23257 13964 13965 13966 13967 13968 13969 18626 18627 18628 18629 18630 18631 +48 23258 23259 23260 23261 23262 23263 23264 23265 23266 23267 23268 23269 23270 23271 23272 23273 23274 23275 23276 23277 23278 23279 23280 23281 23282 23283 23284 23285 23286 23287 23288 23289 23290 23291 23292 23293 21626 21627 21628 21629 21630 21631 23294 23295 23296 23297 23298 23299 +48 8936 8937 8938 8939 8940 8941 23300 23301 23302 23303 23304 23305 23258 23259 23260 23261 23262 23263 23294 23295 23296 23297 23298 23299 21626 21627 21628 21629 21630 21631 21620 21621 21622 21623 21624 21625 7268 7269 7270 7271 7272 7273 19316 19317 19318 19319 19320 19321 +48 23306 23307 23308 23309 23310 23311 23312 23313 23314 23315 23316 23317 23318 23319 23320 23321 23322 23323 23324 23325 23326 23327 23328 23329 23270 23271 23272 23273 23274 23275 23264 23265 23266 23267 23268 23269 23258 23259 23260 23261 23262 23263 23330 23331 23332 23333 23334 23335 +48 23336 23337 23338 23339 23340 23341 23342 23343 23344 23345 23346 23347 23348 23349 23350 23351 23352 23353 23354 23355 23356 23357 23358 23359 23318 23319 23320 23321 23322 23323 23312 23313 23314 23315 23316 23317 23306 23307 23308 23309 23310 23311 23360 23361 23362 23363 23364 23365 +48 23366 23367 23368 23369 23370 23371 23372 23373 23374 23375 23376 23377 23378 23379 23380 23381 23382 23383 23384 23385 23386 23387 23388 23389 23348 23349 23350 23351 23352 23353 23342 23343 23344 23345 23346 23347 23336 23337 23338 23339 23340 23341 23390 23391 23392 23393 23394 23395 +48 13916 13917 13918 13919 13920 13921 23396 23397 23398 23399 23400 23401 23366 23367 23368 23369 23370 23371 23390 23391 23392 23393 23394 23395 23336 23337 23338 23339 23340 23341 23402 23403 23404 23405 23406 23407 11990 11991 11992 11993 11994 11995 18758 18759 18760 18761 18762 18763 +36 23378 23379 23380 23381 23382 23383 23366 23367 23368 23369 23370 23371 23408 23409 23410 23411 23412 23413 23372 23373 23374 23375 23376 23377 23420 23421 23422 23423 23424 23425 23414 23415 23416 23417 23418 23419 +48 15266 15267 15268 15269 15270 15271 23426 23427 23428 23429 23430 23431 23408 23409 23410 23411 23412 23413 23420 23421 23422 23423 23424 23425 23366 23367 23368 23369 23370 23371 23396 23397 23398 23399 23400 23401 13916 13917 13918 13919 13920 13921 18620 18621 18622 18623 18624 18625 +48 23432 23433 23434 23435 23436 23437 23438 23439 23440 23441 23442 23443 23444 23445 23446 23447 23448 23449 23450 23451 23452 23453 23454 23455 23456 23457 23458 23459 23460 23461 23462 23463 23464 23465 23466 23467 21650 21651 21652 21653 21654 21655 23468 23469 23470 23471 23472 23473 +48 8924 8925 8926 8927 8928 8929 23474 23475 23476 23477 23478 23479 23432 23433 23434 23435 23436 23437 23468 23469 23470 23471 23472 23473 21650 21651 21652 21653 21654 21655 21644 21645 21646 21647 21648 21649 7256 7257 7258 7259 7260 7261 19322 19323 19324 19325 19326 19327 +48 23480 23481 23482 23483 23484 23485 23486 23487 23488 23489 23490 23491 23492 23493 23494 23495 23496 23497 23498 23499 23500 23501 23502 23503 23444 23445 23446 23447 23448 23449 23438 23439 23440 23441 23442 23443 23432 23433 23434 23435 23436 23437 23504 23505 23506 23507 23508 23509 +48 19046 19047 19048 19049 19050 19051 23510 23511 23512 23513 23514 23515 23480 23481 23482 23483 23484 23485 23504 23505 23506 23507 23508 23509 23432 23433 23434 23435 23436 23437 23474 23475 23476 23477 23478 23479 8924 8925 8926 8927 8928 8929 19190 19191 19192 19193 19194 19195 +48 23516 23517 23518 23519 23520 23521 23522 23523 23524 23525 23526 23527 23528 23529 23530 23531 23532 23533 23534 23535 23536 23537 23538 23539 23492 23493 23494 23495 23496 23497 23486 23487 23488 23489 23490 23491 23480 23481 23482 23483 23484 23485 23540 23541 23542 23543 23544 23545 +48 11978 11979 11980 11981 11982 11983 23546 23547 23548 23549 23550 23551 23516 23517 23518 23519 23520 23521 23540 23541 23542 23543 23544 23545 23480 23481 23482 23483 23484 23485 23510 23511 23512 23513 23514 23515 19046 19047 19048 19049 19050 19051 19058 19059 19060 19061 19062 19063 +48 23552 23553 23554 23555 23556 23557 23558 23559 23560 23561 23562 23563 23564 23565 23566 23567 23568 23569 23570 23571 23572 23573 23574 23575 23528 23529 23530 23531 23532 23533 23522 23523 23524 23525 23526 23527 23516 23517 23518 23519 23520 23521 23576 23577 23578 23579 23580 23581 +48 13868 13869 13870 13871 13872 13873 23582 23583 23584 23585 23586 23587 23552 23553 23554 23555 23556 23557 23576 23577 23578 23579 23580 23581 23516 23517 23518 23519 23520 23521 23546 23547 23548 23549 23550 23551 11978 11979 11980 11981 11982 11983 18764 18765 18766 18767 18768 18769 +36 23564 23565 23566 23567 23568 23569 23552 23553 23554 23555 23556 23557 23588 23589 23590 23591 23592 23593 23558 23559 23560 23561 23562 23563 23600 23601 23602 23603 23604 23605 23594 23595 23596 23597 23598 23599 +48 15236 15237 15238 15239 15240 15241 23606 23607 23608 23609 23610 23611 23588 23589 23590 23591 23592 23593 23600 23601 23602 23603 23604 23605 23552 23553 23554 23555 23556 23557 23582 23583 23584 23585 23586 23587 13868 13869 13870 13871 13872 13873 18614 18615 18616 18617 18618 18619 +48 23612 23613 23614 23615 23616 23617 23618 23619 23620 23621 23622 23623 23624 23625 23626 23627 23628 23629 23630 23631 23632 23633 23634 23635 23636 23637 23638 23639 23640 23641 23642 23643 23644 23645 23646 23647 22196 22197 22198 22199 22200 22201 23648 23649 23650 23651 23652 23653 +48 23654 23655 23656 23657 23658 23659 23660 23661 23662 23663 23664 23665 23666 23667 23668 23669 23670 23671 23672 23673 23674 23675 23676 23677 23624 23625 23626 23627 23628 23629 23618 23619 23620 23621 23622 23623 23612 23613 23614 23615 23616 23617 23678 23679 23680 23681 23682 23683 +48 23684 23685 23686 23687 23688 23689 23690 23691 23692 23693 23694 23695 23696 23697 23698 23699 23700 23701 23702 23703 23704 23705 23706 23707 23666 23667 23668 23669 23670 23671 23660 23661 23662 23663 23664 23665 23654 23655 23656 23657 23658 23659 23708 23709 23710 23711 23712 23713 +48 23714 23715 23716 23717 23718 23719 23720 23721 23722 23723 23724 23725 23726 23727 23728 23729 23730 23731 23732 23733 23734 23735 23736 23737 23696 23697 23698 23699 23700 23701 23690 23691 23692 23693 23694 23695 23684 23685 23686 23687 23688 23689 23738 23739 23740 23741 23742 23743 +36 23726 23727 23728 23729 23730 23731 23714 23715 23716 23717 23718 23719 23744 23745 23746 23747 23748 23749 23720 23721 23722 23723 23724 23725 23756 23757 23758 23759 23760 23761 23750 23751 23752 23753 23754 23755 +48 15206 15207 15208 15209 15210 15211 23762 23763 23764 23765 23766 23767 23744 23745 23746 23747 23748 23749 23756 23757 23758 23759 23760 23761 23714 23715 23716 23717 23718 23719 23768 23769 23770 23771 23772 23773 13820 13821 13822 13823 13824 13825 18608 18609 18610 18611 18612 18613 +48 23774 23775 23776 23777 23778 23779 23780 23781 23782 23783 23784 23785 23786 23787 23788 23789 23790 23791 23792 23793 23794 23795 23796 23797 23798 23799 23800 23801 23802 23803 23804 23805 23806 23807 23808 23809 21674 21675 21676 21677 21678 21679 23810 23811 23812 23813 23814 23815 +48 8816 8817 8818 8819 8820 8821 23816 23817 23818 23819 23820 23821 23774 23775 23776 23777 23778 23779 23810 23811 23812 23813 23814 23815 21674 21675 21676 21677 21678 21679 21668 21669 21670 21671 21672 21673 7148 7149 7150 7151 7152 7153 19304 19305 19306 19307 19308 19309 +48 23822 23823 23824 23825 23826 23827 23828 23829 23830 23831 23832 23833 23834 23835 23836 23837 23838 23839 23840 23841 23842 23843 23844 23845 23786 23787 23788 23789 23790 23791 23780 23781 23782 23783 23784 23785 23774 23775 23776 23777 23778 23779 23846 23847 23848 23849 23850 23851 +48 23852 23853 23854 23855 23856 23857 23858 23859 23860 23861 23862 23863 23864 23865 23866 23867 23868 23869 23870 23871 23872 23873 23874 23875 23834 23835 23836 23837 23838 23839 23828 23829 23830 23831 23832 23833 23822 23823 23824 23825 23826 23827 23876 23877 23878 23879 23880 23881 +48 23882 23883 23884 23885 23886 23887 23888 23889 23890 23891 23892 23893 23894 23895 23896 23897 23898 23899 23900 23901 23902 23903 23904 23905 23864 23865 23866 23867 23868 23869 23858 23859 23860 23861 23862 23863 23852 23853 23854 23855 23856 23857 23906 23907 23908 23909 23910 23911 +48 13772 13773 13774 13775 13776 13777 23912 23913 23914 23915 23916 23917 23882 23883 23884 23885 23886 23887 23906 23907 23908 23909 23910 23911 23852 23853 23854 23855 23856 23857 23918 23919 23920 23921 23922 23923 11870 11871 11872 11873 11874 11875 18746 18747 18748 18749 18750 18751 +36 23894 23895 23896 23897 23898 23899 23882 23883 23884 23885 23886 23887 23924 23925 23926 23927 23928 23929 23888 23889 23890 23891 23892 23893 23936 23937 23938 23939 23940 23941 23930 23931 23932 23933 23934 23935 +48 15176 15177 15178 15179 15180 15181 23942 23943 23944 23945 23946 23947 23924 23925 23926 23927 23928 23929 23936 23937 23938 23939 23940 23941 23882 23883 23884 23885 23886 23887 23912 23913 23914 23915 23916 23917 13772 13773 13774 13775 13776 13777 18602 18603 18604 18605 18606 18607 +48 23948 23949 23950 23951 23952 23953 23954 23955 23956 23957 23958 23959 23960 23961 23962 23963 23964 23965 23966 23967 23968 23969 23970 23971 23972 23973 23974 23975 23976 23977 23978 23979 23980 23981 23982 23983 21698 21699 21700 21701 21702 21703 23984 23985 23986 23987 23988 23989 +48 8804 8805 8806 8807 8808 8809 23990 23991 23992 23993 23994 23995 23948 23949 23950 23951 23952 23953 23984 23985 23986 23987 23988 23989 21698 21699 21700 21701 21702 21703 21692 21693 21694 21695 21696 21697 7136 7137 7138 7139 7140 7141 19310 19311 19312 19313 19314 19315 +48 23996 23997 23998 23999 24000 24001 24002 24003 24004 24005 24006 24007 24008 24009 24010 24011 24012 24013 24014 24015 24016 24017 24018 24019 23960 23961 23962 23963 23964 23965 23954 23955 23956 23957 23958 23959 23948 23949 23950 23951 23952 23953 24020 24021 24022 24023 24024 24025 +48 24026 24027 24028 24029 24030 24031 24032 24033 24034 24035 24036 24037 24038 24039 24040 24041 24042 24043 24044 24045 24046 24047 24048 24049 24008 24009 24010 24011 24012 24013 24002 24003 24004 24005 24006 24007 23996 23997 23998 23999 24000 24001 24050 24051 24052 24053 24054 24055 +48 24056 24057 24058 24059 24060 24061 24062 24063 24064 24065 24066 24067 24068 24069 24070 24071 24072 24073 24074 24075 24076 24077 24078 24079 24038 24039 24040 24041 24042 24043 24032 24033 24034 24035 24036 24037 24026 24027 24028 24029 24030 24031 24080 24081 24082 24083 24084 24085 +48 13724 13725 13726 13727 13728 13729 24086 24087 24088 24089 24090 24091 24056 24057 24058 24059 24060 24061 24080 24081 24082 24083 24084 24085 24026 24027 24028 24029 24030 24031 24092 24093 24094 24095 24096 24097 11858 11859 11860 11861 11862 11863 18752 18753 18754 18755 18756 18757 +36 24068 24069 24070 24071 24072 24073 24056 24057 24058 24059 24060 24061 24098 24099 24100 24101 24102 24103 24062 24063 24064 24065 24066 24067 24110 24111 24112 24113 24114 24115 24104 24105 24106 24107 24108 24109 +48 15146 15147 15148 15149 15150 15151 24116 24117 24118 24119 24120 24121 24098 24099 24100 24101 24102 24103 24110 24111 24112 24113 24114 24115 24056 24057 24058 24059 24060 24061 24086 24087 24088 24089 24090 24091 13724 13725 13726 13727 13728 13729 18596 18597 18598 18599 18600 18601 +48 24122 24123 24124 24125 24126 24127 24128 24129 24130 24131 24132 24133 24134 24135 24136 24137 24138 24139 24140 24141 24142 24143 24144 24145 24146 24147 24148 24149 24150 24151 24152 24153 24154 24155 24156 24157 22226 22227 22228 22229 22230 22231 24158 24159 24160 24161 24162 24163 +48 24164 24165 24166 24167 24168 24169 24170 24171 24172 24173 24174 24175 24176 24177 24178 24179 24180 24181 24182 24183 24184 24185 24186 24187 24134 24135 24136 24137 24138 24139 24128 24129 24130 24131 24132 24133 24122 24123 24124 24125 24126 24127 24188 24189 24190 24191 24192 24193 +48 24194 24195 24196 24197 24198 24199 24200 24201 24202 24203 24204 24205 24206 24207 24208 24209 24210 24211 24212 24213 24214 24215 24216 24217 24176 24177 24178 24179 24180 24181 24170 24171 24172 24173 24174 24175 24164 24165 24166 24167 24168 24169 24218 24219 24220 24221 24222 24223 +48 24224 24225 24226 24227 24228 24229 24230 24231 24232 24233 24234 24235 24236 24237 24238 24239 24240 24241 24242 24243 24244 24245 24246 24247 24206 24207 24208 24209 24210 24211 24200 24201 24202 24203 24204 24205 24194 24195 24196 24197 24198 24199 24248 24249 24250 24251 24252 24253 +36 24236 24237 24238 24239 24240 24241 24224 24225 24226 24227 24228 24229 24254 24255 24256 24257 24258 24259 24230 24231 24232 24233 24234 24235 24266 24267 24268 24269 24270 24271 24260 24261 24262 24263 24264 24265 +48 15116 15117 15118 15119 15120 15121 24272 24273 24274 24275 24276 24277 24254 24255 24256 24257 24258 24259 24266 24267 24268 24269 24270 24271 24224 24225 24226 24227 24228 24229 24278 24279 24280 24281 24282 24283 13676 13677 13678 13679 13680 13681 18590 18591 18592 18593 18594 18595 +48 24284 24285 24286 24287 24288 24289 24290 24291 24292 24293 24294 24295 24296 24297 24298 24299 24300 24301 24302 24303 24304 24305 24306 24307 24308 24309 24310 24311 24312 24313 24314 24315 24316 24317 24318 24319 21722 21723 21724 21725 21726 21727 24320 24321 24322 24323 24324 24325 +48 8696 8697 8698 8699 8700 8701 24326 24327 24328 24329 24330 24331 24284 24285 24286 24287 24288 24289 24320 24321 24322 24323 24324 24325 21722 21723 21724 21725 21726 21727 21716 21717 21718 21719 21720 21721 7028 7029 7030 7031 7032 7033 19292 19293 19294 19295 19296 19297 +48 24332 24333 24334 24335 24336 24337 24338 24339 24340 24341 24342 24343 24344 24345 24346 24347 24348 24349 24350 24351 24352 24353 24354 24355 24296 24297 24298 24299 24300 24301 24290 24291 24292 24293 24294 24295 24284 24285 24286 24287 24288 24289 24356 24357 24358 24359 24360 24361 +48 24362 24363 24364 24365 24366 24367 24368 24369 24370 24371 24372 24373 24374 24375 24376 24377 24378 24379 24380 24381 24382 24383 24384 24385 24344 24345 24346 24347 24348 24349 24338 24339 24340 24341 24342 24343 24332 24333 24334 24335 24336 24337 24386 24387 24388 24389 24390 24391 +48 24392 24393 24394 24395 24396 24397 24398 24399 24400 24401 24402 24403 24404 24405 24406 24407 24408 24409 24410 24411 24412 24413 24414 24415 24374 24375 24376 24377 24378 24379 24368 24369 24370 24371 24372 24373 24362 24363 24364 24365 24366 24367 24416 24417 24418 24419 24420 24421 +48 13628 13629 13630 13631 13632 13633 24422 24423 24424 24425 24426 24427 24392 24393 24394 24395 24396 24397 24416 24417 24418 24419 24420 24421 24362 24363 24364 24365 24366 24367 24428 24429 24430 24431 24432 24433 11750 11751 11752 11753 11754 11755 18734 18735 18736 18737 18738 18739 +36 24404 24405 24406 24407 24408 24409 24392 24393 24394 24395 24396 24397 24434 24435 24436 24437 24438 24439 24398 24399 24400 24401 24402 24403 24446 24447 24448 24449 24450 24451 24440 24441 24442 24443 24444 24445 +48 15086 15087 15088 15089 15090 15091 24452 24453 24454 24455 24456 24457 24434 24435 24436 24437 24438 24439 24446 24447 24448 24449 24450 24451 24392 24393 24394 24395 24396 24397 24422 24423 24424 24425 24426 24427 13628 13629 13630 13631 13632 13633 18584 18585 18586 18587 18588 18589 +48 24458 24459 24460 24461 24462 24463 24464 24465 24466 24467 24468 24469 24470 24471 24472 24473 24474 24475 24476 24477 24478 24479 24480 24481 24482 24483 24484 24485 24486 24487 24488 24489 24490 24491 24492 24493 21746 21747 21748 21749 21750 21751 24494 24495 24496 24497 24498 24499 +48 8684 8685 8686 8687 8688 8689 24500 24501 24502 24503 24504 24505 24458 24459 24460 24461 24462 24463 24494 24495 24496 24497 24498 24499 21746 21747 21748 21749 21750 21751 21740 21741 21742 21743 21744 21745 7016 7017 7018 7019 7020 7021 19298 19299 19300 19301 19302 19303 +48 24506 24507 24508 24509 24510 24511 24512 24513 24514 24515 24516 24517 24518 24519 24520 24521 24522 24523 24524 24525 24526 24527 24528 24529 24470 24471 24472 24473 24474 24475 24464 24465 24466 24467 24468 24469 24458 24459 24460 24461 24462 24463 24530 24531 24532 24533 24534 24535 +48 18986 18987 18988 18989 18990 18991 24536 24537 24538 24539 24540 24541 24506 24507 24508 24509 24510 24511 24530 24531 24532 24533 24534 24535 24458 24459 24460 24461 24462 24463 24500 24501 24502 24503 24504 24505 8684 8685 8686 8687 8688 8689 19166 19167 19168 19169 19170 19171 +48 24542 24543 24544 24545 24546 24547 24548 24549 24550 24551 24552 24553 24554 24555 24556 24557 24558 24559 24560 24561 24562 24563 24564 24565 24518 24519 24520 24521 24522 24523 24512 24513 24514 24515 24516 24517 24506 24507 24508 24509 24510 24511 24566 24567 24568 24569 24570 24571 +48 11738 11739 11740 11741 11742 11743 24572 24573 24574 24575 24576 24577 24542 24543 24544 24545 24546 24547 24566 24567 24568 24569 24570 24571 24506 24507 24508 24509 24510 24511 24536 24537 24538 24539 24540 24541 18986 18987 18988 18989 18990 18991 18998 18999 19000 19001 19002 19003 +48 24578 24579 24580 24581 24582 24583 24584 24585 24586 24587 24588 24589 24590 24591 24592 24593 24594 24595 24596 24597 24598 24599 24600 24601 24554 24555 24556 24557 24558 24559 24548 24549 24550 24551 24552 24553 24542 24543 24544 24545 24546 24547 24602 24603 24604 24605 24606 24607 +48 13580 13581 13582 13583 13584 13585 24608 24609 24610 24611 24612 24613 24578 24579 24580 24581 24582 24583 24602 24603 24604 24605 24606 24607 24542 24543 24544 24545 24546 24547 24572 24573 24574 24575 24576 24577 11738 11739 11740 11741 11742 11743 18740 18741 18742 18743 18744 18745 +36 24590 24591 24592 24593 24594 24595 24578 24579 24580 24581 24582 24583 24614 24615 24616 24617 24618 24619 24584 24585 24586 24587 24588 24589 24626 24627 24628 24629 24630 24631 24620 24621 24622 24623 24624 24625 +48 15056 15057 15058 15059 15060 15061 24632 24633 24634 24635 24636 24637 24614 24615 24616 24617 24618 24619 24626 24627 24628 24629 24630 24631 24578 24579 24580 24581 24582 24583 24608 24609 24610 24611 24612 24613 13580 13581 13582 13583 13584 13585 18578 18579 18580 18581 18582 18583 +48 24638 24639 24640 24641 24642 24643 24644 24645 24646 24647 24648 24649 24650 24651 24652 24653 24654 24655 24656 24657 24658 24659 24660 24661 24662 24663 24664 24665 24666 24667 24668 24669 24670 24671 24672 24673 22256 22257 22258 22259 22260 22261 24674 24675 24676 24677 24678 24679 +48 24680 24681 24682 24683 24684 24685 24686 24687 24688 24689 24690 24691 24692 24693 24694 24695 24696 24697 24698 24699 24700 24701 24702 24703 24650 24651 24652 24653 24654 24655 24644 24645 24646 24647 24648 24649 24638 24639 24640 24641 24642 24643 24704 24705 24706 24707 24708 24709 +48 24710 24711 24712 24713 24714 24715 24716 24717 24718 24719 24720 24721 24722 24723 24724 24725 24726 24727 24728 24729 24730 24731 24732 24733 24692 24693 24694 24695 24696 24697 24686 24687 24688 24689 24690 24691 24680 24681 24682 24683 24684 24685 24734 24735 24736 24737 24738 24739 +48 24740 24741 24742 24743 24744 24745 24746 24747 24748 24749 24750 24751 24752 24753 24754 24755 24756 24757 24758 24759 24760 24761 24762 24763 24722 24723 24724 24725 24726 24727 24716 24717 24718 24719 24720 24721 24710 24711 24712 24713 24714 24715 24764 24765 24766 24767 24768 24769 +36 24752 24753 24754 24755 24756 24757 24740 24741 24742 24743 24744 24745 24770 24771 24772 24773 24774 24775 24746 24747 24748 24749 24750 24751 24782 24783 24784 24785 24786 24787 24776 24777 24778 24779 24780 24781 +48 15026 15027 15028 15029 15030 15031 24788 24789 24790 24791 24792 24793 24770 24771 24772 24773 24774 24775 24782 24783 24784 24785 24786 24787 24740 24741 24742 24743 24744 24745 24794 24795 24796 24797 24798 24799 13532 13533 13534 13535 13536 13537 18572 18573 18574 18575 18576 18577 +48 24800 24801 24802 24803 24804 24805 24806 24807 24808 24809 24810 24811 24812 24813 24814 24815 24816 24817 24818 24819 24820 24821 24822 24823 24824 24825 24826 24827 24828 24829 24830 24831 24832 24833 24834 24835 21770 21771 21772 21773 21774 21775 24836 24837 24838 24839 24840 24841 +48 8576 8577 8578 8579 8580 8581 24842 24843 24844 24845 24846 24847 24800 24801 24802 24803 24804 24805 24836 24837 24838 24839 24840 24841 21770 21771 21772 21773 21774 21775 21764 21765 21766 21767 21768 21769 6908 6909 6910 6911 6912 6913 19280 19281 19282 19283 19284 19285 +48 24848 24849 24850 24851 24852 24853 24854 24855 24856 24857 24858 24859 24860 24861 24862 24863 24864 24865 24866 24867 24868 24869 24870 24871 24812 24813 24814 24815 24816 24817 24806 24807 24808 24809 24810 24811 24800 24801 24802 24803 24804 24805 24872 24873 24874 24875 24876 24877 +48 24878 24879 24880 24881 24882 24883 24884 24885 24886 24887 24888 24889 24890 24891 24892 24893 24894 24895 24896 24897 24898 24899 24900 24901 24860 24861 24862 24863 24864 24865 24854 24855 24856 24857 24858 24859 24848 24849 24850 24851 24852 24853 24902 24903 24904 24905 24906 24907 +48 24908 24909 24910 24911 24912 24913 24914 24915 24916 24917 24918 24919 24920 24921 24922 24923 24924 24925 24926 24927 24928 24929 24930 24931 24890 24891 24892 24893 24894 24895 24884 24885 24886 24887 24888 24889 24878 24879 24880 24881 24882 24883 24932 24933 24934 24935 24936 24937 +48 13484 13485 13486 13487 13488 13489 24938 24939 24940 24941 24942 24943 24908 24909 24910 24911 24912 24913 24932 24933 24934 24935 24936 24937 24878 24879 24880 24881 24882 24883 24944 24945 24946 24947 24948 24949 11630 11631 11632 11633 11634 11635 18722 18723 18724 18725 18726 18727 +36 24920 24921 24922 24923 24924 24925 24908 24909 24910 24911 24912 24913 24950 24951 24952 24953 24954 24955 24914 24915 24916 24917 24918 24919 24962 24963 24964 24965 24966 24967 24956 24957 24958 24959 24960 24961 +48 14996 14997 14998 14999 15000 15001 24968 24969 24970 24971 24972 24973 24950 24951 24952 24953 24954 24955 24962 24963 24964 24965 24966 24967 24908 24909 24910 24911 24912 24913 24938 24939 24940 24941 24942 24943 13484 13485 13486 13487 13488 13489 18566 18567 18568 18569 18570 18571 +48 24974 24975 24976 24977 24978 24979 24980 24981 24982 24983 24984 24985 24986 24987 24988 24989 24990 24991 24992 24993 24994 24995 24996 24997 24998 24999 25000 25001 25002 25003 25004 25005 25006 25007 25008 25009 21794 21795 21796 21797 21798 21799 25010 25011 25012 25013 25014 25015 +48 8564 8565 8566 8567 8568 8569 25016 25017 25018 25019 25020 25021 24974 24975 24976 24977 24978 24979 25010 25011 25012 25013 25014 25015 21794 21795 21796 21797 21798 21799 21788 21789 21790 21791 21792 21793 6896 6897 6898 6899 6900 6901 19286 19287 19288 19289 19290 19291 +48 25022 25023 25024 25025 25026 25027 25028 25029 25030 25031 25032 25033 25034 25035 25036 25037 25038 25039 25040 25041 25042 25043 25044 25045 24986 24987 24988 24989 24990 24991 24980 24981 24982 24983 24984 24985 24974 24975 24976 24977 24978 24979 25046 25047 25048 25049 25050 25051 +48 25052 25053 25054 25055 25056 25057 25058 25059 25060 25061 25062 25063 25064 25065 25066 25067 25068 25069 25070 25071 25072 25073 25074 25075 25034 25035 25036 25037 25038 25039 25028 25029 25030 25031 25032 25033 25022 25023 25024 25025 25026 25027 25076 25077 25078 25079 25080 25081 +48 25082 25083 25084 25085 25086 25087 25088 25089 25090 25091 25092 25093 25094 25095 25096 25097 25098 25099 25100 25101 25102 25103 25104 25105 25064 25065 25066 25067 25068 25069 25058 25059 25060 25061 25062 25063 25052 25053 25054 25055 25056 25057 25106 25107 25108 25109 25110 25111 +48 13436 13437 13438 13439 13440 13441 25112 25113 25114 25115 25116 25117 25082 25083 25084 25085 25086 25087 25106 25107 25108 25109 25110 25111 25052 25053 25054 25055 25056 25057 25118 25119 25120 25121 25122 25123 11618 11619 11620 11621 11622 11623 18728 18729 18730 18731 18732 18733 +36 25094 25095 25096 25097 25098 25099 25082 25083 25084 25085 25086 25087 25124 25125 25126 25127 25128 25129 25088 25089 25090 25091 25092 25093 25136 25137 25138 25139 25140 25141 25130 25131 25132 25133 25134 25135 +48 14966 14967 14968 14969 14970 14971 25142 25143 25144 25145 25146 25147 25124 25125 25126 25127 25128 25129 25136 25137 25138 25139 25140 25141 25082 25083 25084 25085 25086 25087 25112 25113 25114 25115 25116 25117 13436 13437 13438 13439 13440 13441 18560 18561 18562 18563 18564 18565 +48 25148 25149 25150 25151 25152 25153 25154 25155 25156 25157 25158 25159 25160 25161 25162 25163 25164 25165 25166 25167 25168 25169 25170 25171 25172 25173 25174 25175 25176 25177 25178 25179 25180 25181 25182 25183 22286 22287 22288 22289 22290 22291 25184 25185 25186 25187 25188 25189 +48 25190 25191 25192 25193 25194 25195 25196 25197 25198 25199 25200 25201 25202 25203 25204 25205 25206 25207 25208 25209 25210 25211 25212 25213 25160 25161 25162 25163 25164 25165 25154 25155 25156 25157 25158 25159 25148 25149 25150 25151 25152 25153 25214 25215 25216 25217 25218 25219 +48 25220 25221 25222 25223 25224 25225 25226 25227 25228 25229 25230 25231 25232 25233 25234 25235 25236 25237 25238 25239 25240 25241 25242 25243 25202 25203 25204 25205 25206 25207 25196 25197 25198 25199 25200 25201 25190 25191 25192 25193 25194 25195 25244 25245 25246 25247 25248 25249 +48 25250 25251 25252 25253 25254 25255 25256 25257 25258 25259 25260 25261 25262 25263 25264 25265 25266 25267 25268 25269 25270 25271 25272 25273 25232 25233 25234 25235 25236 25237 25226 25227 25228 25229 25230 25231 25220 25221 25222 25223 25224 25225 25274 25275 25276 25277 25278 25279 +36 25262 25263 25264 25265 25266 25267 25250 25251 25252 25253 25254 25255 25280 25281 25282 25283 25284 25285 25256 25257 25258 25259 25260 25261 25292 25293 25294 25295 25296 25297 25286 25287 25288 25289 25290 25291 +48 14936 14937 14938 14939 14940 14941 25298 25299 25300 25301 25302 25303 25280 25281 25282 25283 25284 25285 25292 25293 25294 25295 25296 25297 25250 25251 25252 25253 25254 25255 25304 25305 25306 25307 25308 25309 13388 13389 13390 13391 13392 13393 18554 18555 18556 18557 18558 18559 +48 25310 25311 25312 25313 25314 25315 25316 25317 25318 25319 25320 25321 25322 25323 25324 25325 25326 25327 25328 25329 25330 25331 25332 25333 25334 25335 25336 25337 25338 25339 25340 25341 25342 25343 25344 25345 21818 21819 21820 21821 21822 21823 25346 25347 25348 25349 25350 25351 +48 8456 8457 8458 8459 8460 8461 25352 25353 25354 25355 25356 25357 25310 25311 25312 25313 25314 25315 25346 25347 25348 25349 25350 25351 21818 21819 21820 21821 21822 21823 21812 21813 21814 21815 21816 21817 6788 6789 6790 6791 6792 6793 19268 19269 19270 19271 19272 19273 +48 25358 25359 25360 25361 25362 25363 25364 25365 25366 25367 25368 25369 25370 25371 25372 25373 25374 25375 25376 25377 25378 25379 25380 25381 25322 25323 25324 25325 25326 25327 25316 25317 25318 25319 25320 25321 25310 25311 25312 25313 25314 25315 25382 25383 25384 25385 25386 25387 +48 25388 25389 25390 25391 25392 25393 25394 25395 25396 25397 25398 25399 25400 25401 25402 25403 25404 25405 25406 25407 25408 25409 25410 25411 25370 25371 25372 25373 25374 25375 25364 25365 25366 25367 25368 25369 25358 25359 25360 25361 25362 25363 25412 25413 25414 25415 25416 25417 +48 25418 25419 25420 25421 25422 25423 25424 25425 25426 25427 25428 25429 25430 25431 25432 25433 25434 25435 25436 25437 25438 25439 25440 25441 25400 25401 25402 25403 25404 25405 25394 25395 25396 25397 25398 25399 25388 25389 25390 25391 25392 25393 25442 25443 25444 25445 25446 25447 +48 13340 13341 13342 13343 13344 13345 25448 25449 25450 25451 25452 25453 25418 25419 25420 25421 25422 25423 25442 25443 25444 25445 25446 25447 25388 25389 25390 25391 25392 25393 25454 25455 25456 25457 25458 25459 11510 11511 11512 11513 11514 11515 18710 18711 18712 18713 18714 18715 +36 25430 25431 25432 25433 25434 25435 25418 25419 25420 25421 25422 25423 25460 25461 25462 25463 25464 25465 25424 25425 25426 25427 25428 25429 25472 25473 25474 25475 25476 25477 25466 25467 25468 25469 25470 25471 +48 14906 14907 14908 14909 14910 14911 25478 25479 25480 25481 25482 25483 25460 25461 25462 25463 25464 25465 25472 25473 25474 25475 25476 25477 25418 25419 25420 25421 25422 25423 25448 25449 25450 25451 25452 25453 13340 13341 13342 13343 13344 13345 18548 18549 18550 18551 18552 18553 +48 25484 25485 25486 25487 25488 25489 25490 25491 25492 25493 25494 25495 25496 25497 25498 25499 25500 25501 25502 25503 25504 25505 25506 25507 25508 25509 25510 25511 25512 25513 25514 25515 25516 25517 25518 25519 21842 21843 21844 21845 21846 21847 25520 25521 25522 25523 25524 25525 +48 8444 8445 8446 8447 8448 8449 25526 25527 25528 25529 25530 25531 25484 25485 25486 25487 25488 25489 25520 25521 25522 25523 25524 25525 21842 21843 21844 21845 21846 21847 21836 21837 21838 21839 21840 21841 6776 6777 6778 6779 6780 6781 19274 19275 19276 19277 19278 19279 +48 25532 25533 25534 25535 25536 25537 25538 25539 25540 25541 25542 25543 25544 25545 25546 25547 25548 25549 25550 25551 25552 25553 25554 25555 25496 25497 25498 25499 25500 25501 25490 25491 25492 25493 25494 25495 25484 25485 25486 25487 25488 25489 25556 25557 25558 25559 25560 25561 +48 18926 18927 18928 18929 18930 18931 25562 25563 25564 25565 25566 25567 25532 25533 25534 25535 25536 25537 25556 25557 25558 25559 25560 25561 25484 25485 25486 25487 25488 25489 25526 25527 25528 25529 25530 25531 8444 8445 8446 8447 8448 8449 19142 19143 19144 19145 19146 19147 +48 25568 25569 25570 25571 25572 25573 25574 25575 25576 25577 25578 25579 25580 25581 25582 25583 25584 25585 25586 25587 25588 25589 25590 25591 25544 25545 25546 25547 25548 25549 25538 25539 25540 25541 25542 25543 25532 25533 25534 25535 25536 25537 25592 25593 25594 25595 25596 25597 +48 11498 11499 11500 11501 11502 11503 25598 25599 25600 25601 25602 25603 25568 25569 25570 25571 25572 25573 25592 25593 25594 25595 25596 25597 25532 25533 25534 25535 25536 25537 25562 25563 25564 25565 25566 25567 18926 18927 18928 18929 18930 18931 18938 18939 18940 18941 18942 18943 +48 25604 25605 25606 25607 25608 25609 25610 25611 25612 25613 25614 25615 25616 25617 25618 25619 25620 25621 25622 25623 25624 25625 25626 25627 25580 25581 25582 25583 25584 25585 25574 25575 25576 25577 25578 25579 25568 25569 25570 25571 25572 25573 25628 25629 25630 25631 25632 25633 +48 13292 13293 13294 13295 13296 13297 25634 25635 25636 25637 25638 25639 25604 25605 25606 25607 25608 25609 25628 25629 25630 25631 25632 25633 25568 25569 25570 25571 25572 25573 25598 25599 25600 25601 25602 25603 11498 11499 11500 11501 11502 11503 18716 18717 18718 18719 18720 18721 +36 25616 25617 25618 25619 25620 25621 25604 25605 25606 25607 25608 25609 25640 25641 25642 25643 25644 25645 25610 25611 25612 25613 25614 25615 25652 25653 25654 25655 25656 25657 25646 25647 25648 25649 25650 25651 +48 14876 14877 14878 14879 14880 14881 25658 25659 25660 25661 25662 25663 25640 25641 25642 25643 25644 25645 25652 25653 25654 25655 25656 25657 25604 25605 25606 25607 25608 25609 25634 25635 25636 25637 25638 25639 13292 13293 13294 13295 13296 13297 18542 18543 18544 18545 18546 18547 +48 25664 25665 25666 25667 25668 25669 25670 25671 25672 25673 25674 25675 25676 25677 25678 25679 25680 25681 25682 25683 25684 25685 25686 25687 25688 25689 25690 25691 25692 25693 25694 25695 25696 25697 25698 25699 22316 22317 22318 22319 22320 22321 25700 25701 25702 25703 25704 25705 +48 25706 25707 25708 25709 25710 25711 25712 25713 25714 25715 25716 25717 25718 25719 25720 25721 25722 25723 25724 25725 25726 25727 25728 25729 25676 25677 25678 25679 25680 25681 25670 25671 25672 25673 25674 25675 25664 25665 25666 25667 25668 25669 25730 25731 25732 25733 25734 25735 +48 25736 25737 25738 25739 25740 25741 25742 25743 25744 25745 25746 25747 25748 25749 25750 25751 25752 25753 25754 25755 25756 25757 25758 25759 25718 25719 25720 25721 25722 25723 25712 25713 25714 25715 25716 25717 25706 25707 25708 25709 25710 25711 25760 25761 25762 25763 25764 25765 +48 25766 25767 25768 25769 25770 25771 25772 25773 25774 25775 25776 25777 25778 25779 25780 25781 25782 25783 25784 25785 25786 25787 25788 25789 25748 25749 25750 25751 25752 25753 25742 25743 25744 25745 25746 25747 25736 25737 25738 25739 25740 25741 25790 25791 25792 25793 25794 25795 +36 25778 25779 25780 25781 25782 25783 25766 25767 25768 25769 25770 25771 25796 25797 25798 25799 25800 25801 25772 25773 25774 25775 25776 25777 25808 25809 25810 25811 25812 25813 25802 25803 25804 25805 25806 25807 +48 14846 14847 14848 14849 14850 14851 25814 25815 25816 25817 25818 25819 25796 25797 25798 25799 25800 25801 25808 25809 25810 25811 25812 25813 25766 25767 25768 25769 25770 25771 25820 25821 25822 25823 25824 25825 13244 13245 13246 13247 13248 13249 18536 18537 18538 18539 18540 18541 +48 25826 25827 25828 25829 25830 25831 25832 25833 25834 25835 25836 25837 25838 25839 25840 25841 25842 25843 25844 25845 25846 25847 25848 25849 25850 25851 25852 25853 25854 25855 25856 25857 25858 25859 25860 25861 21866 21867 21868 21869 21870 21871 25862 25863 25864 25865 25866 25867 +48 8336 8337 8338 8339 8340 8341 25868 25869 25870 25871 25872 25873 25826 25827 25828 25829 25830 25831 25862 25863 25864 25865 25866 25867 21866 21867 21868 21869 21870 21871 21860 21861 21862 21863 21864 21865 6668 6669 6670 6671 6672 6673 19256 19257 19258 19259 19260 19261 +48 25874 25875 25876 25877 25878 25879 25880 25881 25882 25883 25884 25885 25886 25887 25888 25889 25890 25891 25892 25893 25894 25895 25896 25897 25838 25839 25840 25841 25842 25843 25832 25833 25834 25835 25836 25837 25826 25827 25828 25829 25830 25831 25898 25899 25900 25901 25902 25903 +48 25904 25905 25906 25907 25908 25909 25910 25911 25912 25913 25914 25915 25916 25917 25918 25919 25920 25921 25922 25923 25924 25925 25926 25927 25886 25887 25888 25889 25890 25891 25880 25881 25882 25883 25884 25885 25874 25875 25876 25877 25878 25879 25928 25929 25930 25931 25932 25933 +48 25934 25935 25936 25937 25938 25939 25940 25941 25942 25943 25944 25945 25946 25947 25948 25949 25950 25951 25952 25953 25954 25955 25956 25957 25916 25917 25918 25919 25920 25921 25910 25911 25912 25913 25914 25915 25904 25905 25906 25907 25908 25909 25958 25959 25960 25961 25962 25963 +48 13196 13197 13198 13199 13200 13201 25964 25965 25966 25967 25968 25969 25934 25935 25936 25937 25938 25939 25958 25959 25960 25961 25962 25963 25904 25905 25906 25907 25908 25909 25970 25971 25972 25973 25974 25975 11390 11391 11392 11393 11394 11395 18698 18699 18700 18701 18702 18703 +36 25946 25947 25948 25949 25950 25951 25934 25935 25936 25937 25938 25939 25976 25977 25978 25979 25980 25981 25940 25941 25942 25943 25944 25945 25988 25989 25990 25991 25992 25993 25982 25983 25984 25985 25986 25987 +48 14816 14817 14818 14819 14820 14821 25994 25995 25996 25997 25998 25999 25976 25977 25978 25979 25980 25981 25988 25989 25990 25991 25992 25993 25934 25935 25936 25937 25938 25939 25964 25965 25966 25967 25968 25969 13196 13197 13198 13199 13200 13201 18530 18531 18532 18533 18534 18535 +48 26000 26001 26002 26003 26004 26005 26006 26007 26008 26009 26010 26011 26012 26013 26014 26015 26016 26017 26018 26019 26020 26021 26022 26023 26024 26025 26026 26027 26028 26029 26030 26031 26032 26033 26034 26035 21890 21891 21892 21893 21894 21895 26036 26037 26038 26039 26040 26041 +48 8324 8325 8326 8327 8328 8329 26042 26043 26044 26045 26046 26047 26000 26001 26002 26003 26004 26005 26036 26037 26038 26039 26040 26041 21890 21891 21892 21893 21894 21895 21884 21885 21886 21887 21888 21889 6656 6657 6658 6659 6660 6661 19262 19263 19264 19265 19266 19267 +48 26048 26049 26050 26051 26052 26053 26054 26055 26056 26057 26058 26059 26060 26061 26062 26063 26064 26065 26066 26067 26068 26069 26070 26071 26012 26013 26014 26015 26016 26017 26006 26007 26008 26009 26010 26011 26000 26001 26002 26003 26004 26005 26072 26073 26074 26075 26076 26077 +48 26078 26079 26080 26081 26082 26083 26084 26085 26086 26087 26088 26089 26090 26091 26092 26093 26094 26095 26096 26097 26098 26099 26100 26101 26060 26061 26062 26063 26064 26065 26054 26055 26056 26057 26058 26059 26048 26049 26050 26051 26052 26053 26102 26103 26104 26105 26106 26107 +48 26108 26109 26110 26111 26112 26113 26114 26115 26116 26117 26118 26119 26120 26121 26122 26123 26124 26125 26126 26127 26128 26129 26130 26131 26090 26091 26092 26093 26094 26095 26084 26085 26086 26087 26088 26089 26078 26079 26080 26081 26082 26083 26132 26133 26134 26135 26136 26137 +48 13148 13149 13150 13151 13152 13153 26138 26139 26140 26141 26142 26143 26108 26109 26110 26111 26112 26113 26132 26133 26134 26135 26136 26137 26078 26079 26080 26081 26082 26083 26144 26145 26146 26147 26148 26149 11378 11379 11380 11381 11382 11383 18704 18705 18706 18707 18708 18709 +36 26120 26121 26122 26123 26124 26125 26108 26109 26110 26111 26112 26113 26150 26151 26152 26153 26154 26155 26114 26115 26116 26117 26118 26119 26162 26163 26164 26165 26166 26167 26156 26157 26158 26159 26160 26161 +48 14786 14787 14788 14789 14790 14791 26168 26169 26170 26171 26172 26173 26150 26151 26152 26153 26154 26155 26162 26163 26164 26165 26166 26167 26108 26109 26110 26111 26112 26113 26138 26139 26140 26141 26142 26143 13148 13149 13150 13151 13152 13153 18524 18525 18526 18527 18528 18529 +48 26174 26175 26176 26177 26178 26179 26180 26181 26182 26183 26184 26185 26186 26187 26188 26189 26190 26191 26192 26193 26194 26195 26196 26197 26198 26199 26200 26201 26202 26203 26204 26205 26206 26207 26208 26209 22346 22347 22348 22349 22350 22351 26210 26211 26212 26213 26214 26215 +48 26216 26217 26218 26219 26220 26221 26222 26223 26224 26225 26226 26227 26228 26229 26230 26231 26232 26233 26234 26235 26236 26237 26238 26239 26186 26187 26188 26189 26190 26191 26180 26181 26182 26183 26184 26185 26174 26175 26176 26177 26178 26179 26240 26241 26242 26243 26244 26245 +48 26246 26247 26248 26249 26250 26251 26252 26253 26254 26255 26256 26257 26258 26259 26260 26261 26262 26263 26264 26265 26266 26267 26268 26269 26228 26229 26230 26231 26232 26233 26222 26223 26224 26225 26226 26227 26216 26217 26218 26219 26220 26221 26270 26271 26272 26273 26274 26275 +48 26276 26277 26278 26279 26280 26281 26282 26283 26284 26285 26286 26287 26288 26289 26290 26291 26292 26293 26294 26295 26296 26297 26298 26299 26258 26259 26260 26261 26262 26263 26252 26253 26254 26255 26256 26257 26246 26247 26248 26249 26250 26251 26300 26301 26302 26303 26304 26305 +36 26288 26289 26290 26291 26292 26293 26276 26277 26278 26279 26280 26281 26306 26307 26308 26309 26310 26311 26282 26283 26284 26285 26286 26287 26318 26319 26320 26321 26322 26323 26312 26313 26314 26315 26316 26317 +48 14756 14757 14758 14759 14760 14761 26324 26325 26326 26327 26328 26329 26306 26307 26308 26309 26310 26311 26318 26319 26320 26321 26322 26323 26276 26277 26278 26279 26280 26281 26330 26331 26332 26333 26334 26335 13100 13101 13102 13103 13104 13105 18518 18519 18520 18521 18522 18523 +48 26336 26337 26338 26339 26340 26341 26342 26343 26344 26345 26346 26347 26348 26349 26350 26351 26352 26353 26354 26355 26356 26357 26358 26359 26360 26361 26362 26363 26364 26365 26366 26367 26368 26369 26370 26371 21914 21915 21916 21917 21918 21919 26372 26373 26374 26375 26376 26377 +48 8216 8217 8218 8219 8220 8221 26378 26379 26380 26381 26382 26383 26336 26337 26338 26339 26340 26341 26372 26373 26374 26375 26376 26377 21914 21915 21916 21917 21918 21919 21908 21909 21910 21911 21912 21913 6548 6549 6550 6551 6552 6553 19244 19245 19246 19247 19248 19249 +48 26384 26385 26386 26387 26388 26389 26390 26391 26392 26393 26394 26395 26396 26397 26398 26399 26400 26401 26402 26403 26404 26405 26406 26407 26348 26349 26350 26351 26352 26353 26342 26343 26344 26345 26346 26347 26336 26337 26338 26339 26340 26341 26408 26409 26410 26411 26412 26413 +48 26414 26415 26416 26417 26418 26419 26420 26421 26422 26423 26424 26425 26426 26427 26428 26429 26430 26431 26432 26433 26434 26435 26436 26437 26396 26397 26398 26399 26400 26401 26390 26391 26392 26393 26394 26395 26384 26385 26386 26387 26388 26389 26438 26439 26440 26441 26442 26443 +48 26444 26445 26446 26447 26448 26449 26450 26451 26452 26453 26454 26455 26456 26457 26458 26459 26460 26461 26462 26463 26464 26465 26466 26467 26426 26427 26428 26429 26430 26431 26420 26421 26422 26423 26424 26425 26414 26415 26416 26417 26418 26419 26468 26469 26470 26471 26472 26473 +48 13052 13053 13054 13055 13056 13057 26474 26475 26476 26477 26478 26479 26444 26445 26446 26447 26448 26449 26468 26469 26470 26471 26472 26473 26414 26415 26416 26417 26418 26419 26480 26481 26482 26483 26484 26485 11270 11271 11272 11273 11274 11275 18686 18687 18688 18689 18690 18691 +36 26456 26457 26458 26459 26460 26461 26444 26445 26446 26447 26448 26449 26486 26487 26488 26489 26490 26491 26450 26451 26452 26453 26454 26455 26498 26499 26500 26501 26502 26503 26492 26493 26494 26495 26496 26497 +48 14726 14727 14728 14729 14730 14731 26504 26505 26506 26507 26508 26509 26486 26487 26488 26489 26490 26491 26498 26499 26500 26501 26502 26503 26444 26445 26446 26447 26448 26449 26474 26475 26476 26477 26478 26479 13052 13053 13054 13055 13056 13057 18512 18513 18514 18515 18516 18517 +48 26510 26511 26512 26513 26514 26515 26516 26517 26518 26519 26520 26521 26522 26523 26524 26525 26526 26527 26528 26529 26530 26531 26532 26533 26534 26535 26536 26537 26538 26539 26540 26541 26542 26543 26544 26545 21938 21939 21940 21941 21942 21943 26546 26547 26548 26549 26550 26551 +48 8204 8205 8206 8207 8208 8209 26552 26553 26554 26555 26556 26557 26510 26511 26512 26513 26514 26515 26546 26547 26548 26549 26550 26551 21938 21939 21940 21941 21942 21943 21932 21933 21934 21935 21936 21937 6536 6537 6538 6539 6540 6541 19250 19251 19252 19253 19254 19255 +48 26558 26559 26560 26561 26562 26563 26564 26565 26566 26567 26568 26569 26570 26571 26572 26573 26574 26575 26576 26577 26578 26579 26580 26581 26522 26523 26524 26525 26526 26527 26516 26517 26518 26519 26520 26521 26510 26511 26512 26513 26514 26515 26582 26583 26584 26585 26586 26587 +48 18866 18867 18868 18869 18870 18871 26588 26589 26590 26591 26592 26593 26558 26559 26560 26561 26562 26563 26582 26583 26584 26585 26586 26587 26510 26511 26512 26513 26514 26515 26552 26553 26554 26555 26556 26557 8204 8205 8206 8207 8208 8209 19118 19119 19120 19121 19122 19123 +48 26594 26595 26596 26597 26598 26599 26600 26601 26602 26603 26604 26605 26606 26607 26608 26609 26610 26611 26612 26613 26614 26615 26616 26617 26570 26571 26572 26573 26574 26575 26564 26565 26566 26567 26568 26569 26558 26559 26560 26561 26562 26563 26618 26619 26620 26621 26622 26623 +48 11258 11259 11260 11261 11262 11263 26624 26625 26626 26627 26628 26629 26594 26595 26596 26597 26598 26599 26618 26619 26620 26621 26622 26623 26558 26559 26560 26561 26562 26563 26588 26589 26590 26591 26592 26593 18866 18867 18868 18869 18870 18871 18878 18879 18880 18881 18882 18883 +48 26630 26631 26632 26633 26634 26635 26636 26637 26638 26639 26640 26641 26642 26643 26644 26645 26646 26647 26648 26649 26650 26651 26652 26653 26606 26607 26608 26609 26610 26611 26600 26601 26602 26603 26604 26605 26594 26595 26596 26597 26598 26599 26654 26655 26656 26657 26658 26659 +48 13004 13005 13006 13007 13008 13009 26660 26661 26662 26663 26664 26665 26630 26631 26632 26633 26634 26635 26654 26655 26656 26657 26658 26659 26594 26595 26596 26597 26598 26599 26624 26625 26626 26627 26628 26629 11258 11259 11260 11261 11262 11263 18692 18693 18694 18695 18696 18697 +36 26642 26643 26644 26645 26646 26647 26630 26631 26632 26633 26634 26635 26666 26667 26668 26669 26670 26671 26636 26637 26638 26639 26640 26641 26678 26679 26680 26681 26682 26683 26672 26673 26674 26675 26676 26677 +48 14696 14697 14698 14699 14700 14701 26684 26685 26686 26687 26688 26689 26666 26667 26668 26669 26670 26671 26678 26679 26680 26681 26682 26683 26630 26631 26632 26633 26634 26635 26660 26661 26662 26663 26664 26665 13004 13005 13006 13007 13008 13009 18506 18507 18508 18509 18510 18511 +48 26690 26691 26692 26693 26694 26695 26696 26697 26698 26699 26700 26701 26702 26703 26704 26705 26706 26707 26708 26709 26710 26711 26712 26713 26714 26715 26716 26717 26718 26719 26720 26721 26722 26723 26724 26725 22376 22377 22378 22379 22380 22381 26726 26727 26728 26729 26730 26731 +48 26732 26733 26734 26735 26736 26737 26738 26739 26740 26741 26742 26743 26744 26745 26746 26747 26748 26749 26750 26751 26752 26753 26754 26755 26702 26703 26704 26705 26706 26707 26696 26697 26698 26699 26700 26701 26690 26691 26692 26693 26694 26695 26756 26757 26758 26759 26760 26761 +48 26762 26763 26764 26765 26766 26767 26768 26769 26770 26771 26772 26773 26774 26775 26776 26777 26778 26779 26780 26781 26782 26783 26784 26785 26744 26745 26746 26747 26748 26749 26738 26739 26740 26741 26742 26743 26732 26733 26734 26735 26736 26737 26786 26787 26788 26789 26790 26791 +48 26792 26793 26794 26795 26796 26797 26798 26799 26800 26801 26802 26803 26804 26805 26806 26807 26808 26809 26810 26811 26812 26813 26814 26815 26774 26775 26776 26777 26778 26779 26768 26769 26770 26771 26772 26773 26762 26763 26764 26765 26766 26767 26816 26817 26818 26819 26820 26821 +36 26804 26805 26806 26807 26808 26809 26792 26793 26794 26795 26796 26797 26822 26823 26824 26825 26826 26827 26798 26799 26800 26801 26802 26803 26834 26835 26836 26837 26838 26839 26828 26829 26830 26831 26832 26833 +48 14666 14667 14668 14669 14670 14671 26840 26841 26842 26843 26844 26845 26822 26823 26824 26825 26826 26827 26834 26835 26836 26837 26838 26839 26792 26793 26794 26795 26796 26797 26846 26847 26848 26849 26850 26851 12956 12957 12958 12959 12960 12961 18500 18501 18502 18503 18504 18505 +48 26852 26853 26854 26855 26856 26857 26858 26859 26860 26861 26862 26863 26864 26865 26866 26867 26868 26869 26870 26871 26872 26873 26874 26875 26876 26877 26878 26879 26880 26881 26882 26883 26884 26885 26886 26887 21962 21963 21964 21965 21966 21967 26888 26889 26890 26891 26892 26893 +48 8096 8097 8098 8099 8100 8101 26894 26895 26896 26897 26898 26899 26852 26853 26854 26855 26856 26857 26888 26889 26890 26891 26892 26893 21962 21963 21964 21965 21966 21967 21956 21957 21958 21959 21960 21961 6428 6429 6430 6431 6432 6433 19232 19233 19234 19235 19236 19237 +48 26900 26901 26902 26903 26904 26905 26906 26907 26908 26909 26910 26911 26912 26913 26914 26915 26916 26917 26918 26919 26920 26921 26922 26923 26864 26865 26866 26867 26868 26869 26858 26859 26860 26861 26862 26863 26852 26853 26854 26855 26856 26857 26924 26925 26926 26927 26928 26929 +48 26930 26931 26932 26933 26934 26935 26936 26937 26938 26939 26940 26941 26942 26943 26944 26945 26946 26947 26948 26949 26950 26951 26952 26953 26912 26913 26914 26915 26916 26917 26906 26907 26908 26909 26910 26911 26900 26901 26902 26903 26904 26905 26954 26955 26956 26957 26958 26959 +48 26960 26961 26962 26963 26964 26965 26966 26967 26968 26969 26970 26971 26972 26973 26974 26975 26976 26977 26978 26979 26980 26981 26982 26983 26942 26943 26944 26945 26946 26947 26936 26937 26938 26939 26940 26941 26930 26931 26932 26933 26934 26935 26984 26985 26986 26987 26988 26989 +48 12908 12909 12910 12911 12912 12913 26990 26991 26992 26993 26994 26995 26960 26961 26962 26963 26964 26965 26984 26985 26986 26987 26988 26989 26930 26931 26932 26933 26934 26935 26996 26997 26998 26999 27000 27001 11150 11151 11152 11153 11154 11155 18674 18675 18676 18677 18678 18679 +36 26972 26973 26974 26975 26976 26977 26960 26961 26962 26963 26964 26965 27002 27003 27004 27005 27006 27007 26966 26967 26968 26969 26970 26971 27014 27015 27016 27017 27018 27019 27008 27009 27010 27011 27012 27013 +48 14636 14637 14638 14639 14640 14641 27020 27021 27022 27023 27024 27025 27002 27003 27004 27005 27006 27007 27014 27015 27016 27017 27018 27019 26960 26961 26962 26963 26964 26965 26990 26991 26992 26993 26994 26995 12908 12909 12910 12911 12912 12913 18494 18495 18496 18497 18498 18499 +48 27026 27027 27028 27029 27030 27031 27032 27033 27034 27035 27036 27037 27038 27039 27040 27041 27042 27043 27044 27045 27046 27047 27048 27049 27050 27051 27052 27053 27054 27055 27056 27057 27058 27059 27060 27061 21986 21987 21988 21989 21990 21991 27062 27063 27064 27065 27066 27067 +48 8084 8085 8086 8087 8088 8089 27068 27069 27070 27071 27072 27073 27026 27027 27028 27029 27030 27031 27062 27063 27064 27065 27066 27067 21986 21987 21988 21989 21990 21991 21980 21981 21982 21983 21984 21985 6416 6417 6418 6419 6420 6421 19238 19239 19240 19241 19242 19243 +48 27074 27075 27076 27077 27078 27079 27080 27081 27082 27083 27084 27085 27086 27087 27088 27089 27090 27091 27092 27093 27094 27095 27096 27097 27038 27039 27040 27041 27042 27043 27032 27033 27034 27035 27036 27037 27026 27027 27028 27029 27030 27031 27098 27099 27100 27101 27102 27103 +48 27104 27105 27106 27107 27108 27109 27110 27111 27112 27113 27114 27115 27116 27117 27118 27119 27120 27121 27122 27123 27124 27125 27126 27127 27086 27087 27088 27089 27090 27091 27080 27081 27082 27083 27084 27085 27074 27075 27076 27077 27078 27079 27128 27129 27130 27131 27132 27133 +48 27134 27135 27136 27137 27138 27139 27140 27141 27142 27143 27144 27145 27146 27147 27148 27149 27150 27151 27152 27153 27154 27155 27156 27157 27116 27117 27118 27119 27120 27121 27110 27111 27112 27113 27114 27115 27104 27105 27106 27107 27108 27109 27158 27159 27160 27161 27162 27163 +48 12860 12861 12862 12863 12864 12865 27164 27165 27166 27167 27168 27169 27134 27135 27136 27137 27138 27139 27158 27159 27160 27161 27162 27163 27104 27105 27106 27107 27108 27109 27170 27171 27172 27173 27174 27175 11138 11139 11140 11141 11142 11143 18680 18681 18682 18683 18684 18685 +36 27146 27147 27148 27149 27150 27151 27134 27135 27136 27137 27138 27139 27176 27177 27178 27179 27180 27181 27140 27141 27142 27143 27144 27145 27188 27189 27190 27191 27192 27193 27182 27183 27184 27185 27186 27187 +48 14606 14607 14608 14609 14610 14611 27194 27195 27196 27197 27198 27199 27176 27177 27178 27179 27180 27181 27188 27189 27190 27191 27192 27193 27134 27135 27136 27137 27138 27139 27164 27165 27166 27167 27168 27169 12860 12861 12862 12863 12864 12865 18488 18489 18490 18491 18492 18493 +48 27200 27201 27202 27203 27204 27205 27206 27207 27208 27209 27210 27211 27212 27213 27214 27215 27216 27217 27218 27219 27220 27221 27222 27223 27224 27225 27226 27227 27228 27229 27230 27231 27232 27233 27234 27235 22406 22407 22408 22409 22410 22411 27236 27237 27238 27239 27240 27241 +48 27242 27243 27244 27245 27246 27247 27248 27249 27250 27251 27252 27253 27254 27255 27256 27257 27258 27259 27260 27261 27262 27263 27264 27265 27212 27213 27214 27215 27216 27217 27206 27207 27208 27209 27210 27211 27200 27201 27202 27203 27204 27205 27266 27267 27268 27269 27270 27271 +48 27272 27273 27274 27275 27276 27277 27278 27279 27280 27281 27282 27283 27284 27285 27286 27287 27288 27289 27290 27291 27292 27293 27294 27295 27254 27255 27256 27257 27258 27259 27248 27249 27250 27251 27252 27253 27242 27243 27244 27245 27246 27247 27296 27297 27298 27299 27300 27301 +48 27302 27303 27304 27305 27306 27307 27308 27309 27310 27311 27312 27313 27314 27315 27316 27317 27318 27319 27320 27321 27322 27323 27324 27325 27284 27285 27286 27287 27288 27289 27278 27279 27280 27281 27282 27283 27272 27273 27274 27275 27276 27277 27326 27327 27328 27329 27330 27331 +36 27314 27315 27316 27317 27318 27319 27302 27303 27304 27305 27306 27307 27332 27333 27334 27335 27336 27337 27308 27309 27310 27311 27312 27313 27344 27345 27346 27347 27348 27349 27338 27339 27340 27341 27342 27343 +48 14576 14577 14578 14579 14580 14581 27350 27351 27352 27353 27354 27355 27332 27333 27334 27335 27336 27337 27344 27345 27346 27347 27348 27349 27302 27303 27304 27305 27306 27307 27356 27357 27358 27359 27360 27361 12812 12813 12814 12815 12816 12817 18482 18483 18484 18485 18486 18487 +48 27362 27363 27364 27365 27366 27367 27368 27369 27370 27371 27372 27373 27374 27375 27376 27377 27378 27379 27380 27381 27382 27383 27384 27385 27386 27387 27388 27389 27390 27391 27392 27393 27394 27395 27396 27397 22010 22011 22012 22013 22014 22015 27398 27399 27400 27401 27402 27403 +48 7976 7977 7978 7979 7980 7981 27404 27405 27406 27407 27408 27409 27362 27363 27364 27365 27366 27367 27398 27399 27400 27401 27402 27403 22010 22011 22012 22013 22014 22015 22004 22005 22006 22007 22008 22009 6308 6309 6310 6311 6312 6313 19220 19221 19222 19223 19224 19225 +48 27410 27411 27412 27413 27414 27415 27416 27417 27418 27419 27420 27421 27422 27423 27424 27425 27426 27427 27428 27429 27430 27431 27432 27433 27374 27375 27376 27377 27378 27379 27368 27369 27370 27371 27372 27373 27362 27363 27364 27365 27366 27367 27434 27435 27436 27437 27438 27439 +48 9614 9615 9616 9617 9618 9619 27440 27441 27442 27443 27444 27445 27410 27411 27412 27413 27414 27415 27434 27435 27436 27437 27438 27439 27362 27363 27364 27365 27366 27367 27404 27405 27406 27407 27408 27409 7976 7977 7978 7979 7980 7981 19088 19089 19090 19091 19092 19093 +48 27446 27447 27448 27449 27450 27451 27452 27453 27454 27455 27456 27457 27458 27459 27460 27461 27462 27463 27464 27465 27466 27467 27468 27469 27422 27423 27424 27425 27426 27427 27416 27417 27418 27419 27420 27421 27410 27411 27412 27413 27414 27415 27470 27471 27472 27473 27474 27475 +48 11030 11031 11032 11033 11034 11035 27476 27477 27478 27479 27480 27481 27446 27447 27448 27449 27450 27451 27470 27471 27472 27473 27474 27475 27410 27411 27412 27413 27414 27415 27440 27441 27442 27443 27444 27445 9614 9615 9616 9617 9618 9619 18812 18813 18814 18815 18816 18817 +48 27482 27483 27484 27485 27486 27487 27488 27489 27490 27491 27492 27493 27494 27495 27496 27497 27498 27499 27500 27501 27502 27503 27504 27505 27458 27459 27460 27461 27462 27463 27452 27453 27454 27455 27456 27457 27446 27447 27448 27449 27450 27451 27506 27507 27508 27509 27510 27511 +48 12764 12765 12766 12767 12768 12769 27512 27513 27514 27515 27516 27517 27482 27483 27484 27485 27486 27487 27506 27507 27508 27509 27510 27511 27446 27447 27448 27449 27450 27451 27476 27477 27478 27479 27480 27481 11030 11031 11032 11033 11034 11035 18662 18663 18664 18665 18666 18667 +36 27494 27495 27496 27497 27498 27499 27482 27483 27484 27485 27486 27487 27518 27519 27520 27521 27522 27523 27488 27489 27490 27491 27492 27493 27530 27531 27532 27533 27534 27535 27524 27525 27526 27527 27528 27529 +48 14546 14547 14548 14549 14550 14551 27536 27537 27538 27539 27540 27541 27518 27519 27520 27521 27522 27523 27530 27531 27532 27533 27534 27535 27482 27483 27484 27485 27486 27487 27512 27513 27514 27515 27516 27517 12764 12765 12766 12767 12768 12769 18476 18477 18478 18479 18480 18481 +48 27542 27543 27544 27545 27546 27547 27548 27549 27550 27551 27552 27553 27554 27555 27556 27557 27558 27559 27560 27561 27562 27563 27564 27565 27566 27567 27568 27569 27570 27571 27572 27573 27574 27575 27576 27577 22034 22035 22036 22037 22038 22039 27578 27579 27580 27581 27582 27583 +48 7964 7965 7966 7967 7968 7969 27584 27585 27586 27587 27588 27589 27542 27543 27544 27545 27546 27547 27578 27579 27580 27581 27582 27583 22034 22035 22036 22037 22038 22039 22028 22029 22030 22031 22032 22033 6296 6297 6298 6299 6300 6301 19226 19227 19228 19229 19230 19231 +48 27590 27591 27592 27593 27594 27595 27596 27597 27598 27599 27600 27601 27602 27603 27604 27605 27606 27607 27608 27609 27610 27611 27612 27613 27554 27555 27556 27557 27558 27559 27548 27549 27550 27551 27552 27553 27542 27543 27544 27545 27546 27547 27614 27615 27616 27617 27618 27619 +48 9602 9603 9604 9605 9606 9607 27620 27621 27622 27623 27624 27625 27590 27591 27592 27593 27594 27595 27614 27615 27616 27617 27618 27619 27542 27543 27544 27545 27546 27547 27584 27585 27586 27587 27588 27589 7964 7965 7966 7967 7968 7969 19094 19095 19096 19097 19098 19099 +48 27626 27627 27628 27629 27630 27631 27632 27633 27634 27635 27636 27637 27638 27639 27640 27641 27642 27643 27644 27645 27646 27647 27648 27649 27602 27603 27604 27605 27606 27607 27596 27597 27598 27599 27600 27601 27590 27591 27592 27593 27594 27595 27650 27651 27652 27653 27654 27655 +48 11018 11019 11020 11021 11022 11023 27656 27657 27658 27659 27660 27661 27626 27627 27628 27629 27630 27631 27650 27651 27652 27653 27654 27655 27590 27591 27592 27593 27594 27595 27620 27621 27622 27623 27624 27625 9602 9603 9604 9605 9606 9607 18818 18819 18820 18821 18822 18823 +48 27662 27663 27664 27665 27666 27667 27668 27669 27670 27671 27672 27673 27674 27675 27676 27677 27678 27679 27680 27681 27682 27683 27684 27685 27638 27639 27640 27641 27642 27643 27632 27633 27634 27635 27636 27637 27626 27627 27628 27629 27630 27631 27686 27687 27688 27689 27690 27691 +48 12716 12717 12718 12719 12720 12721 27692 27693 27694 27695 27696 27697 27662 27663 27664 27665 27666 27667 27686 27687 27688 27689 27690 27691 27626 27627 27628 27629 27630 27631 27656 27657 27658 27659 27660 27661 11018 11019 11020 11021 11022 11023 18668 18669 18670 18671 18672 18673 +36 27674 27675 27676 27677 27678 27679 27662 27663 27664 27665 27666 27667 27698 27699 27700 27701 27702 27703 27668 27669 27670 27671 27672 27673 27710 27711 27712 27713 27714 27715 27704 27705 27706 27707 27708 27709 +48 14516 14517 14518 14519 14520 14521 27716 27717 27718 27719 27720 27721 27698 27699 27700 27701 27702 27703 27710 27711 27712 27713 27714 27715 27662 27663 27664 27665 27666 27667 27692 27693 27694 27695 27696 27697 12716 12717 12718 12719 12720 12721 18470 18471 18472 18473 18474 18475 +48 27722 27723 27724 27725 27726 27727 27728 27729 27730 27731 27732 27733 27734 27735 27736 27737 27738 27739 27740 27741 27742 27743 27744 27745 27746 27747 27748 27749 27750 27751 27752 27753 27754 27755 27756 27757 22436 22437 22438 22439 22440 22441 27758 27759 27760 27761 27762 27763 +48 27764 27765 27766 27767 27768 27769 27770 27771 27772 27773 27774 27775 27776 27777 27778 27779 27780 27781 27782 27783 27784 27785 27786 27787 27734 27735 27736 27737 27738 27739 27728 27729 27730 27731 27732 27733 27722 27723 27724 27725 27726 27727 27788 27789 27790 27791 27792 27793 +48 27794 27795 27796 27797 27798 27799 27800 27801 27802 27803 27804 27805 27806 27807 27808 27809 27810 27811 27812 27813 27814 27815 27816 27817 27776 27777 27778 27779 27780 27781 27770 27771 27772 27773 27774 27775 27764 27765 27766 27767 27768 27769 27818 27819 27820 27821 27822 27823 +48 27824 27825 27826 27827 27828 27829 27830 27831 27832 27833 27834 27835 27836 27837 27838 27839 27840 27841 27842 27843 27844 27845 27846 27847 27806 27807 27808 27809 27810 27811 27800 27801 27802 27803 27804 27805 27794 27795 27796 27797 27798 27799 27848 27849 27850 27851 27852 27853 +36 27836 27837 27838 27839 27840 27841 27824 27825 27826 27827 27828 27829 27854 27855 27856 27857 27858 27859 27830 27831 27832 27833 27834 27835 27866 27867 27868 27869 27870 27871 27860 27861 27862 27863 27864 27865 +48 14486 14487 14488 14489 14490 14491 27872 27873 27874 27875 27876 27877 27854 27855 27856 27857 27858 27859 27866 27867 27868 27869 27870 27871 27824 27825 27826 27827 27828 27829 27878 27879 27880 27881 27882 27883 12668 12669 12670 12671 12672 12673 18464 18465 18466 18467 18468 18469 +48 27884 27885 27886 27887 27888 27889 27890 27891 27892 27893 27894 27895 27896 27897 27898 27899 27900 27901 27902 27903 27904 27905 27906 27907 27908 27909 27910 27911 27912 27913 27914 27915 27916 27917 27918 27919 22058 22059 22060 22061 22062 22063 27920 27921 27922 27923 27924 27925 +48 7856 7857 7858 7859 7860 7861 27926 27927 27928 27929 27930 27931 27884 27885 27886 27887 27888 27889 27920 27921 27922 27923 27924 27925 22058 22059 22060 22061 22062 22063 22052 22053 22054 22055 22056 22057 6188 6189 6190 6191 6192 6193 19208 19209 19210 19211 19212 19213 +48 27932 27933 27934 27935 27936 27937 27938 27939 27940 27941 27942 27943 27944 27945 27946 27947 27948 27949 27950 27951 27952 27953 27954 27955 27896 27897 27898 27899 27900 27901 27890 27891 27892 27893 27894 27895 27884 27885 27886 27887 27888 27889 27956 27957 27958 27959 27960 27961 +48 27962 27963 27964 27965 27966 27967 27968 27969 27970 27971 27972 27973 27974 27975 27976 27977 27978 27979 27980 27981 27982 27983 27984 27985 27944 27945 27946 27947 27948 27949 27938 27939 27940 27941 27942 27943 27932 27933 27934 27935 27936 27937 27986 27987 27988 27989 27990 27991 +48 27992 27993 27994 27995 27996 27997 27998 27999 28000 28001 28002 28003 28004 28005 28006 28007 28008 28009 28010 28011 28012 28013 28014 28015 27974 27975 27976 27977 27978 27979 27968 27969 27970 27971 27972 27973 27962 27963 27964 27965 27966 27967 28016 28017 28018 28019 28020 28021 +48 12620 12621 12622 12623 12624 12625 28022 28023 28024 28025 28026 28027 27992 27993 27994 27995 27996 27997 28016 28017 28018 28019 28020 28021 27962 27963 27964 27965 27966 27967 28028 28029 28030 28031 28032 28033 10910 10911 10912 10913 10914 10915 18650 18651 18652 18653 18654 18655 +36 28004 28005 28006 28007 28008 28009 27992 27993 27994 27995 27996 27997 28034 28035 28036 28037 28038 28039 27998 27999 28000 28001 28002 28003 28046 28047 28048 28049 28050 28051 28040 28041 28042 28043 28044 28045 +48 14456 14457 14458 14459 14460 14461 28052 28053 28054 28055 28056 28057 28034 28035 28036 28037 28038 28039 28046 28047 28048 28049 28050 28051 27992 27993 27994 27995 27996 27997 28022 28023 28024 28025 28026 28027 12620 12621 12622 12623 12624 12625 18458 18459 18460 18461 18462 18463 +48 28058 28059 28060 28061 28062 28063 28064 28065 28066 28067 28068 28069 28070 28071 28072 28073 28074 28075 28076 28077 28078 28079 28080 28081 28082 28083 28084 28085 28086 28087 28088 28089 28090 28091 28092 28093 22082 22083 22084 22085 22086 22087 28094 28095 28096 28097 28098 28099 +48 7844 7845 7846 7847 7848 7849 28100 28101 28102 28103 28104 28105 28058 28059 28060 28061 28062 28063 28094 28095 28096 28097 28098 28099 22082 22083 22084 22085 22086 22087 22076 22077 22078 22079 22080 22081 6176 6177 6178 6179 6180 6181 19214 19215 19216 19217 19218 19219 +48 28106 28107 28108 28109 28110 28111 28112 28113 28114 28115 28116 28117 28118 28119 28120 28121 28122 28123 28124 28125 28126 28127 28128 28129 28070 28071 28072 28073 28074 28075 28064 28065 28066 28067 28068 28069 28058 28059 28060 28061 28062 28063 28130 28131 28132 28133 28134 28135 +48 28136 28137 28138 28139 28140 28141 28142 28143 28144 28145 28146 28147 28148 28149 28150 28151 28152 28153 28154 28155 28156 28157 28158 28159 28118 28119 28120 28121 28122 28123 28112 28113 28114 28115 28116 28117 28106 28107 28108 28109 28110 28111 28160 28161 28162 28163 28164 28165 +48 28166 28167 28168 28169 28170 28171 28172 28173 28174 28175 28176 28177 28178 28179 28180 28181 28182 28183 28184 28185 28186 28187 28188 28189 28148 28149 28150 28151 28152 28153 28142 28143 28144 28145 28146 28147 28136 28137 28138 28139 28140 28141 28190 28191 28192 28193 28194 28195 +48 12572 12573 12574 12575 12576 12577 28196 28197 28198 28199 28200 28201 28166 28167 28168 28169 28170 28171 28190 28191 28192 28193 28194 28195 28136 28137 28138 28139 28140 28141 28202 28203 28204 28205 28206 28207 10898 10899 10900 10901 10902 10903 18656 18657 18658 18659 18660 18661 +36 28178 28179 28180 28181 28182 28183 28166 28167 28168 28169 28170 28171 28208 28209 28210 28211 28212 28213 28172 28173 28174 28175 28176 28177 28220 28221 28222 28223 28224 28225 28214 28215 28216 28217 28218 28219 +48 14426 14427 14428 14429 14430 14431 28226 28227 28228 28229 28230 28231 28208 28209 28210 28211 28212 28213 28220 28221 28222 28223 28224 28225 28166 28167 28168 28169 28170 28171 28196 28197 28198 28199 28200 28201 12572 12573 12574 12575 12576 12577 18452 18453 18454 18455 18456 18457 +48 28232 28233 28234 28235 28236 28237 28238 28239 28240 28241 28242 28243 28244 28245 28246 28247 28248 28249 28250 28251 28252 28253 28254 28255 28256 28257 28258 28259 28260 28261 28262 28263 28264 28265 28266 28267 22466 22467 22468 22469 22470 22471 28268 28269 28270 28271 28272 28273 +48 28274 28275 28276 28277 28278 28279 28280 28281 28282 28283 28284 28285 28286 28287 28288 28289 28290 28291 28292 28293 28294 28295 28296 28297 28244 28245 28246 28247 28248 28249 28238 28239 28240 28241 28242 28243 28232 28233 28234 28235 28236 28237 28298 28299 28300 28301 28302 28303 +48 28304 28305 28306 28307 28308 28309 28310 28311 28312 28313 28314 28315 28316 28317 28318 28319 28320 28321 28322 28323 28324 28325 28326 28327 28286 28287 28288 28289 28290 28291 28280 28281 28282 28283 28284 28285 28274 28275 28276 28277 28278 28279 28328 28329 28330 28331 28332 28333 +48 28334 28335 28336 28337 28338 28339 28340 28341 28342 28343 28344 28345 28346 28347 28348 28349 28350 28351 28352 28353 28354 28355 28356 28357 28316 28317 28318 28319 28320 28321 28310 28311 28312 28313 28314 28315 28304 28305 28306 28307 28308 28309 28358 28359 28360 28361 28362 28363 +36 28346 28347 28348 28349 28350 28351 28334 28335 28336 28337 28338 28339 28364 28365 28366 28367 28368 28369 28340 28341 28342 28343 28344 28345 28376 28377 28378 28379 28380 28381 28370 28371 28372 28373 28374 28375 +48 14396 14397 14398 14399 14400 14401 28382 28383 28384 28385 28386 28387 28364 28365 28366 28367 28368 28369 28376 28377 28378 28379 28380 28381 28334 28335 28336 28337 28338 28339 28388 28389 28390 28391 28392 28393 12524 12525 12526 12527 12528 12529 18446 18447 18448 18449 18450 18451 +48 20780 20781 20782 20783 20784 20785 28394 28395 28396 28397 28398 28399 28400 28401 28402 28403 28404 28405 28406 28407 28408 28409 28410 28411 28412 28413 28414 28415 28416 28417 28418 28419 28420 28421 28422 28423 20666 20667 20668 20669 20670 20671 28424 28425 28426 28427 28428 28429 +48 19370 19371 19372 19373 19374 19375 20798 20799 20800 20801 20802 20803 20780 20781 20782 20783 20784 20785 28424 28425 28426 28427 28428 28429 20666 20667 20668 20669 20670 20671 20684 20685 20686 20687 20688 20689 19382 19383 19384 19385 19386 19387 19394 19395 19396 19397 19398 19399 +48 20894 20895 20896 20897 20898 20899 28430 28431 28432 28433 28434 28435 28436 28437 28438 28439 28440 28441 28442 28443 28444 28445 28446 28447 28400 28401 28402 28403 28404 28405 28394 28395 28396 28397 28398 28399 20780 20781 20782 20783 20784 20785 28448 28449 28450 28451 28452 28453 +48 21008 21009 21010 21011 21012 21013 28454 28455 28456 28457 28458 28459 28460 28461 28462 28463 28464 28465 28466 28467 28468 28469 28470 28471 28436 28437 28438 28439 28440 28441 28430 28431 28432 28433 28434 28435 20894 20895 20896 20897 20898 20899 28472 28473 28474 28475 28476 28477 +48 28478 28479 28480 28481 28482 28483 28484 28485 28486 28487 28488 28489 28490 28491 28492 28493 28494 28495 28496 28497 28498 28499 28500 28501 28460 28461 28462 28463 28464 28465 28454 28455 28456 28457 28458 28459 21008 21009 21010 21011 21012 21013 28502 28503 28504 28505 28506 28507 +48 12476 12477 12478 12479 12480 12481 28508 28509 28510 28511 28512 28513 28478 28479 28480 28481 28482 28483 28502 28503 28504 28505 28506 28507 21008 21009 21010 21011 21012 21013 21026 21027 21028 21029 21030 21031 19352 19353 19354 19355 19356 19357 19364 19365 19366 19367 19368 19369 +36 28490 28491 28492 28493 28494 28495 28478 28479 28480 28481 28482 28483 28514 28515 28516 28517 28518 28519 28484 28485 28486 28487 28488 28489 28526 28527 28528 28529 28530 28531 28520 28521 28522 28523 28524 28525 +48 14366 14367 14368 14369 14370 14371 28532 28533 28534 28535 28536 28537 28514 28515 28516 28517 28518 28519 28526 28527 28528 28529 28530 28531 28478 28479 28480 28481 28482 28483 28508 28509 28510 28511 28512 28513 12476 12477 12478 12479 12480 12481 18440 18441 18442 18443 18444 18445 +48 20768 20769 20770 20771 20772 20773 28538 28539 28540 28541 28542 28543 28544 28545 28546 28547 28548 28549 28550 28551 28552 28553 28554 28555 21158 21159 21160 21161 21162 21163 21374 21375 21376 21377 21378 21379 20654 20655 20656 20657 20658 20659 28556 28557 28558 28559 28560 28561 +48 20882 20883 20884 20885 20886 20887 28562 28563 28564 28565 28566 28567 28568 28569 28570 28571 28572 28573 28574 28575 28576 28577 28578 28579 28544 28545 28546 28547 28548 28549 28538 28539 28540 28541 28542 28543 20768 20769 20770 20771 20772 20773 28580 28581 28582 28583 28584 28585 +48 20996 20997 20998 20999 21000 21001 28586 28587 28588 28589 28590 28591 28592 28593 28594 28595 28596 28597 28598 28599 28600 28601 28602 28603 28568 28569 28570 28571 28572 28573 28562 28563 28564 28565 28566 28567 20882 20883 20884 20885 20886 20887 28604 28605 28606 28607 28608 28609 +48 961 962 963 964 965 966 28610 28611 28612 28613 28614 28615 28616 28617 28618 28619 28620 28621 28622 28623 28624 28625 28626 28627 28592 28593 28594 28595 28596 28597 28586 28587 28588 28589 28590 28591 20996 20997 20998 20999 21000 21001 28628 28629 28630 28631 28632 28633 +36 28616 28617 28618 28619 28620 28621 961 962 963 964 965 966 28634 28635 28636 28637 28638 28639 28610 28611 28612 28613 28614 28615 28646 28647 28648 28649 28650 28651 28640 28641 28642 28643 28644 28645 +48 14336 14337 14338 14339 14340 14341 28652 28653 28654 28655 28656 28657 28634 28635 28636 28637 28638 28639 28646 28647 28648 28649 28650 28651 961 962 963 964 965 966 28658 28659 28660 28661 28662 28663 12434 12435 12436 12437 12438 12439 18434 18435 18436 18437 18438 18439 +48 20810 20811 20812 20813 20814 20815 28664 28665 28666 28667 28668 28669 28670 28671 28672 28673 28674 28675 28676 28677 28678 28679 28680 28681 21134 21135 21136 21137 21138 21139 21440 21441 21442 21443 21444 21445 20696 20697 20698 20699 20700 20701 28682 28683 28684 28685 28686 28687 +48 20924 20925 20926 20927 20928 20929 28688 28689 28690 28691 28692 28693 28694 28695 28696 28697 28698 28699 28700 28701 28702 28703 28704 28705 28670 28671 28672 28673 28674 28675 28664 28665 28666 28667 28668 28669 20810 20811 20812 20813 20814 20815 28706 28707 28708 28709 28710 28711 +48 21038 21039 21040 21041 21042 21043 28712 28713 28714 28715 28716 28717 28718 28719 28720 28721 28722 28723 28724 28725 28726 28727 28728 28729 28694 28695 28696 28697 28698 28699 28688 28689 28690 28691 28692 28693 20924 20925 20926 20927 20928 20929 28730 28731 28732 28733 28734 28735 +48 967 968 969 970 971 972 28736 28737 28738 28739 28740 28741 28742 28743 28744 28745 28746 28747 28748 28749 28750 28751 28752 28753 28718 28719 28720 28721 28722 28723 28712 28713 28714 28715 28716 28717 21038 21039 21040 21041 21042 21043 28754 28755 28756 28757 28758 28759 +36 28742 28743 28744 28745 28746 28747 967 968 969 970 971 972 28760 28761 28762 28763 28764 28765 28736 28737 28738 28739 28740 28741 28772 28773 28774 28775 28776 28777 28766 28767 28768 28769 28770 28771 +48 14306 14307 14308 14309 14310 14311 28778 28779 28780 28781 28782 28783 28760 28761 28762 28763 28764 28765 28772 28773 28774 28775 28776 28777 967 968 969 970 971 972 28784 28785 28786 28787 28788 28789 12392 12393 12394 12395 12396 12397 18428 18429 18430 18431 18432 18433 +48 20834 20835 20836 20837 20838 20839 28790 28791 28792 28793 28794 28795 28796 28797 28798 28799 28800 28801 28802 28803 28804 28805 28806 28807 21176 21177 21178 21179 21180 21181 21542 21543 21544 21545 21546 21547 20720 20721 20722 20723 20724 20725 28808 28809 28810 28811 28812 28813 +48 20948 20949 20950 20951 20952 20953 28814 28815 28816 28817 28818 28819 28820 28821 28822 28823 28824 28825 28826 28827 28828 28829 28830 28831 28796 28797 28798 28799 28800 28801 28790 28791 28792 28793 28794 28795 20834 20835 20836 20837 20838 20839 28832 28833 28834 28835 28836 28837 +48 21062 21063 21064 21065 21066 21067 28838 28839 28840 28841 28842 28843 28844 28845 28846 28847 28848 28849 28850 28851 28852 28853 28854 28855 28820 28821 28822 28823 28824 28825 28814 28815 28816 28817 28818 28819 20948 20949 20950 20951 20952 20953 28856 28857 28858 28859 28860 28861 +48 973 974 975 976 977 978 28862 28863 28864 28865 28866 28867 28868 28869 28870 28871 28872 28873 28874 28875 28876 28877 28878 28879 28844 28845 28846 28847 28848 28849 28838 28839 28840 28841 28842 28843 21062 21063 21064 21065 21066 21067 28880 28881 28882 28883 28884 28885 +36 28868 28869 28870 28871 28872 28873 973 974 975 976 977 978 28886 28887 28888 28889 28890 28891 28862 28863 28864 28865 28866 28867 28898 28899 28900 28901 28902 28903 28892 28893 28894 28895 28896 28897 +48 14276 14277 14278 14279 14280 14281 28904 28905 28906 28907 28908 28909 28886 28887 28888 28889 28890 28891 28898 28899 28900 28901 28902 28903 973 974 975 976 977 978 28910 28911 28912 28913 28914 28915 12350 12351 12352 12353 12354 12355 18422 18423 18424 18425 18426 18427 +48 20858 20859 20860 20861 20862 20863 28916 28917 28918 28919 28920 28921 28922 28923 28924 28925 28926 28927 28928 28929 28930 28931 28932 28933 28934 28935 28936 28937 28938 28939 28940 28941 28942 28943 28944 28945 20744 20745 20746 20747 20748 20749 28946 28947 28948 28949 28950 28951 +48 20972 20973 20974 20975 20976 20977 28952 28953 28954 28955 28956 28957 28958 28959 28960 28961 28962 28963 28964 28965 28966 28967 28968 28969 28922 28923 28924 28925 28926 28927 28916 28917 28918 28919 28920 28921 20858 20859 20860 20861 20862 20863 28970 28971 28972 28973 28974 28975 +48 21086 21087 21088 21089 21090 21091 28976 28977 28978 28979 28980 28981 28982 28983 28984 28985 28986 28987 28988 28989 28990 28991 28992 28993 28958 28959 28960 28961 28962 28963 28952 28953 28954 28955 28956 28957 20972 20973 20974 20975 20976 20977 28994 28995 28996 28997 28998 28999 +48 979 980 981 982 983 984 29000 29001 29002 29003 29004 29005 29006 29007 29008 29009 29010 29011 29012 29013 29014 29015 29016 29017 28982 28983 28984 28985 28986 28987 28976 28977 28978 28979 28980 28981 21086 21087 21088 21089 21090 21091 29018 29019 29020 29021 29022 29023 +36 29006 29007 29008 29009 29010 29011 979 980 981 982 983 984 29024 29025 29026 29027 29028 29029 29000 29001 29002 29003 29004 29005 29036 29037 29038 29039 29040 29041 29030 29031 29032 29033 29034 29035 +48 14246 14247 14248 14249 14250 14251 29042 29043 29044 29045 29046 29047 29024 29025 29026 29027 29028 29029 29036 29037 29038 29039 29040 29041 979 980 981 982 983 984 29048 29049 29050 29051 29052 29053 12308 12309 12310 12311 12312 12313 18416 18417 18418 18419 18420 18421 +48 29054 29055 29056 29057 29058 29059 29060 29061 29062 29063 29064 29065 29066 29067 29068 29069 29070 29071 29072 29073 29074 29075 29076 29077 29078 29079 29080 29081 29082 29083 29084 29085 29086 29087 29088 29089 22514 22515 22516 22517 22518 22519 29090 29091 29092 29093 29094 29095 +48 29096 29097 29098 29099 29100 29101 29102 29103 29104 29105 29106 29107 29108 29109 29110 29111 29112 29113 29114 29115 29116 29117 29118 29119 29066 29067 29068 29069 29070 29071 29060 29061 29062 29063 29064 29065 29054 29055 29056 29057 29058 29059 29120 29121 29122 29123 29124 29125 +48 29126 29127 29128 29129 29130 29131 29132 29133 29134 29135 29136 29137 29138 29139 29140 29141 29142 29143 29144 29145 29146 29147 29148 29149 29108 29109 29110 29111 29112 29113 29102 29103 29104 29105 29106 29107 29096 29097 29098 29099 29100 29101 29150 29151 29152 29153 29154 29155 +48 985 986 987 988 989 990 29156 29157 29158 29159 29160 29161 29162 29163 29164 29165 29166 29167 29168 29169 29170 29171 29172 29173 29138 29139 29140 29141 29142 29143 29132 29133 29134 29135 29136 29137 29126 29127 29128 29129 29130 29131 29174 29175 29176 29177 29178 29179 +36 29162 29163 29164 29165 29166 29167 985 986 987 988 989 990 29180 29181 29182 29183 29184 29185 29156 29157 29158 29159 29160 29161 29192 29193 29194 29195 29196 29197 29186 29187 29188 29189 29190 29191 +48 14216 14217 14218 14219 14220 14221 29198 29199 29200 29201 29202 29203 29180 29181 29182 29183 29184 29185 29192 29193 29194 29195 29196 29197 985 986 987 988 989 990 29204 29205 29206 29207 29208 29209 12266 12267 12268 12269 12270 12271 18410 18411 18412 18413 18414 18415 +48 29210 29211 29212 29213 29214 29215 29216 29217 29218 29219 29220 29221 29222 29223 29224 29225 29226 29227 29228 29229 29230 29231 29232 29233 29234 29235 29236 29237 29238 29239 29240 29241 29242 29243 29244 29245 22532 22533 22534 22535 22536 22537 29246 29247 29248 29249 29250 29251 +48 29252 29253 29254 29255 29256 29257 29258 29259 29260 29261 29262 29263 29264 29265 29266 29267 29268 29269 29270 29271 29272 29273 29274 29275 29222 29223 29224 29225 29226 29227 29216 29217 29218 29219 29220 29221 29210 29211 29212 29213 29214 29215 29276 29277 29278 29279 29280 29281 +48 29282 29283 29284 29285 29286 29287 29288 29289 29290 29291 29292 29293 29294 29295 29296 29297 29298 29299 29300 29301 29302 29303 29304 29305 29264 29265 29266 29267 29268 29269 29258 29259 29260 29261 29262 29263 29252 29253 29254 29255 29256 29257 29306 29307 29308 29309 29310 29311 +48 991 992 993 994 995 996 29312 29313 29314 29315 29316 29317 29318 29319 29320 29321 29322 29323 29324 29325 29326 29327 29328 29329 29294 29295 29296 29297 29298 29299 29288 29289 29290 29291 29292 29293 29282 29283 29284 29285 29286 29287 29330 29331 29332 29333 29334 29335 +36 29318 29319 29320 29321 29322 29323 991 992 993 994 995 996 29336 29337 29338 29339 29340 29341 29312 29313 29314 29315 29316 29317 29348 29349 29350 29351 29352 29353 29342 29343 29344 29345 29346 29347 +48 14186 14187 14188 14189 14190 14191 29354 29355 29356 29357 29358 29359 29336 29337 29338 29339 29340 29341 29348 29349 29350 29351 29352 29353 991 992 993 994 995 996 29360 29361 29362 29363 29364 29365 12200 12201 12202 12203 12204 12205 18404 18405 18406 18407 18408 18409 +48 29366 29367 29368 29369 29370 29371 29372 29373 29374 29375 29376 29377 29378 29379 29380 29381 29382 29383 29384 29385 29386 29387 29388 29389 29390 29391 29392 29393 29394 29395 29396 29397 29398 29399 29400 29401 22118 22119 22120 22121 22122 22123 29402 29403 29404 29405 29406 29407 +48 7724 7725 7726 7727 7728 7729 29408 29409 29410 29411 29412 29413 29366 29367 29368 29369 29370 29371 29402 29403 29404 29405 29406 29407 22118 22119 22120 22121 22122 22123 22112 22113 22114 22115 22116 22117 6056 6057 6058 6059 6060 6061 19346 19347 19348 19349 19350 19351 +48 29414 29415 29416 29417 29418 29419 29420 29421 29422 29423 29424 29425 29426 29427 29428 29429 29430 29431 29432 29433 29434 29435 29436 29437 29378 29379 29380 29381 29382 29383 29372 29373 29374 29375 29376 29377 29366 29367 29368 29369 29370 29371 29438 29439 29440 29441 29442 29443 +48 29444 29445 29446 29447 29448 29449 29450 29451 29452 29453 29454 29455 29456 29457 29458 29459 29460 29461 29462 29463 29464 29465 29466 29467 29426 29427 29428 29429 29430 29431 29420 29421 29422 29423 29424 29425 29414 29415 29416 29417 29418 29419 29468 29469 29470 29471 29472 29473 +48 29474 29475 29476 29477 29478 29479 29480 29481 29482 29483 29484 29485 29486 29487 29488 29489 29490 29491 29492 29493 29494 29495 29496 29497 29456 29457 29458 29459 29460 29461 29450 29451 29452 29453 29454 29455 29444 29445 29446 29447 29448 29449 29498 29499 29500 29501 29502 29503 +48 12188 12189 12190 12191 12192 12193 29504 29505 29506 29507 29508 29509 29474 29475 29476 29477 29478 29479 29498 29499 29500 29501 29502 29503 29444 29445 29446 29447 29448 29449 29510 29511 29512 29513 29514 29515 10778 10779 10780 10781 10782 10783 19340 19341 19342 19343 19344 19345 +36 29486 29487 29488 29489 29490 29491 29474 29475 29476 29477 29478 29479 29516 29517 29518 29519 29520 29521 29480 29481 29482 29483 29484 29485 29528 29529 29530 29531 29532 29533 29522 29523 29524 29525 29526 29527 +48 14156 14157 14158 14159 14160 14161 29534 29535 29536 29537 29538 29539 29516 29517 29518 29519 29520 29521 29528 29529 29530 29531 29532 29533 29474 29475 29476 29477 29478 29479 29504 29505 29506 29507 29508 29509 12188 12189 12190 12191 12192 12193 18398 18399 18400 18401 18402 18403 +48 22574 22575 22576 22577 22578 22579 29540 29541 29542 29543 29544 29545 29546 29547 29548 29549 29550 29551 29552 29553 29554 29555 29556 29557 21554 21555 21556 21557 21558 21559 22142 22143 22144 22145 22146 22147 22136 22137 22138 22139 22140 22141 22610 22611 22612 22613 22614 22615 +48 22736 22737 22738 22739 22740 22741 29558 29559 29560 29561 29562 29563 22574 22575 22576 22577 22578 22579 22610 22611 22612 22613 22614 22615 22136 22137 22138 22139 22140 22141 22154 22155 22156 22157 22158 22159 21578 21579 21580 21581 21582 21583 22772 22773 22774 22775 22776 22777 +48 22916 22917 22918 22919 22920 22921 29564 29565 29566 29567 29568 29569 22736 22737 22738 22739 22740 22741 22772 22773 22774 22775 22776 22777 21578 21579 21580 21581 21582 21583 22160 22161 22162 22163 22164 22165 21602 21603 21604 21605 21606 21607 22952 22953 22954 22955 22956 22957 +48 23096 23097 23098 23099 23100 23101 29570 29571 29572 29573 29574 29575 22916 22917 22918 22919 22920 22921 22952 22953 22954 22955 22956 22957 21602 21603 21604 21605 21606 21607 22172 22173 22174 22175 22176 22177 22166 22167 22168 22169 22170 22171 23132 23133 23134 23135 23136 23137 +48 23258 23259 23260 23261 23262 23263 29576 29577 29578 29579 29580 29581 23096 23097 23098 23099 23100 23101 23132 23133 23134 23135 23136 23137 22166 22167 22168 22169 22170 22171 22184 22185 22186 22187 22188 22189 21626 21627 21628 21629 21630 21631 23294 23295 23296 23297 23298 23299 +48 23432 23433 23434 23435 23436 23437 29582 29583 29584 29585 29586 29587 23258 23259 23260 23261 23262 23263 23294 23295 23296 23297 23298 23299 21626 21627 21628 21629 21630 21631 22190 22191 22192 22193 22194 22195 21650 21651 21652 21653 21654 21655 23468 23469 23470 23471 23472 23473 +48 23612 23613 23614 23615 23616 23617 29588 29589 29590 29591 29592 29593 23432 23433 23434 23435 23436 23437 23468 23469 23470 23471 23472 23473 21650 21651 21652 21653 21654 21655 22202 22203 22204 22205 22206 22207 22196 22197 22198 22199 22200 22201 23648 23649 23650 23651 23652 23653 +48 23774 23775 23776 23777 23778 23779 29594 29595 29596 29597 29598 29599 23612 23613 23614 23615 23616 23617 23648 23649 23650 23651 23652 23653 22196 22197 22198 22199 22200 22201 22214 22215 22216 22217 22218 22219 21674 21675 21676 21677 21678 21679 23810 23811 23812 23813 23814 23815 +48 23948 23949 23950 23951 23952 23953 29600 29601 29602 29603 29604 29605 23774 23775 23776 23777 23778 23779 23810 23811 23812 23813 23814 23815 21674 21675 21676 21677 21678 21679 22220 22221 22222 22223 22224 22225 21698 21699 21700 21701 21702 21703 23984 23985 23986 23987 23988 23989 +48 24122 24123 24124 24125 24126 24127 29606 29607 29608 29609 29610 29611 23948 23949 23950 23951 23952 23953 23984 23985 23986 23987 23988 23989 21698 21699 21700 21701 21702 21703 22232 22233 22234 22235 22236 22237 22226 22227 22228 22229 22230 22231 24158 24159 24160 24161 24162 24163 +48 24284 24285 24286 24287 24288 24289 29612 29613 29614 29615 29616 29617 24122 24123 24124 24125 24126 24127 24158 24159 24160 24161 24162 24163 22226 22227 22228 22229 22230 22231 22244 22245 22246 22247 22248 22249 21722 21723 21724 21725 21726 21727 24320 24321 24322 24323 24324 24325 +48 24458 24459 24460 24461 24462 24463 29618 29619 29620 29621 29622 29623 24284 24285 24286 24287 24288 24289 24320 24321 24322 24323 24324 24325 21722 21723 21724 21725 21726 21727 22250 22251 22252 22253 22254 22255 21746 21747 21748 21749 21750 21751 24494 24495 24496 24497 24498 24499 +48 24638 24639 24640 24641 24642 24643 29624 29625 29626 29627 29628 29629 24458 24459 24460 24461 24462 24463 24494 24495 24496 24497 24498 24499 21746 21747 21748 21749 21750 21751 22262 22263 22264 22265 22266 22267 22256 22257 22258 22259 22260 22261 24674 24675 24676 24677 24678 24679 +48 24800 24801 24802 24803 24804 24805 29630 29631 29632 29633 29634 29635 24638 24639 24640 24641 24642 24643 24674 24675 24676 24677 24678 24679 22256 22257 22258 22259 22260 22261 22274 22275 22276 22277 22278 22279 21770 21771 21772 21773 21774 21775 24836 24837 24838 24839 24840 24841 +48 24974 24975 24976 24977 24978 24979 29636 29637 29638 29639 29640 29641 24800 24801 24802 24803 24804 24805 24836 24837 24838 24839 24840 24841 21770 21771 21772 21773 21774 21775 22280 22281 22282 22283 22284 22285 21794 21795 21796 21797 21798 21799 25010 25011 25012 25013 25014 25015 +48 25148 25149 25150 25151 25152 25153 29642 29643 29644 29645 29646 29647 24974 24975 24976 24977 24978 24979 25010 25011 25012 25013 25014 25015 21794 21795 21796 21797 21798 21799 22292 22293 22294 22295 22296 22297 22286 22287 22288 22289 22290 22291 25184 25185 25186 25187 25188 25189 +48 25310 25311 25312 25313 25314 25315 29648 29649 29650 29651 29652 29653 25148 25149 25150 25151 25152 25153 25184 25185 25186 25187 25188 25189 22286 22287 22288 22289 22290 22291 22304 22305 22306 22307 22308 22309 21818 21819 21820 21821 21822 21823 25346 25347 25348 25349 25350 25351 +48 25484 25485 25486 25487 25488 25489 29654 29655 29656 29657 29658 29659 25310 25311 25312 25313 25314 25315 25346 25347 25348 25349 25350 25351 21818 21819 21820 21821 21822 21823 22310 22311 22312 22313 22314 22315 21842 21843 21844 21845 21846 21847 25520 25521 25522 25523 25524 25525 +48 25664 25665 25666 25667 25668 25669 29660 29661 29662 29663 29664 29665 25484 25485 25486 25487 25488 25489 25520 25521 25522 25523 25524 25525 21842 21843 21844 21845 21846 21847 22322 22323 22324 22325 22326 22327 22316 22317 22318 22319 22320 22321 25700 25701 25702 25703 25704 25705 +48 25826 25827 25828 25829 25830 25831 29666 29667 29668 29669 29670 29671 25664 25665 25666 25667 25668 25669 25700 25701 25702 25703 25704 25705 22316 22317 22318 22319 22320 22321 22334 22335 22336 22337 22338 22339 21866 21867 21868 21869 21870 21871 25862 25863 25864 25865 25866 25867 +48 26000 26001 26002 26003 26004 26005 29672 29673 29674 29675 29676 29677 25826 25827 25828 25829 25830 25831 25862 25863 25864 25865 25866 25867 21866 21867 21868 21869 21870 21871 22340 22341 22342 22343 22344 22345 21890 21891 21892 21893 21894 21895 26036 26037 26038 26039 26040 26041 +48 26174 26175 26176 26177 26178 26179 29678 29679 29680 29681 29682 29683 26000 26001 26002 26003 26004 26005 26036 26037 26038 26039 26040 26041 21890 21891 21892 21893 21894 21895 22352 22353 22354 22355 22356 22357 22346 22347 22348 22349 22350 22351 26210 26211 26212 26213 26214 26215 +48 26336 26337 26338 26339 26340 26341 29684 29685 29686 29687 29688 29689 26174 26175 26176 26177 26178 26179 26210 26211 26212 26213 26214 26215 22346 22347 22348 22349 22350 22351 22364 22365 22366 22367 22368 22369 21914 21915 21916 21917 21918 21919 26372 26373 26374 26375 26376 26377 +48 26510 26511 26512 26513 26514 26515 29690 29691 29692 29693 29694 29695 26336 26337 26338 26339 26340 26341 26372 26373 26374 26375 26376 26377 21914 21915 21916 21917 21918 21919 22370 22371 22372 22373 22374 22375 21938 21939 21940 21941 21942 21943 26546 26547 26548 26549 26550 26551 +48 26690 26691 26692 26693 26694 26695 29696 29697 29698 29699 29700 29701 26510 26511 26512 26513 26514 26515 26546 26547 26548 26549 26550 26551 21938 21939 21940 21941 21942 21943 22382 22383 22384 22385 22386 22387 22376 22377 22378 22379 22380 22381 26726 26727 26728 26729 26730 26731 +48 26852 26853 26854 26855 26856 26857 29702 29703 29704 29705 29706 29707 26690 26691 26692 26693 26694 26695 26726 26727 26728 26729 26730 26731 22376 22377 22378 22379 22380 22381 22394 22395 22396 22397 22398 22399 21962 21963 21964 21965 21966 21967 26888 26889 26890 26891 26892 26893 +48 27026 27027 27028 27029 27030 27031 29708 29709 29710 29711 29712 29713 26852 26853 26854 26855 26856 26857 26888 26889 26890 26891 26892 26893 21962 21963 21964 21965 21966 21967 22400 22401 22402 22403 22404 22405 21986 21987 21988 21989 21990 21991 27062 27063 27064 27065 27066 27067 +48 27200 27201 27202 27203 27204 27205 29714 29715 29716 29717 29718 29719 27026 27027 27028 27029 27030 27031 27062 27063 27064 27065 27066 27067 21986 21987 21988 21989 21990 21991 22412 22413 22414 22415 22416 22417 22406 22407 22408 22409 22410 22411 27236 27237 27238 27239 27240 27241 +48 27362 27363 27364 27365 27366 27367 29720 29721 29722 29723 29724 29725 27200 27201 27202 27203 27204 27205 27236 27237 27238 27239 27240 27241 22406 22407 22408 22409 22410 22411 22424 22425 22426 22427 22428 22429 22010 22011 22012 22013 22014 22015 27398 27399 27400 27401 27402 27403 +48 27542 27543 27544 27545 27546 27547 29726 29727 29728 29729 29730 29731 27362 27363 27364 27365 27366 27367 27398 27399 27400 27401 27402 27403 22010 22011 22012 22013 22014 22015 22430 22431 22432 22433 22434 22435 22034 22035 22036 22037 22038 22039 27578 27579 27580 27581 27582 27583 +48 27722 27723 27724 27725 27726 27727 29732 29733 29734 29735 29736 29737 27542 27543 27544 27545 27546 27547 27578 27579 27580 27581 27582 27583 22034 22035 22036 22037 22038 22039 22442 22443 22444 22445 22446 22447 22436 22437 22438 22439 22440 22441 27758 27759 27760 27761 27762 27763 +48 27884 27885 27886 27887 27888 27889 29738 29739 29740 29741 29742 29743 27722 27723 27724 27725 27726 27727 27758 27759 27760 27761 27762 27763 22436 22437 22438 22439 22440 22441 22454 22455 22456 22457 22458 22459 22058 22059 22060 22061 22062 22063 27920 27921 27922 27923 27924 27925 +48 28058 28059 28060 28061 28062 28063 29744 29745 29746 29747 29748 29749 27884 27885 27886 27887 27888 27889 27920 27921 27922 27923 27924 27925 22058 22059 22060 22061 22062 22063 22460 22461 22462 22463 22464 22465 22082 22083 22084 22085 22086 22087 28094 28095 28096 28097 28098 28099 +48 28232 28233 28234 28235 28236 28237 29750 29751 29752 29753 29754 29755 28058 28059 28060 28061 28062 28063 28094 28095 28096 28097 28098 28099 22082 22083 22084 22085 22086 22087 22472 22473 22474 22475 22476 22477 22466 22467 22468 22469 22470 22471 28268 28269 28270 28271 28272 28273 +48 20780 20781 20782 20783 20784 20785 29756 29757 29758 29759 29760 29761 28232 28233 28234 28235 28236 28237 28268 28269 28270 28271 28272 28273 22466 22467 22468 22469 22470 22471 22484 22485 22486 22487 22488 22489 20666 20667 20668 20669 20670 20671 28424 28425 28426 28427 28428 28429 +48 20768 20769 20770 20771 20772 20773 20774 20775 20776 20777 20778 20779 20780 20781 20782 20783 20784 20785 28424 28425 28426 28427 28428 28429 20666 20667 20668 20669 20670 20671 20660 20661 20662 20663 20664 20665 20654 20655 20656 20657 20658 20659 28556 28557 28558 28559 28560 28561 +48 20810 20811 20812 20813 20814 20815 20816 20817 20818 20819 20820 20821 20768 20769 20770 20771 20772 20773 28556 28557 28558 28559 28560 28561 20654 20655 20656 20657 20658 20659 20702 20703 20704 20705 20706 20707 20696 20697 20698 20699 20700 20701 28682 28683 28684 28685 28686 28687 +48 20834 20835 20836 20837 20838 20839 20840 20841 20842 20843 20844 20845 20810 20811 20812 20813 20814 20815 28682 28683 28684 28685 28686 28687 20696 20697 20698 20699 20700 20701 20726 20727 20728 20729 20730 20731 20720 20721 20722 20723 20724 20725 28808 28809 28810 28811 28812 28813 +48 20858 20859 20860 20861 20862 20863 20864 20865 20866 20867 20868 20869 20834 20835 20836 20837 20838 20839 28808 28809 28810 28811 28812 28813 20720 20721 20722 20723 20724 20725 20750 20751 20752 20753 20754 20755 20744 20745 20746 20747 20748 20749 28946 28947 28948 28949 28950 28951 +48 29054 29055 29056 29057 29058 29059 29762 29763 29764 29765 29766 29767 20858 20859 20860 20861 20862 20863 28946 28947 28948 28949 28950 28951 20744 20745 20746 20747 20748 20749 22520 22521 22522 22523 22524 22525 22514 22515 22516 22517 22518 22519 29090 29091 29092 29093 29094 29095 +48 29210 29211 29212 29213 29214 29215 29768 29769 29770 29771 29772 29773 29054 29055 29056 29057 29058 29059 29090 29091 29092 29093 29094 29095 22514 22515 22516 22517 22518 22519 22538 22539 22540 22541 22542 22543 22532 22533 22534 22535 22536 22537 29246 29247 29248 29249 29250 29251 +48 29366 29367 29368 29369 29370 29371 29774 29775 29776 29777 29778 29779 29210 29211 29212 29213 29214 29215 29246 29247 29248 29249 29250 29251 22532 22533 22534 22535 22536 22537 22550 22551 22552 22553 22554 22555 22118 22119 22120 22121 22122 22123 29402 29403 29404 29405 29406 29407 +48 29780 29781 29782 29783 29784 29785 29786 29787 29788 29789 29790 29791 29366 29367 29368 29369 29370 29371 29402 29403 29404 29405 29406 29407 22118 22119 22120 22121 22122 22123 22562 22563 22564 22565 22566 22567 22556 22557 22558 22559 22560 22561 29792 29793 29794 29795 29796 29797 +48 22616 22617 22618 22619 22620 22621 29798 29799 29800 29801 29802 29803 29804 29805 29806 29807 29808 29809 29810 29811 29812 29813 29814 29815 29546 29547 29548 29549 29550 29551 29540 29541 29542 29543 29544 29545 22574 22575 22576 22577 22578 22579 22640 22641 22642 22643 22644 22645 +48 22784 22785 22786 22787 22788 22789 29816 29817 29818 29819 29820 29821 22616 22617 22618 22619 22620 22621 22640 22641 22642 22643 22644 22645 22574 22575 22576 22577 22578 22579 29558 29559 29560 29561 29562 29563 22736 22737 22738 22739 22740 22741 22808 22809 22810 22811 22812 22813 +48 22964 22965 22966 22967 22968 22969 29822 29823 29824 29825 29826 29827 22784 22785 22786 22787 22788 22789 22808 22809 22810 22811 22812 22813 22736 22737 22738 22739 22740 22741 29564 29565 29566 29567 29568 29569 22916 22917 22918 22919 22920 22921 22988 22989 22990 22991 22992 22993 +48 23138 23139 23140 23141 23142 23143 29828 29829 29830 29831 29832 29833 22964 22965 22966 22967 22968 22969 22988 22989 22990 22991 22992 22993 22916 22917 22918 22919 22920 22921 29570 29571 29572 29573 29574 29575 23096 23097 23098 23099 23100 23101 23162 23163 23164 23165 23166 23167 +48 23306 23307 23308 23309 23310 23311 29834 29835 29836 29837 29838 29839 23138 23139 23140 23141 23142 23143 23162 23163 23164 23165 23166 23167 23096 23097 23098 23099 23100 23101 29576 29577 29578 29579 29580 29581 23258 23259 23260 23261 23262 23263 23330 23331 23332 23333 23334 23335 +48 23480 23481 23482 23483 23484 23485 29840 29841 29842 29843 29844 29845 23306 23307 23308 23309 23310 23311 23330 23331 23332 23333 23334 23335 23258 23259 23260 23261 23262 23263 29582 29583 29584 29585 29586 29587 23432 23433 23434 23435 23436 23437 23504 23505 23506 23507 23508 23509 +48 23654 23655 23656 23657 23658 23659 29846 29847 29848 29849 29850 29851 23480 23481 23482 23483 23484 23485 23504 23505 23506 23507 23508 23509 23432 23433 23434 23435 23436 23437 29588 29589 29590 29591 29592 29593 23612 23613 23614 23615 23616 23617 23678 23679 23680 23681 23682 23683 +48 23822 23823 23824 23825 23826 23827 29852 29853 29854 29855 29856 29857 23654 23655 23656 23657 23658 23659 23678 23679 23680 23681 23682 23683 23612 23613 23614 23615 23616 23617 29594 29595 29596 29597 29598 29599 23774 23775 23776 23777 23778 23779 23846 23847 23848 23849 23850 23851 +48 23996 23997 23998 23999 24000 24001 29858 29859 29860 29861 29862 29863 23822 23823 23824 23825 23826 23827 23846 23847 23848 23849 23850 23851 23774 23775 23776 23777 23778 23779 29600 29601 29602 29603 29604 29605 23948 23949 23950 23951 23952 23953 24020 24021 24022 24023 24024 24025 +48 24164 24165 24166 24167 24168 24169 29864 29865 29866 29867 29868 29869 23996 23997 23998 23999 24000 24001 24020 24021 24022 24023 24024 24025 23948 23949 23950 23951 23952 23953 29606 29607 29608 29609 29610 29611 24122 24123 24124 24125 24126 24127 24188 24189 24190 24191 24192 24193 +48 24332 24333 24334 24335 24336 24337 29870 29871 29872 29873 29874 29875 24164 24165 24166 24167 24168 24169 24188 24189 24190 24191 24192 24193 24122 24123 24124 24125 24126 24127 29612 29613 29614 29615 29616 29617 24284 24285 24286 24287 24288 24289 24356 24357 24358 24359 24360 24361 +48 24506 24507 24508 24509 24510 24511 29876 29877 29878 29879 29880 29881 24332 24333 24334 24335 24336 24337 24356 24357 24358 24359 24360 24361 24284 24285 24286 24287 24288 24289 29618 29619 29620 29621 29622 29623 24458 24459 24460 24461 24462 24463 24530 24531 24532 24533 24534 24535 +48 24680 24681 24682 24683 24684 24685 29882 29883 29884 29885 29886 29887 24506 24507 24508 24509 24510 24511 24530 24531 24532 24533 24534 24535 24458 24459 24460 24461 24462 24463 29624 29625 29626 29627 29628 29629 24638 24639 24640 24641 24642 24643 24704 24705 24706 24707 24708 24709 +48 24848 24849 24850 24851 24852 24853 29888 29889 29890 29891 29892 29893 24680 24681 24682 24683 24684 24685 24704 24705 24706 24707 24708 24709 24638 24639 24640 24641 24642 24643 29630 29631 29632 29633 29634 29635 24800 24801 24802 24803 24804 24805 24872 24873 24874 24875 24876 24877 +48 25022 25023 25024 25025 25026 25027 29894 29895 29896 29897 29898 29899 24848 24849 24850 24851 24852 24853 24872 24873 24874 24875 24876 24877 24800 24801 24802 24803 24804 24805 29636 29637 29638 29639 29640 29641 24974 24975 24976 24977 24978 24979 25046 25047 25048 25049 25050 25051 +48 25190 25191 25192 25193 25194 25195 29900 29901 29902 29903 29904 29905 25022 25023 25024 25025 25026 25027 25046 25047 25048 25049 25050 25051 24974 24975 24976 24977 24978 24979 29642 29643 29644 29645 29646 29647 25148 25149 25150 25151 25152 25153 25214 25215 25216 25217 25218 25219 +48 25358 25359 25360 25361 25362 25363 29906 29907 29908 29909 29910 29911 25190 25191 25192 25193 25194 25195 25214 25215 25216 25217 25218 25219 25148 25149 25150 25151 25152 25153 29648 29649 29650 29651 29652 29653 25310 25311 25312 25313 25314 25315 25382 25383 25384 25385 25386 25387 +48 25532 25533 25534 25535 25536 25537 29912 29913 29914 29915 29916 29917 25358 25359 25360 25361 25362 25363 25382 25383 25384 25385 25386 25387 25310 25311 25312 25313 25314 25315 29654 29655 29656 29657 29658 29659 25484 25485 25486 25487 25488 25489 25556 25557 25558 25559 25560 25561 +48 25706 25707 25708 25709 25710 25711 29918 29919 29920 29921 29922 29923 25532 25533 25534 25535 25536 25537 25556 25557 25558 25559 25560 25561 25484 25485 25486 25487 25488 25489 29660 29661 29662 29663 29664 29665 25664 25665 25666 25667 25668 25669 25730 25731 25732 25733 25734 25735 +48 25874 25875 25876 25877 25878 25879 29924 29925 29926 29927 29928 29929 25706 25707 25708 25709 25710 25711 25730 25731 25732 25733 25734 25735 25664 25665 25666 25667 25668 25669 29666 29667 29668 29669 29670 29671 25826 25827 25828 25829 25830 25831 25898 25899 25900 25901 25902 25903 +48 26048 26049 26050 26051 26052 26053 29930 29931 29932 29933 29934 29935 25874 25875 25876 25877 25878 25879 25898 25899 25900 25901 25902 25903 25826 25827 25828 25829 25830 25831 29672 29673 29674 29675 29676 29677 26000 26001 26002 26003 26004 26005 26072 26073 26074 26075 26076 26077 +48 26216 26217 26218 26219 26220 26221 29936 29937 29938 29939 29940 29941 26048 26049 26050 26051 26052 26053 26072 26073 26074 26075 26076 26077 26000 26001 26002 26003 26004 26005 29678 29679 29680 29681 29682 29683 26174 26175 26176 26177 26178 26179 26240 26241 26242 26243 26244 26245 +48 26384 26385 26386 26387 26388 26389 29942 29943 29944 29945 29946 29947 26216 26217 26218 26219 26220 26221 26240 26241 26242 26243 26244 26245 26174 26175 26176 26177 26178 26179 29684 29685 29686 29687 29688 29689 26336 26337 26338 26339 26340 26341 26408 26409 26410 26411 26412 26413 +48 26558 26559 26560 26561 26562 26563 29948 29949 29950 29951 29952 29953 26384 26385 26386 26387 26388 26389 26408 26409 26410 26411 26412 26413 26336 26337 26338 26339 26340 26341 29690 29691 29692 29693 29694 29695 26510 26511 26512 26513 26514 26515 26582 26583 26584 26585 26586 26587 +48 26732 26733 26734 26735 26736 26737 29954 29955 29956 29957 29958 29959 26558 26559 26560 26561 26562 26563 26582 26583 26584 26585 26586 26587 26510 26511 26512 26513 26514 26515 29696 29697 29698 29699 29700 29701 26690 26691 26692 26693 26694 26695 26756 26757 26758 26759 26760 26761 +48 26900 26901 26902 26903 26904 26905 29960 29961 29962 29963 29964 29965 26732 26733 26734 26735 26736 26737 26756 26757 26758 26759 26760 26761 26690 26691 26692 26693 26694 26695 29702 29703 29704 29705 29706 29707 26852 26853 26854 26855 26856 26857 26924 26925 26926 26927 26928 26929 +48 27074 27075 27076 27077 27078 27079 29966 29967 29968 29969 29970 29971 26900 26901 26902 26903 26904 26905 26924 26925 26926 26927 26928 26929 26852 26853 26854 26855 26856 26857 29708 29709 29710 29711 29712 29713 27026 27027 27028 27029 27030 27031 27098 27099 27100 27101 27102 27103 +48 27242 27243 27244 27245 27246 27247 29972 29973 29974 29975 29976 29977 27074 27075 27076 27077 27078 27079 27098 27099 27100 27101 27102 27103 27026 27027 27028 27029 27030 27031 29714 29715 29716 29717 29718 29719 27200 27201 27202 27203 27204 27205 27266 27267 27268 27269 27270 27271 +48 27410 27411 27412 27413 27414 27415 29978 29979 29980 29981 29982 29983 27242 27243 27244 27245 27246 27247 27266 27267 27268 27269 27270 27271 27200 27201 27202 27203 27204 27205 29720 29721 29722 29723 29724 29725 27362 27363 27364 27365 27366 27367 27434 27435 27436 27437 27438 27439 +48 27590 27591 27592 27593 27594 27595 29984 29985 29986 29987 29988 29989 27410 27411 27412 27413 27414 27415 27434 27435 27436 27437 27438 27439 27362 27363 27364 27365 27366 27367 29726 29727 29728 29729 29730 29731 27542 27543 27544 27545 27546 27547 27614 27615 27616 27617 27618 27619 +48 27764 27765 27766 27767 27768 27769 29990 29991 29992 29993 29994 29995 27590 27591 27592 27593 27594 27595 27614 27615 27616 27617 27618 27619 27542 27543 27544 27545 27546 27547 29732 29733 29734 29735 29736 29737 27722 27723 27724 27725 27726 27727 27788 27789 27790 27791 27792 27793 +48 27932 27933 27934 27935 27936 27937 29996 29997 29998 29999 30000 30001 27764 27765 27766 27767 27768 27769 27788 27789 27790 27791 27792 27793 27722 27723 27724 27725 27726 27727 29738 29739 29740 29741 29742 29743 27884 27885 27886 27887 27888 27889 27956 27957 27958 27959 27960 27961 +48 28106 28107 28108 28109 28110 28111 30002 30003 30004 30005 30006 30007 27932 27933 27934 27935 27936 27937 27956 27957 27958 27959 27960 27961 27884 27885 27886 27887 27888 27889 29744 29745 29746 29747 29748 29749 28058 28059 28060 28061 28062 28063 28130 28131 28132 28133 28134 28135 +48 28274 28275 28276 28277 28278 28279 30008 30009 30010 30011 30012 30013 28106 28107 28108 28109 28110 28111 28130 28131 28132 28133 28134 28135 28058 28059 28060 28061 28062 28063 29750 29751 29752 29753 29754 29755 28232 28233 28234 28235 28236 28237 28298 28299 28300 28301 28302 28303 +48 20894 20895 20896 20897 20898 20899 30014 30015 30016 30017 30018 30019 28274 28275 28276 28277 28278 28279 28298 28299 28300 28301 28302 28303 28232 28233 28234 28235 28236 28237 29756 29757 29758 29759 29760 29761 20780 20781 20782 20783 20784 20785 28448 28449 28450 28451 28452 28453 +48 20882 20883 20884 20885 20886 20887 20888 20889 20890 20891 20892 20893 20894 20895 20896 20897 20898 20899 28448 28449 28450 28451 28452 28453 20780 20781 20782 20783 20784 20785 20774 20775 20776 20777 20778 20779 20768 20769 20770 20771 20772 20773 28580 28581 28582 28583 28584 28585 +48 20924 20925 20926 20927 20928 20929 20930 20931 20932 20933 20934 20935 20882 20883 20884 20885 20886 20887 28580 28581 28582 28583 28584 28585 20768 20769 20770 20771 20772 20773 20816 20817 20818 20819 20820 20821 20810 20811 20812 20813 20814 20815 28706 28707 28708 28709 28710 28711 +48 20948 20949 20950 20951 20952 20953 20954 20955 20956 20957 20958 20959 20924 20925 20926 20927 20928 20929 28706 28707 28708 28709 28710 28711 20810 20811 20812 20813 20814 20815 20840 20841 20842 20843 20844 20845 20834 20835 20836 20837 20838 20839 28832 28833 28834 28835 28836 28837 +48 20972 20973 20974 20975 20976 20977 20978 20979 20980 20981 20982 20983 20948 20949 20950 20951 20952 20953 28832 28833 28834 28835 28836 28837 20834 20835 20836 20837 20838 20839 20864 20865 20866 20867 20868 20869 20858 20859 20860 20861 20862 20863 28970 28971 28972 28973 28974 28975 +48 29096 29097 29098 29099 29100 29101 30020 30021 30022 30023 30024 30025 20972 20973 20974 20975 20976 20977 28970 28971 28972 28973 28974 28975 20858 20859 20860 20861 20862 20863 29762 29763 29764 29765 29766 29767 29054 29055 29056 29057 29058 29059 29120 29121 29122 29123 29124 29125 +48 29252 29253 29254 29255 29256 29257 30026 30027 30028 30029 30030 30031 29096 29097 29098 29099 29100 29101 29120 29121 29122 29123 29124 29125 29054 29055 29056 29057 29058 29059 29768 29769 29770 29771 29772 29773 29210 29211 29212 29213 29214 29215 29276 29277 29278 29279 29280 29281 +48 29414 29415 29416 29417 29418 29419 30032 30033 30034 30035 30036 30037 29252 29253 29254 29255 29256 29257 29276 29277 29278 29279 29280 29281 29210 29211 29212 29213 29214 29215 29774 29775 29776 29777 29778 29779 29366 29367 29368 29369 29370 29371 29438 29439 29440 29441 29442 29443 +48 30038 30039 30040 30041 30042 30043 30044 30045 30046 30047 30048 30049 29414 29415 29416 29417 29418 29419 29438 29439 29440 29441 29442 29443 29366 29367 29368 29369 29370 29371 29786 29787 29788 29789 29790 29791 29780 29781 29782 29783 29784 29785 30050 30051 30052 30053 30054 30055 +48 22646 22647 22648 22649 22650 22651 30056 30057 30058 30059 30060 30061 30062 30063 30064 30065 30066 30067 30068 30069 30070 30071 30072 30073 29804 29805 29806 29807 29808 29809 29798 29799 29800 29801 29802 29803 22616 22617 22618 22619 22620 22621 22670 22671 22672 22673 22674 22675 +48 22820 22821 22822 22823 22824 22825 30074 30075 30076 30077 30078 30079 22646 22647 22648 22649 22650 22651 22670 22671 22672 22673 22674 22675 22616 22617 22618 22619 22620 22621 29816 29817 29818 29819 29820 29821 22784 22785 22786 22787 22788 22789 22844 22845 22846 22847 22848 22849 +48 23000 23001 23002 23003 23004 23005 30080 30081 30082 30083 30084 30085 22820 22821 22822 22823 22824 22825 22844 22845 22846 22847 22848 22849 22784 22785 22786 22787 22788 22789 29822 29823 29824 29825 29826 29827 22964 22965 22966 22967 22968 22969 23024 23025 23026 23027 23028 23029 +48 23168 23169 23170 23171 23172 23173 30086 30087 30088 30089 30090 30091 23000 23001 23002 23003 23004 23005 23024 23025 23026 23027 23028 23029 22964 22965 22966 22967 22968 22969 29828 29829 29830 29831 29832 29833 23138 23139 23140 23141 23142 23143 23192 23193 23194 23195 23196 23197 +48 23336 23337 23338 23339 23340 23341 30092 30093 30094 30095 30096 30097 23168 23169 23170 23171 23172 23173 23192 23193 23194 23195 23196 23197 23138 23139 23140 23141 23142 23143 29834 29835 29836 29837 29838 29839 23306 23307 23308 23309 23310 23311 23360 23361 23362 23363 23364 23365 +48 23516 23517 23518 23519 23520 23521 30098 30099 30100 30101 30102 30103 23336 23337 23338 23339 23340 23341 23360 23361 23362 23363 23364 23365 23306 23307 23308 23309 23310 23311 29840 29841 29842 29843 29844 29845 23480 23481 23482 23483 23484 23485 23540 23541 23542 23543 23544 23545 +48 23684 23685 23686 23687 23688 23689 30104 30105 30106 30107 30108 30109 23516 23517 23518 23519 23520 23521 23540 23541 23542 23543 23544 23545 23480 23481 23482 23483 23484 23485 29846 29847 29848 29849 29850 29851 23654 23655 23656 23657 23658 23659 23708 23709 23710 23711 23712 23713 +48 23852 23853 23854 23855 23856 23857 30110 30111 30112 30113 30114 30115 23684 23685 23686 23687 23688 23689 23708 23709 23710 23711 23712 23713 23654 23655 23656 23657 23658 23659 29852 29853 29854 29855 29856 29857 23822 23823 23824 23825 23826 23827 23876 23877 23878 23879 23880 23881 +48 24026 24027 24028 24029 24030 24031 30116 30117 30118 30119 30120 30121 23852 23853 23854 23855 23856 23857 23876 23877 23878 23879 23880 23881 23822 23823 23824 23825 23826 23827 29858 29859 29860 29861 29862 29863 23996 23997 23998 23999 24000 24001 24050 24051 24052 24053 24054 24055 +48 24194 24195 24196 24197 24198 24199 30122 30123 30124 30125 30126 30127 24026 24027 24028 24029 24030 24031 24050 24051 24052 24053 24054 24055 23996 23997 23998 23999 24000 24001 29864 29865 29866 29867 29868 29869 24164 24165 24166 24167 24168 24169 24218 24219 24220 24221 24222 24223 +48 24362 24363 24364 24365 24366 24367 30128 30129 30130 30131 30132 30133 24194 24195 24196 24197 24198 24199 24218 24219 24220 24221 24222 24223 24164 24165 24166 24167 24168 24169 29870 29871 29872 29873 29874 29875 24332 24333 24334 24335 24336 24337 24386 24387 24388 24389 24390 24391 +48 24542 24543 24544 24545 24546 24547 30134 30135 30136 30137 30138 30139 24362 24363 24364 24365 24366 24367 24386 24387 24388 24389 24390 24391 24332 24333 24334 24335 24336 24337 29876 29877 29878 29879 29880 29881 24506 24507 24508 24509 24510 24511 24566 24567 24568 24569 24570 24571 +48 24710 24711 24712 24713 24714 24715 30140 30141 30142 30143 30144 30145 24542 24543 24544 24545 24546 24547 24566 24567 24568 24569 24570 24571 24506 24507 24508 24509 24510 24511 29882 29883 29884 29885 29886 29887 24680 24681 24682 24683 24684 24685 24734 24735 24736 24737 24738 24739 +48 24878 24879 24880 24881 24882 24883 30146 30147 30148 30149 30150 30151 24710 24711 24712 24713 24714 24715 24734 24735 24736 24737 24738 24739 24680 24681 24682 24683 24684 24685 29888 29889 29890 29891 29892 29893 24848 24849 24850 24851 24852 24853 24902 24903 24904 24905 24906 24907 +48 25052 25053 25054 25055 25056 25057 30152 30153 30154 30155 30156 30157 24878 24879 24880 24881 24882 24883 24902 24903 24904 24905 24906 24907 24848 24849 24850 24851 24852 24853 29894 29895 29896 29897 29898 29899 25022 25023 25024 25025 25026 25027 25076 25077 25078 25079 25080 25081 +48 25220 25221 25222 25223 25224 25225 30158 30159 30160 30161 30162 30163 25052 25053 25054 25055 25056 25057 25076 25077 25078 25079 25080 25081 25022 25023 25024 25025 25026 25027 29900 29901 29902 29903 29904 29905 25190 25191 25192 25193 25194 25195 25244 25245 25246 25247 25248 25249 +48 25388 25389 25390 25391 25392 25393 30164 30165 30166 30167 30168 30169 25220 25221 25222 25223 25224 25225 25244 25245 25246 25247 25248 25249 25190 25191 25192 25193 25194 25195 29906 29907 29908 29909 29910 29911 25358 25359 25360 25361 25362 25363 25412 25413 25414 25415 25416 25417 +48 25568 25569 25570 25571 25572 25573 30170 30171 30172 30173 30174 30175 25388 25389 25390 25391 25392 25393 25412 25413 25414 25415 25416 25417 25358 25359 25360 25361 25362 25363 29912 29913 29914 29915 29916 29917 25532 25533 25534 25535 25536 25537 25592 25593 25594 25595 25596 25597 +48 25736 25737 25738 25739 25740 25741 30176 30177 30178 30179 30180 30181 25568 25569 25570 25571 25572 25573 25592 25593 25594 25595 25596 25597 25532 25533 25534 25535 25536 25537 29918 29919 29920 29921 29922 29923 25706 25707 25708 25709 25710 25711 25760 25761 25762 25763 25764 25765 +48 25904 25905 25906 25907 25908 25909 30182 30183 30184 30185 30186 30187 25736 25737 25738 25739 25740 25741 25760 25761 25762 25763 25764 25765 25706 25707 25708 25709 25710 25711 29924 29925 29926 29927 29928 29929 25874 25875 25876 25877 25878 25879 25928 25929 25930 25931 25932 25933 +48 26078 26079 26080 26081 26082 26083 30188 30189 30190 30191 30192 30193 25904 25905 25906 25907 25908 25909 25928 25929 25930 25931 25932 25933 25874 25875 25876 25877 25878 25879 29930 29931 29932 29933 29934 29935 26048 26049 26050 26051 26052 26053 26102 26103 26104 26105 26106 26107 +48 26246 26247 26248 26249 26250 26251 30194 30195 30196 30197 30198 30199 26078 26079 26080 26081 26082 26083 26102 26103 26104 26105 26106 26107 26048 26049 26050 26051 26052 26053 29936 29937 29938 29939 29940 29941 26216 26217 26218 26219 26220 26221 26270 26271 26272 26273 26274 26275 +48 26414 26415 26416 26417 26418 26419 30200 30201 30202 30203 30204 30205 26246 26247 26248 26249 26250 26251 26270 26271 26272 26273 26274 26275 26216 26217 26218 26219 26220 26221 29942 29943 29944 29945 29946 29947 26384 26385 26386 26387 26388 26389 26438 26439 26440 26441 26442 26443 +48 26594 26595 26596 26597 26598 26599 30206 30207 30208 30209 30210 30211 26414 26415 26416 26417 26418 26419 26438 26439 26440 26441 26442 26443 26384 26385 26386 26387 26388 26389 29948 29949 29950 29951 29952 29953 26558 26559 26560 26561 26562 26563 26618 26619 26620 26621 26622 26623 +48 26762 26763 26764 26765 26766 26767 30212 30213 30214 30215 30216 30217 26594 26595 26596 26597 26598 26599 26618 26619 26620 26621 26622 26623 26558 26559 26560 26561 26562 26563 29954 29955 29956 29957 29958 29959 26732 26733 26734 26735 26736 26737 26786 26787 26788 26789 26790 26791 +48 26930 26931 26932 26933 26934 26935 30218 30219 30220 30221 30222 30223 26762 26763 26764 26765 26766 26767 26786 26787 26788 26789 26790 26791 26732 26733 26734 26735 26736 26737 29960 29961 29962 29963 29964 29965 26900 26901 26902 26903 26904 26905 26954 26955 26956 26957 26958 26959 +48 27104 27105 27106 27107 27108 27109 30224 30225 30226 30227 30228 30229 26930 26931 26932 26933 26934 26935 26954 26955 26956 26957 26958 26959 26900 26901 26902 26903 26904 26905 29966 29967 29968 29969 29970 29971 27074 27075 27076 27077 27078 27079 27128 27129 27130 27131 27132 27133 +48 27272 27273 27274 27275 27276 27277 30230 30231 30232 30233 30234 30235 27104 27105 27106 27107 27108 27109 27128 27129 27130 27131 27132 27133 27074 27075 27076 27077 27078 27079 29972 29973 29974 29975 29976 29977 27242 27243 27244 27245 27246 27247 27296 27297 27298 27299 27300 27301 +48 27446 27447 27448 27449 27450 27451 30236 30237 30238 30239 30240 30241 27272 27273 27274 27275 27276 27277 27296 27297 27298 27299 27300 27301 27242 27243 27244 27245 27246 27247 29978 29979 29980 29981 29982 29983 27410 27411 27412 27413 27414 27415 27470 27471 27472 27473 27474 27475 +48 27626 27627 27628 27629 27630 27631 30242 30243 30244 30245 30246 30247 27446 27447 27448 27449 27450 27451 27470 27471 27472 27473 27474 27475 27410 27411 27412 27413 27414 27415 29984 29985 29986 29987 29988 29989 27590 27591 27592 27593 27594 27595 27650 27651 27652 27653 27654 27655 +48 27794 27795 27796 27797 27798 27799 30248 30249 30250 30251 30252 30253 27626 27627 27628 27629 27630 27631 27650 27651 27652 27653 27654 27655 27590 27591 27592 27593 27594 27595 29990 29991 29992 29993 29994 29995 27764 27765 27766 27767 27768 27769 27818 27819 27820 27821 27822 27823 +48 27962 27963 27964 27965 27966 27967 30254 30255 30256 30257 30258 30259 27794 27795 27796 27797 27798 27799 27818 27819 27820 27821 27822 27823 27764 27765 27766 27767 27768 27769 29996 29997 29998 29999 30000 30001 27932 27933 27934 27935 27936 27937 27986 27987 27988 27989 27990 27991 +48 28136 28137 28138 28139 28140 28141 30260 30261 30262 30263 30264 30265 27962 27963 27964 27965 27966 27967 27986 27987 27988 27989 27990 27991 27932 27933 27934 27935 27936 27937 30002 30003 30004 30005 30006 30007 28106 28107 28108 28109 28110 28111 28160 28161 28162 28163 28164 28165 +48 28304 28305 28306 28307 28308 28309 30266 30267 30268 30269 30270 30271 28136 28137 28138 28139 28140 28141 28160 28161 28162 28163 28164 28165 28106 28107 28108 28109 28110 28111 30008 30009 30010 30011 30012 30013 28274 28275 28276 28277 28278 28279 28328 28329 28330 28331 28332 28333 +48 21008 21009 21010 21011 21012 21013 30272 30273 30274 30275 30276 30277 28304 28305 28306 28307 28308 28309 28328 28329 28330 28331 28332 28333 28274 28275 28276 28277 28278 28279 30014 30015 30016 30017 30018 30019 20894 20895 20896 20897 20898 20899 28472 28473 28474 28475 28476 28477 +48 20996 20997 20998 20999 21000 21001 21002 21003 21004 21005 21006 21007 21008 21009 21010 21011 21012 21013 28472 28473 28474 28475 28476 28477 20894 20895 20896 20897 20898 20899 20888 20889 20890 20891 20892 20893 20882 20883 20884 20885 20886 20887 28604 28605 28606 28607 28608 28609 +48 21038 21039 21040 21041 21042 21043 21044 21045 21046 21047 21048 21049 20996 20997 20998 20999 21000 21001 28604 28605 28606 28607 28608 28609 20882 20883 20884 20885 20886 20887 20930 20931 20932 20933 20934 20935 20924 20925 20926 20927 20928 20929 28730 28731 28732 28733 28734 28735 +48 21062 21063 21064 21065 21066 21067 21068 21069 21070 21071 21072 21073 21038 21039 21040 21041 21042 21043 28730 28731 28732 28733 28734 28735 20924 20925 20926 20927 20928 20929 20954 20955 20956 20957 20958 20959 20948 20949 20950 20951 20952 20953 28856 28857 28858 28859 28860 28861 +48 21086 21087 21088 21089 21090 21091 21092 21093 21094 21095 21096 21097 21062 21063 21064 21065 21066 21067 28856 28857 28858 28859 28860 28861 20948 20949 20950 20951 20952 20953 20978 20979 20980 20981 20982 20983 20972 20973 20974 20975 20976 20977 28994 28995 28996 28997 28998 28999 +48 29126 29127 29128 29129 29130 29131 30278 30279 30280 30281 30282 30283 21086 21087 21088 21089 21090 21091 28994 28995 28996 28997 28998 28999 20972 20973 20974 20975 20976 20977 30020 30021 30022 30023 30024 30025 29096 29097 29098 29099 29100 29101 29150 29151 29152 29153 29154 29155 +48 29282 29283 29284 29285 29286 29287 30284 30285 30286 30287 30288 30289 29126 29127 29128 29129 29130 29131 29150 29151 29152 29153 29154 29155 29096 29097 29098 29099 29100 29101 30026 30027 30028 30029 30030 30031 29252 29253 29254 29255 29256 29257 29306 29307 29308 29309 29310 29311 +48 29444 29445 29446 29447 29448 29449 30290 30291 30292 30293 30294 30295 29282 29283 29284 29285 29286 29287 29306 29307 29308 29309 29310 29311 29252 29253 29254 29255 29256 29257 30032 30033 30034 30035 30036 30037 29414 29415 29416 29417 29418 29419 29468 29469 29470 29471 29472 29473 +48 30296 30297 30298 30299 30300 30301 30302 30303 30304 30305 30306 30307 29444 29445 29446 29447 29448 29449 29468 29469 29470 29471 29472 29473 29414 29415 29416 29417 29418 29419 30044 30045 30046 30047 30048 30049 30038 30039 30040 30041 30042 30043 30308 30309 30310 30311 30312 30313 +48 22676 22677 22678 22679 22680 22681 30314 30315 30316 30317 30318 30319 30320 30321 30322 30323 30324 30325 30326 30327 30328 30329 30330 30331 30062 30063 30064 30065 30066 30067 30056 30057 30058 30059 30060 30061 22646 22647 22648 22649 22650 22651 22700 22701 22702 22703 22704 22705 +48 22856 22857 22858 22859 22860 22861 30332 30333 30334 30335 30336 30337 22676 22677 22678 22679 22680 22681 22700 22701 22702 22703 22704 22705 22646 22647 22648 22649 22650 22651 30074 30075 30076 30077 30078 30079 22820 22821 22822 22823 22824 22825 22880 22881 22882 22883 22884 22885 +48 23036 23037 23038 23039 23040 23041 30338 30339 30340 30341 30342 30343 22856 22857 22858 22859 22860 22861 22880 22881 22882 22883 22884 22885 22820 22821 22822 22823 22824 22825 30080 30081 30082 30083 30084 30085 23000 23001 23002 23003 23004 23005 23060 23061 23062 23063 23064 23065 +48 23198 23199 23200 23201 23202 23203 30344 30345 30346 30347 30348 30349 23036 23037 23038 23039 23040 23041 23060 23061 23062 23063 23064 23065 23000 23001 23002 23003 23004 23005 30086 30087 30088 30089 30090 30091 23168 23169 23170 23171 23172 23173 23222 23223 23224 23225 23226 23227 +48 23366 23367 23368 23369 23370 23371 30350 30351 30352 30353 30354 30355 23198 23199 23200 23201 23202 23203 23222 23223 23224 23225 23226 23227 23168 23169 23170 23171 23172 23173 30092 30093 30094 30095 30096 30097 23336 23337 23338 23339 23340 23341 23390 23391 23392 23393 23394 23395 +48 23552 23553 23554 23555 23556 23557 30356 30357 30358 30359 30360 30361 23366 23367 23368 23369 23370 23371 23390 23391 23392 23393 23394 23395 23336 23337 23338 23339 23340 23341 30098 30099 30100 30101 30102 30103 23516 23517 23518 23519 23520 23521 23576 23577 23578 23579 23580 23581 +48 23714 23715 23716 23717 23718 23719 30362 30363 30364 30365 30366 30367 23552 23553 23554 23555 23556 23557 23576 23577 23578 23579 23580 23581 23516 23517 23518 23519 23520 23521 30104 30105 30106 30107 30108 30109 23684 23685 23686 23687 23688 23689 23738 23739 23740 23741 23742 23743 +48 23882 23883 23884 23885 23886 23887 30368 30369 30370 30371 30372 30373 23714 23715 23716 23717 23718 23719 23738 23739 23740 23741 23742 23743 23684 23685 23686 23687 23688 23689 30110 30111 30112 30113 30114 30115 23852 23853 23854 23855 23856 23857 23906 23907 23908 23909 23910 23911 +48 24056 24057 24058 24059 24060 24061 30374 30375 30376 30377 30378 30379 23882 23883 23884 23885 23886 23887 23906 23907 23908 23909 23910 23911 23852 23853 23854 23855 23856 23857 30116 30117 30118 30119 30120 30121 24026 24027 24028 24029 24030 24031 24080 24081 24082 24083 24084 24085 +48 24224 24225 24226 24227 24228 24229 30380 30381 30382 30383 30384 30385 24056 24057 24058 24059 24060 24061 24080 24081 24082 24083 24084 24085 24026 24027 24028 24029 24030 24031 30122 30123 30124 30125 30126 30127 24194 24195 24196 24197 24198 24199 24248 24249 24250 24251 24252 24253 +48 24392 24393 24394 24395 24396 24397 30386 30387 30388 30389 30390 30391 24224 24225 24226 24227 24228 24229 24248 24249 24250 24251 24252 24253 24194 24195 24196 24197 24198 24199 30128 30129 30130 30131 30132 30133 24362 24363 24364 24365 24366 24367 24416 24417 24418 24419 24420 24421 +48 24578 24579 24580 24581 24582 24583 30392 30393 30394 30395 30396 30397 24392 24393 24394 24395 24396 24397 24416 24417 24418 24419 24420 24421 24362 24363 24364 24365 24366 24367 30134 30135 30136 30137 30138 30139 24542 24543 24544 24545 24546 24547 24602 24603 24604 24605 24606 24607 +48 24740 24741 24742 24743 24744 24745 30398 30399 30400 30401 30402 30403 24578 24579 24580 24581 24582 24583 24602 24603 24604 24605 24606 24607 24542 24543 24544 24545 24546 24547 30140 30141 30142 30143 30144 30145 24710 24711 24712 24713 24714 24715 24764 24765 24766 24767 24768 24769 +48 24908 24909 24910 24911 24912 24913 30404 30405 30406 30407 30408 30409 24740 24741 24742 24743 24744 24745 24764 24765 24766 24767 24768 24769 24710 24711 24712 24713 24714 24715 30146 30147 30148 30149 30150 30151 24878 24879 24880 24881 24882 24883 24932 24933 24934 24935 24936 24937 +48 25082 25083 25084 25085 25086 25087 30410 30411 30412 30413 30414 30415 24908 24909 24910 24911 24912 24913 24932 24933 24934 24935 24936 24937 24878 24879 24880 24881 24882 24883 30152 30153 30154 30155 30156 30157 25052 25053 25054 25055 25056 25057 25106 25107 25108 25109 25110 25111 +48 25250 25251 25252 25253 25254 25255 30416 30417 30418 30419 30420 30421 25082 25083 25084 25085 25086 25087 25106 25107 25108 25109 25110 25111 25052 25053 25054 25055 25056 25057 30158 30159 30160 30161 30162 30163 25220 25221 25222 25223 25224 25225 25274 25275 25276 25277 25278 25279 +48 25418 25419 25420 25421 25422 25423 30422 30423 30424 30425 30426 30427 25250 25251 25252 25253 25254 25255 25274 25275 25276 25277 25278 25279 25220 25221 25222 25223 25224 25225 30164 30165 30166 30167 30168 30169 25388 25389 25390 25391 25392 25393 25442 25443 25444 25445 25446 25447 +48 25604 25605 25606 25607 25608 25609 30428 30429 30430 30431 30432 30433 25418 25419 25420 25421 25422 25423 25442 25443 25444 25445 25446 25447 25388 25389 25390 25391 25392 25393 30170 30171 30172 30173 30174 30175 25568 25569 25570 25571 25572 25573 25628 25629 25630 25631 25632 25633 +48 25766 25767 25768 25769 25770 25771 30434 30435 30436 30437 30438 30439 25604 25605 25606 25607 25608 25609 25628 25629 25630 25631 25632 25633 25568 25569 25570 25571 25572 25573 30176 30177 30178 30179 30180 30181 25736 25737 25738 25739 25740 25741 25790 25791 25792 25793 25794 25795 +48 25934 25935 25936 25937 25938 25939 30440 30441 30442 30443 30444 30445 25766 25767 25768 25769 25770 25771 25790 25791 25792 25793 25794 25795 25736 25737 25738 25739 25740 25741 30182 30183 30184 30185 30186 30187 25904 25905 25906 25907 25908 25909 25958 25959 25960 25961 25962 25963 +48 26108 26109 26110 26111 26112 26113 30446 30447 30448 30449 30450 30451 25934 25935 25936 25937 25938 25939 25958 25959 25960 25961 25962 25963 25904 25905 25906 25907 25908 25909 30188 30189 30190 30191 30192 30193 26078 26079 26080 26081 26082 26083 26132 26133 26134 26135 26136 26137 +48 26276 26277 26278 26279 26280 26281 30452 30453 30454 30455 30456 30457 26108 26109 26110 26111 26112 26113 26132 26133 26134 26135 26136 26137 26078 26079 26080 26081 26082 26083 30194 30195 30196 30197 30198 30199 26246 26247 26248 26249 26250 26251 26300 26301 26302 26303 26304 26305 +48 26444 26445 26446 26447 26448 26449 30458 30459 30460 30461 30462 30463 26276 26277 26278 26279 26280 26281 26300 26301 26302 26303 26304 26305 26246 26247 26248 26249 26250 26251 30200 30201 30202 30203 30204 30205 26414 26415 26416 26417 26418 26419 26468 26469 26470 26471 26472 26473 +48 26630 26631 26632 26633 26634 26635 30464 30465 30466 30467 30468 30469 26444 26445 26446 26447 26448 26449 26468 26469 26470 26471 26472 26473 26414 26415 26416 26417 26418 26419 30206 30207 30208 30209 30210 30211 26594 26595 26596 26597 26598 26599 26654 26655 26656 26657 26658 26659 +48 26792 26793 26794 26795 26796 26797 30470 30471 30472 30473 30474 30475 26630 26631 26632 26633 26634 26635 26654 26655 26656 26657 26658 26659 26594 26595 26596 26597 26598 26599 30212 30213 30214 30215 30216 30217 26762 26763 26764 26765 26766 26767 26816 26817 26818 26819 26820 26821 +48 26960 26961 26962 26963 26964 26965 30476 30477 30478 30479 30480 30481 26792 26793 26794 26795 26796 26797 26816 26817 26818 26819 26820 26821 26762 26763 26764 26765 26766 26767 30218 30219 30220 30221 30222 30223 26930 26931 26932 26933 26934 26935 26984 26985 26986 26987 26988 26989 +48 27134 27135 27136 27137 27138 27139 30482 30483 30484 30485 30486 30487 26960 26961 26962 26963 26964 26965 26984 26985 26986 26987 26988 26989 26930 26931 26932 26933 26934 26935 30224 30225 30226 30227 30228 30229 27104 27105 27106 27107 27108 27109 27158 27159 27160 27161 27162 27163 +48 27302 27303 27304 27305 27306 27307 30488 30489 30490 30491 30492 30493 27134 27135 27136 27137 27138 27139 27158 27159 27160 27161 27162 27163 27104 27105 27106 27107 27108 27109 30230 30231 30232 30233 30234 30235 27272 27273 27274 27275 27276 27277 27326 27327 27328 27329 27330 27331 +48 27482 27483 27484 27485 27486 27487 30494 30495 30496 30497 30498 30499 27302 27303 27304 27305 27306 27307 27326 27327 27328 27329 27330 27331 27272 27273 27274 27275 27276 27277 30236 30237 30238 30239 30240 30241 27446 27447 27448 27449 27450 27451 27506 27507 27508 27509 27510 27511 +48 27662 27663 27664 27665 27666 27667 30500 30501 30502 30503 30504 30505 27482 27483 27484 27485 27486 27487 27506 27507 27508 27509 27510 27511 27446 27447 27448 27449 27450 27451 30242 30243 30244 30245 30246 30247 27626 27627 27628 27629 27630 27631 27686 27687 27688 27689 27690 27691 +48 27824 27825 27826 27827 27828 27829 30506 30507 30508 30509 30510 30511 27662 27663 27664 27665 27666 27667 27686 27687 27688 27689 27690 27691 27626 27627 27628 27629 27630 27631 30248 30249 30250 30251 30252 30253 27794 27795 27796 27797 27798 27799 27848 27849 27850 27851 27852 27853 +48 27992 27993 27994 27995 27996 27997 30512 30513 30514 30515 30516 30517 27824 27825 27826 27827 27828 27829 27848 27849 27850 27851 27852 27853 27794 27795 27796 27797 27798 27799 30254 30255 30256 30257 30258 30259 27962 27963 27964 27965 27966 27967 28016 28017 28018 28019 28020 28021 +48 28166 28167 28168 28169 28170 28171 30518 30519 30520 30521 30522 30523 27992 27993 27994 27995 27996 27997 28016 28017 28018 28019 28020 28021 27962 27963 27964 27965 27966 27967 30260 30261 30262 30263 30264 30265 28136 28137 28138 28139 28140 28141 28190 28191 28192 28193 28194 28195 +48 28334 28335 28336 28337 28338 28339 30524 30525 30526 30527 30528 30529 28166 28167 28168 28169 28170 28171 28190 28191 28192 28193 28194 28195 28136 28137 28138 28139 28140 28141 30266 30267 30268 30269 30270 30271 28304 28305 28306 28307 28308 28309 28358 28359 28360 28361 28362 28363 +48 28478 28479 28480 28481 28482 28483 30530 30531 30532 30533 30534 30535 28334 28335 28336 28337 28338 28339 28358 28359 28360 28361 28362 28363 28304 28305 28306 28307 28308 28309 30272 30273 30274 30275 30276 30277 21008 21009 21010 21011 21012 21013 28502 28503 28504 28505 28506 28507 +48 961 962 963 964 965 966 30536 30537 30538 30539 30540 30541 28478 28479 28480 28481 28482 28483 28502 28503 28504 28505 28506 28507 21008 21009 21010 21011 21012 21013 21002 21003 21004 21005 21006 21007 20996 20997 20998 20999 21000 21001 28628 28629 28630 28631 28632 28633 +48 967 968 969 970 971 972 30542 30543 30544 30545 30546 30547 961 962 963 964 965 966 28628 28629 28630 28631 28632 28633 20996 20997 20998 20999 21000 21001 21044 21045 21046 21047 21048 21049 21038 21039 21040 21041 21042 21043 28754 28755 28756 28757 28758 28759 +48 973 974 975 976 977 978 30548 30549 30550 30551 30552 30553 967 968 969 970 971 972 28754 28755 28756 28757 28758 28759 21038 21039 21040 21041 21042 21043 21068 21069 21070 21071 21072 21073 21062 21063 21064 21065 21066 21067 28880 28881 28882 28883 28884 28885 +48 979 980 981 982 983 984 30554 30555 30556 30557 30558 30559 973 974 975 976 977 978 28880 28881 28882 28883 28884 28885 21062 21063 21064 21065 21066 21067 21092 21093 21094 21095 21096 21097 21086 21087 21088 21089 21090 21091 29018 29019 29020 29021 29022 29023 +48 985 986 987 988 989 990 30560 30561 30562 30563 30564 30565 979 980 981 982 983 984 29018 29019 29020 29021 29022 29023 21086 21087 21088 21089 21090 21091 30278 30279 30280 30281 30282 30283 29126 29127 29128 29129 29130 29131 29174 29175 29176 29177 29178 29179 +48 991 992 993 994 995 996 30566 30567 30568 30569 30570 30571 985 986 987 988 989 990 29174 29175 29176 29177 29178 29179 29126 29127 29128 29129 29130 29131 30284 30285 30286 30287 30288 30289 29282 29283 29284 29285 29286 29287 29330 29331 29332 29333 29334 29335 +48 29474 29475 29476 29477 29478 29479 30572 30573 30574 30575 30576 30577 991 992 993 994 995 996 29330 29331 29332 29333 29334 29335 29282 29283 29284 29285 29286 29287 30290 30291 30292 30293 30294 30295 29444 29445 29446 29447 29448 29449 29498 29499 29500 29501 29502 29503 +48 30578 30579 30580 30581 30582 30583 30584 30585 30586 30587 30588 30589 29474 29475 29476 29477 29478 29479 29498 29499 29500 29501 29502 29503 29444 29445 29446 29447 29448 29449 30302 30303 30304 30305 30306 30307 30296 30297 30298 30299 30300 30301 30590 30591 30592 30593 30594 30595 +48 22706 22707 22708 22709 22710 22711 30596 30597 30598 30599 30600 30601 30602 30603 30604 30605 30606 30607 30608 30609 30610 30611 30612 30613 30320 30321 30322 30323 30324 30325 30314 30315 30316 30317 30318 30319 22676 22677 22678 22679 22680 22681 22718 22719 22720 22721 22722 22723 +48 22892 22893 22894 22895 22896 22897 30614 30615 30616 30617 30618 30619 22706 22707 22708 22709 22710 22711 22718 22719 22720 22721 22722 22723 22676 22677 22678 22679 22680 22681 30332 30333 30334 30335 30336 30337 22856 22857 22858 22859 22860 22861 22904 22905 22906 22907 22908 22909 +48 23072 23073 23074 23075 23076 23077 30620 30621 30622 30623 30624 30625 22892 22893 22894 22895 22896 22897 22904 22905 22906 22907 22908 22909 22856 22857 22858 22859 22860 22861 30338 30339 30340 30341 30342 30343 23036 23037 23038 23039 23040 23041 23084 23085 23086 23087 23088 23089 +48 23228 23229 23230 23231 23232 23233 30626 30627 30628 30629 30630 30631 23072 23073 23074 23075 23076 23077 23084 23085 23086 23087 23088 23089 23036 23037 23038 23039 23040 23041 30344 30345 30346 30347 30348 30349 23198 23199 23200 23201 23202 23203 23240 23241 23242 23243 23244 23245 +48 23408 23409 23410 23411 23412 23413 30632 30633 30634 30635 30636 30637 23228 23229 23230 23231 23232 23233 23240 23241 23242 23243 23244 23245 23198 23199 23200 23201 23202 23203 30350 30351 30352 30353 30354 30355 23366 23367 23368 23369 23370 23371 23420 23421 23422 23423 23424 23425 +48 23588 23589 23590 23591 23592 23593 30638 30639 30640 30641 30642 30643 23408 23409 23410 23411 23412 23413 23420 23421 23422 23423 23424 23425 23366 23367 23368 23369 23370 23371 30356 30357 30358 30359 30360 30361 23552 23553 23554 23555 23556 23557 23600 23601 23602 23603 23604 23605 +48 23744 23745 23746 23747 23748 23749 30644 30645 30646 30647 30648 30649 23588 23589 23590 23591 23592 23593 23600 23601 23602 23603 23604 23605 23552 23553 23554 23555 23556 23557 30362 30363 30364 30365 30366 30367 23714 23715 23716 23717 23718 23719 23756 23757 23758 23759 23760 23761 +48 23924 23925 23926 23927 23928 23929 30650 30651 30652 30653 30654 30655 23744 23745 23746 23747 23748 23749 23756 23757 23758 23759 23760 23761 23714 23715 23716 23717 23718 23719 30368 30369 30370 30371 30372 30373 23882 23883 23884 23885 23886 23887 23936 23937 23938 23939 23940 23941 +48 24098 24099 24100 24101 24102 24103 30656 30657 30658 30659 30660 30661 23924 23925 23926 23927 23928 23929 23936 23937 23938 23939 23940 23941 23882 23883 23884 23885 23886 23887 30374 30375 30376 30377 30378 30379 24056 24057 24058 24059 24060 24061 24110 24111 24112 24113 24114 24115 +48 24254 24255 24256 24257 24258 24259 30662 30663 30664 30665 30666 30667 24098 24099 24100 24101 24102 24103 24110 24111 24112 24113 24114 24115 24056 24057 24058 24059 24060 24061 30380 30381 30382 30383 30384 30385 24224 24225 24226 24227 24228 24229 24266 24267 24268 24269 24270 24271 +48 24434 24435 24436 24437 24438 24439 30668 30669 30670 30671 30672 30673 24254 24255 24256 24257 24258 24259 24266 24267 24268 24269 24270 24271 24224 24225 24226 24227 24228 24229 30386 30387 30388 30389 30390 30391 24392 24393 24394 24395 24396 24397 24446 24447 24448 24449 24450 24451 +48 24614 24615 24616 24617 24618 24619 30674 30675 30676 30677 30678 30679 24434 24435 24436 24437 24438 24439 24446 24447 24448 24449 24450 24451 24392 24393 24394 24395 24396 24397 30392 30393 30394 30395 30396 30397 24578 24579 24580 24581 24582 24583 24626 24627 24628 24629 24630 24631 +48 24770 24771 24772 24773 24774 24775 30680 30681 30682 30683 30684 30685 24614 24615 24616 24617 24618 24619 24626 24627 24628 24629 24630 24631 24578 24579 24580 24581 24582 24583 30398 30399 30400 30401 30402 30403 24740 24741 24742 24743 24744 24745 24782 24783 24784 24785 24786 24787 +48 24950 24951 24952 24953 24954 24955 30686 30687 30688 30689 30690 30691 24770 24771 24772 24773 24774 24775 24782 24783 24784 24785 24786 24787 24740 24741 24742 24743 24744 24745 30404 30405 30406 30407 30408 30409 24908 24909 24910 24911 24912 24913 24962 24963 24964 24965 24966 24967 +48 25124 25125 25126 25127 25128 25129 30692 30693 30694 30695 30696 30697 24950 24951 24952 24953 24954 24955 24962 24963 24964 24965 24966 24967 24908 24909 24910 24911 24912 24913 30410 30411 30412 30413 30414 30415 25082 25083 25084 25085 25086 25087 25136 25137 25138 25139 25140 25141 +48 25280 25281 25282 25283 25284 25285 30698 30699 30700 30701 30702 30703 25124 25125 25126 25127 25128 25129 25136 25137 25138 25139 25140 25141 25082 25083 25084 25085 25086 25087 30416 30417 30418 30419 30420 30421 25250 25251 25252 25253 25254 25255 25292 25293 25294 25295 25296 25297 +48 25460 25461 25462 25463 25464 25465 30704 30705 30706 30707 30708 30709 25280 25281 25282 25283 25284 25285 25292 25293 25294 25295 25296 25297 25250 25251 25252 25253 25254 25255 30422 30423 30424 30425 30426 30427 25418 25419 25420 25421 25422 25423 25472 25473 25474 25475 25476 25477 +48 25640 25641 25642 25643 25644 25645 30710 30711 30712 30713 30714 30715 25460 25461 25462 25463 25464 25465 25472 25473 25474 25475 25476 25477 25418 25419 25420 25421 25422 25423 30428 30429 30430 30431 30432 30433 25604 25605 25606 25607 25608 25609 25652 25653 25654 25655 25656 25657 +48 25796 25797 25798 25799 25800 25801 30716 30717 30718 30719 30720 30721 25640 25641 25642 25643 25644 25645 25652 25653 25654 25655 25656 25657 25604 25605 25606 25607 25608 25609 30434 30435 30436 30437 30438 30439 25766 25767 25768 25769 25770 25771 25808 25809 25810 25811 25812 25813 +48 25976 25977 25978 25979 25980 25981 30722 30723 30724 30725 30726 30727 25796 25797 25798 25799 25800 25801 25808 25809 25810 25811 25812 25813 25766 25767 25768 25769 25770 25771 30440 30441 30442 30443 30444 30445 25934 25935 25936 25937 25938 25939 25988 25989 25990 25991 25992 25993 +48 26150 26151 26152 26153 26154 26155 30728 30729 30730 30731 30732 30733 25976 25977 25978 25979 25980 25981 25988 25989 25990 25991 25992 25993 25934 25935 25936 25937 25938 25939 30446 30447 30448 30449 30450 30451 26108 26109 26110 26111 26112 26113 26162 26163 26164 26165 26166 26167 +48 26306 26307 26308 26309 26310 26311 30734 30735 30736 30737 30738 30739 26150 26151 26152 26153 26154 26155 26162 26163 26164 26165 26166 26167 26108 26109 26110 26111 26112 26113 30452 30453 30454 30455 30456 30457 26276 26277 26278 26279 26280 26281 26318 26319 26320 26321 26322 26323 +48 26486 26487 26488 26489 26490 26491 30740 30741 30742 30743 30744 30745 26306 26307 26308 26309 26310 26311 26318 26319 26320 26321 26322 26323 26276 26277 26278 26279 26280 26281 30458 30459 30460 30461 30462 30463 26444 26445 26446 26447 26448 26449 26498 26499 26500 26501 26502 26503 +48 26666 26667 26668 26669 26670 26671 30746 30747 30748 30749 30750 30751 26486 26487 26488 26489 26490 26491 26498 26499 26500 26501 26502 26503 26444 26445 26446 26447 26448 26449 30464 30465 30466 30467 30468 30469 26630 26631 26632 26633 26634 26635 26678 26679 26680 26681 26682 26683 +48 26822 26823 26824 26825 26826 26827 30752 30753 30754 30755 30756 30757 26666 26667 26668 26669 26670 26671 26678 26679 26680 26681 26682 26683 26630 26631 26632 26633 26634 26635 30470 30471 30472 30473 30474 30475 26792 26793 26794 26795 26796 26797 26834 26835 26836 26837 26838 26839 +48 27002 27003 27004 27005 27006 27007 30758 30759 30760 30761 30762 30763 26822 26823 26824 26825 26826 26827 26834 26835 26836 26837 26838 26839 26792 26793 26794 26795 26796 26797 30476 30477 30478 30479 30480 30481 26960 26961 26962 26963 26964 26965 27014 27015 27016 27017 27018 27019 +48 27176 27177 27178 27179 27180 27181 30764 30765 30766 30767 30768 30769 27002 27003 27004 27005 27006 27007 27014 27015 27016 27017 27018 27019 26960 26961 26962 26963 26964 26965 30482 30483 30484 30485 30486 30487 27134 27135 27136 27137 27138 27139 27188 27189 27190 27191 27192 27193 +48 27332 27333 27334 27335 27336 27337 30770 30771 30772 30773 30774 30775 27176 27177 27178 27179 27180 27181 27188 27189 27190 27191 27192 27193 27134 27135 27136 27137 27138 27139 30488 30489 30490 30491 30492 30493 27302 27303 27304 27305 27306 27307 27344 27345 27346 27347 27348 27349 +48 27518 27519 27520 27521 27522 27523 30776 30777 30778 30779 30780 30781 27332 27333 27334 27335 27336 27337 27344 27345 27346 27347 27348 27349 27302 27303 27304 27305 27306 27307 30494 30495 30496 30497 30498 30499 27482 27483 27484 27485 27486 27487 27530 27531 27532 27533 27534 27535 +48 27698 27699 27700 27701 27702 27703 30782 30783 30784 30785 30786 30787 27518 27519 27520 27521 27522 27523 27530 27531 27532 27533 27534 27535 27482 27483 27484 27485 27486 27487 30500 30501 30502 30503 30504 30505 27662 27663 27664 27665 27666 27667 27710 27711 27712 27713 27714 27715 +48 27854 27855 27856 27857 27858 27859 30788 30789 30790 30791 30792 30793 27698 27699 27700 27701 27702 27703 27710 27711 27712 27713 27714 27715 27662 27663 27664 27665 27666 27667 30506 30507 30508 30509 30510 30511 27824 27825 27826 27827 27828 27829 27866 27867 27868 27869 27870 27871 +48 28034 28035 28036 28037 28038 28039 30794 30795 30796 30797 30798 30799 27854 27855 27856 27857 27858 27859 27866 27867 27868 27869 27870 27871 27824 27825 27826 27827 27828 27829 30512 30513 30514 30515 30516 30517 27992 27993 27994 27995 27996 27997 28046 28047 28048 28049 28050 28051 +48 28208 28209 28210 28211 28212 28213 30800 30801 30802 30803 30804 30805 28034 28035 28036 28037 28038 28039 28046 28047 28048 28049 28050 28051 27992 27993 27994 27995 27996 27997 30518 30519 30520 30521 30522 30523 28166 28167 28168 28169 28170 28171 28220 28221 28222 28223 28224 28225 +48 28364 28365 28366 28367 28368 28369 30806 30807 30808 30809 30810 30811 28208 28209 28210 28211 28212 28213 28220 28221 28222 28223 28224 28225 28166 28167 28168 28169 28170 28171 30524 30525 30526 30527 30528 30529 28334 28335 28336 28337 28338 28339 28376 28377 28378 28379 28380 28381 +48 28514 28515 28516 28517 28518 28519 30812 30813 30814 30815 30816 30817 28364 28365 28366 28367 28368 28369 28376 28377 28378 28379 28380 28381 28334 28335 28336 28337 28338 28339 30530 30531 30532 30533 30534 30535 28478 28479 28480 28481 28482 28483 28526 28527 28528 28529 28530 28531 +48 28634 28635 28636 28637 28638 28639 30818 30819 30820 30821 30822 30823 28514 28515 28516 28517 28518 28519 28526 28527 28528 28529 28530 28531 28478 28479 28480 28481 28482 28483 30536 30537 30538 30539 30540 30541 961 962 963 964 965 966 28646 28647 28648 28649 28650 28651 +48 28760 28761 28762 28763 28764 28765 30824 30825 30826 30827 30828 30829 28634 28635 28636 28637 28638 28639 28646 28647 28648 28649 28650 28651 961 962 963 964 965 966 30542 30543 30544 30545 30546 30547 967 968 969 970 971 972 28772 28773 28774 28775 28776 28777 +48 28886 28887 28888 28889 28890 28891 30830 30831 30832 30833 30834 30835 28760 28761 28762 28763 28764 28765 28772 28773 28774 28775 28776 28777 967 968 969 970 971 972 30548 30549 30550 30551 30552 30553 973 974 975 976 977 978 28898 28899 28900 28901 28902 28903 +48 29024 29025 29026 29027 29028 29029 30836 30837 30838 30839 30840 30841 28886 28887 28888 28889 28890 28891 28898 28899 28900 28901 28902 28903 973 974 975 976 977 978 30554 30555 30556 30557 30558 30559 979 980 981 982 983 984 29036 29037 29038 29039 29040 29041 +48 29180 29181 29182 29183 29184 29185 30842 30843 30844 30845 30846 30847 29024 29025 29026 29027 29028 29029 29036 29037 29038 29039 29040 29041 979 980 981 982 983 984 30560 30561 30562 30563 30564 30565 985 986 987 988 989 990 29192 29193 29194 29195 29196 29197 +48 29336 29337 29338 29339 29340 29341 30848 30849 30850 30851 30852 30853 29180 29181 29182 29183 29184 29185 29192 29193 29194 29195 29196 29197 985 986 987 988 989 990 30566 30567 30568 30569 30570 30571 991 992 993 994 995 996 29348 29349 29350 29351 29352 29353 +48 29516 29517 29518 29519 29520 29521 30854 30855 30856 30857 30858 30859 29336 29337 29338 29339 29340 29341 29348 29349 29350 29351 29352 29353 991 992 993 994 995 996 30572 30573 30574 30575 30576 30577 29474 29475 29476 29477 29478 29479 29528 29529 29530 29531 29532 29533 +48 30860 30861 30862 30863 30864 30865 30866 30867 30868 30869 30870 30871 29516 29517 29518 29519 29520 29521 29528 29529 29530 29531 29532 29533 29474 29475 29476 29477 29478 29479 30584 30585 30586 30587 30588 30589 30578 30579 30580 30581 30582 30583 30872 30873 30874 30875 30876 30877 +36 30884 30885 30886 30887 30888 30889 30896 30897 30898 30899 30900 30901 22598 22599 22600 22601 22602 22603 30890 30891 30892 30893 30894 30895 30902 30903 30904 30905 30906 30907 30878 30879 30880 30881 30882 30883 +48 22586 22587 22588 22589 22590 22591 30908 30909 30910 30911 30912 30913 30914 30915 30916 30917 30918 30919 30920 30921 30922 30923 30924 30925 30896 30897 30898 30899 30900 30901 30902 30903 30904 30905 30906 30907 22598 22599 22600 22601 22602 22603 22592 22593 22594 22595 22596 22597 +48 22748 22749 22750 22751 22752 22753 30926 30927 30928 30929 30930 30931 22586 22587 22588 22589 22590 22591 22592 22593 22594 22595 22596 22597 22598 22599 22600 22601 22602 22603 30932 30933 30934 30935 30936 30937 22760 22761 22762 22763 22764 22765 22754 22755 22756 22757 22758 22759 +48 22928 22929 22930 22931 22932 22933 30938 30939 30940 30941 30942 30943 22748 22749 22750 22751 22752 22753 22754 22755 22756 22757 22758 22759 22760 22761 22762 22763 22764 22765 30944 30945 30946 30947 30948 30949 22940 22941 22942 22943 22944 22945 22934 22935 22936 22937 22938 22939 +48 23108 23109 23110 23111 23112 23113 30950 30951 30952 30953 30954 30955 22928 22929 22930 22931 22932 22933 22934 22935 22936 22937 22938 22939 22940 22941 22942 22943 22944 22945 30956 30957 30958 30959 30960 30961 23120 23121 23122 23123 23124 23125 23114 23115 23116 23117 23118 23119 +48 23270 23271 23272 23273 23274 23275 30962 30963 30964 30965 30966 30967 23108 23109 23110 23111 23112 23113 23114 23115 23116 23117 23118 23119 23120 23121 23122 23123 23124 23125 30968 30969 30970 30971 30972 30973 23282 23283 23284 23285 23286 23287 23276 23277 23278 23279 23280 23281 +48 23444 23445 23446 23447 23448 23449 30974 30975 30976 30977 30978 30979 23270 23271 23272 23273 23274 23275 23276 23277 23278 23279 23280 23281 23282 23283 23284 23285 23286 23287 30980 30981 30982 30983 30984 30985 23456 23457 23458 23459 23460 23461 23450 23451 23452 23453 23454 23455 +48 23624 23625 23626 23627 23628 23629 30986 30987 30988 30989 30990 30991 23444 23445 23446 23447 23448 23449 23450 23451 23452 23453 23454 23455 23456 23457 23458 23459 23460 23461 30992 30993 30994 30995 30996 30997 23636 23637 23638 23639 23640 23641 23630 23631 23632 23633 23634 23635 +48 23786 23787 23788 23789 23790 23791 30998 30999 31000 31001 31002 31003 23624 23625 23626 23627 23628 23629 23630 23631 23632 23633 23634 23635 23636 23637 23638 23639 23640 23641 31004 31005 31006 31007 31008 31009 23798 23799 23800 23801 23802 23803 23792 23793 23794 23795 23796 23797 +48 23960 23961 23962 23963 23964 23965 31010 31011 31012 31013 31014 31015 23786 23787 23788 23789 23790 23791 23792 23793 23794 23795 23796 23797 23798 23799 23800 23801 23802 23803 31016 31017 31018 31019 31020 31021 23972 23973 23974 23975 23976 23977 23966 23967 23968 23969 23970 23971 +48 24134 24135 24136 24137 24138 24139 31022 31023 31024 31025 31026 31027 23960 23961 23962 23963 23964 23965 23966 23967 23968 23969 23970 23971 23972 23973 23974 23975 23976 23977 31028 31029 31030 31031 31032 31033 24146 24147 24148 24149 24150 24151 24140 24141 24142 24143 24144 24145 +48 24296 24297 24298 24299 24300 24301 31034 31035 31036 31037 31038 31039 24134 24135 24136 24137 24138 24139 24140 24141 24142 24143 24144 24145 24146 24147 24148 24149 24150 24151 31040 31041 31042 31043 31044 31045 24308 24309 24310 24311 24312 24313 24302 24303 24304 24305 24306 24307 +48 24470 24471 24472 24473 24474 24475 31046 31047 31048 31049 31050 31051 24296 24297 24298 24299 24300 24301 24302 24303 24304 24305 24306 24307 24308 24309 24310 24311 24312 24313 31052 31053 31054 31055 31056 31057 24482 24483 24484 24485 24486 24487 24476 24477 24478 24479 24480 24481 +48 24650 24651 24652 24653 24654 24655 31058 31059 31060 31061 31062 31063 24470 24471 24472 24473 24474 24475 24476 24477 24478 24479 24480 24481 24482 24483 24484 24485 24486 24487 31064 31065 31066 31067 31068 31069 24662 24663 24664 24665 24666 24667 24656 24657 24658 24659 24660 24661 +48 24812 24813 24814 24815 24816 24817 31070 31071 31072 31073 31074 31075 24650 24651 24652 24653 24654 24655 24656 24657 24658 24659 24660 24661 24662 24663 24664 24665 24666 24667 31076 31077 31078 31079 31080 31081 24824 24825 24826 24827 24828 24829 24818 24819 24820 24821 24822 24823 +48 24986 24987 24988 24989 24990 24991 31082 31083 31084 31085 31086 31087 24812 24813 24814 24815 24816 24817 24818 24819 24820 24821 24822 24823 24824 24825 24826 24827 24828 24829 31088 31089 31090 31091 31092 31093 24998 24999 25000 25001 25002 25003 24992 24993 24994 24995 24996 24997 +48 25160 25161 25162 25163 25164 25165 31094 31095 31096 31097 31098 31099 24986 24987 24988 24989 24990 24991 24992 24993 24994 24995 24996 24997 24998 24999 25000 25001 25002 25003 31100 31101 31102 31103 31104 31105 25172 25173 25174 25175 25176 25177 25166 25167 25168 25169 25170 25171 +48 25322 25323 25324 25325 25326 25327 31106 31107 31108 31109 31110 31111 25160 25161 25162 25163 25164 25165 25166 25167 25168 25169 25170 25171 25172 25173 25174 25175 25176 25177 31112 31113 31114 31115 31116 31117 25334 25335 25336 25337 25338 25339 25328 25329 25330 25331 25332 25333 +48 25496 25497 25498 25499 25500 25501 31118 31119 31120 31121 31122 31123 25322 25323 25324 25325 25326 25327 25328 25329 25330 25331 25332 25333 25334 25335 25336 25337 25338 25339 31124 31125 31126 31127 31128 31129 25508 25509 25510 25511 25512 25513 25502 25503 25504 25505 25506 25507 +48 25676 25677 25678 25679 25680 25681 31130 31131 31132 31133 31134 31135 25496 25497 25498 25499 25500 25501 25502 25503 25504 25505 25506 25507 25508 25509 25510 25511 25512 25513 31136 31137 31138 31139 31140 31141 25688 25689 25690 25691 25692 25693 25682 25683 25684 25685 25686 25687 +48 25838 25839 25840 25841 25842 25843 31142 31143 31144 31145 31146 31147 25676 25677 25678 25679 25680 25681 25682 25683 25684 25685 25686 25687 25688 25689 25690 25691 25692 25693 31148 31149 31150 31151 31152 31153 25850 25851 25852 25853 25854 25855 25844 25845 25846 25847 25848 25849 +48 26012 26013 26014 26015 26016 26017 31154 31155 31156 31157 31158 31159 25838 25839 25840 25841 25842 25843 25844 25845 25846 25847 25848 25849 25850 25851 25852 25853 25854 25855 31160 31161 31162 31163 31164 31165 26024 26025 26026 26027 26028 26029 26018 26019 26020 26021 26022 26023 +48 26186 26187 26188 26189 26190 26191 31166 31167 31168 31169 31170 31171 26012 26013 26014 26015 26016 26017 26018 26019 26020 26021 26022 26023 26024 26025 26026 26027 26028 26029 31172 31173 31174 31175 31176 31177 26198 26199 26200 26201 26202 26203 26192 26193 26194 26195 26196 26197 +48 26348 26349 26350 26351 26352 26353 31178 31179 31180 31181 31182 31183 26186 26187 26188 26189 26190 26191 26192 26193 26194 26195 26196 26197 26198 26199 26200 26201 26202 26203 31184 31185 31186 31187 31188 31189 26360 26361 26362 26363 26364 26365 26354 26355 26356 26357 26358 26359 +48 26522 26523 26524 26525 26526 26527 31190 31191 31192 31193 31194 31195 26348 26349 26350 26351 26352 26353 26354 26355 26356 26357 26358 26359 26360 26361 26362 26363 26364 26365 31196 31197 31198 31199 31200 31201 26534 26535 26536 26537 26538 26539 26528 26529 26530 26531 26532 26533 +48 26702 26703 26704 26705 26706 26707 31202 31203 31204 31205 31206 31207 26522 26523 26524 26525 26526 26527 26528 26529 26530 26531 26532 26533 26534 26535 26536 26537 26538 26539 31208 31209 31210 31211 31212 31213 26714 26715 26716 26717 26718 26719 26708 26709 26710 26711 26712 26713 +48 26864 26865 26866 26867 26868 26869 31214 31215 31216 31217 31218 31219 26702 26703 26704 26705 26706 26707 26708 26709 26710 26711 26712 26713 26714 26715 26716 26717 26718 26719 31220 31221 31222 31223 31224 31225 26876 26877 26878 26879 26880 26881 26870 26871 26872 26873 26874 26875 +48 27038 27039 27040 27041 27042 27043 31226 31227 31228 31229 31230 31231 26864 26865 26866 26867 26868 26869 26870 26871 26872 26873 26874 26875 26876 26877 26878 26879 26880 26881 31232 31233 31234 31235 31236 31237 27050 27051 27052 27053 27054 27055 27044 27045 27046 27047 27048 27049 +48 27212 27213 27214 27215 27216 27217 31238 31239 31240 31241 31242 31243 27038 27039 27040 27041 27042 27043 27044 27045 27046 27047 27048 27049 27050 27051 27052 27053 27054 27055 31244 31245 31246 31247 31248 31249 27224 27225 27226 27227 27228 27229 27218 27219 27220 27221 27222 27223 +48 27374 27375 27376 27377 27378 27379 31250 31251 31252 31253 31254 31255 27212 27213 27214 27215 27216 27217 27218 27219 27220 27221 27222 27223 27224 27225 27226 27227 27228 27229 31256 31257 31258 31259 31260 31261 27386 27387 27388 27389 27390 27391 27380 27381 27382 27383 27384 27385 +48 27554 27555 27556 27557 27558 27559 31262 31263 31264 31265 31266 31267 27374 27375 27376 27377 27378 27379 27380 27381 27382 27383 27384 27385 27386 27387 27388 27389 27390 27391 31268 31269 31270 31271 31272 31273 27566 27567 27568 27569 27570 27571 27560 27561 27562 27563 27564 27565 +48 27734 27735 27736 27737 27738 27739 31274 31275 31276 31277 31278 31279 27554 27555 27556 27557 27558 27559 27560 27561 27562 27563 27564 27565 27566 27567 27568 27569 27570 27571 31280 31281 31282 31283 31284 31285 27746 27747 27748 27749 27750 27751 27740 27741 27742 27743 27744 27745 +48 27896 27897 27898 27899 27900 27901 31286 31287 31288 31289 31290 31291 27734 27735 27736 27737 27738 27739 27740 27741 27742 27743 27744 27745 27746 27747 27748 27749 27750 27751 31292 31293 31294 31295 31296 31297 27908 27909 27910 27911 27912 27913 27902 27903 27904 27905 27906 27907 +48 28070 28071 28072 28073 28074 28075 31298 31299 31300 31301 31302 31303 27896 27897 27898 27899 27900 27901 27902 27903 27904 27905 27906 27907 27908 27909 27910 27911 27912 27913 31304 31305 31306 31307 31308 31309 28082 28083 28084 28085 28086 28087 28076 28077 28078 28079 28080 28081 +48 28244 28245 28246 28247 28248 28249 31310 31311 31312 31313 31314 31315 28070 28071 28072 28073 28074 28075 28076 28077 28078 28079 28080 28081 28082 28083 28084 28085 28086 28087 31316 31317 31318 31319 31320 31321 28256 28257 28258 28259 28260 28261 28250 28251 28252 28253 28254 28255 +48 28400 28401 28402 28403 28404 28405 31322 31323 31324 31325 31326 31327 28244 28245 28246 28247 28248 28249 28250 28251 28252 28253 28254 28255 28256 28257 28258 28259 28260 28261 31328 31329 31330 31331 31332 31333 28412 28413 28414 28415 28416 28417 28406 28407 28408 28409 28410 28411 +48 28544 28545 28546 28547 28548 28549 31334 31335 31336 31337 31338 31339 28400 28401 28402 28403 28404 28405 28406 28407 28408 28409 28410 28411 28412 28413 28414 28415 28416 28417 31340 31341 31342 31343 31344 31345 21158 21159 21160 21161 21162 21163 28550 28551 28552 28553 28554 28555 +48 28670 28671 28672 28673 28674 28675 31346 31347 31348 31349 31350 31351 28544 28545 28546 28547 28548 28549 28550 28551 28552 28553 28554 28555 21158 21159 21160 21161 21162 21163 21170 21171 21172 21173 21174 21175 21134 21135 21136 21137 21138 21139 28676 28677 28678 28679 28680 28681 +48 28796 28797 28798 28799 28800 28801 31352 31353 31354 31355 31356 31357 28670 28671 28672 28673 28674 28675 28676 28677 28678 28679 28680 28681 21134 21135 21136 21137 21138 21139 21188 21189 21190 21191 21192 21193 21176 21177 21178 21179 21180 21181 28802 28803 28804 28805 28806 28807 +48 28922 28923 28924 28925 28926 28927 31358 31359 31360 31361 31362 31363 28796 28797 28798 28799 28800 28801 28802 28803 28804 28805 28806 28807 21176 21177 21178 21179 21180 21181 31364 31365 31366 31367 31368 31369 28934 28935 28936 28937 28938 28939 28928 28929 28930 28931 28932 28933 +48 29066 29067 29068 29069 29070 29071 31370 31371 31372 31373 31374 31375 28922 28923 28924 28925 28926 28927 28928 28929 28930 28931 28932 28933 28934 28935 28936 28937 28938 28939 31376 31377 31378 31379 31380 31381 29078 29079 29080 29081 29082 29083 29072 29073 29074 29075 29076 29077 +48 29222 29223 29224 29225 29226 29227 31382 31383 31384 31385 31386 31387 29066 29067 29068 29069 29070 29071 29072 29073 29074 29075 29076 29077 29078 29079 29080 29081 29082 29083 31388 31389 31390 31391 31392 31393 29234 29235 29236 29237 29238 29239 29228 29229 29230 29231 29232 29233 +48 29378 29379 29380 29381 29382 29383 31394 31395 31396 31397 31398 31399 29222 29223 29224 29225 29226 29227 29228 29229 29230 29231 29232 29233 29234 29235 29236 29237 29238 29239 31400 31401 31402 31403 31404 31405 29390 29391 29392 29393 29394 29395 29384 29385 29386 29387 29388 29389 +48 31406 31407 31408 31409 31410 31411 31412 31413 31414 31415 31416 31417 29378 29379 29380 29381 29382 29383 29384 29385 29386 29387 29388 29389 29390 29391 29392 29393 29394 29395 31424 31425 31426 31427 31428 31429 31418 31419 31420 31421 31422 31423 31430 31431 31432 31433 31434 31435 +48 22628 22629 22630 22631 22632 22633 31436 31437 31438 31439 31440 31441 31442 31443 31444 31445 31446 31447 31448 31449 31450 31451 31452 31453 30914 30915 30916 30917 30918 30919 30908 30909 30910 30911 30912 30913 22586 22587 22588 22589 22590 22591 22634 22635 22636 22637 22638 22639 +48 22796 22797 22798 22799 22800 22801 31454 31455 31456 31457 31458 31459 22628 22629 22630 22631 22632 22633 22634 22635 22636 22637 22638 22639 22586 22587 22588 22589 22590 22591 30926 30927 30928 30929 30930 30931 22748 22749 22750 22751 22752 22753 22802 22803 22804 22805 22806 22807 +48 22976 22977 22978 22979 22980 22981 31460 31461 31462 31463 31464 31465 22796 22797 22798 22799 22800 22801 22802 22803 22804 22805 22806 22807 22748 22749 22750 22751 22752 22753 30938 30939 30940 30941 30942 30943 22928 22929 22930 22931 22932 22933 22982 22983 22984 22985 22986 22987 +48 23150 23151 23152 23153 23154 23155 31466 31467 31468 31469 31470 31471 22976 22977 22978 22979 22980 22981 22982 22983 22984 22985 22986 22987 22928 22929 22930 22931 22932 22933 30950 30951 30952 30953 30954 30955 23108 23109 23110 23111 23112 23113 23156 23157 23158 23159 23160 23161 +48 23318 23319 23320 23321 23322 23323 31472 31473 31474 31475 31476 31477 23150 23151 23152 23153 23154 23155 23156 23157 23158 23159 23160 23161 23108 23109 23110 23111 23112 23113 30962 30963 30964 30965 30966 30967 23270 23271 23272 23273 23274 23275 23324 23325 23326 23327 23328 23329 +48 23492 23493 23494 23495 23496 23497 31478 31479 31480 31481 31482 31483 23318 23319 23320 23321 23322 23323 23324 23325 23326 23327 23328 23329 23270 23271 23272 23273 23274 23275 30974 30975 30976 30977 30978 30979 23444 23445 23446 23447 23448 23449 23498 23499 23500 23501 23502 23503 +48 23666 23667 23668 23669 23670 23671 31484 31485 31486 31487 31488 31489 23492 23493 23494 23495 23496 23497 23498 23499 23500 23501 23502 23503 23444 23445 23446 23447 23448 23449 30986 30987 30988 30989 30990 30991 23624 23625 23626 23627 23628 23629 23672 23673 23674 23675 23676 23677 +48 23834 23835 23836 23837 23838 23839 31490 31491 31492 31493 31494 31495 23666 23667 23668 23669 23670 23671 23672 23673 23674 23675 23676 23677 23624 23625 23626 23627 23628 23629 30998 30999 31000 31001 31002 31003 23786 23787 23788 23789 23790 23791 23840 23841 23842 23843 23844 23845 +48 24008 24009 24010 24011 24012 24013 31496 31497 31498 31499 31500 31501 23834 23835 23836 23837 23838 23839 23840 23841 23842 23843 23844 23845 23786 23787 23788 23789 23790 23791 31010 31011 31012 31013 31014 31015 23960 23961 23962 23963 23964 23965 24014 24015 24016 24017 24018 24019 +48 24176 24177 24178 24179 24180 24181 31502 31503 31504 31505 31506 31507 24008 24009 24010 24011 24012 24013 24014 24015 24016 24017 24018 24019 23960 23961 23962 23963 23964 23965 31022 31023 31024 31025 31026 31027 24134 24135 24136 24137 24138 24139 24182 24183 24184 24185 24186 24187 +48 24344 24345 24346 24347 24348 24349 31508 31509 31510 31511 31512 31513 24176 24177 24178 24179 24180 24181 24182 24183 24184 24185 24186 24187 24134 24135 24136 24137 24138 24139 31034 31035 31036 31037 31038 31039 24296 24297 24298 24299 24300 24301 24350 24351 24352 24353 24354 24355 +48 24518 24519 24520 24521 24522 24523 31514 31515 31516 31517 31518 31519 24344 24345 24346 24347 24348 24349 24350 24351 24352 24353 24354 24355 24296 24297 24298 24299 24300 24301 31046 31047 31048 31049 31050 31051 24470 24471 24472 24473 24474 24475 24524 24525 24526 24527 24528 24529 +48 24692 24693 24694 24695 24696 24697 31520 31521 31522 31523 31524 31525 24518 24519 24520 24521 24522 24523 24524 24525 24526 24527 24528 24529 24470 24471 24472 24473 24474 24475 31058 31059 31060 31061 31062 31063 24650 24651 24652 24653 24654 24655 24698 24699 24700 24701 24702 24703 +48 24860 24861 24862 24863 24864 24865 31526 31527 31528 31529 31530 31531 24692 24693 24694 24695 24696 24697 24698 24699 24700 24701 24702 24703 24650 24651 24652 24653 24654 24655 31070 31071 31072 31073 31074 31075 24812 24813 24814 24815 24816 24817 24866 24867 24868 24869 24870 24871 +48 25034 25035 25036 25037 25038 25039 31532 31533 31534 31535 31536 31537 24860 24861 24862 24863 24864 24865 24866 24867 24868 24869 24870 24871 24812 24813 24814 24815 24816 24817 31082 31083 31084 31085 31086 31087 24986 24987 24988 24989 24990 24991 25040 25041 25042 25043 25044 25045 +48 25202 25203 25204 25205 25206 25207 31538 31539 31540 31541 31542 31543 25034 25035 25036 25037 25038 25039 25040 25041 25042 25043 25044 25045 24986 24987 24988 24989 24990 24991 31094 31095 31096 31097 31098 31099 25160 25161 25162 25163 25164 25165 25208 25209 25210 25211 25212 25213 +48 25370 25371 25372 25373 25374 25375 31544 31545 31546 31547 31548 31549 25202 25203 25204 25205 25206 25207 25208 25209 25210 25211 25212 25213 25160 25161 25162 25163 25164 25165 31106 31107 31108 31109 31110 31111 25322 25323 25324 25325 25326 25327 25376 25377 25378 25379 25380 25381 +48 25544 25545 25546 25547 25548 25549 31550 31551 31552 31553 31554 31555 25370 25371 25372 25373 25374 25375 25376 25377 25378 25379 25380 25381 25322 25323 25324 25325 25326 25327 31118 31119 31120 31121 31122 31123 25496 25497 25498 25499 25500 25501 25550 25551 25552 25553 25554 25555 +48 25718 25719 25720 25721 25722 25723 31556 31557 31558 31559 31560 31561 25544 25545 25546 25547 25548 25549 25550 25551 25552 25553 25554 25555 25496 25497 25498 25499 25500 25501 31130 31131 31132 31133 31134 31135 25676 25677 25678 25679 25680 25681 25724 25725 25726 25727 25728 25729 +48 25886 25887 25888 25889 25890 25891 31562 31563 31564 31565 31566 31567 25718 25719 25720 25721 25722 25723 25724 25725 25726 25727 25728 25729 25676 25677 25678 25679 25680 25681 31142 31143 31144 31145 31146 31147 25838 25839 25840 25841 25842 25843 25892 25893 25894 25895 25896 25897 +48 26060 26061 26062 26063 26064 26065 31568 31569 31570 31571 31572 31573 25886 25887 25888 25889 25890 25891 25892 25893 25894 25895 25896 25897 25838 25839 25840 25841 25842 25843 31154 31155 31156 31157 31158 31159 26012 26013 26014 26015 26016 26017 26066 26067 26068 26069 26070 26071 +48 26228 26229 26230 26231 26232 26233 31574 31575 31576 31577 31578 31579 26060 26061 26062 26063 26064 26065 26066 26067 26068 26069 26070 26071 26012 26013 26014 26015 26016 26017 31166 31167 31168 31169 31170 31171 26186 26187 26188 26189 26190 26191 26234 26235 26236 26237 26238 26239 +48 26396 26397 26398 26399 26400 26401 31580 31581 31582 31583 31584 31585 26228 26229 26230 26231 26232 26233 26234 26235 26236 26237 26238 26239 26186 26187 26188 26189 26190 26191 31178 31179 31180 31181 31182 31183 26348 26349 26350 26351 26352 26353 26402 26403 26404 26405 26406 26407 +48 26570 26571 26572 26573 26574 26575 31586 31587 31588 31589 31590 31591 26396 26397 26398 26399 26400 26401 26402 26403 26404 26405 26406 26407 26348 26349 26350 26351 26352 26353 31190 31191 31192 31193 31194 31195 26522 26523 26524 26525 26526 26527 26576 26577 26578 26579 26580 26581 +48 26744 26745 26746 26747 26748 26749 31592 31593 31594 31595 31596 31597 26570 26571 26572 26573 26574 26575 26576 26577 26578 26579 26580 26581 26522 26523 26524 26525 26526 26527 31202 31203 31204 31205 31206 31207 26702 26703 26704 26705 26706 26707 26750 26751 26752 26753 26754 26755 +48 26912 26913 26914 26915 26916 26917 31598 31599 31600 31601 31602 31603 26744 26745 26746 26747 26748 26749 26750 26751 26752 26753 26754 26755 26702 26703 26704 26705 26706 26707 31214 31215 31216 31217 31218 31219 26864 26865 26866 26867 26868 26869 26918 26919 26920 26921 26922 26923 +48 27086 27087 27088 27089 27090 27091 31604 31605 31606 31607 31608 31609 26912 26913 26914 26915 26916 26917 26918 26919 26920 26921 26922 26923 26864 26865 26866 26867 26868 26869 31226 31227 31228 31229 31230 31231 27038 27039 27040 27041 27042 27043 27092 27093 27094 27095 27096 27097 +48 27254 27255 27256 27257 27258 27259 31610 31611 31612 31613 31614 31615 27086 27087 27088 27089 27090 27091 27092 27093 27094 27095 27096 27097 27038 27039 27040 27041 27042 27043 31238 31239 31240 31241 31242 31243 27212 27213 27214 27215 27216 27217 27260 27261 27262 27263 27264 27265 +48 27422 27423 27424 27425 27426 27427 31616 31617 31618 31619 31620 31621 27254 27255 27256 27257 27258 27259 27260 27261 27262 27263 27264 27265 27212 27213 27214 27215 27216 27217 31250 31251 31252 31253 31254 31255 27374 27375 27376 27377 27378 27379 27428 27429 27430 27431 27432 27433 +48 27602 27603 27604 27605 27606 27607 31622 31623 31624 31625 31626 31627 27422 27423 27424 27425 27426 27427 27428 27429 27430 27431 27432 27433 27374 27375 27376 27377 27378 27379 31262 31263 31264 31265 31266 31267 27554 27555 27556 27557 27558 27559 27608 27609 27610 27611 27612 27613 +48 27776 27777 27778 27779 27780 27781 31628 31629 31630 31631 31632 31633 27602 27603 27604 27605 27606 27607 27608 27609 27610 27611 27612 27613 27554 27555 27556 27557 27558 27559 31274 31275 31276 31277 31278 31279 27734 27735 27736 27737 27738 27739 27782 27783 27784 27785 27786 27787 +48 27944 27945 27946 27947 27948 27949 31634 31635 31636 31637 31638 31639 27776 27777 27778 27779 27780 27781 27782 27783 27784 27785 27786 27787 27734 27735 27736 27737 27738 27739 31286 31287 31288 31289 31290 31291 27896 27897 27898 27899 27900 27901 27950 27951 27952 27953 27954 27955 +48 28118 28119 28120 28121 28122 28123 31640 31641 31642 31643 31644 31645 27944 27945 27946 27947 27948 27949 27950 27951 27952 27953 27954 27955 27896 27897 27898 27899 27900 27901 31298 31299 31300 31301 31302 31303 28070 28071 28072 28073 28074 28075 28124 28125 28126 28127 28128 28129 +48 28286 28287 28288 28289 28290 28291 31646 31647 31648 31649 31650 31651 28118 28119 28120 28121 28122 28123 28124 28125 28126 28127 28128 28129 28070 28071 28072 28073 28074 28075 31310 31311 31312 31313 31314 31315 28244 28245 28246 28247 28248 28249 28292 28293 28294 28295 28296 28297 +48 28436 28437 28438 28439 28440 28441 31652 31653 31654 31655 31656 31657 28286 28287 28288 28289 28290 28291 28292 28293 28294 28295 28296 28297 28244 28245 28246 28247 28248 28249 31322 31323 31324 31325 31326 31327 28400 28401 28402 28403 28404 28405 28442 28443 28444 28445 28446 28447 +48 28568 28569 28570 28571 28572 28573 31658 31659 31660 31661 31662 31663 28436 28437 28438 28439 28440 28441 28442 28443 28444 28445 28446 28447 28400 28401 28402 28403 28404 28405 31334 31335 31336 31337 31338 31339 28544 28545 28546 28547 28548 28549 28574 28575 28576 28577 28578 28579 +48 28694 28695 28696 28697 28698 28699 31664 31665 31666 31667 31668 31669 28568 28569 28570 28571 28572 28573 28574 28575 28576 28577 28578 28579 28544 28545 28546 28547 28548 28549 31346 31347 31348 31349 31350 31351 28670 28671 28672 28673 28674 28675 28700 28701 28702 28703 28704 28705 +48 28820 28821 28822 28823 28824 28825 31670 31671 31672 31673 31674 31675 28694 28695 28696 28697 28698 28699 28700 28701 28702 28703 28704 28705 28670 28671 28672 28673 28674 28675 31352 31353 31354 31355 31356 31357 28796 28797 28798 28799 28800 28801 28826 28827 28828 28829 28830 28831 +48 28958 28959 28960 28961 28962 28963 31676 31677 31678 31679 31680 31681 28820 28821 28822 28823 28824 28825 28826 28827 28828 28829 28830 28831 28796 28797 28798 28799 28800 28801 31358 31359 31360 31361 31362 31363 28922 28923 28924 28925 28926 28927 28964 28965 28966 28967 28968 28969 +48 29108 29109 29110 29111 29112 29113 31682 31683 31684 31685 31686 31687 28958 28959 28960 28961 28962 28963 28964 28965 28966 28967 28968 28969 28922 28923 28924 28925 28926 28927 31370 31371 31372 31373 31374 31375 29066 29067 29068 29069 29070 29071 29114 29115 29116 29117 29118 29119 +48 29264 29265 29266 29267 29268 29269 31688 31689 31690 31691 31692 31693 29108 29109 29110 29111 29112 29113 29114 29115 29116 29117 29118 29119 29066 29067 29068 29069 29070 29071 31382 31383 31384 31385 31386 31387 29222 29223 29224 29225 29226 29227 29270 29271 29272 29273 29274 29275 +48 29426 29427 29428 29429 29430 29431 31694 31695 31696 31697 31698 31699 29264 29265 29266 29267 29268 29269 29270 29271 29272 29273 29274 29275 29222 29223 29224 29225 29226 29227 31394 31395 31396 31397 31398 31399 29378 29379 29380 29381 29382 29383 29432 29433 29434 29435 29436 29437 +48 31700 31701 31702 31703 31704 31705 31706 31707 31708 31709 31710 31711 29426 29427 29428 29429 29430 29431 29432 29433 29434 29435 29436 29437 29378 29379 29380 29381 29382 29383 31412 31413 31414 31415 31416 31417 31406 31407 31408 31409 31410 31411 31712 31713 31714 31715 31716 31717 +48 22658 22659 22660 22661 22662 22663 31718 31719 31720 31721 31722 31723 30062 30063 30064 30065 30066 30067 31724 31725 31726 31727 31728 31729 31442 31443 31444 31445 31446 31447 31436 31437 31438 31439 31440 31441 22628 22629 22630 22631 22632 22633 22664 22665 22666 22667 22668 22669 +48 22832 22833 22834 22835 22836 22837 31730 31731 31732 31733 31734 31735 22658 22659 22660 22661 22662 22663 22664 22665 22666 22667 22668 22669 22628 22629 22630 22631 22632 22633 31454 31455 31456 31457 31458 31459 22796 22797 22798 22799 22800 22801 22838 22839 22840 22841 22842 22843 +48 23012 23013 23014 23015 23016 23017 31736 31737 31738 31739 31740 31741 22832 22833 22834 22835 22836 22837 22838 22839 22840 22841 22842 22843 22796 22797 22798 22799 22800 22801 31460 31461 31462 31463 31464 31465 22976 22977 22978 22979 22980 22981 23018 23019 23020 23021 23022 23023 +48 23180 23181 23182 23183 23184 23185 31742 31743 31744 31745 31746 31747 23012 23013 23014 23015 23016 23017 23018 23019 23020 23021 23022 23023 22976 22977 22978 22979 22980 22981 31466 31467 31468 31469 31470 31471 23150 23151 23152 23153 23154 23155 23186 23187 23188 23189 23190 23191 +48 23348 23349 23350 23351 23352 23353 31748 31749 31750 31751 31752 31753 23180 23181 23182 23183 23184 23185 23186 23187 23188 23189 23190 23191 23150 23151 23152 23153 23154 23155 31472 31473 31474 31475 31476 31477 23318 23319 23320 23321 23322 23323 23354 23355 23356 23357 23358 23359 +48 23528 23529 23530 23531 23532 23533 31754 31755 31756 31757 31758 31759 23348 23349 23350 23351 23352 23353 23354 23355 23356 23357 23358 23359 23318 23319 23320 23321 23322 23323 31478 31479 31480 31481 31482 31483 23492 23493 23494 23495 23496 23497 23534 23535 23536 23537 23538 23539 +48 23696 23697 23698 23699 23700 23701 31760 31761 31762 31763 31764 31765 23528 23529 23530 23531 23532 23533 23534 23535 23536 23537 23538 23539 23492 23493 23494 23495 23496 23497 31484 31485 31486 31487 31488 31489 23666 23667 23668 23669 23670 23671 23702 23703 23704 23705 23706 23707 +48 23864 23865 23866 23867 23868 23869 31766 31767 31768 31769 31770 31771 23696 23697 23698 23699 23700 23701 23702 23703 23704 23705 23706 23707 23666 23667 23668 23669 23670 23671 31490 31491 31492 31493 31494 31495 23834 23835 23836 23837 23838 23839 23870 23871 23872 23873 23874 23875 +48 24038 24039 24040 24041 24042 24043 31772 31773 31774 31775 31776 31777 23864 23865 23866 23867 23868 23869 23870 23871 23872 23873 23874 23875 23834 23835 23836 23837 23838 23839 31496 31497 31498 31499 31500 31501 24008 24009 24010 24011 24012 24013 24044 24045 24046 24047 24048 24049 +48 24206 24207 24208 24209 24210 24211 31778 31779 31780 31781 31782 31783 24038 24039 24040 24041 24042 24043 24044 24045 24046 24047 24048 24049 24008 24009 24010 24011 24012 24013 31502 31503 31504 31505 31506 31507 24176 24177 24178 24179 24180 24181 24212 24213 24214 24215 24216 24217 +48 24374 24375 24376 24377 24378 24379 31784 31785 31786 31787 31788 31789 24206 24207 24208 24209 24210 24211 24212 24213 24214 24215 24216 24217 24176 24177 24178 24179 24180 24181 31508 31509 31510 31511 31512 31513 24344 24345 24346 24347 24348 24349 24380 24381 24382 24383 24384 24385 +48 24554 24555 24556 24557 24558 24559 31790 31791 31792 31793 31794 31795 24374 24375 24376 24377 24378 24379 24380 24381 24382 24383 24384 24385 24344 24345 24346 24347 24348 24349 31514 31515 31516 31517 31518 31519 24518 24519 24520 24521 24522 24523 24560 24561 24562 24563 24564 24565 +48 24722 24723 24724 24725 24726 24727 31796 31797 31798 31799 31800 31801 24554 24555 24556 24557 24558 24559 24560 24561 24562 24563 24564 24565 24518 24519 24520 24521 24522 24523 31520 31521 31522 31523 31524 31525 24692 24693 24694 24695 24696 24697 24728 24729 24730 24731 24732 24733 +48 24890 24891 24892 24893 24894 24895 31802 31803 31804 31805 31806 31807 24722 24723 24724 24725 24726 24727 24728 24729 24730 24731 24732 24733 24692 24693 24694 24695 24696 24697 31526 31527 31528 31529 31530 31531 24860 24861 24862 24863 24864 24865 24896 24897 24898 24899 24900 24901 +48 25064 25065 25066 25067 25068 25069 31808 31809 31810 31811 31812 31813 24890 24891 24892 24893 24894 24895 24896 24897 24898 24899 24900 24901 24860 24861 24862 24863 24864 24865 31532 31533 31534 31535 31536 31537 25034 25035 25036 25037 25038 25039 25070 25071 25072 25073 25074 25075 +48 25232 25233 25234 25235 25236 25237 31814 31815 31816 31817 31818 31819 25064 25065 25066 25067 25068 25069 25070 25071 25072 25073 25074 25075 25034 25035 25036 25037 25038 25039 31538 31539 31540 31541 31542 31543 25202 25203 25204 25205 25206 25207 25238 25239 25240 25241 25242 25243 +48 25400 25401 25402 25403 25404 25405 31820 31821 31822 31823 31824 31825 25232 25233 25234 25235 25236 25237 25238 25239 25240 25241 25242 25243 25202 25203 25204 25205 25206 25207 31544 31545 31546 31547 31548 31549 25370 25371 25372 25373 25374 25375 25406 25407 25408 25409 25410 25411 +48 25580 25581 25582 25583 25584 25585 31826 31827 31828 31829 31830 31831 25400 25401 25402 25403 25404 25405 25406 25407 25408 25409 25410 25411 25370 25371 25372 25373 25374 25375 31550 31551 31552 31553 31554 31555 25544 25545 25546 25547 25548 25549 25586 25587 25588 25589 25590 25591 +48 25748 25749 25750 25751 25752 25753 31832 31833 31834 31835 31836 31837 25580 25581 25582 25583 25584 25585 25586 25587 25588 25589 25590 25591 25544 25545 25546 25547 25548 25549 31556 31557 31558 31559 31560 31561 25718 25719 25720 25721 25722 25723 25754 25755 25756 25757 25758 25759 +48 25916 25917 25918 25919 25920 25921 31838 31839 31840 31841 31842 31843 25748 25749 25750 25751 25752 25753 25754 25755 25756 25757 25758 25759 25718 25719 25720 25721 25722 25723 31562 31563 31564 31565 31566 31567 25886 25887 25888 25889 25890 25891 25922 25923 25924 25925 25926 25927 +48 26090 26091 26092 26093 26094 26095 31844 31845 31846 31847 31848 31849 25916 25917 25918 25919 25920 25921 25922 25923 25924 25925 25926 25927 25886 25887 25888 25889 25890 25891 31568 31569 31570 31571 31572 31573 26060 26061 26062 26063 26064 26065 26096 26097 26098 26099 26100 26101 +48 26258 26259 26260 26261 26262 26263 31850 31851 31852 31853 31854 31855 26090 26091 26092 26093 26094 26095 26096 26097 26098 26099 26100 26101 26060 26061 26062 26063 26064 26065 31574 31575 31576 31577 31578 31579 26228 26229 26230 26231 26232 26233 26264 26265 26266 26267 26268 26269 +48 26426 26427 26428 26429 26430 26431 31856 31857 31858 31859 31860 31861 26258 26259 26260 26261 26262 26263 26264 26265 26266 26267 26268 26269 26228 26229 26230 26231 26232 26233 31580 31581 31582 31583 31584 31585 26396 26397 26398 26399 26400 26401 26432 26433 26434 26435 26436 26437 +48 26606 26607 26608 26609 26610 26611 31862 31863 31864 31865 31866 31867 26426 26427 26428 26429 26430 26431 26432 26433 26434 26435 26436 26437 26396 26397 26398 26399 26400 26401 31586 31587 31588 31589 31590 31591 26570 26571 26572 26573 26574 26575 26612 26613 26614 26615 26616 26617 +48 26774 26775 26776 26777 26778 26779 31868 31869 31870 31871 31872 31873 26606 26607 26608 26609 26610 26611 26612 26613 26614 26615 26616 26617 26570 26571 26572 26573 26574 26575 31592 31593 31594 31595 31596 31597 26744 26745 26746 26747 26748 26749 26780 26781 26782 26783 26784 26785 +48 26942 26943 26944 26945 26946 26947 31874 31875 31876 31877 31878 31879 26774 26775 26776 26777 26778 26779 26780 26781 26782 26783 26784 26785 26744 26745 26746 26747 26748 26749 31598 31599 31600 31601 31602 31603 26912 26913 26914 26915 26916 26917 26948 26949 26950 26951 26952 26953 +48 27116 27117 27118 27119 27120 27121 31880 31881 31882 31883 31884 31885 26942 26943 26944 26945 26946 26947 26948 26949 26950 26951 26952 26953 26912 26913 26914 26915 26916 26917 31604 31605 31606 31607 31608 31609 27086 27087 27088 27089 27090 27091 27122 27123 27124 27125 27126 27127 +48 27284 27285 27286 27287 27288 27289 31886 31887 31888 31889 31890 31891 27116 27117 27118 27119 27120 27121 27122 27123 27124 27125 27126 27127 27086 27087 27088 27089 27090 27091 31610 31611 31612 31613 31614 31615 27254 27255 27256 27257 27258 27259 27290 27291 27292 27293 27294 27295 +48 27458 27459 27460 27461 27462 27463 31892 31893 31894 31895 31896 31897 27284 27285 27286 27287 27288 27289 27290 27291 27292 27293 27294 27295 27254 27255 27256 27257 27258 27259 31616 31617 31618 31619 31620 31621 27422 27423 27424 27425 27426 27427 27464 27465 27466 27467 27468 27469 +48 27638 27639 27640 27641 27642 27643 31898 31899 31900 31901 31902 31903 27458 27459 27460 27461 27462 27463 27464 27465 27466 27467 27468 27469 27422 27423 27424 27425 27426 27427 31622 31623 31624 31625 31626 31627 27602 27603 27604 27605 27606 27607 27644 27645 27646 27647 27648 27649 +48 27806 27807 27808 27809 27810 27811 31904 31905 31906 31907 31908 31909 27638 27639 27640 27641 27642 27643 27644 27645 27646 27647 27648 27649 27602 27603 27604 27605 27606 27607 31628 31629 31630 31631 31632 31633 27776 27777 27778 27779 27780 27781 27812 27813 27814 27815 27816 27817 +48 27974 27975 27976 27977 27978 27979 31910 31911 31912 31913 31914 31915 27806 27807 27808 27809 27810 27811 27812 27813 27814 27815 27816 27817 27776 27777 27778 27779 27780 27781 31634 31635 31636 31637 31638 31639 27944 27945 27946 27947 27948 27949 27980 27981 27982 27983 27984 27985 +48 28148 28149 28150 28151 28152 28153 31916 31917 31918 31919 31920 31921 27974 27975 27976 27977 27978 27979 27980 27981 27982 27983 27984 27985 27944 27945 27946 27947 27948 27949 31640 31641 31642 31643 31644 31645 28118 28119 28120 28121 28122 28123 28154 28155 28156 28157 28158 28159 +48 28316 28317 28318 28319 28320 28321 31922 31923 31924 31925 31926 31927 28148 28149 28150 28151 28152 28153 28154 28155 28156 28157 28158 28159 28118 28119 28120 28121 28122 28123 31646 31647 31648 31649 31650 31651 28286 28287 28288 28289 28290 28291 28322 28323 28324 28325 28326 28327 +48 28460 28461 28462 28463 28464 28465 31928 31929 31930 31931 31932 31933 28316 28317 28318 28319 28320 28321 28322 28323 28324 28325 28326 28327 28286 28287 28288 28289 28290 28291 31652 31653 31654 31655 31656 31657 28436 28437 28438 28439 28440 28441 28466 28467 28468 28469 28470 28471 +48 28592 28593 28594 28595 28596 28597 31934 31935 31936 31937 31938 31939 28460 28461 28462 28463 28464 28465 28466 28467 28468 28469 28470 28471 28436 28437 28438 28439 28440 28441 31658 31659 31660 31661 31662 31663 28568 28569 28570 28571 28572 28573 28598 28599 28600 28601 28602 28603 +48 28718 28719 28720 28721 28722 28723 31940 31941 31942 31943 31944 31945 28592 28593 28594 28595 28596 28597 28598 28599 28600 28601 28602 28603 28568 28569 28570 28571 28572 28573 31664 31665 31666 31667 31668 31669 28694 28695 28696 28697 28698 28699 28724 28725 28726 28727 28728 28729 +48 28844 28845 28846 28847 28848 28849 31946 31947 31948 31949 31950 31951 28718 28719 28720 28721 28722 28723 28724 28725 28726 28727 28728 28729 28694 28695 28696 28697 28698 28699 31670 31671 31672 31673 31674 31675 28820 28821 28822 28823 28824 28825 28850 28851 28852 28853 28854 28855 +48 28982 28983 28984 28985 28986 28987 31952 31953 31954 31955 31956 31957 28844 28845 28846 28847 28848 28849 28850 28851 28852 28853 28854 28855 28820 28821 28822 28823 28824 28825 31676 31677 31678 31679 31680 31681 28958 28959 28960 28961 28962 28963 28988 28989 28990 28991 28992 28993 +48 29138 29139 29140 29141 29142 29143 31958 31959 31960 31961 31962 31963 28982 28983 28984 28985 28986 28987 28988 28989 28990 28991 28992 28993 28958 28959 28960 28961 28962 28963 31682 31683 31684 31685 31686 31687 29108 29109 29110 29111 29112 29113 29144 29145 29146 29147 29148 29149 +48 29294 29295 29296 29297 29298 29299 31964 31965 31966 31967 31968 31969 29138 29139 29140 29141 29142 29143 29144 29145 29146 29147 29148 29149 29108 29109 29110 29111 29112 29113 31688 31689 31690 31691 31692 31693 29264 29265 29266 29267 29268 29269 29300 29301 29302 29303 29304 29305 +48 29456 29457 29458 29459 29460 29461 31970 31971 31972 31973 31974 31975 29294 29295 29296 29297 29298 29299 29300 29301 29302 29303 29304 29305 29264 29265 29266 29267 29268 29269 31694 31695 31696 31697 31698 31699 29426 29427 29428 29429 29430 29431 29462 29463 29464 29465 29466 29467 +48 30296 30297 30298 30299 30300 30301 31976 31977 31978 31979 31980 31981 29456 29457 29458 29459 29460 29461 29462 29463 29464 29465 29466 29467 29426 29427 29428 29429 29430 29431 31706 31707 31708 31709 31710 31711 31700 31701 31702 31703 31704 31705 31982 31983 31984 31985 31986 31987 +48 22688 22689 22690 22691 22692 22693 31988 31989 31990 31991 31992 31993 30320 30321 30322 30323 30324 30325 30326 30327 30328 30329 30330 30331 30062 30063 30064 30065 30066 30067 31718 31719 31720 31721 31722 31723 22658 22659 22660 22661 22662 22663 22694 22695 22696 22697 22698 22699 +48 22868 22869 22870 22871 22872 22873 31994 31995 31996 31997 31998 31999 22688 22689 22690 22691 22692 22693 22694 22695 22696 22697 22698 22699 22658 22659 22660 22661 22662 22663 31730 31731 31732 31733 31734 31735 22832 22833 22834 22835 22836 22837 22874 22875 22876 22877 22878 22879 +48 23048 23049 23050 23051 23052 23053 32000 32001 32002 32003 32004 32005 22868 22869 22870 22871 22872 22873 22874 22875 22876 22877 22878 22879 22832 22833 22834 22835 22836 22837 31736 31737 31738 31739 31740 31741 23012 23013 23014 23015 23016 23017 23054 23055 23056 23057 23058 23059 +48 23210 23211 23212 23213 23214 23215 32006 32007 32008 32009 32010 32011 23048 23049 23050 23051 23052 23053 23054 23055 23056 23057 23058 23059 23012 23013 23014 23015 23016 23017 31742 31743 31744 31745 31746 31747 23180 23181 23182 23183 23184 23185 23216 23217 23218 23219 23220 23221 +48 23378 23379 23380 23381 23382 23383 32012 32013 32014 32015 32016 32017 23210 23211 23212 23213 23214 23215 23216 23217 23218 23219 23220 23221 23180 23181 23182 23183 23184 23185 31748 31749 31750 31751 31752 31753 23348 23349 23350 23351 23352 23353 23384 23385 23386 23387 23388 23389 +48 23564 23565 23566 23567 23568 23569 32018 32019 32020 32021 32022 32023 23378 23379 23380 23381 23382 23383 23384 23385 23386 23387 23388 23389 23348 23349 23350 23351 23352 23353 31754 31755 31756 31757 31758 31759 23528 23529 23530 23531 23532 23533 23570 23571 23572 23573 23574 23575 +48 23726 23727 23728 23729 23730 23731 32024 32025 32026 32027 32028 32029 23564 23565 23566 23567 23568 23569 23570 23571 23572 23573 23574 23575 23528 23529 23530 23531 23532 23533 31760 31761 31762 31763 31764 31765 23696 23697 23698 23699 23700 23701 23732 23733 23734 23735 23736 23737 +48 23894 23895 23896 23897 23898 23899 32030 32031 32032 32033 32034 32035 23726 23727 23728 23729 23730 23731 23732 23733 23734 23735 23736 23737 23696 23697 23698 23699 23700 23701 31766 31767 31768 31769 31770 31771 23864 23865 23866 23867 23868 23869 23900 23901 23902 23903 23904 23905 +48 24068 24069 24070 24071 24072 24073 32036 32037 32038 32039 32040 32041 23894 23895 23896 23897 23898 23899 23900 23901 23902 23903 23904 23905 23864 23865 23866 23867 23868 23869 31772 31773 31774 31775 31776 31777 24038 24039 24040 24041 24042 24043 24074 24075 24076 24077 24078 24079 +48 24236 24237 24238 24239 24240 24241 32042 32043 32044 32045 32046 32047 24068 24069 24070 24071 24072 24073 24074 24075 24076 24077 24078 24079 24038 24039 24040 24041 24042 24043 31778 31779 31780 31781 31782 31783 24206 24207 24208 24209 24210 24211 24242 24243 24244 24245 24246 24247 +48 24404 24405 24406 24407 24408 24409 32048 32049 32050 32051 32052 32053 24236 24237 24238 24239 24240 24241 24242 24243 24244 24245 24246 24247 24206 24207 24208 24209 24210 24211 31784 31785 31786 31787 31788 31789 24374 24375 24376 24377 24378 24379 24410 24411 24412 24413 24414 24415 +48 24590 24591 24592 24593 24594 24595 32054 32055 32056 32057 32058 32059 24404 24405 24406 24407 24408 24409 24410 24411 24412 24413 24414 24415 24374 24375 24376 24377 24378 24379 31790 31791 31792 31793 31794 31795 24554 24555 24556 24557 24558 24559 24596 24597 24598 24599 24600 24601 +48 24752 24753 24754 24755 24756 24757 32060 32061 32062 32063 32064 32065 24590 24591 24592 24593 24594 24595 24596 24597 24598 24599 24600 24601 24554 24555 24556 24557 24558 24559 31796 31797 31798 31799 31800 31801 24722 24723 24724 24725 24726 24727 24758 24759 24760 24761 24762 24763 +48 24920 24921 24922 24923 24924 24925 32066 32067 32068 32069 32070 32071 24752 24753 24754 24755 24756 24757 24758 24759 24760 24761 24762 24763 24722 24723 24724 24725 24726 24727 31802 31803 31804 31805 31806 31807 24890 24891 24892 24893 24894 24895 24926 24927 24928 24929 24930 24931 +48 25094 25095 25096 25097 25098 25099 32072 32073 32074 32075 32076 32077 24920 24921 24922 24923 24924 24925 24926 24927 24928 24929 24930 24931 24890 24891 24892 24893 24894 24895 31808 31809 31810 31811 31812 31813 25064 25065 25066 25067 25068 25069 25100 25101 25102 25103 25104 25105 +48 25262 25263 25264 25265 25266 25267 32078 32079 32080 32081 32082 32083 25094 25095 25096 25097 25098 25099 25100 25101 25102 25103 25104 25105 25064 25065 25066 25067 25068 25069 31814 31815 31816 31817 31818 31819 25232 25233 25234 25235 25236 25237 25268 25269 25270 25271 25272 25273 +48 25430 25431 25432 25433 25434 25435 32084 32085 32086 32087 32088 32089 25262 25263 25264 25265 25266 25267 25268 25269 25270 25271 25272 25273 25232 25233 25234 25235 25236 25237 31820 31821 31822 31823 31824 31825 25400 25401 25402 25403 25404 25405 25436 25437 25438 25439 25440 25441 +48 25616 25617 25618 25619 25620 25621 32090 32091 32092 32093 32094 32095 25430 25431 25432 25433 25434 25435 25436 25437 25438 25439 25440 25441 25400 25401 25402 25403 25404 25405 31826 31827 31828 31829 31830 31831 25580 25581 25582 25583 25584 25585 25622 25623 25624 25625 25626 25627 +48 25778 25779 25780 25781 25782 25783 32096 32097 32098 32099 32100 32101 25616 25617 25618 25619 25620 25621 25622 25623 25624 25625 25626 25627 25580 25581 25582 25583 25584 25585 31832 31833 31834 31835 31836 31837 25748 25749 25750 25751 25752 25753 25784 25785 25786 25787 25788 25789 +48 25946 25947 25948 25949 25950 25951 32102 32103 32104 32105 32106 32107 25778 25779 25780 25781 25782 25783 25784 25785 25786 25787 25788 25789 25748 25749 25750 25751 25752 25753 31838 31839 31840 31841 31842 31843 25916 25917 25918 25919 25920 25921 25952 25953 25954 25955 25956 25957 +48 26120 26121 26122 26123 26124 26125 32108 32109 32110 32111 32112 32113 25946 25947 25948 25949 25950 25951 25952 25953 25954 25955 25956 25957 25916 25917 25918 25919 25920 25921 31844 31845 31846 31847 31848 31849 26090 26091 26092 26093 26094 26095 26126 26127 26128 26129 26130 26131 +48 26288 26289 26290 26291 26292 26293 32114 32115 32116 32117 32118 32119 26120 26121 26122 26123 26124 26125 26126 26127 26128 26129 26130 26131 26090 26091 26092 26093 26094 26095 31850 31851 31852 31853 31854 31855 26258 26259 26260 26261 26262 26263 26294 26295 26296 26297 26298 26299 +48 26456 26457 26458 26459 26460 26461 32120 32121 32122 32123 32124 32125 26288 26289 26290 26291 26292 26293 26294 26295 26296 26297 26298 26299 26258 26259 26260 26261 26262 26263 31856 31857 31858 31859 31860 31861 26426 26427 26428 26429 26430 26431 26462 26463 26464 26465 26466 26467 +48 26642 26643 26644 26645 26646 26647 32126 32127 32128 32129 32130 32131 26456 26457 26458 26459 26460 26461 26462 26463 26464 26465 26466 26467 26426 26427 26428 26429 26430 26431 31862 31863 31864 31865 31866 31867 26606 26607 26608 26609 26610 26611 26648 26649 26650 26651 26652 26653 +48 26804 26805 26806 26807 26808 26809 32132 32133 32134 32135 32136 32137 26642 26643 26644 26645 26646 26647 26648 26649 26650 26651 26652 26653 26606 26607 26608 26609 26610 26611 31868 31869 31870 31871 31872 31873 26774 26775 26776 26777 26778 26779 26810 26811 26812 26813 26814 26815 +48 26972 26973 26974 26975 26976 26977 32138 32139 32140 32141 32142 32143 26804 26805 26806 26807 26808 26809 26810 26811 26812 26813 26814 26815 26774 26775 26776 26777 26778 26779 31874 31875 31876 31877 31878 31879 26942 26943 26944 26945 26946 26947 26978 26979 26980 26981 26982 26983 +48 27146 27147 27148 27149 27150 27151 32144 32145 32146 32147 32148 32149 26972 26973 26974 26975 26976 26977 26978 26979 26980 26981 26982 26983 26942 26943 26944 26945 26946 26947 31880 31881 31882 31883 31884 31885 27116 27117 27118 27119 27120 27121 27152 27153 27154 27155 27156 27157 +48 27314 27315 27316 27317 27318 27319 32150 32151 32152 32153 32154 32155 27146 27147 27148 27149 27150 27151 27152 27153 27154 27155 27156 27157 27116 27117 27118 27119 27120 27121 31886 31887 31888 31889 31890 31891 27284 27285 27286 27287 27288 27289 27320 27321 27322 27323 27324 27325 +48 27494 27495 27496 27497 27498 27499 32156 32157 32158 32159 32160 32161 27314 27315 27316 27317 27318 27319 27320 27321 27322 27323 27324 27325 27284 27285 27286 27287 27288 27289 31892 31893 31894 31895 31896 31897 27458 27459 27460 27461 27462 27463 27500 27501 27502 27503 27504 27505 +48 27674 27675 27676 27677 27678 27679 32162 32163 32164 32165 32166 32167 27494 27495 27496 27497 27498 27499 27500 27501 27502 27503 27504 27505 27458 27459 27460 27461 27462 27463 31898 31899 31900 31901 31902 31903 27638 27639 27640 27641 27642 27643 27680 27681 27682 27683 27684 27685 +48 27836 27837 27838 27839 27840 27841 32168 32169 32170 32171 32172 32173 27674 27675 27676 27677 27678 27679 27680 27681 27682 27683 27684 27685 27638 27639 27640 27641 27642 27643 31904 31905 31906 31907 31908 31909 27806 27807 27808 27809 27810 27811 27842 27843 27844 27845 27846 27847 +48 28004 28005 28006 28007 28008 28009 32174 32175 32176 32177 32178 32179 27836 27837 27838 27839 27840 27841 27842 27843 27844 27845 27846 27847 27806 27807 27808 27809 27810 27811 31910 31911 31912 31913 31914 31915 27974 27975 27976 27977 27978 27979 28010 28011 28012 28013 28014 28015 +48 28178 28179 28180 28181 28182 28183 32180 32181 32182 32183 32184 32185 28004 28005 28006 28007 28008 28009 28010 28011 28012 28013 28014 28015 27974 27975 27976 27977 27978 27979 31916 31917 31918 31919 31920 31921 28148 28149 28150 28151 28152 28153 28184 28185 28186 28187 28188 28189 +48 28346 28347 28348 28349 28350 28351 32186 32187 32188 32189 32190 32191 28178 28179 28180 28181 28182 28183 28184 28185 28186 28187 28188 28189 28148 28149 28150 28151 28152 28153 31922 31923 31924 31925 31926 31927 28316 28317 28318 28319 28320 28321 28352 28353 28354 28355 28356 28357 +48 28490 28491 28492 28493 28494 28495 32192 32193 32194 32195 32196 32197 28346 28347 28348 28349 28350 28351 28352 28353 28354 28355 28356 28357 28316 28317 28318 28319 28320 28321 31928 31929 31930 31931 31932 31933 28460 28461 28462 28463 28464 28465 28496 28497 28498 28499 28500 28501 +48 28616 28617 28618 28619 28620 28621 32198 32199 32200 32201 32202 32203 28490 28491 28492 28493 28494 28495 28496 28497 28498 28499 28500 28501 28460 28461 28462 28463 28464 28465 31934 31935 31936 31937 31938 31939 28592 28593 28594 28595 28596 28597 28622 28623 28624 28625 28626 28627 +48 28742 28743 28744 28745 28746 28747 32204 32205 32206 32207 32208 32209 28616 28617 28618 28619 28620 28621 28622 28623 28624 28625 28626 28627 28592 28593 28594 28595 28596 28597 31940 31941 31942 31943 31944 31945 28718 28719 28720 28721 28722 28723 28748 28749 28750 28751 28752 28753 +48 28868 28869 28870 28871 28872 28873 32210 32211 32212 32213 32214 32215 28742 28743 28744 28745 28746 28747 28748 28749 28750 28751 28752 28753 28718 28719 28720 28721 28722 28723 31946 31947 31948 31949 31950 31951 28844 28845 28846 28847 28848 28849 28874 28875 28876 28877 28878 28879 +48 29006 29007 29008 29009 29010 29011 32216 32217 32218 32219 32220 32221 28868 28869 28870 28871 28872 28873 28874 28875 28876 28877 28878 28879 28844 28845 28846 28847 28848 28849 31952 31953 31954 31955 31956 31957 28982 28983 28984 28985 28986 28987 29012 29013 29014 29015 29016 29017 +48 29162 29163 29164 29165 29166 29167 32222 32223 32224 32225 32226 32227 29006 29007 29008 29009 29010 29011 29012 29013 29014 29015 29016 29017 28982 28983 28984 28985 28986 28987 31958 31959 31960 31961 31962 31963 29138 29139 29140 29141 29142 29143 29168 29169 29170 29171 29172 29173 +48 29318 29319 29320 29321 29322 29323 32228 32229 32230 32231 32232 32233 29162 29163 29164 29165 29166 29167 29168 29169 29170 29171 29172 29173 29138 29139 29140 29141 29142 29143 31964 31965 31966 31967 31968 31969 29294 29295 29296 29297 29298 29299 29324 29325 29326 29327 29328 29329 +48 29486 29487 29488 29489 29490 29491 32234 32235 32236 32237 32238 32239 29318 29319 29320 29321 29322 29323 29324 29325 29326 29327 29328 29329 29294 29295 29296 29297 29298 29299 31970 31971 31972 31973 31974 31975 29456 29457 29458 29459 29460 29461 29492 29493 29494 29495 29496 29497 +48 30578 30579 30580 30581 30582 30583 32240 32241 32242 32243 32244 32245 29486 29487 29488 29489 29490 29491 29492 29493 29494 29495 29496 29497 29456 29457 29458 29459 29460 29461 31976 31977 31978 31979 31980 31981 30296 30297 30298 30299 30300 30301 30590 30591 30592 30593 30594 30595 +48 22706 22707 22708 22709 22710 22711 30596 30597 30598 30599 30600 30601 30602 30603 30604 30605 30606 30607 30608 30609 30610 30611 30612 30613 30320 30321 30322 30323 30324 30325 31988 31989 31990 31991 31992 31993 22688 22689 22690 22691 22692 22693 22712 22713 22714 22715 22716 22717 +48 22892 22893 22894 22895 22896 22897 30614 30615 30616 30617 30618 30619 22706 22707 22708 22709 22710 22711 22712 22713 22714 22715 22716 22717 22688 22689 22690 22691 22692 22693 31994 31995 31996 31997 31998 31999 22868 22869 22870 22871 22872 22873 22898 22899 22900 22901 22902 22903 +48 23072 23073 23074 23075 23076 23077 30620 30621 30622 30623 30624 30625 22892 22893 22894 22895 22896 22897 22898 22899 22900 22901 22902 22903 22868 22869 22870 22871 22872 22873 32000 32001 32002 32003 32004 32005 23048 23049 23050 23051 23052 23053 23078 23079 23080 23081 23082 23083 +48 23228 23229 23230 23231 23232 23233 30626 30627 30628 30629 30630 30631 23072 23073 23074 23075 23076 23077 23078 23079 23080 23081 23082 23083 23048 23049 23050 23051 23052 23053 32006 32007 32008 32009 32010 32011 23210 23211 23212 23213 23214 23215 23234 23235 23236 23237 23238 23239 +48 23408 23409 23410 23411 23412 23413 30632 30633 30634 30635 30636 30637 23228 23229 23230 23231 23232 23233 23234 23235 23236 23237 23238 23239 23210 23211 23212 23213 23214 23215 32012 32013 32014 32015 32016 32017 23378 23379 23380 23381 23382 23383 23414 23415 23416 23417 23418 23419 +48 23588 23589 23590 23591 23592 23593 30638 30639 30640 30641 30642 30643 23408 23409 23410 23411 23412 23413 23414 23415 23416 23417 23418 23419 23378 23379 23380 23381 23382 23383 32018 32019 32020 32021 32022 32023 23564 23565 23566 23567 23568 23569 23594 23595 23596 23597 23598 23599 +48 23744 23745 23746 23747 23748 23749 30644 30645 30646 30647 30648 30649 23588 23589 23590 23591 23592 23593 23594 23595 23596 23597 23598 23599 23564 23565 23566 23567 23568 23569 32024 32025 32026 32027 32028 32029 23726 23727 23728 23729 23730 23731 23750 23751 23752 23753 23754 23755 +48 23924 23925 23926 23927 23928 23929 30650 30651 30652 30653 30654 30655 23744 23745 23746 23747 23748 23749 23750 23751 23752 23753 23754 23755 23726 23727 23728 23729 23730 23731 32030 32031 32032 32033 32034 32035 23894 23895 23896 23897 23898 23899 23930 23931 23932 23933 23934 23935 +48 24098 24099 24100 24101 24102 24103 30656 30657 30658 30659 30660 30661 23924 23925 23926 23927 23928 23929 23930 23931 23932 23933 23934 23935 23894 23895 23896 23897 23898 23899 32036 32037 32038 32039 32040 32041 24068 24069 24070 24071 24072 24073 24104 24105 24106 24107 24108 24109 +48 24254 24255 24256 24257 24258 24259 30662 30663 30664 30665 30666 30667 24098 24099 24100 24101 24102 24103 24104 24105 24106 24107 24108 24109 24068 24069 24070 24071 24072 24073 32042 32043 32044 32045 32046 32047 24236 24237 24238 24239 24240 24241 24260 24261 24262 24263 24264 24265 +48 24434 24435 24436 24437 24438 24439 30668 30669 30670 30671 30672 30673 24254 24255 24256 24257 24258 24259 24260 24261 24262 24263 24264 24265 24236 24237 24238 24239 24240 24241 32048 32049 32050 32051 32052 32053 24404 24405 24406 24407 24408 24409 24440 24441 24442 24443 24444 24445 +48 24614 24615 24616 24617 24618 24619 30674 30675 30676 30677 30678 30679 24434 24435 24436 24437 24438 24439 24440 24441 24442 24443 24444 24445 24404 24405 24406 24407 24408 24409 32054 32055 32056 32057 32058 32059 24590 24591 24592 24593 24594 24595 24620 24621 24622 24623 24624 24625 +48 24770 24771 24772 24773 24774 24775 30680 30681 30682 30683 30684 30685 24614 24615 24616 24617 24618 24619 24620 24621 24622 24623 24624 24625 24590 24591 24592 24593 24594 24595 32060 32061 32062 32063 32064 32065 24752 24753 24754 24755 24756 24757 24776 24777 24778 24779 24780 24781 +48 24950 24951 24952 24953 24954 24955 30686 30687 30688 30689 30690 30691 24770 24771 24772 24773 24774 24775 24776 24777 24778 24779 24780 24781 24752 24753 24754 24755 24756 24757 32066 32067 32068 32069 32070 32071 24920 24921 24922 24923 24924 24925 24956 24957 24958 24959 24960 24961 +48 25124 25125 25126 25127 25128 25129 30692 30693 30694 30695 30696 30697 24950 24951 24952 24953 24954 24955 24956 24957 24958 24959 24960 24961 24920 24921 24922 24923 24924 24925 32072 32073 32074 32075 32076 32077 25094 25095 25096 25097 25098 25099 25130 25131 25132 25133 25134 25135 +48 25280 25281 25282 25283 25284 25285 30698 30699 30700 30701 30702 30703 25124 25125 25126 25127 25128 25129 25130 25131 25132 25133 25134 25135 25094 25095 25096 25097 25098 25099 32078 32079 32080 32081 32082 32083 25262 25263 25264 25265 25266 25267 25286 25287 25288 25289 25290 25291 +48 25460 25461 25462 25463 25464 25465 30704 30705 30706 30707 30708 30709 25280 25281 25282 25283 25284 25285 25286 25287 25288 25289 25290 25291 25262 25263 25264 25265 25266 25267 32084 32085 32086 32087 32088 32089 25430 25431 25432 25433 25434 25435 25466 25467 25468 25469 25470 25471 +48 25640 25641 25642 25643 25644 25645 30710 30711 30712 30713 30714 30715 25460 25461 25462 25463 25464 25465 25466 25467 25468 25469 25470 25471 25430 25431 25432 25433 25434 25435 32090 32091 32092 32093 32094 32095 25616 25617 25618 25619 25620 25621 25646 25647 25648 25649 25650 25651 +48 25796 25797 25798 25799 25800 25801 30716 30717 30718 30719 30720 30721 25640 25641 25642 25643 25644 25645 25646 25647 25648 25649 25650 25651 25616 25617 25618 25619 25620 25621 32096 32097 32098 32099 32100 32101 25778 25779 25780 25781 25782 25783 25802 25803 25804 25805 25806 25807 +48 25976 25977 25978 25979 25980 25981 30722 30723 30724 30725 30726 30727 25796 25797 25798 25799 25800 25801 25802 25803 25804 25805 25806 25807 25778 25779 25780 25781 25782 25783 32102 32103 32104 32105 32106 32107 25946 25947 25948 25949 25950 25951 25982 25983 25984 25985 25986 25987 +48 26150 26151 26152 26153 26154 26155 30728 30729 30730 30731 30732 30733 25976 25977 25978 25979 25980 25981 25982 25983 25984 25985 25986 25987 25946 25947 25948 25949 25950 25951 32108 32109 32110 32111 32112 32113 26120 26121 26122 26123 26124 26125 26156 26157 26158 26159 26160 26161 +48 26306 26307 26308 26309 26310 26311 30734 30735 30736 30737 30738 30739 26150 26151 26152 26153 26154 26155 26156 26157 26158 26159 26160 26161 26120 26121 26122 26123 26124 26125 32114 32115 32116 32117 32118 32119 26288 26289 26290 26291 26292 26293 26312 26313 26314 26315 26316 26317 +48 26486 26487 26488 26489 26490 26491 30740 30741 30742 30743 30744 30745 26306 26307 26308 26309 26310 26311 26312 26313 26314 26315 26316 26317 26288 26289 26290 26291 26292 26293 32120 32121 32122 32123 32124 32125 26456 26457 26458 26459 26460 26461 26492 26493 26494 26495 26496 26497 +48 26666 26667 26668 26669 26670 26671 30746 30747 30748 30749 30750 30751 26486 26487 26488 26489 26490 26491 26492 26493 26494 26495 26496 26497 26456 26457 26458 26459 26460 26461 32126 32127 32128 32129 32130 32131 26642 26643 26644 26645 26646 26647 26672 26673 26674 26675 26676 26677 +48 26822 26823 26824 26825 26826 26827 30752 30753 30754 30755 30756 30757 26666 26667 26668 26669 26670 26671 26672 26673 26674 26675 26676 26677 26642 26643 26644 26645 26646 26647 32132 32133 32134 32135 32136 32137 26804 26805 26806 26807 26808 26809 26828 26829 26830 26831 26832 26833 +48 27002 27003 27004 27005 27006 27007 30758 30759 30760 30761 30762 30763 26822 26823 26824 26825 26826 26827 26828 26829 26830 26831 26832 26833 26804 26805 26806 26807 26808 26809 32138 32139 32140 32141 32142 32143 26972 26973 26974 26975 26976 26977 27008 27009 27010 27011 27012 27013 +48 27176 27177 27178 27179 27180 27181 30764 30765 30766 30767 30768 30769 27002 27003 27004 27005 27006 27007 27008 27009 27010 27011 27012 27013 26972 26973 26974 26975 26976 26977 32144 32145 32146 32147 32148 32149 27146 27147 27148 27149 27150 27151 27182 27183 27184 27185 27186 27187 +48 27332 27333 27334 27335 27336 27337 30770 30771 30772 30773 30774 30775 27176 27177 27178 27179 27180 27181 27182 27183 27184 27185 27186 27187 27146 27147 27148 27149 27150 27151 32150 32151 32152 32153 32154 32155 27314 27315 27316 27317 27318 27319 27338 27339 27340 27341 27342 27343 +48 27518 27519 27520 27521 27522 27523 30776 30777 30778 30779 30780 30781 27332 27333 27334 27335 27336 27337 27338 27339 27340 27341 27342 27343 27314 27315 27316 27317 27318 27319 32156 32157 32158 32159 32160 32161 27494 27495 27496 27497 27498 27499 27524 27525 27526 27527 27528 27529 +48 27698 27699 27700 27701 27702 27703 30782 30783 30784 30785 30786 30787 27518 27519 27520 27521 27522 27523 27524 27525 27526 27527 27528 27529 27494 27495 27496 27497 27498 27499 32162 32163 32164 32165 32166 32167 27674 27675 27676 27677 27678 27679 27704 27705 27706 27707 27708 27709 +48 27854 27855 27856 27857 27858 27859 30788 30789 30790 30791 30792 30793 27698 27699 27700 27701 27702 27703 27704 27705 27706 27707 27708 27709 27674 27675 27676 27677 27678 27679 32168 32169 32170 32171 32172 32173 27836 27837 27838 27839 27840 27841 27860 27861 27862 27863 27864 27865 +48 28034 28035 28036 28037 28038 28039 30794 30795 30796 30797 30798 30799 27854 27855 27856 27857 27858 27859 27860 27861 27862 27863 27864 27865 27836 27837 27838 27839 27840 27841 32174 32175 32176 32177 32178 32179 28004 28005 28006 28007 28008 28009 28040 28041 28042 28043 28044 28045 +48 28208 28209 28210 28211 28212 28213 30800 30801 30802 30803 30804 30805 28034 28035 28036 28037 28038 28039 28040 28041 28042 28043 28044 28045 28004 28005 28006 28007 28008 28009 32180 32181 32182 32183 32184 32185 28178 28179 28180 28181 28182 28183 28214 28215 28216 28217 28218 28219 +48 28364 28365 28366 28367 28368 28369 30806 30807 30808 30809 30810 30811 28208 28209 28210 28211 28212 28213 28214 28215 28216 28217 28218 28219 28178 28179 28180 28181 28182 28183 32186 32187 32188 32189 32190 32191 28346 28347 28348 28349 28350 28351 28370 28371 28372 28373 28374 28375 +48 28514 28515 28516 28517 28518 28519 30812 30813 30814 30815 30816 30817 28364 28365 28366 28367 28368 28369 28370 28371 28372 28373 28374 28375 28346 28347 28348 28349 28350 28351 32192 32193 32194 32195 32196 32197 28490 28491 28492 28493 28494 28495 28520 28521 28522 28523 28524 28525 +48 28634 28635 28636 28637 28638 28639 30818 30819 30820 30821 30822 30823 28514 28515 28516 28517 28518 28519 28520 28521 28522 28523 28524 28525 28490 28491 28492 28493 28494 28495 32198 32199 32200 32201 32202 32203 28616 28617 28618 28619 28620 28621 28640 28641 28642 28643 28644 28645 +48 28760 28761 28762 28763 28764 28765 30824 30825 30826 30827 30828 30829 28634 28635 28636 28637 28638 28639 28640 28641 28642 28643 28644 28645 28616 28617 28618 28619 28620 28621 32204 32205 32206 32207 32208 32209 28742 28743 28744 28745 28746 28747 28766 28767 28768 28769 28770 28771 +48 28886 28887 28888 28889 28890 28891 30830 30831 30832 30833 30834 30835 28760 28761 28762 28763 28764 28765 28766 28767 28768 28769 28770 28771 28742 28743 28744 28745 28746 28747 32210 32211 32212 32213 32214 32215 28868 28869 28870 28871 28872 28873 28892 28893 28894 28895 28896 28897 +48 29024 29025 29026 29027 29028 29029 30836 30837 30838 30839 30840 30841 28886 28887 28888 28889 28890 28891 28892 28893 28894 28895 28896 28897 28868 28869 28870 28871 28872 28873 32216 32217 32218 32219 32220 32221 29006 29007 29008 29009 29010 29011 29030 29031 29032 29033 29034 29035 +48 29180 29181 29182 29183 29184 29185 30842 30843 30844 30845 30846 30847 29024 29025 29026 29027 29028 29029 29030 29031 29032 29033 29034 29035 29006 29007 29008 29009 29010 29011 32222 32223 32224 32225 32226 32227 29162 29163 29164 29165 29166 29167 29186 29187 29188 29189 29190 29191 +48 29336 29337 29338 29339 29340 29341 30848 30849 30850 30851 30852 30853 29180 29181 29182 29183 29184 29185 29186 29187 29188 29189 29190 29191 29162 29163 29164 29165 29166 29167 32228 32229 32230 32231 32232 32233 29318 29319 29320 29321 29322 29323 29342 29343 29344 29345 29346 29347 +48 29516 29517 29518 29519 29520 29521 30854 30855 30856 30857 30858 30859 29336 29337 29338 29339 29340 29341 29342 29343 29344 29345 29346 29347 29318 29319 29320 29321 29322 29323 32234 32235 32236 32237 32238 32239 29486 29487 29488 29489 29490 29491 29522 29523 29524 29525 29526 29527 +48 30860 30861 30862 30863 30864 30865 30866 30867 30868 30869 30870 30871 29516 29517 29518 29519 29520 29521 29522 29523 29524 29525 29526 29527 29486 29487 29488 29489 29490 29491 32240 32241 32242 32243 32244 32245 30578 30579 30580 30581 30582 30583 30872 30873 30874 30875 30876 30877 +36 22658 22659 22660 22661 22662 22663 30062 30063 30064 30065 30066 30067 22646 22647 22648 22649 22650 22651 31718 31719 31720 31721 31722 31723 30056 30057 30058 30059 30060 30061 22652 22653 22654 22655 22656 22657 +36 22688 22689 22690 22691 22692 22693 30320 30321 30322 30323 30324 30325 22676 22677 22678 22679 22680 22681 31988 31989 31990 31991 31992 31993 30314 30315 30316 30317 30318 30319 22682 22683 22684 22685 22686 22687 +48 14108 14109 14110 14111 14112 14113 22730 22731 22732 22733 22734 22735 22676 22677 22678 22679 22680 22681 30314 30315 30316 30317 30318 30319 30320 30321 30322 30323 30324 30325 32246 32247 32248 32249 32250 32251 3017 3018 3019 3020 3021 3022 15848 15849 15850 15851 15852 15853 +36 29456 29457 29458 29459 29460 29461 29444 29445 29446 29447 29448 29449 30296 30297 30298 30299 30300 30301 29450 29451 29452 29453 29454 29455 30302 30303 30304 30305 30306 30307 31976 31977 31978 31979 31980 31981 +36 29486 29487 29488 29489 29490 29491 29474 29475 29476 29477 29478 29479 30578 30579 30580 30581 30582 30583 29480 29481 29482 29483 29484 29485 30584 30585 30586 30587 30588 30589 32240 32241 32242 32243 32244 32245 +48 5048 5049 5050 5051 5052 5053 32252 32253 32254 32255 32256 32257 30578 30579 30580 30581 30582 30583 30584 30585 30586 30587 30588 30589 29474 29475 29476 29477 29478 29479 29504 29505 29506 29507 29508 29509 12188 12189 12190 12191 12192 12193 15818 15819 15820 15821 15822 15823 +48 15782 15783 15784 15785 15786 15787 15788 15789 15790 15791 15792 15793 15794 15795 15796 15797 15798 15799 21590 21591 21592 21593 21594 21595 1015 1016 1017 1018 1019 1020 1033 1034 1035 1036 1037 1038 1027 1028 1029 1030 1031 1032 21614 21615 21616 21617 21618 21619 +48 15752 15753 15754 15755 15756 15757 15758 15759 15760 15761 15762 15763 15764 15765 15766 15767 15768 15769 21638 21639 21640 21641 21642 21643 1051 1052 1053 1054 1055 1056 1069 1070 1071 1072 1073 1074 1063 1064 1065 1066 1067 1068 21662 21663 21664 21665 21666 21667 +48 15722 15723 15724 15725 15726 15727 15728 15729 15730 15731 15732 15733 15734 15735 15736 15737 15738 15739 21686 21687 21688 21689 21690 21691 1087 1088 1089 1090 1091 1092 1105 1106 1107 1108 1109 1110 1099 1100 1101 1102 1103 1104 21710 21711 21712 21713 21714 21715 +48 15692 15693 15694 15695 15696 15697 15698 15699 15700 15701 15702 15703 15704 15705 15706 15707 15708 15709 21734 21735 21736 21737 21738 21739 1123 1124 1125 1126 1127 1128 1141 1142 1143 1144 1145 1146 1135 1136 1137 1138 1139 1140 21758 21759 21760 21761 21762 21763 +48 15662 15663 15664 15665 15666 15667 15668 15669 15670 15671 15672 15673 15674 15675 15676 15677 15678 15679 21782 21783 21784 21785 21786 21787 1159 1160 1161 1162 1163 1164 1177 1178 1179 1180 1181 1182 1171 1172 1173 1174 1175 1176 21806 21807 21808 21809 21810 21811 +48 15632 15633 15634 15635 15636 15637 15638 15639 15640 15641 15642 15643 15644 15645 15646 15647 15648 15649 21830 21831 21832 21833 21834 21835 1195 1196 1197 1198 1199 1200 1213 1214 1215 1216 1217 1218 1207 1208 1209 1210 1211 1212 21854 21855 21856 21857 21858 21859 +48 15602 15603 15604 15605 15606 15607 15608 15609 15610 15611 15612 15613 15614 15615 15616 15617 15618 15619 21878 21879 21880 21881 21882 21883 1231 1232 1233 1234 1235 1236 1249 1250 1251 1252 1253 1254 1243 1244 1245 1246 1247 1248 21902 21903 21904 21905 21906 21907 +48 15572 15573 15574 15575 15576 15577 15578 15579 15580 15581 15582 15583 15584 15585 15586 15587 15588 15589 21926 21927 21928 21929 21930 21931 1267 1268 1269 1270 1271 1272 1285 1286 1287 1288 1289 1290 1279 1280 1281 1282 1283 1284 21950 21951 21952 21953 21954 21955 +48 15542 15543 15544 15545 15546 15547 15548 15549 15550 15551 15552 15553 15554 15555 15556 15557 15558 15559 21974 21975 21976 21977 21978 21979 1303 1304 1305 1306 1307 1308 1321 1322 1323 1324 1325 1326 1315 1316 1317 1318 1319 1320 21998 21999 22000 22001 22002 22003 +48 15512 15513 15514 15515 15516 15517 15518 15519 15520 15521 15522 15523 15524 15525 15526 15527 15528 15529 22022 22023 22024 22025 22026 22027 1339 1340 1341 1342 1343 1344 1357 1358 1359 1360 1361 1362 1351 1352 1353 1354 1355 1356 22046 22047 22048 22049 22050 22051 +48 15482 15483 15484 15485 15486 15487 15488 15489 15490 15491 15492 15493 15494 15495 15496 15497 15498 15499 22070 22071 22072 22073 22074 22075 1375 1376 1377 1378 1379 1380 1393 1394 1395 1396 1397 1398 1387 1388 1389 1390 1391 1392 22094 22095 22096 22097 22098 22099 +48 15452 15453 15454 15455 15456 15457 15458 15459 15460 15461 15462 15463 15464 15465 15466 15467 15468 15469 22106 22107 22108 22109 22110 22111 1411 1412 1413 1414 1415 1416 1429 1430 1431 1432 1433 1434 1423 1424 1425 1426 1427 1428 32258 32259 32260 32261 32262 32263 +48 15422 15423 15424 15425 15426 15427 15428 15429 15430 15431 15432 15433 15434 15435 15436 15437 15438 15439 32264 32265 32266 32267 32268 32269 1483 1484 1485 1486 1487 1488 1501 1502 1503 1504 1505 1506 1495 1496 1497 1498 1499 1500 22130 22131 22132 22133 22134 22135 +48 15386 15387 15388 15389 15390 15391 15410 15411 15412 15413 15414 15415 3203 3204 3205 3206 3207 3208 32270 32271 32272 32273 32274 32275 30602 30603 30604 30605 30606 30607 30596 30597 30598 30599 30600 30601 22706 22707 22708 22709 22710 22711 22724 22725 22726 22727 22728 22729 +48 15356 15357 15358 15359 15360 15361 15380 15381 15382 15383 15384 15385 15386 15387 15388 15389 15390 15391 22724 22725 22726 22727 22728 22729 22706 22707 22708 22709 22710 22711 30614 30615 30616 30617 30618 30619 22892 22893 22894 22895 22896 22897 22910 22911 22912 22913 22914 22915 +48 15326 15327 15328 15329 15330 15331 15350 15351 15352 15353 15354 15355 15356 15357 15358 15359 15360 15361 22910 22911 22912 22913 22914 22915 22892 22893 22894 22895 22896 22897 30620 30621 30622 30623 30624 30625 23072 23073 23074 23075 23076 23077 23090 23091 23092 23093 23094 23095 +48 15296 15297 15298 15299 15300 15301 15320 15321 15322 15323 15324 15325 15326 15327 15328 15329 15330 15331 23090 23091 23092 23093 23094 23095 23072 23073 23074 23075 23076 23077 30626 30627 30628 30629 30630 30631 23228 23229 23230 23231 23232 23233 23246 23247 23248 23249 23250 23251 +48 15266 15267 15268 15269 15270 15271 15290 15291 15292 15293 15294 15295 15296 15297 15298 15299 15300 15301 23246 23247 23248 23249 23250 23251 23228 23229 23230 23231 23232 23233 30632 30633 30634 30635 30636 30637 23408 23409 23410 23411 23412 23413 23426 23427 23428 23429 23430 23431 +48 15236 15237 15238 15239 15240 15241 15260 15261 15262 15263 15264 15265 15266 15267 15268 15269 15270 15271 23426 23427 23428 23429 23430 23431 23408 23409 23410 23411 23412 23413 30638 30639 30640 30641 30642 30643 23588 23589 23590 23591 23592 23593 23606 23607 23608 23609 23610 23611 +48 15206 15207 15208 15209 15210 15211 15230 15231 15232 15233 15234 15235 15236 15237 15238 15239 15240 15241 23606 23607 23608 23609 23610 23611 23588 23589 23590 23591 23592 23593 30644 30645 30646 30647 30648 30649 23744 23745 23746 23747 23748 23749 23762 23763 23764 23765 23766 23767 +48 15176 15177 15178 15179 15180 15181 15200 15201 15202 15203 15204 15205 15206 15207 15208 15209 15210 15211 23762 23763 23764 23765 23766 23767 23744 23745 23746 23747 23748 23749 30650 30651 30652 30653 30654 30655 23924 23925 23926 23927 23928 23929 23942 23943 23944 23945 23946 23947 +48 15146 15147 15148 15149 15150 15151 15170 15171 15172 15173 15174 15175 15176 15177 15178 15179 15180 15181 23942 23943 23944 23945 23946 23947 23924 23925 23926 23927 23928 23929 30656 30657 30658 30659 30660 30661 24098 24099 24100 24101 24102 24103 24116 24117 24118 24119 24120 24121 +48 15116 15117 15118 15119 15120 15121 15140 15141 15142 15143 15144 15145 15146 15147 15148 15149 15150 15151 24116 24117 24118 24119 24120 24121 24098 24099 24100 24101 24102 24103 30662 30663 30664 30665 30666 30667 24254 24255 24256 24257 24258 24259 24272 24273 24274 24275 24276 24277 +48 15086 15087 15088 15089 15090 15091 15110 15111 15112 15113 15114 15115 15116 15117 15118 15119 15120 15121 24272 24273 24274 24275 24276 24277 24254 24255 24256 24257 24258 24259 30668 30669 30670 30671 30672 30673 24434 24435 24436 24437 24438 24439 24452 24453 24454 24455 24456 24457 +48 15056 15057 15058 15059 15060 15061 15080 15081 15082 15083 15084 15085 15086 15087 15088 15089 15090 15091 24452 24453 24454 24455 24456 24457 24434 24435 24436 24437 24438 24439 30674 30675 30676 30677 30678 30679 24614 24615 24616 24617 24618 24619 24632 24633 24634 24635 24636 24637 +48 15026 15027 15028 15029 15030 15031 15050 15051 15052 15053 15054 15055 15056 15057 15058 15059 15060 15061 24632 24633 24634 24635 24636 24637 24614 24615 24616 24617 24618 24619 30680 30681 30682 30683 30684 30685 24770 24771 24772 24773 24774 24775 24788 24789 24790 24791 24792 24793 +48 14996 14997 14998 14999 15000 15001 15020 15021 15022 15023 15024 15025 15026 15027 15028 15029 15030 15031 24788 24789 24790 24791 24792 24793 24770 24771 24772 24773 24774 24775 30686 30687 30688 30689 30690 30691 24950 24951 24952 24953 24954 24955 24968 24969 24970 24971 24972 24973 +48 14966 14967 14968 14969 14970 14971 14990 14991 14992 14993 14994 14995 14996 14997 14998 14999 15000 15001 24968 24969 24970 24971 24972 24973 24950 24951 24952 24953 24954 24955 30692 30693 30694 30695 30696 30697 25124 25125 25126 25127 25128 25129 25142 25143 25144 25145 25146 25147 +48 14936 14937 14938 14939 14940 14941 14960 14961 14962 14963 14964 14965 14966 14967 14968 14969 14970 14971 25142 25143 25144 25145 25146 25147 25124 25125 25126 25127 25128 25129 30698 30699 30700 30701 30702 30703 25280 25281 25282 25283 25284 25285 25298 25299 25300 25301 25302 25303 +48 14906 14907 14908 14909 14910 14911 14930 14931 14932 14933 14934 14935 14936 14937 14938 14939 14940 14941 25298 25299 25300 25301 25302 25303 25280 25281 25282 25283 25284 25285 30704 30705 30706 30707 30708 30709 25460 25461 25462 25463 25464 25465 25478 25479 25480 25481 25482 25483 +48 14876 14877 14878 14879 14880 14881 14900 14901 14902 14903 14904 14905 14906 14907 14908 14909 14910 14911 25478 25479 25480 25481 25482 25483 25460 25461 25462 25463 25464 25465 30710 30711 30712 30713 30714 30715 25640 25641 25642 25643 25644 25645 25658 25659 25660 25661 25662 25663 +48 14846 14847 14848 14849 14850 14851 14870 14871 14872 14873 14874 14875 14876 14877 14878 14879 14880 14881 25658 25659 25660 25661 25662 25663 25640 25641 25642 25643 25644 25645 30716 30717 30718 30719 30720 30721 25796 25797 25798 25799 25800 25801 25814 25815 25816 25817 25818 25819 +48 14816 14817 14818 14819 14820 14821 14840 14841 14842 14843 14844 14845 14846 14847 14848 14849 14850 14851 25814 25815 25816 25817 25818 25819 25796 25797 25798 25799 25800 25801 30722 30723 30724 30725 30726 30727 25976 25977 25978 25979 25980 25981 25994 25995 25996 25997 25998 25999 +48 14786 14787 14788 14789 14790 14791 14810 14811 14812 14813 14814 14815 14816 14817 14818 14819 14820 14821 25994 25995 25996 25997 25998 25999 25976 25977 25978 25979 25980 25981 30728 30729 30730 30731 30732 30733 26150 26151 26152 26153 26154 26155 26168 26169 26170 26171 26172 26173 +48 14756 14757 14758 14759 14760 14761 14780 14781 14782 14783 14784 14785 14786 14787 14788 14789 14790 14791 26168 26169 26170 26171 26172 26173 26150 26151 26152 26153 26154 26155 30734 30735 30736 30737 30738 30739 26306 26307 26308 26309 26310 26311 26324 26325 26326 26327 26328 26329 +48 14726 14727 14728 14729 14730 14731 14750 14751 14752 14753 14754 14755 14756 14757 14758 14759 14760 14761 26324 26325 26326 26327 26328 26329 26306 26307 26308 26309 26310 26311 30740 30741 30742 30743 30744 30745 26486 26487 26488 26489 26490 26491 26504 26505 26506 26507 26508 26509 +48 14696 14697 14698 14699 14700 14701 14720 14721 14722 14723 14724 14725 14726 14727 14728 14729 14730 14731 26504 26505 26506 26507 26508 26509 26486 26487 26488 26489 26490 26491 30746 30747 30748 30749 30750 30751 26666 26667 26668 26669 26670 26671 26684 26685 26686 26687 26688 26689 +48 14666 14667 14668 14669 14670 14671 14690 14691 14692 14693 14694 14695 14696 14697 14698 14699 14700 14701 26684 26685 26686 26687 26688 26689 26666 26667 26668 26669 26670 26671 30752 30753 30754 30755 30756 30757 26822 26823 26824 26825 26826 26827 26840 26841 26842 26843 26844 26845 +48 14636 14637 14638 14639 14640 14641 14660 14661 14662 14663 14664 14665 14666 14667 14668 14669 14670 14671 26840 26841 26842 26843 26844 26845 26822 26823 26824 26825 26826 26827 30758 30759 30760 30761 30762 30763 27002 27003 27004 27005 27006 27007 27020 27021 27022 27023 27024 27025 +48 14606 14607 14608 14609 14610 14611 14630 14631 14632 14633 14634 14635 14636 14637 14638 14639 14640 14641 27020 27021 27022 27023 27024 27025 27002 27003 27004 27005 27006 27007 30764 30765 30766 30767 30768 30769 27176 27177 27178 27179 27180 27181 27194 27195 27196 27197 27198 27199 +48 14576 14577 14578 14579 14580 14581 14600 14601 14602 14603 14604 14605 14606 14607 14608 14609 14610 14611 27194 27195 27196 27197 27198 27199 27176 27177 27178 27179 27180 27181 30770 30771 30772 30773 30774 30775 27332 27333 27334 27335 27336 27337 27350 27351 27352 27353 27354 27355 +48 14546 14547 14548 14549 14550 14551 14570 14571 14572 14573 14574 14575 14576 14577 14578 14579 14580 14581 27350 27351 27352 27353 27354 27355 27332 27333 27334 27335 27336 27337 30776 30777 30778 30779 30780 30781 27518 27519 27520 27521 27522 27523 27536 27537 27538 27539 27540 27541 +48 14516 14517 14518 14519 14520 14521 14540 14541 14542 14543 14544 14545 14546 14547 14548 14549 14550 14551 27536 27537 27538 27539 27540 27541 27518 27519 27520 27521 27522 27523 30782 30783 30784 30785 30786 30787 27698 27699 27700 27701 27702 27703 27716 27717 27718 27719 27720 27721 +48 14486 14487 14488 14489 14490 14491 14510 14511 14512 14513 14514 14515 14516 14517 14518 14519 14520 14521 27716 27717 27718 27719 27720 27721 27698 27699 27700 27701 27702 27703 30788 30789 30790 30791 30792 30793 27854 27855 27856 27857 27858 27859 27872 27873 27874 27875 27876 27877 +48 14456 14457 14458 14459 14460 14461 14480 14481 14482 14483 14484 14485 14486 14487 14488 14489 14490 14491 27872 27873 27874 27875 27876 27877 27854 27855 27856 27857 27858 27859 30794 30795 30796 30797 30798 30799 28034 28035 28036 28037 28038 28039 28052 28053 28054 28055 28056 28057 +48 14426 14427 14428 14429 14430 14431 14450 14451 14452 14453 14454 14455 14456 14457 14458 14459 14460 14461 28052 28053 28054 28055 28056 28057 28034 28035 28036 28037 28038 28039 30800 30801 30802 30803 30804 30805 28208 28209 28210 28211 28212 28213 28226 28227 28228 28229 28230 28231 +48 14396 14397 14398 14399 14400 14401 14420 14421 14422 14423 14424 14425 14426 14427 14428 14429 14430 14431 28226 28227 28228 28229 28230 28231 28208 28209 28210 28211 28212 28213 30806 30807 30808 30809 30810 30811 28364 28365 28366 28367 28368 28369 28382 28383 28384 28385 28386 28387 +48 14366 14367 14368 14369 14370 14371 14390 14391 14392 14393 14394 14395 14396 14397 14398 14399 14400 14401 28382 28383 28384 28385 28386 28387 28364 28365 28366 28367 28368 28369 30812 30813 30814 30815 30816 30817 28514 28515 28516 28517 28518 28519 28532 28533 28534 28535 28536 28537 +48 14336 14337 14338 14339 14340 14341 14360 14361 14362 14363 14364 14365 14366 14367 14368 14369 14370 14371 28532 28533 28534 28535 28536 28537 28514 28515 28516 28517 28518 28519 30818 30819 30820 30821 30822 30823 28634 28635 28636 28637 28638 28639 28652 28653 28654 28655 28656 28657 +48 14306 14307 14308 14309 14310 14311 14330 14331 14332 14333 14334 14335 14336 14337 14338 14339 14340 14341 28652 28653 28654 28655 28656 28657 28634 28635 28636 28637 28638 28639 30824 30825 30826 30827 30828 30829 28760 28761 28762 28763 28764 28765 28778 28779 28780 28781 28782 28783 +48 14276 14277 14278 14279 14280 14281 14300 14301 14302 14303 14304 14305 14306 14307 14308 14309 14310 14311 28778 28779 28780 28781 28782 28783 28760 28761 28762 28763 28764 28765 30830 30831 30832 30833 30834 30835 28886 28887 28888 28889 28890 28891 28904 28905 28906 28907 28908 28909 +48 14246 14247 14248 14249 14250 14251 14270 14271 14272 14273 14274 14275 14276 14277 14278 14279 14280 14281 28904 28905 28906 28907 28908 28909 28886 28887 28888 28889 28890 28891 30836 30837 30838 30839 30840 30841 29024 29025 29026 29027 29028 29029 29042 29043 29044 29045 29046 29047 +48 14216 14217 14218 14219 14220 14221 14240 14241 14242 14243 14244 14245 14246 14247 14248 14249 14250 14251 29042 29043 29044 29045 29046 29047 29024 29025 29026 29027 29028 29029 30842 30843 30844 30845 30846 30847 29180 29181 29182 29183 29184 29185 29198 29199 29200 29201 29202 29203 +48 14186 14187 14188 14189 14190 14191 14210 14211 14212 14213 14214 14215 14216 14217 14218 14219 14220 14221 29198 29199 29200 29201 29202 29203 29180 29181 29182 29183 29184 29185 30848 30849 30850 30851 30852 30853 29336 29337 29338 29339 29340 29341 29354 29355 29356 29357 29358 29359 +48 14156 14157 14158 14159 14160 14161 14180 14181 14182 14183 14184 14185 14186 14187 14188 14189 14190 14191 29354 29355 29356 29357 29358 29359 29336 29337 29338 29339 29340 29341 30854 30855 30856 30857 30858 30859 29516 29517 29518 29519 29520 29521 29534 29535 29536 29537 29538 29539 +48 5180 5181 5182 5183 5184 5185 14150 14151 14152 14153 14154 14155 14156 14157 14158 14159 14160 14161 29534 29535 29536 29537 29538 29539 29516 29517 29518 29519 29520 29521 30866 30867 30868 30869 30870 30871 30860 30861 30862 30863 30864 30865 32276 32277 32278 32279 32280 32281 +48 22856 22857 22858 22859 22860 22861 30332 30333 30334 30335 30336 30337 22676 22677 22678 22679 22680 22681 22682 22683 22684 22685 22686 22687 22688 22689 22690 22691 22692 22693 31994 31995 31996 31997 31998 31999 22868 22869 22870 22871 22872 22873 22862 22863 22864 22865 22866 22867 +48 14060 14061 14062 14063 14064 14065 14102 14103 14104 14105 14106 14107 14108 14109 14110 14111 14112 14113 22730 22731 22732 22733 22734 22735 22676 22677 22678 22679 22680 22681 30332 30333 30334 30335 30336 30337 22856 22857 22858 22859 22860 22861 22886 22887 22888 22889 22890 22891 +48 23036 23037 23038 23039 23040 23041 30338 30339 30340 30341 30342 30343 22856 22857 22858 22859 22860 22861 22862 22863 22864 22865 22866 22867 22868 22869 22870 22871 22872 22873 32000 32001 32002 32003 32004 32005 23048 23049 23050 23051 23052 23053 23042 23043 23044 23045 23046 23047 +48 14012 14013 14014 14015 14016 14017 14054 14055 14056 14057 14058 14059 14060 14061 14062 14063 14064 14065 22886 22887 22888 22889 22890 22891 22856 22857 22858 22859 22860 22861 30338 30339 30340 30341 30342 30343 23036 23037 23038 23039 23040 23041 23066 23067 23068 23069 23070 23071 +48 23198 23199 23200 23201 23202 23203 30344 30345 30346 30347 30348 30349 23036 23037 23038 23039 23040 23041 23042 23043 23044 23045 23046 23047 23048 23049 23050 23051 23052 23053 32006 32007 32008 32009 32010 32011 23210 23211 23212 23213 23214 23215 23204 23205 23206 23207 23208 23209 +48 13964 13965 13966 13967 13968 13969 14006 14007 14008 14009 14010 14011 14012 14013 14014 14015 14016 14017 23066 23067 23068 23069 23070 23071 23036 23037 23038 23039 23040 23041 30344 30345 30346 30347 30348 30349 23198 23199 23200 23201 23202 23203 23252 23253 23254 23255 23256 23257 +48 23366 23367 23368 23369 23370 23371 30350 30351 30352 30353 30354 30355 23198 23199 23200 23201 23202 23203 23204 23205 23206 23207 23208 23209 23210 23211 23212 23213 23214 23215 32012 32013 32014 32015 32016 32017 23378 23379 23380 23381 23382 23383 23372 23373 23374 23375 23376 23377 +48 13916 13917 13918 13919 13920 13921 13958 13959 13960 13961 13962 13963 13964 13965 13966 13967 13968 13969 23252 23253 23254 23255 23256 23257 23198 23199 23200 23201 23202 23203 30350 30351 30352 30353 30354 30355 23366 23367 23368 23369 23370 23371 23396 23397 23398 23399 23400 23401 +48 23552 23553 23554 23555 23556 23557 30356 30357 30358 30359 30360 30361 23366 23367 23368 23369 23370 23371 23372 23373 23374 23375 23376 23377 23378 23379 23380 23381 23382 23383 32018 32019 32020 32021 32022 32023 23564 23565 23566 23567 23568 23569 23558 23559 23560 23561 23562 23563 +48 13868 13869 13870 13871 13872 13873 13910 13911 13912 13913 13914 13915 13916 13917 13918 13919 13920 13921 23396 23397 23398 23399 23400 23401 23366 23367 23368 23369 23370 23371 30356 30357 30358 30359 30360 30361 23552 23553 23554 23555 23556 23557 23582 23583 23584 23585 23586 23587 +48 23714 23715 23716 23717 23718 23719 30362 30363 30364 30365 30366 30367 23552 23553 23554 23555 23556 23557 23558 23559 23560 23561 23562 23563 23564 23565 23566 23567 23568 23569 32024 32025 32026 32027 32028 32029 23726 23727 23728 23729 23730 23731 23720 23721 23722 23723 23724 23725 +48 13820 13821 13822 13823 13824 13825 13862 13863 13864 13865 13866 13867 13868 13869 13870 13871 13872 13873 23582 23583 23584 23585 23586 23587 23552 23553 23554 23555 23556 23557 30362 30363 30364 30365 30366 30367 23714 23715 23716 23717 23718 23719 23768 23769 23770 23771 23772 23773 +48 23882 23883 23884 23885 23886 23887 30368 30369 30370 30371 30372 30373 23714 23715 23716 23717 23718 23719 23720 23721 23722 23723 23724 23725 23726 23727 23728 23729 23730 23731 32030 32031 32032 32033 32034 32035 23894 23895 23896 23897 23898 23899 23888 23889 23890 23891 23892 23893 +48 13772 13773 13774 13775 13776 13777 13814 13815 13816 13817 13818 13819 13820 13821 13822 13823 13824 13825 23768 23769 23770 23771 23772 23773 23714 23715 23716 23717 23718 23719 30368 30369 30370 30371 30372 30373 23882 23883 23884 23885 23886 23887 23912 23913 23914 23915 23916 23917 +48 24056 24057 24058 24059 24060 24061 30374 30375 30376 30377 30378 30379 23882 23883 23884 23885 23886 23887 23888 23889 23890 23891 23892 23893 23894 23895 23896 23897 23898 23899 32036 32037 32038 32039 32040 32041 24068 24069 24070 24071 24072 24073 24062 24063 24064 24065 24066 24067 +48 13724 13725 13726 13727 13728 13729 13766 13767 13768 13769 13770 13771 13772 13773 13774 13775 13776 13777 23912 23913 23914 23915 23916 23917 23882 23883 23884 23885 23886 23887 30374 30375 30376 30377 30378 30379 24056 24057 24058 24059 24060 24061 24086 24087 24088 24089 24090 24091 +48 24224 24225 24226 24227 24228 24229 30380 30381 30382 30383 30384 30385 24056 24057 24058 24059 24060 24061 24062 24063 24064 24065 24066 24067 24068 24069 24070 24071 24072 24073 32042 32043 32044 32045 32046 32047 24236 24237 24238 24239 24240 24241 24230 24231 24232 24233 24234 24235 +48 13676 13677 13678 13679 13680 13681 13718 13719 13720 13721 13722 13723 13724 13725 13726 13727 13728 13729 24086 24087 24088 24089 24090 24091 24056 24057 24058 24059 24060 24061 30380 30381 30382 30383 30384 30385 24224 24225 24226 24227 24228 24229 24278 24279 24280 24281 24282 24283 +48 24392 24393 24394 24395 24396 24397 30386 30387 30388 30389 30390 30391 24224 24225 24226 24227 24228 24229 24230 24231 24232 24233 24234 24235 24236 24237 24238 24239 24240 24241 32048 32049 32050 32051 32052 32053 24404 24405 24406 24407 24408 24409 24398 24399 24400 24401 24402 24403 +48 13628 13629 13630 13631 13632 13633 13670 13671 13672 13673 13674 13675 13676 13677 13678 13679 13680 13681 24278 24279 24280 24281 24282 24283 24224 24225 24226 24227 24228 24229 30386 30387 30388 30389 30390 30391 24392 24393 24394 24395 24396 24397 24422 24423 24424 24425 24426 24427 +48 24578 24579 24580 24581 24582 24583 30392 30393 30394 30395 30396 30397 24392 24393 24394 24395 24396 24397 24398 24399 24400 24401 24402 24403 24404 24405 24406 24407 24408 24409 32054 32055 32056 32057 32058 32059 24590 24591 24592 24593 24594 24595 24584 24585 24586 24587 24588 24589 +48 13580 13581 13582 13583 13584 13585 13622 13623 13624 13625 13626 13627 13628 13629 13630 13631 13632 13633 24422 24423 24424 24425 24426 24427 24392 24393 24394 24395 24396 24397 30392 30393 30394 30395 30396 30397 24578 24579 24580 24581 24582 24583 24608 24609 24610 24611 24612 24613 +48 24740 24741 24742 24743 24744 24745 30398 30399 30400 30401 30402 30403 24578 24579 24580 24581 24582 24583 24584 24585 24586 24587 24588 24589 24590 24591 24592 24593 24594 24595 32060 32061 32062 32063 32064 32065 24752 24753 24754 24755 24756 24757 24746 24747 24748 24749 24750 24751 +48 13532 13533 13534 13535 13536 13537 13574 13575 13576 13577 13578 13579 13580 13581 13582 13583 13584 13585 24608 24609 24610 24611 24612 24613 24578 24579 24580 24581 24582 24583 30398 30399 30400 30401 30402 30403 24740 24741 24742 24743 24744 24745 24794 24795 24796 24797 24798 24799 +48 24908 24909 24910 24911 24912 24913 30404 30405 30406 30407 30408 30409 24740 24741 24742 24743 24744 24745 24746 24747 24748 24749 24750 24751 24752 24753 24754 24755 24756 24757 32066 32067 32068 32069 32070 32071 24920 24921 24922 24923 24924 24925 24914 24915 24916 24917 24918 24919 +48 13484 13485 13486 13487 13488 13489 13526 13527 13528 13529 13530 13531 13532 13533 13534 13535 13536 13537 24794 24795 24796 24797 24798 24799 24740 24741 24742 24743 24744 24745 30404 30405 30406 30407 30408 30409 24908 24909 24910 24911 24912 24913 24938 24939 24940 24941 24942 24943 +48 25082 25083 25084 25085 25086 25087 30410 30411 30412 30413 30414 30415 24908 24909 24910 24911 24912 24913 24914 24915 24916 24917 24918 24919 24920 24921 24922 24923 24924 24925 32072 32073 32074 32075 32076 32077 25094 25095 25096 25097 25098 25099 25088 25089 25090 25091 25092 25093 +48 13436 13437 13438 13439 13440 13441 13478 13479 13480 13481 13482 13483 13484 13485 13486 13487 13488 13489 24938 24939 24940 24941 24942 24943 24908 24909 24910 24911 24912 24913 30410 30411 30412 30413 30414 30415 25082 25083 25084 25085 25086 25087 25112 25113 25114 25115 25116 25117 +48 25250 25251 25252 25253 25254 25255 30416 30417 30418 30419 30420 30421 25082 25083 25084 25085 25086 25087 25088 25089 25090 25091 25092 25093 25094 25095 25096 25097 25098 25099 32078 32079 32080 32081 32082 32083 25262 25263 25264 25265 25266 25267 25256 25257 25258 25259 25260 25261 +48 13388 13389 13390 13391 13392 13393 13430 13431 13432 13433 13434 13435 13436 13437 13438 13439 13440 13441 25112 25113 25114 25115 25116 25117 25082 25083 25084 25085 25086 25087 30416 30417 30418 30419 30420 30421 25250 25251 25252 25253 25254 25255 25304 25305 25306 25307 25308 25309 +48 25418 25419 25420 25421 25422 25423 30422 30423 30424 30425 30426 30427 25250 25251 25252 25253 25254 25255 25256 25257 25258 25259 25260 25261 25262 25263 25264 25265 25266 25267 32084 32085 32086 32087 32088 32089 25430 25431 25432 25433 25434 25435 25424 25425 25426 25427 25428 25429 +48 13340 13341 13342 13343 13344 13345 13382 13383 13384 13385 13386 13387 13388 13389 13390 13391 13392 13393 25304 25305 25306 25307 25308 25309 25250 25251 25252 25253 25254 25255 30422 30423 30424 30425 30426 30427 25418 25419 25420 25421 25422 25423 25448 25449 25450 25451 25452 25453 +48 25604 25605 25606 25607 25608 25609 30428 30429 30430 30431 30432 30433 25418 25419 25420 25421 25422 25423 25424 25425 25426 25427 25428 25429 25430 25431 25432 25433 25434 25435 32090 32091 32092 32093 32094 32095 25616 25617 25618 25619 25620 25621 25610 25611 25612 25613 25614 25615 +48 13292 13293 13294 13295 13296 13297 13334 13335 13336 13337 13338 13339 13340 13341 13342 13343 13344 13345 25448 25449 25450 25451 25452 25453 25418 25419 25420 25421 25422 25423 30428 30429 30430 30431 30432 30433 25604 25605 25606 25607 25608 25609 25634 25635 25636 25637 25638 25639 +48 25766 25767 25768 25769 25770 25771 30434 30435 30436 30437 30438 30439 25604 25605 25606 25607 25608 25609 25610 25611 25612 25613 25614 25615 25616 25617 25618 25619 25620 25621 32096 32097 32098 32099 32100 32101 25778 25779 25780 25781 25782 25783 25772 25773 25774 25775 25776 25777 +48 13244 13245 13246 13247 13248 13249 13286 13287 13288 13289 13290 13291 13292 13293 13294 13295 13296 13297 25634 25635 25636 25637 25638 25639 25604 25605 25606 25607 25608 25609 30434 30435 30436 30437 30438 30439 25766 25767 25768 25769 25770 25771 25820 25821 25822 25823 25824 25825 +48 25934 25935 25936 25937 25938 25939 30440 30441 30442 30443 30444 30445 25766 25767 25768 25769 25770 25771 25772 25773 25774 25775 25776 25777 25778 25779 25780 25781 25782 25783 32102 32103 32104 32105 32106 32107 25946 25947 25948 25949 25950 25951 25940 25941 25942 25943 25944 25945 +48 13196 13197 13198 13199 13200 13201 13238 13239 13240 13241 13242 13243 13244 13245 13246 13247 13248 13249 25820 25821 25822 25823 25824 25825 25766 25767 25768 25769 25770 25771 30440 30441 30442 30443 30444 30445 25934 25935 25936 25937 25938 25939 25964 25965 25966 25967 25968 25969 +48 26108 26109 26110 26111 26112 26113 30446 30447 30448 30449 30450 30451 25934 25935 25936 25937 25938 25939 25940 25941 25942 25943 25944 25945 25946 25947 25948 25949 25950 25951 32108 32109 32110 32111 32112 32113 26120 26121 26122 26123 26124 26125 26114 26115 26116 26117 26118 26119 +48 13148 13149 13150 13151 13152 13153 13190 13191 13192 13193 13194 13195 13196 13197 13198 13199 13200 13201 25964 25965 25966 25967 25968 25969 25934 25935 25936 25937 25938 25939 30446 30447 30448 30449 30450 30451 26108 26109 26110 26111 26112 26113 26138 26139 26140 26141 26142 26143 +48 26276 26277 26278 26279 26280 26281 30452 30453 30454 30455 30456 30457 26108 26109 26110 26111 26112 26113 26114 26115 26116 26117 26118 26119 26120 26121 26122 26123 26124 26125 32114 32115 32116 32117 32118 32119 26288 26289 26290 26291 26292 26293 26282 26283 26284 26285 26286 26287 +48 13100 13101 13102 13103 13104 13105 13142 13143 13144 13145 13146 13147 13148 13149 13150 13151 13152 13153 26138 26139 26140 26141 26142 26143 26108 26109 26110 26111 26112 26113 30452 30453 30454 30455 30456 30457 26276 26277 26278 26279 26280 26281 26330 26331 26332 26333 26334 26335 +48 26444 26445 26446 26447 26448 26449 30458 30459 30460 30461 30462 30463 26276 26277 26278 26279 26280 26281 26282 26283 26284 26285 26286 26287 26288 26289 26290 26291 26292 26293 32120 32121 32122 32123 32124 32125 26456 26457 26458 26459 26460 26461 26450 26451 26452 26453 26454 26455 +48 13052 13053 13054 13055 13056 13057 13094 13095 13096 13097 13098 13099 13100 13101 13102 13103 13104 13105 26330 26331 26332 26333 26334 26335 26276 26277 26278 26279 26280 26281 30458 30459 30460 30461 30462 30463 26444 26445 26446 26447 26448 26449 26474 26475 26476 26477 26478 26479 +48 26630 26631 26632 26633 26634 26635 30464 30465 30466 30467 30468 30469 26444 26445 26446 26447 26448 26449 26450 26451 26452 26453 26454 26455 26456 26457 26458 26459 26460 26461 32126 32127 32128 32129 32130 32131 26642 26643 26644 26645 26646 26647 26636 26637 26638 26639 26640 26641 +48 13004 13005 13006 13007 13008 13009 13046 13047 13048 13049 13050 13051 13052 13053 13054 13055 13056 13057 26474 26475 26476 26477 26478 26479 26444 26445 26446 26447 26448 26449 30464 30465 30466 30467 30468 30469 26630 26631 26632 26633 26634 26635 26660 26661 26662 26663 26664 26665 +48 26792 26793 26794 26795 26796 26797 30470 30471 30472 30473 30474 30475 26630 26631 26632 26633 26634 26635 26636 26637 26638 26639 26640 26641 26642 26643 26644 26645 26646 26647 32132 32133 32134 32135 32136 32137 26804 26805 26806 26807 26808 26809 26798 26799 26800 26801 26802 26803 +48 12956 12957 12958 12959 12960 12961 12998 12999 13000 13001 13002 13003 13004 13005 13006 13007 13008 13009 26660 26661 26662 26663 26664 26665 26630 26631 26632 26633 26634 26635 30470 30471 30472 30473 30474 30475 26792 26793 26794 26795 26796 26797 26846 26847 26848 26849 26850 26851 +48 26960 26961 26962 26963 26964 26965 30476 30477 30478 30479 30480 30481 26792 26793 26794 26795 26796 26797 26798 26799 26800 26801 26802 26803 26804 26805 26806 26807 26808 26809 32138 32139 32140 32141 32142 32143 26972 26973 26974 26975 26976 26977 26966 26967 26968 26969 26970 26971 +48 12908 12909 12910 12911 12912 12913 12950 12951 12952 12953 12954 12955 12956 12957 12958 12959 12960 12961 26846 26847 26848 26849 26850 26851 26792 26793 26794 26795 26796 26797 30476 30477 30478 30479 30480 30481 26960 26961 26962 26963 26964 26965 26990 26991 26992 26993 26994 26995 +48 27134 27135 27136 27137 27138 27139 30482 30483 30484 30485 30486 30487 26960 26961 26962 26963 26964 26965 26966 26967 26968 26969 26970 26971 26972 26973 26974 26975 26976 26977 32144 32145 32146 32147 32148 32149 27146 27147 27148 27149 27150 27151 27140 27141 27142 27143 27144 27145 +48 12860 12861 12862 12863 12864 12865 12902 12903 12904 12905 12906 12907 12908 12909 12910 12911 12912 12913 26990 26991 26992 26993 26994 26995 26960 26961 26962 26963 26964 26965 30482 30483 30484 30485 30486 30487 27134 27135 27136 27137 27138 27139 27164 27165 27166 27167 27168 27169 +48 27302 27303 27304 27305 27306 27307 30488 30489 30490 30491 30492 30493 27134 27135 27136 27137 27138 27139 27140 27141 27142 27143 27144 27145 27146 27147 27148 27149 27150 27151 32150 32151 32152 32153 32154 32155 27314 27315 27316 27317 27318 27319 27308 27309 27310 27311 27312 27313 +48 12812 12813 12814 12815 12816 12817 12854 12855 12856 12857 12858 12859 12860 12861 12862 12863 12864 12865 27164 27165 27166 27167 27168 27169 27134 27135 27136 27137 27138 27139 30488 30489 30490 30491 30492 30493 27302 27303 27304 27305 27306 27307 27356 27357 27358 27359 27360 27361 +48 27482 27483 27484 27485 27486 27487 30494 30495 30496 30497 30498 30499 27302 27303 27304 27305 27306 27307 27308 27309 27310 27311 27312 27313 27314 27315 27316 27317 27318 27319 32156 32157 32158 32159 32160 32161 27494 27495 27496 27497 27498 27499 27488 27489 27490 27491 27492 27493 +48 12764 12765 12766 12767 12768 12769 12806 12807 12808 12809 12810 12811 12812 12813 12814 12815 12816 12817 27356 27357 27358 27359 27360 27361 27302 27303 27304 27305 27306 27307 30494 30495 30496 30497 30498 30499 27482 27483 27484 27485 27486 27487 27512 27513 27514 27515 27516 27517 +48 27662 27663 27664 27665 27666 27667 30500 30501 30502 30503 30504 30505 27482 27483 27484 27485 27486 27487 27488 27489 27490 27491 27492 27493 27494 27495 27496 27497 27498 27499 32162 32163 32164 32165 32166 32167 27674 27675 27676 27677 27678 27679 27668 27669 27670 27671 27672 27673 +48 12716 12717 12718 12719 12720 12721 12758 12759 12760 12761 12762 12763 12764 12765 12766 12767 12768 12769 27512 27513 27514 27515 27516 27517 27482 27483 27484 27485 27486 27487 30500 30501 30502 30503 30504 30505 27662 27663 27664 27665 27666 27667 27692 27693 27694 27695 27696 27697 +48 27824 27825 27826 27827 27828 27829 30506 30507 30508 30509 30510 30511 27662 27663 27664 27665 27666 27667 27668 27669 27670 27671 27672 27673 27674 27675 27676 27677 27678 27679 32168 32169 32170 32171 32172 32173 27836 27837 27838 27839 27840 27841 27830 27831 27832 27833 27834 27835 +48 12668 12669 12670 12671 12672 12673 12710 12711 12712 12713 12714 12715 12716 12717 12718 12719 12720 12721 27692 27693 27694 27695 27696 27697 27662 27663 27664 27665 27666 27667 30506 30507 30508 30509 30510 30511 27824 27825 27826 27827 27828 27829 27878 27879 27880 27881 27882 27883 +48 27992 27993 27994 27995 27996 27997 30512 30513 30514 30515 30516 30517 27824 27825 27826 27827 27828 27829 27830 27831 27832 27833 27834 27835 27836 27837 27838 27839 27840 27841 32174 32175 32176 32177 32178 32179 28004 28005 28006 28007 28008 28009 27998 27999 28000 28001 28002 28003 +48 12620 12621 12622 12623 12624 12625 12662 12663 12664 12665 12666 12667 12668 12669 12670 12671 12672 12673 27878 27879 27880 27881 27882 27883 27824 27825 27826 27827 27828 27829 30512 30513 30514 30515 30516 30517 27992 27993 27994 27995 27996 27997 28022 28023 28024 28025 28026 28027 +48 28166 28167 28168 28169 28170 28171 30518 30519 30520 30521 30522 30523 27992 27993 27994 27995 27996 27997 27998 27999 28000 28001 28002 28003 28004 28005 28006 28007 28008 28009 32180 32181 32182 32183 32184 32185 28178 28179 28180 28181 28182 28183 28172 28173 28174 28175 28176 28177 +48 12572 12573 12574 12575 12576 12577 12614 12615 12616 12617 12618 12619 12620 12621 12622 12623 12624 12625 28022 28023 28024 28025 28026 28027 27992 27993 27994 27995 27996 27997 30518 30519 30520 30521 30522 30523 28166 28167 28168 28169 28170 28171 28196 28197 28198 28199 28200 28201 +48 28334 28335 28336 28337 28338 28339 30524 30525 30526 30527 30528 30529 28166 28167 28168 28169 28170 28171 28172 28173 28174 28175 28176 28177 28178 28179 28180 28181 28182 28183 32186 32187 32188 32189 32190 32191 28346 28347 28348 28349 28350 28351 28340 28341 28342 28343 28344 28345 +48 12524 12525 12526 12527 12528 12529 12566 12567 12568 12569 12570 12571 12572 12573 12574 12575 12576 12577 28196 28197 28198 28199 28200 28201 28166 28167 28168 28169 28170 28171 30524 30525 30526 30527 30528 30529 28334 28335 28336 28337 28338 28339 28388 28389 28390 28391 28392 28393 +48 28478 28479 28480 28481 28482 28483 30530 30531 30532 30533 30534 30535 28334 28335 28336 28337 28338 28339 28340 28341 28342 28343 28344 28345 28346 28347 28348 28349 28350 28351 32192 32193 32194 32195 32196 32197 28490 28491 28492 28493 28494 28495 28484 28485 28486 28487 28488 28489 +48 12476 12477 12478 12479 12480 12481 12518 12519 12520 12521 12522 12523 12524 12525 12526 12527 12528 12529 28388 28389 28390 28391 28392 28393 28334 28335 28336 28337 28338 28339 30530 30531 30532 30533 30534 30535 28478 28479 28480 28481 28482 28483 28508 28509 28510 28511 28512 28513 +48 961 962 963 964 965 966 30536 30537 30538 30539 30540 30541 28478 28479 28480 28481 28482 28483 28484 28485 28486 28487 28488 28489 28490 28491 28492 28493 28494 28495 32198 32199 32200 32201 32202 32203 28616 28617 28618 28619 28620 28621 28610 28611 28612 28613 28614 28615 +48 12434 12435 12436 12437 12438 12439 12470 12471 12472 12473 12474 12475 12476 12477 12478 12479 12480 12481 28508 28509 28510 28511 28512 28513 28478 28479 28480 28481 28482 28483 30536 30537 30538 30539 30540 30541 961 962 963 964 965 966 28658 28659 28660 28661 28662 28663 +48 967 968 969 970 971 972 30542 30543 30544 30545 30546 30547 961 962 963 964 965 966 28610 28611 28612 28613 28614 28615 28616 28617 28618 28619 28620 28621 32204 32205 32206 32207 32208 32209 28742 28743 28744 28745 28746 28747 28736 28737 28738 28739 28740 28741 +48 12392 12393 12394 12395 12396 12397 12428 12429 12430 12431 12432 12433 12434 12435 12436 12437 12438 12439 28658 28659 28660 28661 28662 28663 961 962 963 964 965 966 30542 30543 30544 30545 30546 30547 967 968 969 970 971 972 28784 28785 28786 28787 28788 28789 +48 973 974 975 976 977 978 30548 30549 30550 30551 30552 30553 967 968 969 970 971 972 28736 28737 28738 28739 28740 28741 28742 28743 28744 28745 28746 28747 32210 32211 32212 32213 32214 32215 28868 28869 28870 28871 28872 28873 28862 28863 28864 28865 28866 28867 +48 12350 12351 12352 12353 12354 12355 12386 12387 12388 12389 12390 12391 12392 12393 12394 12395 12396 12397 28784 28785 28786 28787 28788 28789 967 968 969 970 971 972 30548 30549 30550 30551 30552 30553 973 974 975 976 977 978 28910 28911 28912 28913 28914 28915 +48 979 980 981 982 983 984 30554 30555 30556 30557 30558 30559 973 974 975 976 977 978 28862 28863 28864 28865 28866 28867 28868 28869 28870 28871 28872 28873 32216 32217 32218 32219 32220 32221 29006 29007 29008 29009 29010 29011 29000 29001 29002 29003 29004 29005 +48 12308 12309 12310 12311 12312 12313 12344 12345 12346 12347 12348 12349 12350 12351 12352 12353 12354 12355 28910 28911 28912 28913 28914 28915 973 974 975 976 977 978 30554 30555 30556 30557 30558 30559 979 980 981 982 983 984 29048 29049 29050 29051 29052 29053 +48 985 986 987 988 989 990 30560 30561 30562 30563 30564 30565 979 980 981 982 983 984 29000 29001 29002 29003 29004 29005 29006 29007 29008 29009 29010 29011 32222 32223 32224 32225 32226 32227 29162 29163 29164 29165 29166 29167 29156 29157 29158 29159 29160 29161 +48 12266 12267 12268 12269 12270 12271 12302 12303 12304 12305 12306 12307 12308 12309 12310 12311 12312 12313 29048 29049 29050 29051 29052 29053 979 980 981 982 983 984 30560 30561 30562 30563 30564 30565 985 986 987 988 989 990 29204 29205 29206 29207 29208 29209 +48 991 992 993 994 995 996 30566 30567 30568 30569 30570 30571 985 986 987 988 989 990 29156 29157 29158 29159 29160 29161 29162 29163 29164 29165 29166 29167 32228 32229 32230 32231 32232 32233 29318 29319 29320 29321 29322 29323 29312 29313 29314 29315 29316 29317 +48 12200 12201 12202 12203 12204 12205 12260 12261 12262 12263 12264 12265 12266 12267 12268 12269 12270 12271 29204 29205 29206 29207 29208 29209 985 986 987 988 989 990 30566 30567 30568 30569 30570 30571 991 992 993 994 995 996 29360 29361 29362 29363 29364 29365 +48 29474 29475 29476 29477 29478 29479 30572 30573 30574 30575 30576 30577 991 992 993 994 995 996 29312 29313 29314 29315 29316 29317 29318 29319 29320 29321 29322 29323 32234 32235 32236 32237 32238 32239 29486 29487 29488 29489 29490 29491 29480 29481 29482 29483 29484 29485 +48 12188 12189 12190 12191 12192 12193 12194 12195 12196 12197 12198 12199 12200 12201 12202 12203 12204 12205 29360 29361 29362 29363 29364 29365 991 992 993 994 995 996 30572 30573 30574 30575 30576 30577 29474 29475 29476 29477 29478 29479 29504 29505 29506 29507 29508 29509 +48 22820 22821 22822 22823 22824 22825 30074 30075 30076 30077 30078 30079 22646 22647 22648 22649 22650 22651 22652 22653 22654 22655 22656 22657 22658 22659 22660 22661 22662 22663 31730 31731 31732 31733 31734 31735 22832 22833 22834 22835 22836 22837 22826 22827 22828 22829 22830 22831 +48 23000 23001 23002 23003 23004 23005 30080 30081 30082 30083 30084 30085 22820 22821 22822 22823 22824 22825 22826 22827 22828 22829 22830 22831 22832 22833 22834 22835 22836 22837 31736 31737 31738 31739 31740 31741 23012 23013 23014 23015 23016 23017 23006 23007 23008 23009 23010 23011 +48 12098 12099 12100 12101 12102 12103 12104 12105 12106 12107 12108 12109 12110 12111 12112 12113 12114 12115 22850 22851 22852 22853 22854 22855 22820 22821 22822 22823 22824 22825 30080 30081 30082 30083 30084 30085 23000 23001 23002 23003 23004 23005 23030 23031 23032 23033 23034 23035 +48 23168 23169 23170 23171 23172 23173 30086 30087 30088 30089 30090 30091 23000 23001 23002 23003 23004 23005 23006 23007 23008 23009 23010 23011 23012 23013 23014 23015 23016 23017 31742 31743 31744 31745 31746 31747 23180 23181 23182 23183 23184 23185 23174 23175 23176 23177 23178 23179 +48 23336 23337 23338 23339 23340 23341 30092 30093 30094 30095 30096 30097 23168 23169 23170 23171 23172 23173 23174 23175 23176 23177 23178 23179 23180 23181 23182 23183 23184 23185 31748 31749 31750 31751 31752 31753 23348 23349 23350 23351 23352 23353 23342 23343 23344 23345 23346 23347 +48 23516 23517 23518 23519 23520 23521 30098 30099 30100 30101 30102 30103 23336 23337 23338 23339 23340 23341 23342 23343 23344 23345 23346 23347 23348 23349 23350 23351 23352 23353 31754 31755 31756 31757 31758 31759 23528 23529 23530 23531 23532 23533 23522 23523 23524 23525 23526 23527 +48 11978 11979 11980 11981 11982 11983 11984 11985 11986 11987 11988 11989 11990 11991 11992 11993 11994 11995 23402 23403 23404 23405 23406 23407 23336 23337 23338 23339 23340 23341 30098 30099 30100 30101 30102 30103 23516 23517 23518 23519 23520 23521 23546 23547 23548 23549 23550 23551 +48 23684 23685 23686 23687 23688 23689 30104 30105 30106 30107 30108 30109 23516 23517 23518 23519 23520 23521 23522 23523 23524 23525 23526 23527 23528 23529 23530 23531 23532 23533 31760 31761 31762 31763 31764 31765 23696 23697 23698 23699 23700 23701 23690 23691 23692 23693 23694 23695 +48 23852 23853 23854 23855 23856 23857 30110 30111 30112 30113 30114 30115 23684 23685 23686 23687 23688 23689 23690 23691 23692 23693 23694 23695 23696 23697 23698 23699 23700 23701 31766 31767 31768 31769 31770 31771 23864 23865 23866 23867 23868 23869 23858 23859 23860 23861 23862 23863 +48 24026 24027 24028 24029 24030 24031 30116 30117 30118 30119 30120 30121 23852 23853 23854 23855 23856 23857 23858 23859 23860 23861 23862 23863 23864 23865 23866 23867 23868 23869 31772 31773 31774 31775 31776 31777 24038 24039 24040 24041 24042 24043 24032 24033 24034 24035 24036 24037 +48 11858 11859 11860 11861 11862 11863 11864 11865 11866 11867 11868 11869 11870 11871 11872 11873 11874 11875 23918 23919 23920 23921 23922 23923 23852 23853 23854 23855 23856 23857 30116 30117 30118 30119 30120 30121 24026 24027 24028 24029 24030 24031 24092 24093 24094 24095 24096 24097 +48 24194 24195 24196 24197 24198 24199 30122 30123 30124 30125 30126 30127 24026 24027 24028 24029 24030 24031 24032 24033 24034 24035 24036 24037 24038 24039 24040 24041 24042 24043 31778 31779 31780 31781 31782 31783 24206 24207 24208 24209 24210 24211 24200 24201 24202 24203 24204 24205 +48 24362 24363 24364 24365 24366 24367 30128 30129 30130 30131 30132 30133 24194 24195 24196 24197 24198 24199 24200 24201 24202 24203 24204 24205 24206 24207 24208 24209 24210 24211 31784 31785 31786 31787 31788 31789 24374 24375 24376 24377 24378 24379 24368 24369 24370 24371 24372 24373 +48 24542 24543 24544 24545 24546 24547 30134 30135 30136 30137 30138 30139 24362 24363 24364 24365 24366 24367 24368 24369 24370 24371 24372 24373 24374 24375 24376 24377 24378 24379 31790 31791 31792 31793 31794 31795 24554 24555 24556 24557 24558 24559 24548 24549 24550 24551 24552 24553 +48 11738 11739 11740 11741 11742 11743 11744 11745 11746 11747 11748 11749 11750 11751 11752 11753 11754 11755 24428 24429 24430 24431 24432 24433 24362 24363 24364 24365 24366 24367 30134 30135 30136 30137 30138 30139 24542 24543 24544 24545 24546 24547 24572 24573 24574 24575 24576 24577 +48 24710 24711 24712 24713 24714 24715 30140 30141 30142 30143 30144 30145 24542 24543 24544 24545 24546 24547 24548 24549 24550 24551 24552 24553 24554 24555 24556 24557 24558 24559 31796 31797 31798 31799 31800 31801 24722 24723 24724 24725 24726 24727 24716 24717 24718 24719 24720 24721 +48 24878 24879 24880 24881 24882 24883 30146 30147 30148 30149 30150 30151 24710 24711 24712 24713 24714 24715 24716 24717 24718 24719 24720 24721 24722 24723 24724 24725 24726 24727 31802 31803 31804 31805 31806 31807 24890 24891 24892 24893 24894 24895 24884 24885 24886 24887 24888 24889 +48 25052 25053 25054 25055 25056 25057 30152 30153 30154 30155 30156 30157 24878 24879 24880 24881 24882 24883 24884 24885 24886 24887 24888 24889 24890 24891 24892 24893 24894 24895 31808 31809 31810 31811 31812 31813 25064 25065 25066 25067 25068 25069 25058 25059 25060 25061 25062 25063 +48 11618 11619 11620 11621 11622 11623 11624 11625 11626 11627 11628 11629 11630 11631 11632 11633 11634 11635 24944 24945 24946 24947 24948 24949 24878 24879 24880 24881 24882 24883 30152 30153 30154 30155 30156 30157 25052 25053 25054 25055 25056 25057 25118 25119 25120 25121 25122 25123 +48 25220 25221 25222 25223 25224 25225 30158 30159 30160 30161 30162 30163 25052 25053 25054 25055 25056 25057 25058 25059 25060 25061 25062 25063 25064 25065 25066 25067 25068 25069 31814 31815 31816 31817 31818 31819 25232 25233 25234 25235 25236 25237 25226 25227 25228 25229 25230 25231 +48 25388 25389 25390 25391 25392 25393 30164 30165 30166 30167 30168 30169 25220 25221 25222 25223 25224 25225 25226 25227 25228 25229 25230 25231 25232 25233 25234 25235 25236 25237 31820 31821 31822 31823 31824 31825 25400 25401 25402 25403 25404 25405 25394 25395 25396 25397 25398 25399 +48 25568 25569 25570 25571 25572 25573 30170 30171 30172 30173 30174 30175 25388 25389 25390 25391 25392 25393 25394 25395 25396 25397 25398 25399 25400 25401 25402 25403 25404 25405 31826 31827 31828 31829 31830 31831 25580 25581 25582 25583 25584 25585 25574 25575 25576 25577 25578 25579 +48 11498 11499 11500 11501 11502 11503 11504 11505 11506 11507 11508 11509 11510 11511 11512 11513 11514 11515 25454 25455 25456 25457 25458 25459 25388 25389 25390 25391 25392 25393 30170 30171 30172 30173 30174 30175 25568 25569 25570 25571 25572 25573 25598 25599 25600 25601 25602 25603 +48 25736 25737 25738 25739 25740 25741 30176 30177 30178 30179 30180 30181 25568 25569 25570 25571 25572 25573 25574 25575 25576 25577 25578 25579 25580 25581 25582 25583 25584 25585 31832 31833 31834 31835 31836 31837 25748 25749 25750 25751 25752 25753 25742 25743 25744 25745 25746 25747 +48 25904 25905 25906 25907 25908 25909 30182 30183 30184 30185 30186 30187 25736 25737 25738 25739 25740 25741 25742 25743 25744 25745 25746 25747 25748 25749 25750 25751 25752 25753 31838 31839 31840 31841 31842 31843 25916 25917 25918 25919 25920 25921 25910 25911 25912 25913 25914 25915 +48 26078 26079 26080 26081 26082 26083 30188 30189 30190 30191 30192 30193 25904 25905 25906 25907 25908 25909 25910 25911 25912 25913 25914 25915 25916 25917 25918 25919 25920 25921 31844 31845 31846 31847 31848 31849 26090 26091 26092 26093 26094 26095 26084 26085 26086 26087 26088 26089 +48 11378 11379 11380 11381 11382 11383 11384 11385 11386 11387 11388 11389 11390 11391 11392 11393 11394 11395 25970 25971 25972 25973 25974 25975 25904 25905 25906 25907 25908 25909 30188 30189 30190 30191 30192 30193 26078 26079 26080 26081 26082 26083 26144 26145 26146 26147 26148 26149 +48 26246 26247 26248 26249 26250 26251 30194 30195 30196 30197 30198 30199 26078 26079 26080 26081 26082 26083 26084 26085 26086 26087 26088 26089 26090 26091 26092 26093 26094 26095 31850 31851 31852 31853 31854 31855 26258 26259 26260 26261 26262 26263 26252 26253 26254 26255 26256 26257 +48 26414 26415 26416 26417 26418 26419 30200 30201 30202 30203 30204 30205 26246 26247 26248 26249 26250 26251 26252 26253 26254 26255 26256 26257 26258 26259 26260 26261 26262 26263 31856 31857 31858 31859 31860 31861 26426 26427 26428 26429 26430 26431 26420 26421 26422 26423 26424 26425 +48 26594 26595 26596 26597 26598 26599 30206 30207 30208 30209 30210 30211 26414 26415 26416 26417 26418 26419 26420 26421 26422 26423 26424 26425 26426 26427 26428 26429 26430 26431 31862 31863 31864 31865 31866 31867 26606 26607 26608 26609 26610 26611 26600 26601 26602 26603 26604 26605 +48 11258 11259 11260 11261 11262 11263 11264 11265 11266 11267 11268 11269 11270 11271 11272 11273 11274 11275 26480 26481 26482 26483 26484 26485 26414 26415 26416 26417 26418 26419 30206 30207 30208 30209 30210 30211 26594 26595 26596 26597 26598 26599 26624 26625 26626 26627 26628 26629 +48 26762 26763 26764 26765 26766 26767 30212 30213 30214 30215 30216 30217 26594 26595 26596 26597 26598 26599 26600 26601 26602 26603 26604 26605 26606 26607 26608 26609 26610 26611 31868 31869 31870 31871 31872 31873 26774 26775 26776 26777 26778 26779 26768 26769 26770 26771 26772 26773 +48 26930 26931 26932 26933 26934 26935 30218 30219 30220 30221 30222 30223 26762 26763 26764 26765 26766 26767 26768 26769 26770 26771 26772 26773 26774 26775 26776 26777 26778 26779 31874 31875 31876 31877 31878 31879 26942 26943 26944 26945 26946 26947 26936 26937 26938 26939 26940 26941 +48 27104 27105 27106 27107 27108 27109 30224 30225 30226 30227 30228 30229 26930 26931 26932 26933 26934 26935 26936 26937 26938 26939 26940 26941 26942 26943 26944 26945 26946 26947 31880 31881 31882 31883 31884 31885 27116 27117 27118 27119 27120 27121 27110 27111 27112 27113 27114 27115 +48 11138 11139 11140 11141 11142 11143 11144 11145 11146 11147 11148 11149 11150 11151 11152 11153 11154 11155 26996 26997 26998 26999 27000 27001 26930 26931 26932 26933 26934 26935 30224 30225 30226 30227 30228 30229 27104 27105 27106 27107 27108 27109 27170 27171 27172 27173 27174 27175 +48 27272 27273 27274 27275 27276 27277 30230 30231 30232 30233 30234 30235 27104 27105 27106 27107 27108 27109 27110 27111 27112 27113 27114 27115 27116 27117 27118 27119 27120 27121 31886 31887 31888 31889 31890 31891 27284 27285 27286 27287 27288 27289 27278 27279 27280 27281 27282 27283 +48 27446 27447 27448 27449 27450 27451 30236 30237 30238 30239 30240 30241 27272 27273 27274 27275 27276 27277 27278 27279 27280 27281 27282 27283 27284 27285 27286 27287 27288 27289 31892 31893 31894 31895 31896 31897 27458 27459 27460 27461 27462 27463 27452 27453 27454 27455 27456 27457 +48 27626 27627 27628 27629 27630 27631 30242 30243 30244 30245 30246 30247 27446 27447 27448 27449 27450 27451 27452 27453 27454 27455 27456 27457 27458 27459 27460 27461 27462 27463 31898 31899 31900 31901 31902 31903 27638 27639 27640 27641 27642 27643 27632 27633 27634 27635 27636 27637 +48 11018 11019 11020 11021 11022 11023 11024 11025 11026 11027 11028 11029 11030 11031 11032 11033 11034 11035 27476 27477 27478 27479 27480 27481 27446 27447 27448 27449 27450 27451 30242 30243 30244 30245 30246 30247 27626 27627 27628 27629 27630 27631 27656 27657 27658 27659 27660 27661 +48 27794 27795 27796 27797 27798 27799 30248 30249 30250 30251 30252 30253 27626 27627 27628 27629 27630 27631 27632 27633 27634 27635 27636 27637 27638 27639 27640 27641 27642 27643 31904 31905 31906 31907 31908 31909 27806 27807 27808 27809 27810 27811 27800 27801 27802 27803 27804 27805 +48 27962 27963 27964 27965 27966 27967 30254 30255 30256 30257 30258 30259 27794 27795 27796 27797 27798 27799 27800 27801 27802 27803 27804 27805 27806 27807 27808 27809 27810 27811 31910 31911 31912 31913 31914 31915 27974 27975 27976 27977 27978 27979 27968 27969 27970 27971 27972 27973 +48 28136 28137 28138 28139 28140 28141 30260 30261 30262 30263 30264 30265 27962 27963 27964 27965 27966 27967 27968 27969 27970 27971 27972 27973 27974 27975 27976 27977 27978 27979 31916 31917 31918 31919 31920 31921 28148 28149 28150 28151 28152 28153 28142 28143 28144 28145 28146 28147 +48 10898 10899 10900 10901 10902 10903 10904 10905 10906 10907 10908 10909 10910 10911 10912 10913 10914 10915 28028 28029 28030 28031 28032 28033 27962 27963 27964 27965 27966 27967 30260 30261 30262 30263 30264 30265 28136 28137 28138 28139 28140 28141 28202 28203 28204 28205 28206 28207 +48 28304 28305 28306 28307 28308 28309 30266 30267 30268 30269 30270 30271 28136 28137 28138 28139 28140 28141 28142 28143 28144 28145 28146 28147 28148 28149 28150 28151 28152 28153 31922 31923 31924 31925 31926 31927 28316 28317 28318 28319 28320 28321 28310 28311 28312 28313 28314 28315 +48 21008 21009 21010 21011 21012 21013 30272 30273 30274 30275 30276 30277 28304 28305 28306 28307 28308 28309 28310 28311 28312 28313 28314 28315 28316 28317 28318 28319 28320 28321 31928 31929 31930 31931 31932 31933 28460 28461 28462 28463 28464 28465 28454 28455 28456 28457 28458 28459 +48 20996 20997 20998 20999 21000 21001 21002 21003 21004 21005 21006 21007 21008 21009 21010 21011 21012 21013 28454 28455 28456 28457 28458 28459 28460 28461 28462 28463 28464 28465 31934 31935 31936 31937 31938 31939 28592 28593 28594 28595 28596 28597 28586 28587 28588 28589 28590 28591 +48 29444 29445 29446 29447 29448 29449 29510 29511 29512 29513 29514 29515 10778 10779 10780 10781 10782 10783 10790 10791 10792 10793 10794 10795 10796 10797 10798 10799 10800 10801 32282 32283 32284 32285 32286 32287 955 956 957 958 959 960 32288 32289 32290 32291 32292 32293 +48 21038 21039 21040 21041 21042 21043 21044 21045 21046 21047 21048 21049 20996 20997 20998 20999 21000 21001 28586 28587 28588 28589 28590 28591 28592 28593 28594 28595 28596 28597 31940 31941 31942 31943 31944 31945 28718 28719 28720 28721 28722 28723 28712 28713 28714 28715 28716 28717 +36 29444 29445 29446 29447 29448 29449 955 956 957 958 959 960 29282 29283 29284 29285 29286 29287 32288 32289 32290 32291 32292 32293 32294 32295 32296 32297 32298 32299 30290 30291 30292 30293 30294 30295 +48 21062 21063 21064 21065 21066 21067 21068 21069 21070 21071 21072 21073 21038 21039 21040 21041 21042 21043 28712 28713 28714 28715 28716 28717 28718 28719 28720 28721 28722 28723 31946 31947 31948 31949 31950 31951 28844 28845 28846 28847 28848 28849 28838 28839 28840 28841 28842 28843 +48 21086 21087 21088 21089 21090 21091 21092 21093 21094 21095 21096 21097 21062 21063 21064 21065 21066 21067 28838 28839 28840 28841 28842 28843 28844 28845 28846 28847 28848 28849 31952 31953 31954 31955 31956 31957 28982 28983 28984 28985 28986 28987 28976 28977 28978 28979 28980 28981 +48 29126 29127 29128 29129 29130 29131 30284 30285 30286 30287 30288 30289 29282 29283 29284 29285 29286 29287 32294 32295 32296 32297 32298 32299 955 956 957 958 959 960 32300 32301 32302 32303 32304 32305 949 950 951 952 953 954 32306 32307 32308 32309 32310 32311 +48 29126 29127 29128 29129 29130 29131 30278 30279 30280 30281 30282 30283 21086 21087 21088 21089 21090 21091 28976 28977 28978 28979 28980 28981 28982 28983 28984 28985 28986 28987 31958 31959 31960 31961 31962 31963 29138 29139 29140 29141 29142 29143 29132 29133 29134 29135 29136 29137 +48 29282 29283 29284 29285 29286 29287 30284 30285 30286 30287 30288 30289 29126 29127 29128 29129 29130 29131 29132 29133 29134 29135 29136 29137 29138 29139 29140 29141 29142 29143 31964 31965 31966 31967 31968 31969 29294 29295 29296 29297 29298 29299 29288 29289 29290 29291 29292 29293 +48 21086 21087 21088 21089 21090 21091 30278 30279 30280 30281 30282 30283 29126 29127 29128 29129 29130 29131 32306 32307 32308 32309 32310 32311 949 950 951 952 953 954 32312 32313 32314 32315 32316 32317 943 944 945 946 947 948 21098 21099 21100 21101 21102 21103 +48 29444 29445 29446 29447 29448 29449 30290 30291 30292 30293 30294 30295 29282 29283 29284 29285 29286 29287 29288 29289 29290 29291 29292 29293 29294 29295 29296 29297 29298 29299 31970 31971 31972 31973 31974 31975 29456 29457 29458 29459 29460 29461 29450 29451 29452 29453 29454 29455 +48 22616 22617 22618 22619 22620 22621 29798 29799 29800 29801 29802 29803 29804 29805 29806 29807 29808 29809 32318 32319 32320 32321 32322 32323 31442 31443 31444 31445 31446 31447 31436 31437 31438 31439 31440 31441 22628 22629 22630 22631 22632 22633 22622 22623 22624 22625 22626 22627 +48 22784 22785 22786 22787 22788 22789 29816 29817 29818 29819 29820 29821 22616 22617 22618 22619 22620 22621 22622 22623 22624 22625 22626 22627 22628 22629 22630 22631 22632 22633 31454 31455 31456 31457 31458 31459 22796 22797 22798 22799 22800 22801 22790 22791 22792 22793 22794 22795 +48 22964 22965 22966 22967 22968 22969 29822 29823 29824 29825 29826 29827 22784 22785 22786 22787 22788 22789 22790 22791 22792 22793 22794 22795 22796 22797 22798 22799 22800 22801 31460 31461 31462 31463 31464 31465 22976 22977 22978 22979 22980 22981 22970 22971 22972 22973 22974 22975 +48 10442 10443 10444 10445 10446 10447 10448 10449 10450 10451 10452 10453 10454 10455 10456 10457 10458 10459 22814 22815 22816 22817 22818 22819 22784 22785 22786 22787 22788 22789 29822 29823 29824 29825 29826 29827 22964 22965 22966 22967 22968 22969 22994 22995 22996 22997 22998 22999 +48 23138 23139 23140 23141 23142 23143 29828 29829 29830 29831 29832 29833 22964 22965 22966 22967 22968 22969 22970 22971 22972 22973 22974 22975 22976 22977 22978 22979 22980 22981 31466 31467 31468 31469 31470 31471 23150 23151 23152 23153 23154 23155 23144 23145 23146 23147 23148 23149 +48 23306 23307 23308 23309 23310 23311 29834 29835 29836 29837 29838 29839 23138 23139 23140 23141 23142 23143 23144 23145 23146 23147 23148 23149 23150 23151 23152 23153 23154 23155 31472 31473 31474 31475 31476 31477 23318 23319 23320 23321 23322 23323 23312 23313 23314 23315 23316 23317 +48 23480 23481 23482 23483 23484 23485 29840 29841 29842 29843 29844 29845 23306 23307 23308 23309 23310 23311 23312 23313 23314 23315 23316 23317 23318 23319 23320 23321 23322 23323 31478 31479 31480 31481 31482 31483 23492 23493 23494 23495 23496 23497 23486 23487 23488 23489 23490 23491 +48 23654 23655 23656 23657 23658 23659 29846 29847 29848 29849 29850 29851 23480 23481 23482 23483 23484 23485 23486 23487 23488 23489 23490 23491 23492 23493 23494 23495 23496 23497 31484 31485 31486 31487 31488 31489 23666 23667 23668 23669 23670 23671 23660 23661 23662 23663 23664 23665 +48 23822 23823 23824 23825 23826 23827 29852 29853 29854 29855 29856 29857 23654 23655 23656 23657 23658 23659 23660 23661 23662 23663 23664 23665 23666 23667 23668 23669 23670 23671 31490 31491 31492 31493 31494 31495 23834 23835 23836 23837 23838 23839 23828 23829 23830 23831 23832 23833 +48 23996 23997 23998 23999 24000 24001 29858 29859 29860 29861 29862 29863 23822 23823 23824 23825 23826 23827 23828 23829 23830 23831 23832 23833 23834 23835 23836 23837 23838 23839 31496 31497 31498 31499 31500 31501 24008 24009 24010 24011 24012 24013 24002 24003 24004 24005 24006 24007 +48 24164 24165 24166 24167 24168 24169 29864 29865 29866 29867 29868 29869 23996 23997 23998 23999 24000 24001 24002 24003 24004 24005 24006 24007 24008 24009 24010 24011 24012 24013 31502 31503 31504 31505 31506 31507 24176 24177 24178 24179 24180 24181 24170 24171 24172 24173 24174 24175 +48 24332 24333 24334 24335 24336 24337 29870 29871 29872 29873 29874 29875 24164 24165 24166 24167 24168 24169 24170 24171 24172 24173 24174 24175 24176 24177 24178 24179 24180 24181 31508 31509 31510 31511 31512 31513 24344 24345 24346 24347 24348 24349 24338 24339 24340 24341 24342 24343 +48 24506 24507 24508 24509 24510 24511 29876 29877 29878 29879 29880 29881 24332 24333 24334 24335 24336 24337 24338 24339 24340 24341 24342 24343 24344 24345 24346 24347 24348 24349 31514 31515 31516 31517 31518 31519 24518 24519 24520 24521 24522 24523 24512 24513 24514 24515 24516 24517 +48 24680 24681 24682 24683 24684 24685 29882 29883 29884 29885 29886 29887 24506 24507 24508 24509 24510 24511 24512 24513 24514 24515 24516 24517 24518 24519 24520 24521 24522 24523 31520 31521 31522 31523 31524 31525 24692 24693 24694 24695 24696 24697 24686 24687 24688 24689 24690 24691 +48 24848 24849 24850 24851 24852 24853 29888 29889 29890 29891 29892 29893 24680 24681 24682 24683 24684 24685 24686 24687 24688 24689 24690 24691 24692 24693 24694 24695 24696 24697 31526 31527 31528 31529 31530 31531 24860 24861 24862 24863 24864 24865 24854 24855 24856 24857 24858 24859 +48 25022 25023 25024 25025 25026 25027 29894 29895 29896 29897 29898 29899 24848 24849 24850 24851 24852 24853 24854 24855 24856 24857 24858 24859 24860 24861 24862 24863 24864 24865 31532 31533 31534 31535 31536 31537 25034 25035 25036 25037 25038 25039 25028 25029 25030 25031 25032 25033 +48 25190 25191 25192 25193 25194 25195 29900 29901 29902 29903 29904 29905 25022 25023 25024 25025 25026 25027 25028 25029 25030 25031 25032 25033 25034 25035 25036 25037 25038 25039 31538 31539 31540 31541 31542 31543 25202 25203 25204 25205 25206 25207 25196 25197 25198 25199 25200 25201 +48 25358 25359 25360 25361 25362 25363 29906 29907 29908 29909 29910 29911 25190 25191 25192 25193 25194 25195 25196 25197 25198 25199 25200 25201 25202 25203 25204 25205 25206 25207 31544 31545 31546 31547 31548 31549 25370 25371 25372 25373 25374 25375 25364 25365 25366 25367 25368 25369 +48 25532 25533 25534 25535 25536 25537 29912 29913 29914 29915 29916 29917 25358 25359 25360 25361 25362 25363 25364 25365 25366 25367 25368 25369 25370 25371 25372 25373 25374 25375 31550 31551 31552 31553 31554 31555 25544 25545 25546 25547 25548 25549 25538 25539 25540 25541 25542 25543 +48 25706 25707 25708 25709 25710 25711 29918 29919 29920 29921 29922 29923 25532 25533 25534 25535 25536 25537 25538 25539 25540 25541 25542 25543 25544 25545 25546 25547 25548 25549 31556 31557 31558 31559 31560 31561 25718 25719 25720 25721 25722 25723 25712 25713 25714 25715 25716 25717 +48 25874 25875 25876 25877 25878 25879 29924 29925 29926 29927 29928 29929 25706 25707 25708 25709 25710 25711 25712 25713 25714 25715 25716 25717 25718 25719 25720 25721 25722 25723 31562 31563 31564 31565 31566 31567 25886 25887 25888 25889 25890 25891 25880 25881 25882 25883 25884 25885 +48 26048 26049 26050 26051 26052 26053 29930 29931 29932 29933 29934 29935 25874 25875 25876 25877 25878 25879 25880 25881 25882 25883 25884 25885 25886 25887 25888 25889 25890 25891 31568 31569 31570 31571 31572 31573 26060 26061 26062 26063 26064 26065 26054 26055 26056 26057 26058 26059 +48 26216 26217 26218 26219 26220 26221 29936 29937 29938 29939 29940 29941 26048 26049 26050 26051 26052 26053 26054 26055 26056 26057 26058 26059 26060 26061 26062 26063 26064 26065 31574 31575 31576 31577 31578 31579 26228 26229 26230 26231 26232 26233 26222 26223 26224 26225 26226 26227 +48 26384 26385 26386 26387 26388 26389 29942 29943 29944 29945 29946 29947 26216 26217 26218 26219 26220 26221 26222 26223 26224 26225 26226 26227 26228 26229 26230 26231 26232 26233 31580 31581 31582 31583 31584 31585 26396 26397 26398 26399 26400 26401 26390 26391 26392 26393 26394 26395 +48 26558 26559 26560 26561 26562 26563 29948 29949 29950 29951 29952 29953 26384 26385 26386 26387 26388 26389 26390 26391 26392 26393 26394 26395 26396 26397 26398 26399 26400 26401 31586 31587 31588 31589 31590 31591 26570 26571 26572 26573 26574 26575 26564 26565 26566 26567 26568 26569 +48 26732 26733 26734 26735 26736 26737 29954 29955 29956 29957 29958 29959 26558 26559 26560 26561 26562 26563 26564 26565 26566 26567 26568 26569 26570 26571 26572 26573 26574 26575 31592 31593 31594 31595 31596 31597 26744 26745 26746 26747 26748 26749 26738 26739 26740 26741 26742 26743 +48 26900 26901 26902 26903 26904 26905 29960 29961 29962 29963 29964 29965 26732 26733 26734 26735 26736 26737 26738 26739 26740 26741 26742 26743 26744 26745 26746 26747 26748 26749 31598 31599 31600 31601 31602 31603 26912 26913 26914 26915 26916 26917 26906 26907 26908 26909 26910 26911 +48 27074 27075 27076 27077 27078 27079 29966 29967 29968 29969 29970 29971 26900 26901 26902 26903 26904 26905 26906 26907 26908 26909 26910 26911 26912 26913 26914 26915 26916 26917 31604 31605 31606 31607 31608 31609 27086 27087 27088 27089 27090 27091 27080 27081 27082 27083 27084 27085 +48 27242 27243 27244 27245 27246 27247 29972 29973 29974 29975 29976 29977 27074 27075 27076 27077 27078 27079 27080 27081 27082 27083 27084 27085 27086 27087 27088 27089 27090 27091 31610 31611 31612 31613 31614 31615 27254 27255 27256 27257 27258 27259 27248 27249 27250 27251 27252 27253 +48 27410 27411 27412 27413 27414 27415 29978 29979 29980 29981 29982 29983 27242 27243 27244 27245 27246 27247 27248 27249 27250 27251 27252 27253 27254 27255 27256 27257 27258 27259 31616 31617 31618 31619 31620 31621 27422 27423 27424 27425 27426 27427 27416 27417 27418 27419 27420 27421 +48 27590 27591 27592 27593 27594 27595 29984 29985 29986 29987 29988 29989 27410 27411 27412 27413 27414 27415 27416 27417 27418 27419 27420 27421 27422 27423 27424 27425 27426 27427 31622 31623 31624 31625 31626 31627 27602 27603 27604 27605 27606 27607 27596 27597 27598 27599 27600 27601 +48 9602 9603 9604 9605 9606 9607 9608 9609 9610 9611 9612 9613 9614 9615 9616 9617 9618 9619 27440 27441 27442 27443 27444 27445 27410 27411 27412 27413 27414 27415 29984 29985 29986 29987 29988 29989 27590 27591 27592 27593 27594 27595 27620 27621 27622 27623 27624 27625 +48 27764 27765 27766 27767 27768 27769 29990 29991 29992 29993 29994 29995 27590 27591 27592 27593 27594 27595 27596 27597 27598 27599 27600 27601 27602 27603 27604 27605 27606 27607 31628 31629 31630 31631 31632 31633 27776 27777 27778 27779 27780 27781 27770 27771 27772 27773 27774 27775 +48 27932 27933 27934 27935 27936 27937 29996 29997 29998 29999 30000 30001 27764 27765 27766 27767 27768 27769 27770 27771 27772 27773 27774 27775 27776 27777 27778 27779 27780 27781 31634 31635 31636 31637 31638 31639 27944 27945 27946 27947 27948 27949 27938 27939 27940 27941 27942 27943 +48 28106 28107 28108 28109 28110 28111 30002 30003 30004 30005 30006 30007 27932 27933 27934 27935 27936 27937 27938 27939 27940 27941 27942 27943 27944 27945 27946 27947 27948 27949 31640 31641 31642 31643 31644 31645 28118 28119 28120 28121 28122 28123 28112 28113 28114 28115 28116 28117 +48 28274 28275 28276 28277 28278 28279 30008 30009 30010 30011 30012 30013 28106 28107 28108 28109 28110 28111 28112 28113 28114 28115 28116 28117 28118 28119 28120 28121 28122 28123 31646 31647 31648 31649 31650 31651 28286 28287 28288 28289 28290 28291 28280 28281 28282 28283 28284 28285 +48 20894 20895 20896 20897 20898 20899 30014 30015 30016 30017 30018 30019 28274 28275 28276 28277 28278 28279 28280 28281 28282 28283 28284 28285 28286 28287 28288 28289 28290 28291 31652 31653 31654 31655 31656 31657 28436 28437 28438 28439 28440 28441 28430 28431 28432 28433 28434 28435 +48 20882 20883 20884 20885 20886 20887 20888 20889 20890 20891 20892 20893 20894 20895 20896 20897 20898 20899 28430 28431 28432 28433 28434 28435 28436 28437 28438 28439 28440 28441 31658 31659 31660 31661 31662 31663 28568 28569 28570 28571 28572 28573 28562 28563 28564 28565 28566 28567 +48 29414 29415 29416 29417 29418 29419 32324 32325 32326 32327 32328 32329 9392 9393 9394 9395 9396 9397 9404 9405 9406 9407 9408 9409 9410 9411 9412 9413 9414 9415 32330 32331 32332 32333 32334 32335 919 920 921 922 923 924 32336 32337 32338 32339 32340 32341 +48 20924 20925 20926 20927 20928 20929 20930 20931 20932 20933 20934 20935 20882 20883 20884 20885 20886 20887 28562 28563 28564 28565 28566 28567 28568 28569 28570 28571 28572 28573 31664 31665 31666 31667 31668 31669 28694 28695 28696 28697 28698 28699 28688 28689 28690 28691 28692 28693 +36 29414 29415 29416 29417 29418 29419 919 920 921 922 923 924 29252 29253 29254 29255 29256 29257 32336 32337 32338 32339 32340 32341 32342 32343 32344 32345 32346 32347 30032 30033 30034 30035 30036 30037 +48 20948 20949 20950 20951 20952 20953 20954 20955 20956 20957 20958 20959 20924 20925 20926 20927 20928 20929 28688 28689 28690 28691 28692 28693 28694 28695 28696 28697 28698 28699 31670 31671 31672 31673 31674 31675 28820 28821 28822 28823 28824 28825 28814 28815 28816 28817 28818 28819 +48 20972 20973 20974 20975 20976 20977 20978 20979 20980 20981 20982 20983 20948 20949 20950 20951 20952 20953 28814 28815 28816 28817 28818 28819 28820 28821 28822 28823 28824 28825 31676 31677 31678 31679 31680 31681 28958 28959 28960 28961 28962 28963 28952 28953 28954 28955 28956 28957 +48 29096 29097 29098 29099 29100 29101 30026 30027 30028 30029 30030 30031 29252 29253 29254 29255 29256 29257 32342 32343 32344 32345 32346 32347 919 920 921 922 923 924 32348 32349 32350 32351 32352 32353 913 914 915 916 917 918 32354 32355 32356 32357 32358 32359 +48 29096 29097 29098 29099 29100 29101 30020 30021 30022 30023 30024 30025 20972 20973 20974 20975 20976 20977 28952 28953 28954 28955 28956 28957 28958 28959 28960 28961 28962 28963 31682 31683 31684 31685 31686 31687 29108 29109 29110 29111 29112 29113 29102 29103 29104 29105 29106 29107 +48 29252 29253 29254 29255 29256 29257 30026 30027 30028 30029 30030 30031 29096 29097 29098 29099 29100 29101 29102 29103 29104 29105 29106 29107 29108 29109 29110 29111 29112 29113 31688 31689 31690 31691 31692 31693 29264 29265 29266 29267 29268 29269 29258 29259 29260 29261 29262 29263 +48 20972 20973 20974 20975 20976 20977 30020 30021 30022 30023 30024 30025 29096 29097 29098 29099 29100 29101 32354 32355 32356 32357 32358 32359 913 914 915 916 917 918 32360 32361 32362 32363 32364 32365 907 908 909 910 911 912 20984 20985 20986 20987 20988 20989 +48 29414 29415 29416 29417 29418 29419 30032 30033 30034 30035 30036 30037 29252 29253 29254 29255 29256 29257 29258 29259 29260 29261 29262 29263 29264 29265 29266 29267 29268 29269 31694 31695 31696 31697 31698 31699 29426 29427 29428 29429 29430 29431 29420 29421 29422 29423 29424 29425 +48 30038 30039 30040 30041 30042 30043 30044 30045 30046 30047 30048 30049 29414 29415 29416 29417 29418 29419 29420 29421 29422 29423 29424 29425 29426 29427 29428 29429 29430 29431 31706 31707 31708 31709 31710 31711 31700 31701 31702 31703 31704 31705 32366 32367 32368 32369 32370 32371 +48 22574 22575 22576 22577 22578 22579 29540 29541 29542 29543 29544 29545 29546 29547 29548 29549 29550 29551 32372 32373 32374 32375 32376 32377 30914 30915 30916 30917 30918 30919 30908 30909 30910 30911 30912 30913 22586 22587 22588 22589 22590 22591 22580 22581 22582 22583 22584 22585 +48 22736 22737 22738 22739 22740 22741 29558 29559 29560 29561 29562 29563 22574 22575 22576 22577 22578 22579 22580 22581 22582 22583 22584 22585 22586 22587 22588 22589 22590 22591 30926 30927 30928 30929 30930 30931 22748 22749 22750 22751 22752 22753 22742 22743 22744 22745 22746 22747 +48 22916 22917 22918 22919 22920 22921 29564 29565 29566 29567 29568 29569 22736 22737 22738 22739 22740 22741 22742 22743 22744 22745 22746 22747 22748 22749 22750 22751 22752 22753 30938 30939 30940 30941 30942 30943 22928 22929 22930 22931 22932 22933 22922 22923 22924 22925 22926 22927 +48 9044 9045 9046 9047 9048 9049 9050 9051 9052 9053 9054 9055 9056 9057 9058 9059 9060 9061 22778 22779 22780 22781 22782 22783 22736 22737 22738 22739 22740 22741 29564 29565 29566 29567 29568 29569 22916 22917 22918 22919 22920 22921 22958 22959 22960 22961 22962 22963 +48 23096 23097 23098 23099 23100 23101 29570 29571 29572 29573 29574 29575 22916 22917 22918 22919 22920 22921 22922 22923 22924 22925 22926 22927 22928 22929 22930 22931 22932 22933 30950 30951 30952 30953 30954 30955 23108 23109 23110 23111 23112 23113 23102 23103 23104 23105 23106 23107 +48 23258 23259 23260 23261 23262 23263 29576 29577 29578 29579 29580 29581 23096 23097 23098 23099 23100 23101 23102 23103 23104 23105 23106 23107 23108 23109 23110 23111 23112 23113 30962 30963 30964 30965 30966 30967 23270 23271 23272 23273 23274 23275 23264 23265 23266 23267 23268 23269 +48 23432 23433 23434 23435 23436 23437 29582 29583 29584 29585 29586 29587 23258 23259 23260 23261 23262 23263 23264 23265 23266 23267 23268 23269 23270 23271 23272 23273 23274 23275 30974 30975 30976 30977 30978 30979 23444 23445 23446 23447 23448 23449 23438 23439 23440 23441 23442 23443 +48 8924 8925 8926 8927 8928 8929 8930 8931 8932 8933 8934 8935 8936 8937 8938 8939 8940 8941 23300 23301 23302 23303 23304 23305 23258 23259 23260 23261 23262 23263 29582 29583 29584 29585 29586 29587 23432 23433 23434 23435 23436 23437 23474 23475 23476 23477 23478 23479 +48 23612 23613 23614 23615 23616 23617 29588 29589 29590 29591 29592 29593 23432 23433 23434 23435 23436 23437 23438 23439 23440 23441 23442 23443 23444 23445 23446 23447 23448 23449 30986 30987 30988 30989 30990 30991 23624 23625 23626 23627 23628 23629 23618 23619 23620 23621 23622 23623 +48 23774 23775 23776 23777 23778 23779 29594 29595 29596 29597 29598 29599 23612 23613 23614 23615 23616 23617 23618 23619 23620 23621 23622 23623 23624 23625 23626 23627 23628 23629 30998 30999 31000 31001 31002 31003 23786 23787 23788 23789 23790 23791 23780 23781 23782 23783 23784 23785 +48 23948 23949 23950 23951 23952 23953 29600 29601 29602 29603 29604 29605 23774 23775 23776 23777 23778 23779 23780 23781 23782 23783 23784 23785 23786 23787 23788 23789 23790 23791 31010 31011 31012 31013 31014 31015 23960 23961 23962 23963 23964 23965 23954 23955 23956 23957 23958 23959 +48 8804 8805 8806 8807 8808 8809 8810 8811 8812 8813 8814 8815 8816 8817 8818 8819 8820 8821 23816 23817 23818 23819 23820 23821 23774 23775 23776 23777 23778 23779 29600 29601 29602 29603 29604 29605 23948 23949 23950 23951 23952 23953 23990 23991 23992 23993 23994 23995 +48 24122 24123 24124 24125 24126 24127 29606 29607 29608 29609 29610 29611 23948 23949 23950 23951 23952 23953 23954 23955 23956 23957 23958 23959 23960 23961 23962 23963 23964 23965 31022 31023 31024 31025 31026 31027 24134 24135 24136 24137 24138 24139 24128 24129 24130 24131 24132 24133 +48 24284 24285 24286 24287 24288 24289 29612 29613 29614 29615 29616 29617 24122 24123 24124 24125 24126 24127 24128 24129 24130 24131 24132 24133 24134 24135 24136 24137 24138 24139 31034 31035 31036 31037 31038 31039 24296 24297 24298 24299 24300 24301 24290 24291 24292 24293 24294 24295 +48 24458 24459 24460 24461 24462 24463 29618 29619 29620 29621 29622 29623 24284 24285 24286 24287 24288 24289 24290 24291 24292 24293 24294 24295 24296 24297 24298 24299 24300 24301 31046 31047 31048 31049 31050 31051 24470 24471 24472 24473 24474 24475 24464 24465 24466 24467 24468 24469 +48 8684 8685 8686 8687 8688 8689 8690 8691 8692 8693 8694 8695 8696 8697 8698 8699 8700 8701 24326 24327 24328 24329 24330 24331 24284 24285 24286 24287 24288 24289 29618 29619 29620 29621 29622 29623 24458 24459 24460 24461 24462 24463 24500 24501 24502 24503 24504 24505 +48 24638 24639 24640 24641 24642 24643 29624 29625 29626 29627 29628 29629 24458 24459 24460 24461 24462 24463 24464 24465 24466 24467 24468 24469 24470 24471 24472 24473 24474 24475 31058 31059 31060 31061 31062 31063 24650 24651 24652 24653 24654 24655 24644 24645 24646 24647 24648 24649 +48 24800 24801 24802 24803 24804 24805 29630 29631 29632 29633 29634 29635 24638 24639 24640 24641 24642 24643 24644 24645 24646 24647 24648 24649 24650 24651 24652 24653 24654 24655 31070 31071 31072 31073 31074 31075 24812 24813 24814 24815 24816 24817 24806 24807 24808 24809 24810 24811 +48 24974 24975 24976 24977 24978 24979 29636 29637 29638 29639 29640 29641 24800 24801 24802 24803 24804 24805 24806 24807 24808 24809 24810 24811 24812 24813 24814 24815 24816 24817 31082 31083 31084 31085 31086 31087 24986 24987 24988 24989 24990 24991 24980 24981 24982 24983 24984 24985 +48 8564 8565 8566 8567 8568 8569 8570 8571 8572 8573 8574 8575 8576 8577 8578 8579 8580 8581 24842 24843 24844 24845 24846 24847 24800 24801 24802 24803 24804 24805 29636 29637 29638 29639 29640 29641 24974 24975 24976 24977 24978 24979 25016 25017 25018 25019 25020 25021 +48 25148 25149 25150 25151 25152 25153 29642 29643 29644 29645 29646 29647 24974 24975 24976 24977 24978 24979 24980 24981 24982 24983 24984 24985 24986 24987 24988 24989 24990 24991 31094 31095 31096 31097 31098 31099 25160 25161 25162 25163 25164 25165 25154 25155 25156 25157 25158 25159 +48 25310 25311 25312 25313 25314 25315 29648 29649 29650 29651 29652 29653 25148 25149 25150 25151 25152 25153 25154 25155 25156 25157 25158 25159 25160 25161 25162 25163 25164 25165 31106 31107 31108 31109 31110 31111 25322 25323 25324 25325 25326 25327 25316 25317 25318 25319 25320 25321 +48 25484 25485 25486 25487 25488 25489 29654 29655 29656 29657 29658 29659 25310 25311 25312 25313 25314 25315 25316 25317 25318 25319 25320 25321 25322 25323 25324 25325 25326 25327 31118 31119 31120 31121 31122 31123 25496 25497 25498 25499 25500 25501 25490 25491 25492 25493 25494 25495 +48 8444 8445 8446 8447 8448 8449 8450 8451 8452 8453 8454 8455 8456 8457 8458 8459 8460 8461 25352 25353 25354 25355 25356 25357 25310 25311 25312 25313 25314 25315 29654 29655 29656 29657 29658 29659 25484 25485 25486 25487 25488 25489 25526 25527 25528 25529 25530 25531 +48 25664 25665 25666 25667 25668 25669 29660 29661 29662 29663 29664 29665 25484 25485 25486 25487 25488 25489 25490 25491 25492 25493 25494 25495 25496 25497 25498 25499 25500 25501 31130 31131 31132 31133 31134 31135 25676 25677 25678 25679 25680 25681 25670 25671 25672 25673 25674 25675 +48 25826 25827 25828 25829 25830 25831 29666 29667 29668 29669 29670 29671 25664 25665 25666 25667 25668 25669 25670 25671 25672 25673 25674 25675 25676 25677 25678 25679 25680 25681 31142 31143 31144 31145 31146 31147 25838 25839 25840 25841 25842 25843 25832 25833 25834 25835 25836 25837 +48 26000 26001 26002 26003 26004 26005 29672 29673 29674 29675 29676 29677 25826 25827 25828 25829 25830 25831 25832 25833 25834 25835 25836 25837 25838 25839 25840 25841 25842 25843 31154 31155 31156 31157 31158 31159 26012 26013 26014 26015 26016 26017 26006 26007 26008 26009 26010 26011 +48 8324 8325 8326 8327 8328 8329 8330 8331 8332 8333 8334 8335 8336 8337 8338 8339 8340 8341 25868 25869 25870 25871 25872 25873 25826 25827 25828 25829 25830 25831 29672 29673 29674 29675 29676 29677 26000 26001 26002 26003 26004 26005 26042 26043 26044 26045 26046 26047 +48 26174 26175 26176 26177 26178 26179 29678 29679 29680 29681 29682 29683 26000 26001 26002 26003 26004 26005 26006 26007 26008 26009 26010 26011 26012 26013 26014 26015 26016 26017 31166 31167 31168 31169 31170 31171 26186 26187 26188 26189 26190 26191 26180 26181 26182 26183 26184 26185 +48 26336 26337 26338 26339 26340 26341 29684 29685 29686 29687 29688 29689 26174 26175 26176 26177 26178 26179 26180 26181 26182 26183 26184 26185 26186 26187 26188 26189 26190 26191 31178 31179 31180 31181 31182 31183 26348 26349 26350 26351 26352 26353 26342 26343 26344 26345 26346 26347 +48 26510 26511 26512 26513 26514 26515 29690 29691 29692 29693 29694 29695 26336 26337 26338 26339 26340 26341 26342 26343 26344 26345 26346 26347 26348 26349 26350 26351 26352 26353 31190 31191 31192 31193 31194 31195 26522 26523 26524 26525 26526 26527 26516 26517 26518 26519 26520 26521 +48 8204 8205 8206 8207 8208 8209 8210 8211 8212 8213 8214 8215 8216 8217 8218 8219 8220 8221 26378 26379 26380 26381 26382 26383 26336 26337 26338 26339 26340 26341 29690 29691 29692 29693 29694 29695 26510 26511 26512 26513 26514 26515 26552 26553 26554 26555 26556 26557 +48 26690 26691 26692 26693 26694 26695 29696 29697 29698 29699 29700 29701 26510 26511 26512 26513 26514 26515 26516 26517 26518 26519 26520 26521 26522 26523 26524 26525 26526 26527 31202 31203 31204 31205 31206 31207 26702 26703 26704 26705 26706 26707 26696 26697 26698 26699 26700 26701 +48 26852 26853 26854 26855 26856 26857 29702 29703 29704 29705 29706 29707 26690 26691 26692 26693 26694 26695 26696 26697 26698 26699 26700 26701 26702 26703 26704 26705 26706 26707 31214 31215 31216 31217 31218 31219 26864 26865 26866 26867 26868 26869 26858 26859 26860 26861 26862 26863 +48 27026 27027 27028 27029 27030 27031 29708 29709 29710 29711 29712 29713 26852 26853 26854 26855 26856 26857 26858 26859 26860 26861 26862 26863 26864 26865 26866 26867 26868 26869 31226 31227 31228 31229 31230 31231 27038 27039 27040 27041 27042 27043 27032 27033 27034 27035 27036 27037 +48 8084 8085 8086 8087 8088 8089 8090 8091 8092 8093 8094 8095 8096 8097 8098 8099 8100 8101 26894 26895 26896 26897 26898 26899 26852 26853 26854 26855 26856 26857 29708 29709 29710 29711 29712 29713 27026 27027 27028 27029 27030 27031 27068 27069 27070 27071 27072 27073 +48 27200 27201 27202 27203 27204 27205 29714 29715 29716 29717 29718 29719 27026 27027 27028 27029 27030 27031 27032 27033 27034 27035 27036 27037 27038 27039 27040 27041 27042 27043 31238 31239 31240 31241 31242 31243 27212 27213 27214 27215 27216 27217 27206 27207 27208 27209 27210 27211 +48 27362 27363 27364 27365 27366 27367 29720 29721 29722 29723 29724 29725 27200 27201 27202 27203 27204 27205 27206 27207 27208 27209 27210 27211 27212 27213 27214 27215 27216 27217 31250 31251 31252 31253 31254 31255 27374 27375 27376 27377 27378 27379 27368 27369 27370 27371 27372 27373 +48 27542 27543 27544 27545 27546 27547 29726 29727 29728 29729 29730 29731 27362 27363 27364 27365 27366 27367 27368 27369 27370 27371 27372 27373 27374 27375 27376 27377 27378 27379 31262 31263 31264 31265 31266 31267 27554 27555 27556 27557 27558 27559 27548 27549 27550 27551 27552 27553 +48 7964 7965 7966 7967 7968 7969 7970 7971 7972 7973 7974 7975 7976 7977 7978 7979 7980 7981 27404 27405 27406 27407 27408 27409 27362 27363 27364 27365 27366 27367 29726 29727 29728 29729 29730 29731 27542 27543 27544 27545 27546 27547 27584 27585 27586 27587 27588 27589 +48 27722 27723 27724 27725 27726 27727 29732 29733 29734 29735 29736 29737 27542 27543 27544 27545 27546 27547 27548 27549 27550 27551 27552 27553 27554 27555 27556 27557 27558 27559 31274 31275 31276 31277 31278 31279 27734 27735 27736 27737 27738 27739 27728 27729 27730 27731 27732 27733 +48 27884 27885 27886 27887 27888 27889 29738 29739 29740 29741 29742 29743 27722 27723 27724 27725 27726 27727 27728 27729 27730 27731 27732 27733 27734 27735 27736 27737 27738 27739 31286 31287 31288 31289 31290 31291 27896 27897 27898 27899 27900 27901 27890 27891 27892 27893 27894 27895 +48 28058 28059 28060 28061 28062 28063 29744 29745 29746 29747 29748 29749 27884 27885 27886 27887 27888 27889 27890 27891 27892 27893 27894 27895 27896 27897 27898 27899 27900 27901 31298 31299 31300 31301 31302 31303 28070 28071 28072 28073 28074 28075 28064 28065 28066 28067 28068 28069 +48 7844 7845 7846 7847 7848 7849 7850 7851 7852 7853 7854 7855 7856 7857 7858 7859 7860 7861 27926 27927 27928 27929 27930 27931 27884 27885 27886 27887 27888 27889 29744 29745 29746 29747 29748 29749 28058 28059 28060 28061 28062 28063 28100 28101 28102 28103 28104 28105 +48 28232 28233 28234 28235 28236 28237 29750 29751 29752 29753 29754 29755 28058 28059 28060 28061 28062 28063 28064 28065 28066 28067 28068 28069 28070 28071 28072 28073 28074 28075 31310 31311 31312 31313 31314 31315 28244 28245 28246 28247 28248 28249 28238 28239 28240 28241 28242 28243 +48 20780 20781 20782 20783 20784 20785 29756 29757 29758 29759 29760 29761 28232 28233 28234 28235 28236 28237 28238 28239 28240 28241 28242 28243 28244 28245 28246 28247 28248 28249 31322 31323 31324 31325 31326 31327 28400 28401 28402 28403 28404 28405 28394 28395 28396 28397 28398 28399 +48 20768 20769 20770 20771 20772 20773 20774 20775 20776 20777 20778 20779 20780 20781 20782 20783 20784 20785 28394 28395 28396 28397 28398 28399 28400 28401 28402 28403 28404 28405 31334 31335 31336 31337 31338 31339 28544 28545 28546 28547 28548 28549 28538 28539 28540 28541 28542 28543 +48 29366 29367 29368 29369 29370 29371 29408 29409 29410 29411 29412 29413 7724 7725 7726 7727 7728 7729 7736 7737 7738 7739 7740 7741 7742 7743 7744 7745 7746 7747 32378 32379 32380 32381 32382 32383 877 878 879 880 881 882 32384 32385 32386 32387 32388 32389 +48 20810 20811 20812 20813 20814 20815 20816 20817 20818 20819 20820 20821 20768 20769 20770 20771 20772 20773 28538 28539 28540 28541 28542 28543 28544 28545 28546 28547 28548 28549 31346 31347 31348 31349 31350 31351 28670 28671 28672 28673 28674 28675 28664 28665 28666 28667 28668 28669 +36 29366 29367 29368 29369 29370 29371 877 878 879 880 881 882 29210 29211 29212 29213 29214 29215 32384 32385 32386 32387 32388 32389 32390 32391 32392 32393 32394 32395 29774 29775 29776 29777 29778 29779 +48 20834 20835 20836 20837 20838 20839 20840 20841 20842 20843 20844 20845 20810 20811 20812 20813 20814 20815 28664 28665 28666 28667 28668 28669 28670 28671 28672 28673 28674 28675 31352 31353 31354 31355 31356 31357 28796 28797 28798 28799 28800 28801 28790 28791 28792 28793 28794 28795 +48 20858 20859 20860 20861 20862 20863 20864 20865 20866 20867 20868 20869 20834 20835 20836 20837 20838 20839 28790 28791 28792 28793 28794 28795 28796 28797 28798 28799 28800 28801 31358 31359 31360 31361 31362 31363 28922 28923 28924 28925 28926 28927 28916 28917 28918 28919 28920 28921 +48 29054 29055 29056 29057 29058 29059 29768 29769 29770 29771 29772 29773 29210 29211 29212 29213 29214 29215 32390 32391 32392 32393 32394 32395 877 878 879 880 881 882 32396 32397 32398 32399 32400 32401 865 866 867 868 869 870 32402 32403 32404 32405 32406 32407 +48 29054 29055 29056 29057 29058 29059 29762 29763 29764 29765 29766 29767 20858 20859 20860 20861 20862 20863 28916 28917 28918 28919 28920 28921 28922 28923 28924 28925 28926 28927 31370 31371 31372 31373 31374 31375 29066 29067 29068 29069 29070 29071 29060 29061 29062 29063 29064 29065 +48 29210 29211 29212 29213 29214 29215 29768 29769 29770 29771 29772 29773 29054 29055 29056 29057 29058 29059 29060 29061 29062 29063 29064 29065 29066 29067 29068 29069 29070 29071 31382 31383 31384 31385 31386 31387 29222 29223 29224 29225 29226 29227 29216 29217 29218 29219 29220 29221 +48 20858 20859 20860 20861 20862 20863 29762 29763 29764 29765 29766 29767 29054 29055 29056 29057 29058 29059 32402 32403 32404 32405 32406 32407 865 866 867 868 869 870 32408 32409 32410 32411 32412 32413 853 854 855 856 857 858 20870 20871 20872 20873 20874 20875 +48 29366 29367 29368 29369 29370 29371 29774 29775 29776 29777 29778 29779 29210 29211 29212 29213 29214 29215 29216 29217 29218 29219 29220 29221 29222 29223 29224 29225 29226 29227 31394 31395 31396 31397 31398 31399 29378 29379 29380 29381 29382 29383 29372 29373 29374 29375 29376 29377 +48 29780 29781 29782 29783 29784 29785 29786 29787 29788 29789 29790 29791 29366 29367 29368 29369 29370 29371 29372 29373 29374 29375 29376 29377 29378 29379 29380 29381 29382 29383 31412 31413 31414 31415 31416 31417 31406 31407 31408 31409 31410 31411 32414 32415 32416 32417 32418 32419 +48 22136 22137 22138 22139 22140 22141 22142 22143 22144 22145 22146 22147 21554 21555 21556 21557 21558 21559 32420 32421 32422 32423 32424 32425 30896 30897 30898 30899 30900 30901 30902 30903 30904 30905 30906 30907 22598 22599 22600 22601 22602 22603 22604 22605 22606 22607 22608 22609 +48 21578 21579 21580 21581 21582 21583 22154 22155 22156 22157 22158 22159 22136 22137 22138 22139 22140 22141 22604 22605 22606 22607 22608 22609 22598 22599 22600 22601 22602 22603 30932 30933 30934 30935 30936 30937 22760 22761 22762 22763 22764 22765 22766 22767 22768 22769 22770 22771 +48 21602 21603 21604 21605 21606 21607 22160 22161 22162 22163 22164 22165 21578 21579 21580 21581 21582 21583 22766 22767 22768 22769 22770 22771 22760 22761 22762 22763 22764 22765 30944 30945 30946 30947 30948 30949 22940 22941 22942 22943 22944 22945 22946 22947 22948 22949 22950 22951 +48 7376 7377 7378 7379 7380 7381 7382 7383 7384 7385 7386 7387 7388 7389 7390 7391 7392 7393 21572 21573 21574 21575 21576 21577 21578 21579 21580 21581 21582 21583 22160 22161 22162 22163 22164 22165 21602 21603 21604 21605 21606 21607 21596 21597 21598 21599 21600 21601 +48 22166 22167 22168 22169 22170 22171 22172 22173 22174 22175 22176 22177 21602 21603 21604 21605 21606 21607 22946 22947 22948 22949 22950 22951 22940 22941 22942 22943 22944 22945 30956 30957 30958 30959 30960 30961 23120 23121 23122 23123 23124 23125 23126 23127 23128 23129 23130 23131 +48 21626 21627 21628 21629 21630 21631 22184 22185 22186 22187 22188 22189 22166 22167 22168 22169 22170 22171 23126 23127 23128 23129 23130 23131 23120 23121 23122 23123 23124 23125 30968 30969 30970 30971 30972 30973 23282 23283 23284 23285 23286 23287 23288 23289 23290 23291 23292 23293 +48 21650 21651 21652 21653 21654 21655 22190 22191 22192 22193 22194 22195 21626 21627 21628 21629 21630 21631 23288 23289 23290 23291 23292 23293 23282 23283 23284 23285 23286 23287 30980 30981 30982 30983 30984 30985 23456 23457 23458 23459 23460 23461 23462 23463 23464 23465 23466 23467 +48 7256 7257 7258 7259 7260 7261 7262 7263 7264 7265 7266 7267 7268 7269 7270 7271 7272 7273 21620 21621 21622 21623 21624 21625 21626 21627 21628 21629 21630 21631 22190 22191 22192 22193 22194 22195 21650 21651 21652 21653 21654 21655 21644 21645 21646 21647 21648 21649 +48 22196 22197 22198 22199 22200 22201 22202 22203 22204 22205 22206 22207 21650 21651 21652 21653 21654 21655 23462 23463 23464 23465 23466 23467 23456 23457 23458 23459 23460 23461 30992 30993 30994 30995 30996 30997 23636 23637 23638 23639 23640 23641 23642 23643 23644 23645 23646 23647 +48 21674 21675 21676 21677 21678 21679 22214 22215 22216 22217 22218 22219 22196 22197 22198 22199 22200 22201 23642 23643 23644 23645 23646 23647 23636 23637 23638 23639 23640 23641 31004 31005 31006 31007 31008 31009 23798 23799 23800 23801 23802 23803 23804 23805 23806 23807 23808 23809 +48 21698 21699 21700 21701 21702 21703 22220 22221 22222 22223 22224 22225 21674 21675 21676 21677 21678 21679 23804 23805 23806 23807 23808 23809 23798 23799 23800 23801 23802 23803 31016 31017 31018 31019 31020 31021 23972 23973 23974 23975 23976 23977 23978 23979 23980 23981 23982 23983 +48 7136 7137 7138 7139 7140 7141 7142 7143 7144 7145 7146 7147 7148 7149 7150 7151 7152 7153 21668 21669 21670 21671 21672 21673 21674 21675 21676 21677 21678 21679 22220 22221 22222 22223 22224 22225 21698 21699 21700 21701 21702 21703 21692 21693 21694 21695 21696 21697 +48 22226 22227 22228 22229 22230 22231 22232 22233 22234 22235 22236 22237 21698 21699 21700 21701 21702 21703 23978 23979 23980 23981 23982 23983 23972 23973 23974 23975 23976 23977 31028 31029 31030 31031 31032 31033 24146 24147 24148 24149 24150 24151 24152 24153 24154 24155 24156 24157 +48 21722 21723 21724 21725 21726 21727 22244 22245 22246 22247 22248 22249 22226 22227 22228 22229 22230 22231 24152 24153 24154 24155 24156 24157 24146 24147 24148 24149 24150 24151 31040 31041 31042 31043 31044 31045 24308 24309 24310 24311 24312 24313 24314 24315 24316 24317 24318 24319 +48 21746 21747 21748 21749 21750 21751 22250 22251 22252 22253 22254 22255 21722 21723 21724 21725 21726 21727 24314 24315 24316 24317 24318 24319 24308 24309 24310 24311 24312 24313 31052 31053 31054 31055 31056 31057 24482 24483 24484 24485 24486 24487 24488 24489 24490 24491 24492 24493 +48 7016 7017 7018 7019 7020 7021 7022 7023 7024 7025 7026 7027 7028 7029 7030 7031 7032 7033 21716 21717 21718 21719 21720 21721 21722 21723 21724 21725 21726 21727 22250 22251 22252 22253 22254 22255 21746 21747 21748 21749 21750 21751 21740 21741 21742 21743 21744 21745 +48 22256 22257 22258 22259 22260 22261 22262 22263 22264 22265 22266 22267 21746 21747 21748 21749 21750 21751 24488 24489 24490 24491 24492 24493 24482 24483 24484 24485 24486 24487 31064 31065 31066 31067 31068 31069 24662 24663 24664 24665 24666 24667 24668 24669 24670 24671 24672 24673 +48 21770 21771 21772 21773 21774 21775 22274 22275 22276 22277 22278 22279 22256 22257 22258 22259 22260 22261 24668 24669 24670 24671 24672 24673 24662 24663 24664 24665 24666 24667 31076 31077 31078 31079 31080 31081 24824 24825 24826 24827 24828 24829 24830 24831 24832 24833 24834 24835 +48 21794 21795 21796 21797 21798 21799 22280 22281 22282 22283 22284 22285 21770 21771 21772 21773 21774 21775 24830 24831 24832 24833 24834 24835 24824 24825 24826 24827 24828 24829 31088 31089 31090 31091 31092 31093 24998 24999 25000 25001 25002 25003 25004 25005 25006 25007 25008 25009 +48 6896 6897 6898 6899 6900 6901 6902 6903 6904 6905 6906 6907 6908 6909 6910 6911 6912 6913 21764 21765 21766 21767 21768 21769 21770 21771 21772 21773 21774 21775 22280 22281 22282 22283 22284 22285 21794 21795 21796 21797 21798 21799 21788 21789 21790 21791 21792 21793 +48 22286 22287 22288 22289 22290 22291 22292 22293 22294 22295 22296 22297 21794 21795 21796 21797 21798 21799 25004 25005 25006 25007 25008 25009 24998 24999 25000 25001 25002 25003 31100 31101 31102 31103 31104 31105 25172 25173 25174 25175 25176 25177 25178 25179 25180 25181 25182 25183 +48 21818 21819 21820 21821 21822 21823 22304 22305 22306 22307 22308 22309 22286 22287 22288 22289 22290 22291 25178 25179 25180 25181 25182 25183 25172 25173 25174 25175 25176 25177 31112 31113 31114 31115 31116 31117 25334 25335 25336 25337 25338 25339 25340 25341 25342 25343 25344 25345 +48 21842 21843 21844 21845 21846 21847 22310 22311 22312 22313 22314 22315 21818 21819 21820 21821 21822 21823 25340 25341 25342 25343 25344 25345 25334 25335 25336 25337 25338 25339 31124 31125 31126 31127 31128 31129 25508 25509 25510 25511 25512 25513 25514 25515 25516 25517 25518 25519 +48 6776 6777 6778 6779 6780 6781 6782 6783 6784 6785 6786 6787 6788 6789 6790 6791 6792 6793 21812 21813 21814 21815 21816 21817 21818 21819 21820 21821 21822 21823 22310 22311 22312 22313 22314 22315 21842 21843 21844 21845 21846 21847 21836 21837 21838 21839 21840 21841 +48 22316 22317 22318 22319 22320 22321 22322 22323 22324 22325 22326 22327 21842 21843 21844 21845 21846 21847 25514 25515 25516 25517 25518 25519 25508 25509 25510 25511 25512 25513 31136 31137 31138 31139 31140 31141 25688 25689 25690 25691 25692 25693 25694 25695 25696 25697 25698 25699 +48 21866 21867 21868 21869 21870 21871 22334 22335 22336 22337 22338 22339 22316 22317 22318 22319 22320 22321 25694 25695 25696 25697 25698 25699 25688 25689 25690 25691 25692 25693 31148 31149 31150 31151 31152 31153 25850 25851 25852 25853 25854 25855 25856 25857 25858 25859 25860 25861 +48 21890 21891 21892 21893 21894 21895 22340 22341 22342 22343 22344 22345 21866 21867 21868 21869 21870 21871 25856 25857 25858 25859 25860 25861 25850 25851 25852 25853 25854 25855 31160 31161 31162 31163 31164 31165 26024 26025 26026 26027 26028 26029 26030 26031 26032 26033 26034 26035 +48 6656 6657 6658 6659 6660 6661 6662 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 21860 21861 21862 21863 21864 21865 21866 21867 21868 21869 21870 21871 22340 22341 22342 22343 22344 22345 21890 21891 21892 21893 21894 21895 21884 21885 21886 21887 21888 21889 +48 22346 22347 22348 22349 22350 22351 22352 22353 22354 22355 22356 22357 21890 21891 21892 21893 21894 21895 26030 26031 26032 26033 26034 26035 26024 26025 26026 26027 26028 26029 31172 31173 31174 31175 31176 31177 26198 26199 26200 26201 26202 26203 26204 26205 26206 26207 26208 26209 +48 21914 21915 21916 21917 21918 21919 22364 22365 22366 22367 22368 22369 22346 22347 22348 22349 22350 22351 26204 26205 26206 26207 26208 26209 26198 26199 26200 26201 26202 26203 31184 31185 31186 31187 31188 31189 26360 26361 26362 26363 26364 26365 26366 26367 26368 26369 26370 26371 +48 21938 21939 21940 21941 21942 21943 22370 22371 22372 22373 22374 22375 21914 21915 21916 21917 21918 21919 26366 26367 26368 26369 26370 26371 26360 26361 26362 26363 26364 26365 31196 31197 31198 31199 31200 31201 26534 26535 26536 26537 26538 26539 26540 26541 26542 26543 26544 26545 +48 6536 6537 6538 6539 6540 6541 6542 6543 6544 6545 6546 6547 6548 6549 6550 6551 6552 6553 21908 21909 21910 21911 21912 21913 21914 21915 21916 21917 21918 21919 22370 22371 22372 22373 22374 22375 21938 21939 21940 21941 21942 21943 21932 21933 21934 21935 21936 21937 +48 22376 22377 22378 22379 22380 22381 22382 22383 22384 22385 22386 22387 21938 21939 21940 21941 21942 21943 26540 26541 26542 26543 26544 26545 26534 26535 26536 26537 26538 26539 31208 31209 31210 31211 31212 31213 26714 26715 26716 26717 26718 26719 26720 26721 26722 26723 26724 26725 +48 21962 21963 21964 21965 21966 21967 22394 22395 22396 22397 22398 22399 22376 22377 22378 22379 22380 22381 26720 26721 26722 26723 26724 26725 26714 26715 26716 26717 26718 26719 31220 31221 31222 31223 31224 31225 26876 26877 26878 26879 26880 26881 26882 26883 26884 26885 26886 26887 +48 21986 21987 21988 21989 21990 21991 22400 22401 22402 22403 22404 22405 21962 21963 21964 21965 21966 21967 26882 26883 26884 26885 26886 26887 26876 26877 26878 26879 26880 26881 31232 31233 31234 31235 31236 31237 27050 27051 27052 27053 27054 27055 27056 27057 27058 27059 27060 27061 +48 6416 6417 6418 6419 6420 6421 6422 6423 6424 6425 6426 6427 6428 6429 6430 6431 6432 6433 21956 21957 21958 21959 21960 21961 21962 21963 21964 21965 21966 21967 22400 22401 22402 22403 22404 22405 21986 21987 21988 21989 21990 21991 21980 21981 21982 21983 21984 21985 +48 22406 22407 22408 22409 22410 22411 22412 22413 22414 22415 22416 22417 21986 21987 21988 21989 21990 21991 27056 27057 27058 27059 27060 27061 27050 27051 27052 27053 27054 27055 31244 31245 31246 31247 31248 31249 27224 27225 27226 27227 27228 27229 27230 27231 27232 27233 27234 27235 +48 22010 22011 22012 22013 22014 22015 22424 22425 22426 22427 22428 22429 22406 22407 22408 22409 22410 22411 27230 27231 27232 27233 27234 27235 27224 27225 27226 27227 27228 27229 31256 31257 31258 31259 31260 31261 27386 27387 27388 27389 27390 27391 27392 27393 27394 27395 27396 27397 +48 22034 22035 22036 22037 22038 22039 22430 22431 22432 22433 22434 22435 22010 22011 22012 22013 22014 22015 27392 27393 27394 27395 27396 27397 27386 27387 27388 27389 27390 27391 31268 31269 31270 31271 31272 31273 27566 27567 27568 27569 27570 27571 27572 27573 27574 27575 27576 27577 +48 6296 6297 6298 6299 6300 6301 6302 6303 6304 6305 6306 6307 6308 6309 6310 6311 6312 6313 22004 22005 22006 22007 22008 22009 22010 22011 22012 22013 22014 22015 22430 22431 22432 22433 22434 22435 22034 22035 22036 22037 22038 22039 22028 22029 22030 22031 22032 22033 +48 22436 22437 22438 22439 22440 22441 22442 22443 22444 22445 22446 22447 22034 22035 22036 22037 22038 22039 27572 27573 27574 27575 27576 27577 27566 27567 27568 27569 27570 27571 31280 31281 31282 31283 31284 31285 27746 27747 27748 27749 27750 27751 27752 27753 27754 27755 27756 27757 +48 22058 22059 22060 22061 22062 22063 22454 22455 22456 22457 22458 22459 22436 22437 22438 22439 22440 22441 27752 27753 27754 27755 27756 27757 27746 27747 27748 27749 27750 27751 31292 31293 31294 31295 31296 31297 27908 27909 27910 27911 27912 27913 27914 27915 27916 27917 27918 27919 +48 22082 22083 22084 22085 22086 22087 22460 22461 22462 22463 22464 22465 22058 22059 22060 22061 22062 22063 27914 27915 27916 27917 27918 27919 27908 27909 27910 27911 27912 27913 31304 31305 31306 31307 31308 31309 28082 28083 28084 28085 28086 28087 28088 28089 28090 28091 28092 28093 +48 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6186 6187 6188 6189 6190 6191 6192 6193 22052 22053 22054 22055 22056 22057 22058 22059 22060 22061 22062 22063 22460 22461 22462 22463 22464 22465 22082 22083 22084 22085 22086 22087 22076 22077 22078 22079 22080 22081 +48 22466 22467 22468 22469 22470 22471 22472 22473 22474 22475 22476 22477 22082 22083 22084 22085 22086 22087 28088 28089 28090 28091 28092 28093 28082 28083 28084 28085 28086 28087 31316 31317 31318 31319 31320 31321 28256 28257 28258 28259 28260 28261 28262 28263 28264 28265 28266 28267 +48 20666 20667 20668 20669 20670 20671 22484 22485 22486 22487 22488 22489 22466 22467 22468 22469 22470 22471 28262 28263 28264 28265 28266 28267 28256 28257 28258 28259 28260 28261 31328 31329 31330 31331 31332 31333 28412 28413 28414 28415 28416 28417 28418 28419 28420 28421 28422 28423 +48 20654 20655 20656 20657 20658 20659 20660 20661 20662 20663 20664 20665 20666 20667 20668 20669 20670 20671 28418 28419 28420 28421 28422 28423 28412 28413 28414 28415 28416 28417 31340 31341 31342 31343 31344 31345 21158 21159 21160 21161 21162 21163 21374 21375 21376 21377 21378 21379 +48 22118 22119 22120 22121 22122 22123 22112 22113 22114 22115 22116 22117 6056 6057 6058 6059 6060 6061 6068 6069 6070 6071 6072 6073 6074 6075 6076 6077 6078 6079 32426 32427 32428 32429 32430 32431 883 884 885 886 887 888 32432 32433 32434 32435 32436 32437 +48 20696 20697 20698 20699 20700 20701 20702 20703 20704 20705 20706 20707 20654 20655 20656 20657 20658 20659 21374 21375 21376 21377 21378 21379 21158 21159 21160 21161 21162 21163 21170 21171 21172 21173 21174 21175 21134 21135 21136 21137 21138 21139 21440 21441 21442 21443 21444 21445 +36 22118 22119 22120 22121 22122 22123 883 884 885 886 887 888 22532 22533 22534 22535 22536 22537 32432 32433 32434 32435 32436 32437 32438 32439 32440 32441 32442 32443 22550 22551 22552 22553 22554 22555 +48 20720 20721 20722 20723 20724 20725 20726 20727 20728 20729 20730 20731 20696 20697 20698 20699 20700 20701 21440 21441 21442 21443 21444 21445 21134 21135 21136 21137 21138 21139 21188 21189 21190 21191 21192 21193 21176 21177 21178 21179 21180 21181 21542 21543 21544 21545 21546 21547 +48 20744 20745 20746 20747 20748 20749 20750 20751 20752 20753 20754 20755 20720 20721 20722 20723 20724 20725 21542 21543 21544 21545 21546 21547 21176 21177 21178 21179 21180 21181 31364 31365 31366 31367 31368 31369 28934 28935 28936 28937 28938 28939 28940 28941 28942 28943 28944 28945 +48 22514 22515 22516 22517 22518 22519 22538 22539 22540 22541 22542 22543 22532 22533 22534 22535 22536 22537 32438 32439 32440 32441 32442 32443 883 884 885 886 887 888 32444 32445 32446 32447 32448 32449 871 872 873 874 875 876 32450 32451 32452 32453 32454 32455 +48 22514 22515 22516 22517 22518 22519 22520 22521 22522 22523 22524 22525 20744 20745 20746 20747 20748 20749 28940 28941 28942 28943 28944 28945 28934 28935 28936 28937 28938 28939 31376 31377 31378 31379 31380 31381 29078 29079 29080 29081 29082 29083 29084 29085 29086 29087 29088 29089 +48 22532 22533 22534 22535 22536 22537 22538 22539 22540 22541 22542 22543 22514 22515 22516 22517 22518 22519 29084 29085 29086 29087 29088 29089 29078 29079 29080 29081 29082 29083 31388 31389 31390 31391 31392 31393 29234 29235 29236 29237 29238 29239 29240 29241 29242 29243 29244 29245 +48 20744 20745 20746 20747 20748 20749 22520 22521 22522 22523 22524 22525 22514 22515 22516 22517 22518 22519 32450 32451 32452 32453 32454 32455 871 872 873 874 875 876 32456 32457 32458 32459 32460 32461 859 860 861 862 863 864 20756 20757 20758 20759 20760 20761 +48 22118 22119 22120 22121 22122 22123 22550 22551 22552 22553 22554 22555 22532 22533 22534 22535 22536 22537 29240 29241 29242 29243 29244 29245 29234 29235 29236 29237 29238 29239 31400 31401 31402 31403 31404 31405 29390 29391 29392 29393 29394 29395 29396 29397 29398 29399 29400 29401 +48 22556 22557 22558 22559 22560 22561 22562 22563 22564 22565 22566 22567 22118 22119 22120 22121 22122 22123 29396 29397 29398 29399 29400 29401 29390 29391 29392 29393 29394 29395 31424 31425 31426 31427 31428 31429 31418 31419 31420 31421 31422 31423 32462 32463 32464 32465 32466 32467 +48 4256 4257 4258 4259 4260 4261 5804 5805 5806 5807 5808 5809 5246 5247 5248 5249 5250 5251 32468 32469 32470 32471 32472 32473 1519 1520 1521 1522 1523 1524 32474 32475 32476 32477 32478 32479 32480 32481 32482 32483 32484 32485 32486 32487 32488 32489 32490 32491 +48 4244 4245 4246 4247 4248 4249 5798 5799 5800 5801 5802 5803 5234 5235 5236 5237 5238 5239 32492 32493 32494 32495 32496 32497 1531 1532 1533 1534 1535 1536 32498 32499 32500 32501 32502 32503 32504 32505 32506 32507 32508 32509 32510 32511 32512 32513 32514 32515 +48 4142 4143 4144 4145 4146 4147 5792 5793 5794 5795 5796 5797 5216 5217 5218 5219 5220 5221 32516 32517 32518 32519 32520 32521 1555 1556 1557 1558 1559 1560 32522 32523 32524 32525 32526 32527 32528 32529 32530 32531 32532 32533 32534 32535 32536 32537 32538 32539 +48 1741 1742 1743 1744 1745 1746 5786 5787 5788 5789 5790 5791 5204 5205 5206 5207 5208 5209 32540 32541 32542 32543 32544 32545 1567 1568 1569 1570 1571 1572 32552 32553 32554 32555 32556 32557 32546 32547 32548 32549 32550 32551 32558 32559 32560 32561 32562 32563 +48 32480 32481 32482 32483 32484 32485 32474 32475 32476 32477 32478 32479 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1507 1508 1509 1510 1511 1512 22568 22569 22570 22571 22572 22573 22556 22557 22558 22559 22560 22561 32564 32565 32566 32567 32568 32569 +48 32504 32505 32506 32507 32508 32509 32498 32499 32500 32501 32502 32503 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1519 1520 1521 1522 1523 1524 32474 32475 32476 32477 32478 32479 32480 32481 32482 32483 32484 32485 32570 32571 32572 32573 32574 32575 +48 32582 32583 32584 32585 32586 32587 32576 32577 32578 32579 32580 32581 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1531 1532 1533 1534 1535 1536 32498 32499 32500 32501 32502 32503 32504 32505 32506 32507 32508 32509 32588 32589 32590 32591 32592 32593 +48 32528 32529 32530 32531 32532 32533 32522 32523 32524 32525 32526 32527 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1543 1544 1545 1546 1547 1548 32576 32577 32578 32579 32580 32581 32582 32583 32584 32585 32586 32587 32594 32595 32596 32597 32598 32599 +48 32546 32547 32548 32549 32550 32551 32552 32553 32554 32555 32556 32557 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1555 1556 1557 1558 1559 1560 32522 32523 32524 32525 32526 32527 32528 32529 32530 32531 32532 32533 32600 32601 32602 32603 32604 32605 +48 29780 29781 29782 29783 29784 29785 32414 32415 32416 32417 32418 32419 31406 31407 31408 31409 31410 31411 31430 31431 31432 31433 31434 31435 31418 31419 31420 31421 31422 31423 32462 32463 32464 32465 32466 32467 22556 22557 22558 22559 22560 22561 29792 29793 29794 29795 29796 29797 +48 30038 30039 30040 30041 30042 30043 32366 32367 32368 32369 32370 32371 31700 31701 31702 31703 31704 31705 31712 31713 31714 31715 31716 31717 31406 31407 31408 31409 31410 31411 32414 32415 32416 32417 32418 32419 29780 29781 29782 29783 29784 29785 30050 30051 30052 30053 30054 30055 +36 31700 31701 31702 31703 31704 31705 30038 30039 30040 30041 30042 30043 30296 30297 30298 30299 30300 30301 32366 32367 32368 32369 32370 32371 30308 30309 30310 30311 30312 30313 31982 31983 31984 31985 31986 31987 +48 5180 5181 5182 5183 5184 5185 32276 32277 32278 32279 32280 32281 30860 30861 30862 30863 30864 30865 30872 30873 30874 30875 30876 30877 30578 30579 30580 30581 30582 30583 32252 32253 32254 32255 32256 32257 5048 5049 5050 5051 5052 5053 5618 5619 5620 5621 5622 5623 +48 32606 32607 32608 32609 32610 32611 32612 32613 32614 32615 32616 32617 32618 32619 32620 32621 32622 32623 32630 32631 32632 32633 32634 32635 32624 32625 32626 32627 32628 32629 32636 32637 32638 32639 32640 32641 32480 32481 32482 32483 32484 32485 32642 32643 32644 32645 32646 32647 +48 4520 4521 4522 4523 4524 4525 32648 32649 32650 32651 32652 32653 32606 32607 32608 32609 32610 32611 32642 32643 32644 32645 32646 32647 32480 32481 32482 32483 32484 32485 32486 32487 32488 32489 32490 32491 4256 4257 4258 4259 4260 4261 5708 5709 5710 5711 5712 5713 +48 32654 32655 32656 32657 32658 32659 32660 32661 32662 32663 32664 32665 32666 32667 32668 32669 32670 32671 32672 32673 32674 32675 32676 32677 32618 32619 32620 32621 32622 32623 32612 32613 32614 32615 32616 32617 32606 32607 32608 32609 32610 32611 32678 32679 32680 32681 32682 32683 +48 5666 5667 5668 5669 5670 5671 32684 32685 32686 32687 32688 32689 32654 32655 32656 32657 32658 32659 32678 32679 32680 32681 32682 32683 32606 32607 32608 32609 32610 32611 32648 32649 32650 32651 32652 32653 4520 4521 4522 4523 4524 4525 5690 5691 5692 5693 5694 5695 +36 32666 32667 32668 32669 32670 32671 32654 32655 32656 32657 32658 32659 32696 32697 32698 32699 32700 32701 32660 32661 32662 32663 32664 32665 32702 32703 32704 32705 32706 32707 32690 32691 32692 32693 32694 32695 +48 4898 4899 4900 4901 4902 4903 32708 32709 32710 32711 32712 32713 32696 32697 32698 32699 32700 32701 32702 32703 32704 32705 32706 32707 32654 32655 32656 32657 32658 32659 32684 32685 32686 32687 32688 32689 5666 5667 5668 5669 5670 5671 5672 5673 5674 5675 5676 5677 +48 5018 5019 5020 5021 5022 5023 32714 32715 32716 32717 32718 32719 32720 32721 32722 32723 32724 32725 32726 32727 32728 32729 32730 32731 32696 32697 32698 32699 32700 32701 32708 32709 32710 32711 32712 32713 4898 4899 4900 4901 4902 4903 5636 5637 5638 5639 5640 5641 +48 5150 5151 5152 5153 5154 5155 32732 32733 32734 32735 32736 32737 32738 32739 32740 32741 32742 32743 32744 32745 32746 32747 32748 32749 32720 32721 32722 32723 32724 32725 32714 32715 32716 32717 32718 32719 5018 5019 5020 5021 5022 5023 5612 5613 5614 5615 5616 5617 +48 32750 32751 32752 32753 32754 32755 32756 32757 32758 32759 32760 32761 32762 32763 32764 32765 32766 32767 32774 32775 32776 32777 32778 32779 32768 32769 32770 32771 32772 32773 32780 32781 32782 32783 32784 32785 32504 32505 32506 32507 32508 32509 32786 32787 32788 32789 32790 32791 +48 4508 4509 4510 4511 4512 4513 32792 32793 32794 32795 32796 32797 32750 32751 32752 32753 32754 32755 32786 32787 32788 32789 32790 32791 32504 32505 32506 32507 32508 32509 32510 32511 32512 32513 32514 32515 4244 4245 4246 4247 4248 4249 5702 5703 5704 5705 5706 5707 +48 32798 32799 32800 32801 32802 32803 32804 32805 32806 32807 32808 32809 32810 32811 32812 32813 32814 32815 32816 32817 32818 32819 32820 32821 32762 32763 32764 32765 32766 32767 32756 32757 32758 32759 32760 32761 32750 32751 32752 32753 32754 32755 32822 32823 32824 32825 32826 32827 +36 32810 32811 32812 32813 32814 32815 32798 32799 32800 32801 32802 32803 32834 32835 32836 32837 32838 32839 32804 32805 32806 32807 32808 32809 32840 32841 32842 32843 32844 32845 32828 32829 32830 32831 32832 32833 +48 4988 4989 4990 4991 4992 4993 32846 32847 32848 32849 32850 32851 32852 32853 32854 32855 32856 32857 32858 32859 32860 32861 32862 32863 32834 32835 32836 32837 32838 32839 32864 32865 32866 32867 32868 32869 4886 4887 4888 4889 4890 4891 5630 5631 5632 5633 5634 5635 +48 5120 5121 5122 5123 5124 5125 32870 32871 32872 32873 32874 32875 32876 32877 32878 32879 32880 32881 32882 32883 32884 32885 32886 32887 32852 32853 32854 32855 32856 32857 32846 32847 32848 32849 32850 32851 4988 4989 4990 4991 4992 4993 5606 5607 5608 5609 5610 5611 +48 32888 32889 32890 32891 32892 32893 32894 32895 32896 32897 32898 32899 32900 32901 32902 32903 32904 32905 32912 32913 32914 32915 32916 32917 32906 32907 32908 32909 32910 32911 32918 32919 32920 32921 32922 32923 32582 32583 32584 32585 32586 32587 32924 32925 32926 32927 32928 32929 +48 32930 32931 32932 32933 32934 32935 32936 32937 32938 32939 32940 32941 32942 32943 32944 32945 32946 32947 32948 32949 32950 32951 32952 32953 32900 32901 32902 32903 32904 32905 32894 32895 32896 32897 32898 32899 32888 32889 32890 32891 32892 32893 32954 32955 32956 32957 32958 32959 +36 32942 32943 32944 32945 32946 32947 32930 32931 32932 32933 32934 32935 32966 32967 32968 32969 32970 32971 32936 32937 32938 32939 32940 32941 32972 32973 32974 32975 32976 32977 32960 32961 32962 32963 32964 32965 +48 5078 5079 5080 5081 5082 5083 32978 32979 32980 32981 32982 32983 32984 32985 32986 32987 32988 32989 32996 32997 32998 32999 33000 33001 32990 32991 32992 32993 32994 32995 33002 33003 33004 33005 33006 33007 4946 4947 4948 4949 4950 4951 5600 5601 5602 5603 5604 5605 +48 33008 33009 33010 33011 33012 33013 33014 33015 33016 33017 33018 33019 33020 33021 33022 33023 33024 33025 33032 33033 33034 33035 33036 33037 33026 33027 33028 33029 33030 33031 33038 33039 33040 33041 33042 33043 32528 32529 32530 32531 32532 32533 33044 33045 33046 33047 33048 33049 +48 4406 4407 4408 4409 4410 4411 33050 33051 33052 33053 33054 33055 33008 33009 33010 33011 33012 33013 33044 33045 33046 33047 33048 33049 32528 32529 32530 32531 32532 32533 32534 32535 32536 32537 32538 32539 4142 4143 4144 4145 4146 4147 5738 5739 5740 5741 5742 5743 +36 33020 33021 33022 33023 33024 33025 33008 33009 33010 33011 33012 33013 33062 33063 33064 33065 33066 33067 33014 33015 33016 33017 33018 33019 33068 33069 33070 33071 33072 33073 33056 33057 33058 33059 33060 33061 +48 4670 4671 4672 4673 4674 4675 33074 33075 33076 33077 33078 33079 33062 33063 33064 33065 33066 33067 33068 33069 33070 33071 33072 33073 33008 33009 33010 33011 33012 33013 33050 33051 33052 33053 33054 33055 4406 4407 4408 4409 4410 4411 5732 5733 5734 5735 5736 5737 +36 33062 33063 33064 33065 33066 33067 4670 4671 4672 4673 4674 4675 33086 33087 33088 33089 33090 33091 33074 33075 33076 33077 33078 33079 33092 33093 33094 33095 33096 33097 33080 33081 33082 33083 33084 33085 +36 33086 33087 33088 33089 33090 33091 4670 4671 4672 4673 4674 4675 4838 4839 4840 4841 4842 4843 33092 33093 33094 33095 33096 33097 5726 5727 5728 5729 5730 5731 33098 33099 33100 33101 33102 33103 +48 33104 33105 33106 33107 33108 33109 33110 33111 33112 33113 33114 33115 33116 33117 33118 33119 33120 33121 33128 33129 33130 33131 33132 33133 33122 33123 33124 33125 33126 33127 33134 33135 33136 33137 33138 33139 32546 32547 32548 32549 32550 32551 33140 33141 33142 33143 33144 33145 +48 1729 1730 1731 1732 1733 1734 33146 33147 33148 33149 33150 33151 33104 33105 33106 33107 33108 33109 33140 33141 33142 33143 33144 33145 32546 32547 32548 32549 32550 32551 32558 32559 32560 32561 32562 32563 1741 1742 1743 1744 1745 1746 5696 5697 5698 5699 5700 5701 +36 33116 33117 33118 33119 33120 33121 33158 33159 33160 33161 33162 33163 33104 33105 33106 33107 33108 33109 33152 33153 33154 33155 33156 33157 33164 33165 33166 33167 33168 33169 33110 33111 33112 33113 33114 33115 +36 33158 33159 33160 33161 33162 33163 33170 33171 33172 33173 33174 33175 33104 33105 33106 33107 33108 33109 33176 33177 33178 33179 33180 33181 33182 33183 33184 33185 33186 33187 33164 33165 33166 33167 33168 33169 +48 1729 1730 1731 1732 1733 1734 33146 33147 33148 33149 33150 33151 33104 33105 33106 33107 33108 33109 33182 33183 33184 33185 33186 33187 33170 33171 33172 33173 33174 33175 33188 33189 33190 33191 33192 33193 1717 1718 1719 1720 1721 1722 5678 5679 5680 5681 5682 5683 +36 33170 33171 33172 33173 33174 33175 1717 1718 1719 1720 1721 1722 1705 1706 1707 1708 1709 1710 33188 33189 33190 33191 33192 33193 5642 5643 5644 5645 5646 5647 33194 33195 33196 33197 33198 33199 +48 32606 32607 32608 32609 32610 32611 32642 32643 32644 32645 32646 32647 32480 32481 32482 32483 32484 32485 32564 32565 32566 32567 32568 32569 22556 22557 22558 22559 22560 22561 29792 29793 29794 29795 29796 29797 29780 29781 29782 29783 29784 29785 33200 33201 33202 33203 33204 33205 +48 32750 32751 32752 32753 32754 32755 32786 32787 32788 32789 32790 32791 32504 32505 32506 32507 32508 32509 32570 32571 32572 32573 32574 32575 32480 32481 32482 32483 32484 32485 32642 32643 32644 32645 32646 32647 32606 32607 32608 32609 32610 32611 33206 33207 33208 33209 33210 33211 +48 32888 32889 32890 32891 32892 32893 32924 32925 32926 32927 32928 32929 32582 32583 32584 32585 32586 32587 32588 32589 32590 32591 32592 32593 32504 32505 32506 32507 32508 32509 32786 32787 32788 32789 32790 32791 32750 32751 32752 32753 32754 32755 33212 33213 33214 33215 33216 33217 +48 33008 33009 33010 33011 33012 33013 33044 33045 33046 33047 33048 33049 32528 32529 32530 32531 32532 32533 32594 32595 32596 32597 32598 32599 32582 32583 32584 32585 32586 32587 32924 32925 32926 32927 32928 32929 32888 32889 32890 32891 32892 32893 33218 33219 33220 33221 33222 33223 +48 33104 33105 33106 33107 33108 33109 33140 33141 33142 33143 33144 33145 32546 32547 32548 32549 32550 32551 32600 32601 32602 32603 32604 32605 32528 32529 32530 32531 32532 32533 33044 33045 33046 33047 33048 33049 33008 33009 33010 33011 33012 33013 33224 33225 33226 33227 33228 33229 +48 33230 33231 33232 33233 33234 33235 33236 33237 33238 33239 33240 33241 33242 33243 33244 33245 33246 33247 33248 33249 33250 33251 33252 33253 32546 32547 32548 32549 32550 32551 33140 33141 33142 33143 33144 33145 33104 33105 33106 33107 33108 33109 33254 33255 33256 33257 33258 33259 +48 32654 32655 32656 32657 32658 32659 32678 32679 32680 32681 32682 32683 32606 32607 32608 32609 32610 32611 33200 33201 33202 33203 33204 33205 29780 29781 29782 29783 29784 29785 30050 30051 30052 30053 30054 30055 30038 30039 30040 30041 30042 30043 33260 33261 33262 33263 33264 33265 +48 32798 32799 32800 32801 32802 32803 32822 32823 32824 32825 32826 32827 32750 32751 32752 32753 32754 32755 33206 33207 33208 33209 33210 33211 32606 32607 32608 32609 32610 32611 32678 32679 32680 32681 32682 32683 32654 32655 32656 32657 32658 32659 33266 33267 33268 33269 33270 33271 +48 32930 32931 32932 32933 32934 32935 32954 32955 32956 32957 32958 32959 32888 32889 32890 32891 32892 32893 33212 33213 33214 33215 33216 33217 32750 32751 32752 32753 32754 32755 32822 32823 32824 32825 32826 32827 32798 32799 32800 32801 32802 32803 33272 33273 33274 33275 33276 33277 +48 33062 33063 33064 33065 33066 33067 33068 33069 33070 33071 33072 33073 33008 33009 33010 33011 33012 33013 33218 33219 33220 33221 33222 33223 32888 32889 32890 32891 32892 32893 32954 32955 32956 32957 32958 32959 32930 32931 32932 32933 32934 32935 33278 33279 33280 33281 33282 33283 +48 33158 33159 33160 33161 33162 33163 33164 33165 33166 33167 33168 33169 33104 33105 33106 33107 33108 33109 33224 33225 33226 33227 33228 33229 33008 33009 33010 33011 33012 33013 33068 33069 33070 33071 33072 33073 33062 33063 33064 33065 33066 33067 33284 33285 33286 33287 33288 33289 +48 33290 33291 33292 33293 33294 33295 33296 33297 33298 33299 33300 33301 33230 33231 33232 33233 33234 33235 33254 33255 33256 33257 33258 33259 33104 33105 33106 33107 33108 33109 33164 33165 33166 33167 33168 33169 33158 33159 33160 33161 33162 33163 33302 33303 33304 33305 33306 33307 +48 32696 32697 32698 32699 32700 32701 32702 32703 32704 32705 32706 32707 32654 32655 32656 32657 32658 32659 33260 33261 33262 33263 33264 33265 30038 30039 30040 30041 30042 30043 30308 30309 30310 30311 30312 30313 30296 30297 30298 30299 30300 30301 33308 33309 33310 33311 33312 33313 +48 32834 32835 32836 32837 32838 32839 32840 32841 32842 32843 32844 32845 32798 32799 32800 32801 32802 32803 33266 33267 33268 33269 33270 33271 32654 32655 32656 32657 32658 32659 32702 32703 32704 32705 32706 32707 32696 32697 32698 32699 32700 32701 33314 33315 33316 33317 33318 33319 +48 32966 32967 32968 32969 32970 32971 32972 32973 32974 32975 32976 32977 32930 32931 32932 32933 32934 32935 33272 33273 33274 33275 33276 33277 32798 32799 32800 32801 32802 32803 32840 32841 32842 32843 32844 32845 32834 32835 32836 32837 32838 32839 33320 33321 33322 33323 33324 33325 +48 33086 33087 33088 33089 33090 33091 33080 33081 33082 33083 33084 33085 33062 33063 33064 33065 33066 33067 33278 33279 33280 33281 33282 33283 32930 32931 32932 32933 32934 32935 32972 32973 32974 32975 32976 32977 32966 32967 32968 32969 32970 32971 33326 33327 33328 33329 33330 33331 +48 4934 4935 4936 4937 4938 4939 33332 33333 33334 33335 33336 33337 33338 33339 33340 33341 33342 33343 33344 33345 33346 33347 33348 33349 33086 33087 33088 33089 33090 33091 33098 33099 33100 33101 33102 33103 4838 4839 4840 4841 4842 4843 5498 5499 5500 5501 5502 5503 +48 1657 1658 1659 1660 1661 1662 5492 5493 5494 5495 5496 5497 4934 4935 4936 4937 4938 4939 33332 33333 33334 33335 33336 33337 33338 33339 33340 33341 33342 33343 33356 33357 33358 33359 33360 33361 33350 33351 33352 33353 33354 33355 33362 33363 33364 33365 33366 33367 +47 33230 33231 33232 33233 33234 33235 33368 33369 33370 33371 33372 33373 33374 33375 33376 33377 33378 33379 33380 33381 33382 33383 33384 33385 33386 33387 33388 33389 33390 33391 33392 33393 33394 33395 33396 33242 33243 33244 33245 33246 33247 33236 33237 33238 33239 33240 33241 +48 1681 1682 1683 1684 1685 1686 33397 33398 33399 33400 33401 33402 33230 33231 33232 33233 33234 33235 33236 33237 33238 33239 33240 33241 33242 33243 33244 33245 33246 33247 33403 33404 33405 33406 33407 33408 1693 1694 1695 1696 1697 1698 5486 5487 5488 5489 5490 5491 +36 33374 33375 33376 33377 33378 33379 33230 33231 33232 33233 33234 33235 33290 33291 33292 33293 33294 33295 33368 33369 33370 33371 33372 33373 33296 33297 33298 33299 33300 33301 33409 33410 33411 33412 33413 33414 +48 1669 1670 1671 1672 1673 1674 33415 33416 33417 33418 33419 33420 33290 33291 33292 33293 33294 33295 33296 33297 33298 33299 33300 33301 33230 33231 33232 33233 33234 33235 33397 33398 33399 33400 33401 33402 1681 1682 1683 1684 1685 1686 5474 5475 5476 5477 5478 5479 +48 32618 32619 32620 32621 32622 32623 32630 32631 32632 32633 32634 32635 32624 32625 32626 32627 32628 32629 33421 33422 33423 33424 33425 33426 31418 31419 31420 31421 31422 31423 31430 31431 31432 31433 31434 31435 31406 31407 31408 31409 31410 31411 33427 33428 33429 33430 33431 33432 +48 32762 32763 32764 32765 32766 32767 32774 32775 32776 32777 32778 32779 32768 32769 32770 32771 32772 32773 33433 33434 33435 33436 33437 33438 32624 32625 32626 32627 32628 32629 32630 32631 32632 32633 32634 32635 32618 32619 32620 32621 32622 32623 33439 33440 33441 33442 33443 33444 +48 32900 32901 32902 32903 32904 32905 32912 32913 32914 32915 32916 32917 32906 32907 32908 32909 32910 32911 33445 33446 33447 33448 33449 33450 32768 32769 32770 32771 32772 32773 32774 32775 32776 32777 32778 32779 32762 32763 32764 32765 32766 32767 33451 33452 33453 33454 33455 33456 +48 33020 33021 33022 33023 33024 33025 33032 33033 33034 33035 33036 33037 33026 33027 33028 33029 33030 33031 33457 33458 33459 33460 33461 33462 32906 32907 32908 32909 32910 32911 32912 32913 32914 32915 32916 32917 32900 32901 32902 32903 32904 32905 33463 33464 33465 33466 33467 33468 +48 33116 33117 33118 33119 33120 33121 33128 33129 33130 33131 33132 33133 33122 33123 33124 33125 33126 33127 33469 33470 33471 33472 33473 33474 33026 33027 33028 33029 33030 33031 33032 33033 33034 33035 33036 33037 33020 33021 33022 33023 33024 33025 33475 33476 33477 33478 33479 33480 +47 33374 33375 33376 33377 33378 33379 33380 33381 33382 33383 33384 33385 33386 33387 33388 33389 33390 33481 33482 33483 33484 33485 33486 33122 33123 33124 33125 33126 33127 33128 33129 33130 33131 33132 33133 33116 33117 33118 33119 33120 33121 33487 33488 33489 33490 33491 33492 +48 32666 32667 32668 32669 32670 32671 32672 32673 32674 32675 32676 32677 32618 32619 32620 32621 32622 32623 33427 33428 33429 33430 33431 33432 31406 31407 31408 31409 31410 31411 31712 31713 31714 31715 31716 31717 31700 31701 31702 31703 31704 31705 33493 33494 33495 33496 33497 33498 +48 32810 32811 32812 32813 32814 32815 32816 32817 32818 32819 32820 32821 32762 32763 32764 32765 32766 32767 33439 33440 33441 33442 33443 33444 32618 32619 32620 32621 32622 32623 32672 32673 32674 32675 32676 32677 32666 32667 32668 32669 32670 32671 33499 33500 33501 33502 33503 33504 +48 32942 32943 32944 32945 32946 32947 32948 32949 32950 32951 32952 32953 32900 32901 32902 32903 32904 32905 33451 33452 33453 33454 33455 33456 32762 32763 32764 32765 32766 32767 32816 32817 32818 32819 32820 32821 32810 32811 32812 32813 32814 32815 33505 33506 33507 33508 33509 33510 +48 33062 33063 33064 33065 33066 33067 33056 33057 33058 33059 33060 33061 33020 33021 33022 33023 33024 33025 33463 33464 33465 33466 33467 33468 32900 32901 32902 32903 32904 32905 32948 32949 32950 32951 32952 32953 32942 32943 32944 32945 32946 32947 33511 33512 33513 33514 33515 33516 +48 33158 33159 33160 33161 33162 33163 33152 33153 33154 33155 33156 33157 33116 33117 33118 33119 33120 33121 33475 33476 33477 33478 33479 33480 33020 33021 33022 33023 33024 33025 33056 33057 33058 33059 33060 33061 33062 33063 33064 33065 33066 33067 33284 33285 33286 33287 33288 33289 +48 33290 33291 33292 33293 33294 33295 33409 33410 33411 33412 33413 33414 33374 33375 33376 33377 33378 33379 33487 33488 33489 33490 33491 33492 33116 33117 33118 33119 33120 33121 33152 33153 33154 33155 33156 33157 33158 33159 33160 33161 33162 33163 33302 33303 33304 33305 33306 33307 +48 32696 32697 32698 32699 32700 32701 32690 32691 32692 32693 32694 32695 32666 32667 32668 32669 32670 32671 33493 33494 33495 33496 33497 33498 31700 31701 31702 31703 31704 31705 31982 31983 31984 31985 31986 31987 30296 30297 30298 30299 30300 30301 33308 33309 33310 33311 33312 33313 +48 32834 32835 32836 32837 32838 32839 32828 32829 32830 32831 32832 32833 32810 32811 32812 32813 32814 32815 33499 33500 33501 33502 33503 33504 32666 32667 32668 32669 32670 32671 32690 32691 32692 32693 32694 32695 32696 32697 32698 32699 32700 32701 33314 33315 33316 33317 33318 33319 +48 32966 32967 32968 32969 32970 32971 32960 32961 32962 32963 32964 32965 32942 32943 32944 32945 32946 32947 33505 33506 33507 33508 33509 33510 32810 32811 32812 32813 32814 32815 32828 32829 32830 32831 32832 32833 32834 32835 32836 32837 32838 32839 33320 33321 33322 33323 33324 33325 +48 33086 33087 33088 33089 33090 33091 33080 33081 33082 33083 33084 33085 33062 33063 33064 33065 33066 33067 33511 33512 33513 33514 33515 33516 32942 32943 32944 32945 32946 32947 32960 32961 32962 32963 32964 32965 32966 32967 32968 32969 32970 32971 33326 33327 33328 33329 33330 33331 +48 1705 1706 1707 1708 1709 1710 33194 33195 33196 33197 33198 33199 33170 33171 33172 33173 33174 33175 33517 33518 33519 33520 33521 33522 33062 33063 33064 33065 33066 33067 33080 33081 33082 33083 33084 33085 33086 33087 33088 33089 33090 33091 33523 33524 33525 33526 33527 33528 +36 1705 1706 1707 1708 1709 1710 33170 33171 33172 33173 33174 33175 1669 1670 1671 1672 1673 1674 33194 33195 33196 33197 33198 33199 33529 33530 33531 33532 33533 33534 5342 5343 5344 5345 5346 5347 +48 32720 32721 32722 32723 32724 32725 32726 32727 32728 32729 32730 32731 32696 32697 32698 32699 32700 32701 33308 33309 33310 33311 33312 33313 30296 30297 30298 30299 30300 30301 30590 30591 30592 30593 30594 30595 30578 30579 30580 30581 30582 30583 33535 33536 33537 33538 33539 33540 +48 32852 32853 32854 32855 32856 32857 32858 32859 32860 32861 32862 32863 32834 32835 32836 32837 32838 32839 33314 33315 33316 33317 33318 33319 32696 32697 32698 32699 32700 32701 32726 32727 32728 32729 32730 32731 32720 32721 32722 32723 32724 32725 33541 33542 33543 33544 33545 33546 +48 32990 32991 32992 32993 32994 32995 33547 33548 33549 33550 33551 33552 32966 32967 32968 32969 32970 32971 33320 33321 33322 33323 33324 33325 32834 32835 32836 32837 32838 32839 32858 32859 32860 32861 32862 32863 32852 32853 32854 32855 32856 32857 33553 33554 33555 33556 33557 33558 +48 33338 33339 33340 33341 33342 33343 33344 33345 33346 33347 33348 33349 33086 33087 33088 33089 33090 33091 33326 33327 33328 33329 33330 33331 32966 32967 32968 32969 32970 32971 33547 33548 33549 33550 33551 33552 32990 32991 32992 32993 32994 32995 33559 33560 33561 33562 33563 33564 +48 32738 32739 32740 32741 32742 32743 32744 32745 32746 32747 32748 32749 32720 32721 32722 32723 32724 32725 33535 33536 33537 33538 33539 33540 30578 30579 30580 30581 30582 30583 30872 30873 30874 30875 30876 30877 30860 30861 30862 30863 30864 30865 33565 33566 33567 33568 33569 33570 +48 32876 32877 32878 32879 32880 32881 32882 32883 32884 32885 32886 32887 32852 32853 32854 32855 32856 32857 33541 33542 33543 33544 33545 33546 32720 32721 32722 32723 32724 32725 32744 32745 32746 32747 32748 32749 32738 32739 32740 32741 32742 32743 33571 33572 33573 33574 33575 33576 +48 32984 32985 32986 32987 32988 32989 32996 32997 32998 32999 33000 33001 32990 32991 32992 32993 32994 32995 33553 33554 33555 33556 33557 33558 32852 32853 32854 32855 32856 32857 32882 32883 32884 32885 32886 32887 32876 32877 32878 32879 32880 32881 33577 33578 33579 33580 33581 33582 +48 33350 33351 33352 33353 33354 33355 33356 33357 33358 33359 33360 33361 33338 33339 33340 33341 33342 33343 33559 33560 33561 33562 33563 33564 32990 32991 32992 32993 32994 32995 32996 32997 32998 32999 33000 33001 32984 32985 32986 32987 32988 32989 33583 33584 33585 33586 33587 33588 +48 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 32468 32469 32470 32471 32472 32473 1519 1520 1521 1522 1523 1524 1537 1538 1539 1540 1541 1542 1531 1532 1533 1534 1535 1536 32492 32493 32494 32495 32496 32497 +48 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 32516 32517 32518 32519 32520 32521 1555 1556 1557 1558 1559 1560 1573 1574 1575 1576 1577 1578 1567 1568 1569 1570 1571 1572 32540 32541 32542 32543 32544 32545 +48 5150 5151 5152 5153 5154 5155 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183 5184 5185 32276 32277 32278 32279 32280 32281 30860 30861 30862 30863 30864 30865 33565 33566 33567 33568 33569 33570 32738 32739 32740 32741 32742 32743 32732 32733 32734 32735 32736 32737 +48 5120 5121 5122 5123 5124 5125 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 32732 32733 32734 32735 32736 32737 32738 32739 32740 32741 32742 32743 33571 33572 33573 33574 33575 33576 32876 32877 32878 32879 32880 32881 32870 32871 32872 32873 32874 32875 +48 5078 5079 5080 5081 5082 5083 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 32870 32871 32872 32873 32874 32875 32876 32877 32878 32879 32880 32881 33577 33578 33579 33580 33581 33582 32984 32985 32986 32987 32988 32989 32978 32979 32980 32981 32982 32983 +48 1657 1658 1659 1660 1661 1662 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 32978 32979 32980 32981 32982 32983 32984 32985 32986 32987 32988 32989 33583 33584 33585 33586 33587 33588 33350 33351 33352 33353 33354 33355 33362 33363 33364 33365 33366 33367 +48 5018 5019 5020 5021 5022 5023 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 32252 32253 32254 32255 32256 32257 30578 30579 30580 30581 30582 30583 33535 33536 33537 33538 33539 33540 32720 32721 32722 32723 32724 32725 32714 32715 32716 32717 32718 32719 +48 4988 4989 4990 4991 4992 4993 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 32714 32715 32716 32717 32718 32719 32720 32721 32722 32723 32724 32725 33541 33542 33543 33544 33545 33546 32852 32853 32854 32855 32856 32857 32846 32847 32848 32849 32850 32851 +48 4946 4947 4948 4949 4950 4951 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 32846 32847 32848 32849 32850 32851 32852 32853 32854 32855 32856 32857 33553 33554 33555 33556 33557 33558 32990 32991 32992 32993 32994 32995 33002 33003 33004 33005 33006 33007 +48 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 33002 33003 33004 33005 33006 33007 32990 32991 32992 32993 32994 32995 33559 33560 33561 33562 33563 33564 33338 33339 33340 33341 33342 33343 33332 33333 33334 33335 33336 33337 +48 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 32708 32709 32710 32711 32712 32713 32696 32697 32698 32699 32700 32701 33314 33315 33316 33317 33318 33319 32834 32835 32836 32837 32838 32839 32864 32865 32866 32867 32868 32869 +48 4838 4839 4840 4841 4842 4843 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 33589 33590 33591 33592 33593 33594 32966 32967 32968 32969 32970 32971 33326 33327 33328 33329 33330 33331 33086 33087 33088 33089 33090 33091 33098 33099 33100 33101 33102 33103 +36 33086 33087 33088 33089 33090 33091 4838 4839 4840 4841 4842 4843 1705 1706 1707 1708 1709 1710 33098 33099 33100 33101 33102 33103 4850 4851 4852 4853 4854 4855 33523 33524 33525 33526 33527 33528 +48 32654 32655 32656 32657 32658 32659 33260 33261 33262 33263 33264 33265 30038 30039 30040 30041 30042 30043 32366 32367 32368 32369 32370 32371 31700 31701 31702 31703 31704 31705 33493 33494 33495 33496 33497 33498 32666 32667 32668 32669 32670 32671 32660 32661 32662 32663 32664 32665 +48 32798 32799 32800 32801 32802 32803 33266 33267 33268 33269 33270 33271 32654 32655 32656 32657 32658 32659 32660 32661 32662 32663 32664 32665 32666 32667 32668 32669 32670 32671 33499 33500 33501 33502 33503 33504 32810 32811 32812 32813 32814 32815 32804 32805 32806 32807 32808 32809 +48 32930 32931 32932 32933 32934 32935 33272 33273 33274 33275 33276 33277 32798 32799 32800 32801 32802 32803 32804 32805 32806 32807 32808 32809 32810 32811 32812 32813 32814 32815 33505 33506 33507 33508 33509 33510 32942 32943 32944 32945 32946 32947 32936 32937 32938 32939 32940 32941 +36 33170 33171 33172 33173 33174 33175 1717 1718 1719 1720 1721 1722 1669 1670 1671 1672 1673 1674 33188 33189 33190 33191 33192 33193 4730 4731 4732 4733 4734 4735 33529 33530 33531 33532 33533 33534 +48 4670 4671 4672 4673 4674 4675 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 33595 33596 33597 33598 33599 33600 32930 32931 32932 32933 32934 32935 33278 33279 33280 33281 33282 33283 33062 33063 33064 33065 33066 33067 33074 33075 33076 33077 33078 33079 +48 1669 1670 1671 1672 1673 1674 33415 33416 33417 33418 33419 33420 33290 33291 33292 33293 33294 33295 33302 33303 33304 33305 33306 33307 33158 33159 33160 33161 33162 33163 33176 33177 33178 33179 33180 33181 33170 33171 33172 33173 33174 33175 33529 33530 33531 33532 33533 33534 +48 1717 1718 1719 1720 1721 1722 33188 33189 33190 33191 33192 33193 33170 33171 33172 33173 33174 33175 33517 33518 33519 33520 33521 33522 33062 33063 33064 33065 33066 33067 33074 33075 33076 33077 33078 33079 4670 4671 4672 4673 4674 4675 4682 4683 4684 4685 4686 4687 +36 33158 33159 33160 33161 33162 33163 33062 33063 33064 33065 33066 33067 33170 33171 33172 33173 33174 33175 33284 33285 33286 33287 33288 33289 33517 33518 33519 33520 33521 33522 33176 33177 33178 33179 33180 33181 +36 32942 32943 32944 32945 32946 32947 32930 32931 32932 32933 32934 32935 33062 33063 33064 33065 33066 33067 32936 32937 32938 32939 32940 32941 33278 33279 33280 33281 33282 33283 33511 33512 33513 33514 33515 33516 +48 32606 32607 32608 32609 32610 32611 33200 33201 33202 33203 33204 33205 29780 29781 29782 29783 29784 29785 32414 32415 32416 32417 32418 32419 31406 31407 31408 31409 31410 31411 33427 33428 33429 33430 33431 33432 32618 32619 32620 32621 32622 32623 32612 32613 32614 32615 32616 32617 +48 32750 32751 32752 32753 32754 32755 33206 33207 33208 33209 33210 33211 32606 32607 32608 32609 32610 32611 32612 32613 32614 32615 32616 32617 32618 32619 32620 32621 32622 32623 33439 33440 33441 33442 33443 33444 32762 32763 32764 32765 32766 32767 32756 32757 32758 32759 32760 32761 +48 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 32648 32649 32650 32651 32652 32653 32606 32607 32608 32609 32610 32611 33206 33207 33208 33209 33210 33211 32750 32751 32752 32753 32754 32755 32792 32793 32794 32795 32796 32797 +48 32888 32889 32890 32891 32892 32893 33212 33213 33214 33215 33216 33217 32750 32751 32752 32753 32754 32755 32756 32757 32758 32759 32760 32761 32762 32763 32764 32765 32766 32767 33451 33452 33453 33454 33455 33456 32900 32901 32902 32903 32904 32905 32894 32895 32896 32897 32898 32899 +48 33008 33009 33010 33011 33012 33013 33218 33219 33220 33221 33222 33223 32888 32889 32890 32891 32892 32893 32894 32895 32896 32897 32898 32899 32900 32901 32902 32903 32904 32905 33463 33464 33465 33466 33467 33468 33020 33021 33022 33023 33024 33025 33014 33015 33016 33017 33018 33019 +48 33104 33105 33106 33107 33108 33109 33224 33225 33226 33227 33228 33229 33008 33009 33010 33011 33012 33013 33014 33015 33016 33017 33018 33019 33020 33021 33022 33023 33024 33025 33475 33476 33477 33478 33479 33480 33116 33117 33118 33119 33120 33121 33110 33111 33112 33113 33114 33115 +48 1729 1730 1731 1732 1733 1734 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 33050 33051 33052 33053 33054 33055 33008 33009 33010 33011 33012 33013 33224 33225 33226 33227 33228 33229 33104 33105 33106 33107 33108 33109 33146 33147 33148 33149 33150 33151 +48 33230 33231 33232 33233 33234 33235 33254 33255 33256 33257 33258 33259 33104 33105 33106 33107 33108 33109 33110 33111 33112 33113 33114 33115 33116 33117 33118 33119 33120 33121 33487 33488 33489 33490 33491 33492 33374 33375 33376 33377 33378 33379 33368 33369 33370 33371 33372 33373 +48 1681 1682 1683 1684 1685 1686 4334 4335 4336 4337 4338 4339 1729 1730 1731 1732 1733 1734 33146 33147 33148 33149 33150 33151 33104 33105 33106 33107 33108 33109 33254 33255 33256 33257 33258 33259 33230 33231 33232 33233 33234 33235 33397 33398 33399 33400 33401 33402 +48 32480 32481 32482 32483 32484 32485 32564 32565 32566 32567 32568 32569 22556 22557 22558 22559 22560 22561 32462 32463 32464 32465 32466 32467 31418 31419 31420 31421 31422 31423 33421 33422 33423 33424 33425 33426 32624 32625 32626 32627 32628 32629 32636 32637 32638 32639 32640 32641 +48 32504 32505 32506 32507 32508 32509 32570 32571 32572 32573 32574 32575 32480 32481 32482 32483 32484 32485 32636 32637 32638 32639 32640 32641 32624 32625 32626 32627 32628 32629 33433 33434 33435 33436 33437 33438 32768 32769 32770 32771 32772 32773 32780 32781 32782 32783 32784 32785 +48 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 32486 32487 32488 32489 32490 32491 32480 32481 32482 32483 32484 32485 32570 32571 32572 32573 32574 32575 32504 32505 32506 32507 32508 32509 32510 32511 32512 32513 32514 32515 +48 32582 32583 32584 32585 32586 32587 32588 32589 32590 32591 32592 32593 32504 32505 32506 32507 32508 32509 32780 32781 32782 32783 32784 32785 32768 32769 32770 32771 32772 32773 33445 33446 33447 33448 33449 33450 32906 32907 32908 32909 32910 32911 32918 32919 32920 32921 32922 32923 +48 32528 32529 32530 32531 32532 32533 32594 32595 32596 32597 32598 32599 32582 32583 32584 32585 32586 32587 32918 32919 32920 32921 32922 32923 32906 32907 32908 32909 32910 32911 33457 33458 33459 33460 33461 33462 33026 33027 33028 33029 33030 33031 33038 33039 33040 33041 33042 33043 +48 32546 32547 32548 32549 32550 32551 32600 32601 32602 32603 32604 32605 32528 32529 32530 32531 32532 32533 33038 33039 33040 33041 33042 33043 33026 33027 33028 33029 33030 33031 33469 33470 33471 33472 33473 33474 33122 33123 33124 33125 33126 33127 33134 33135 33136 33137 33138 33139 +48 1741 1742 1743 1744 1745 1746 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 32534 32535 32536 32537 32538 32539 32528 32529 32530 32531 32532 32533 32600 32601 32602 32603 32604 32605 32546 32547 32548 32549 32550 32551 32558 32559 32560 32561 32562 32563 +47 33242 33243 33244 33245 33246 33247 33248 33249 33250 33251 33252 33253 32546 32547 32548 32549 32550 32551 33134 33135 33136 33137 33138 33139 33122 33123 33124 33125 33126 33127 33481 33482 33483 33484 33485 33486 33386 33387 33388 33389 33390 33391 33392 33393 33394 33395 33396 +48 1693 1694 1695 1696 1697 1698 4073 4074 4075 4076 4077 4078 1741 1742 1743 1744 1745 1746 32558 32559 32560 32561 32562 32563 32546 32547 32548 32549 32550 32551 33248 33249 33250 33251 33252 33253 33242 33243 33244 33245 33246 33247 33403 33404 33405 33406 33407 33408 +48 1927 1928 1929 1930 1931 1932 33601 33602 33603 33604 33605 33606 33607 33608 33609 33610 33611 33612 33613 33614 33615 33616 33617 33618 1591 1592 1593 1594 1595 1596 33619 33620 33621 33622 33623 33624 3341 3342 3343 3344 3345 3346 4067 4068 4069 4070 4071 4072 +48 1879 1880 1881 1882 1883 1884 33625 33626 33627 33628 33629 33630 33631 33632 33633 33634 33635 33636 33637 33638 33639 33640 33641 33642 1579 1580 1581 1582 1583 1584 33643 33644 33645 33646 33647 33648 3263 3264 3265 3266 3267 3268 4061 4062 4063 4064 4065 4066 +48 1831 1832 1833 1834 1835 1836 33649 33650 33651 33652 33653 33654 33655 33656 33657 33658 33659 33660 33661 33662 33663 33664 33665 33666 1597 1598 1599 1600 1601 1602 33667 33668 33669 33670 33671 33672 3251 3252 3253 3254 3255 3256 4055 4056 4057 4058 4059 4060 +48 1759 1760 1761 1762 1763 1764 33673 33674 33675 33676 33677 33678 33679 33680 33681 33682 33683 33684 33685 33686 33687 33688 33689 33690 1621 1622 1623 1624 1625 1626 33691 33692 33693 33694 33695 33696 3281 3282 3283 3284 3285 3286 4049 4050 4051 4052 4053 4054 +48 1747 1748 1749 1750 1751 1752 33697 33698 33699 33700 33701 33702 33703 33704 33705 33706 33707 33708 33709 33710 33711 33712 33713 33714 1609 1610 1611 1612 1613 1614 33715 33716 33717 33718 33719 33720 3299 3300 3301 3302 3303 3304 4043 4044 4045 4046 4047 4048 +48 33631 33632 33633 33634 33635 33636 33721 33722 33723 33724 33725 33726 33607 33608 33609 33610 33611 33612 33613 33614 33615 33616 33617 33618 1591 1592 1593 1594 1595 1596 1585 1586 1587 1588 1589 1590 1579 1580 1581 1582 1583 1584 33637 33638 33639 33640 33641 33642 +48 33655 33656 33657 33658 33659 33660 33727 33728 33729 33730 33731 33732 33631 33632 33633 33634 33635 33636 33637 33638 33639 33640 33641 33642 1579 1580 1581 1582 1583 1584 1603 1604 1605 1606 1607 1608 1597 1598 1599 1600 1601 1602 33661 33662 33663 33664 33665 33666 +48 33679 33680 33681 33682 33683 33684 33733 33734 33735 33736 33737 33738 33655 33656 33657 33658 33659 33660 33661 33662 33663 33664 33665 33666 1597 1598 1599 1600 1601 1602 1627 1628 1629 1630 1631 1632 1621 1622 1623 1624 1625 1626 33685 33686 33687 33688 33689 33690 +48 33703 33704 33705 33706 33707 33708 33739 33740 33741 33742 33743 33744 33679 33680 33681 33682 33683 33684 33685 33686 33687 33688 33689 33690 1621 1622 1623 1624 1625 1626 1615 1616 1617 1618 1619 1620 1609 1610 1611 1612 1613 1614 33709 33710 33711 33712 33713 33714 +36 33757 33758 33759 33760 33761 33762 33763 33764 33765 33766 33767 33768 33745 33746 33747 33748 33749 33750 33769 33770 33771 33772 33773 33774 33775 33776 33777 33778 33779 33780 33751 33752 33753 33754 33755 33756 +48 2323 2324 2325 2326 2327 2328 33781 33782 33783 33784 33785 33786 33745 33746 33747 33748 33749 33750 33775 33776 33777 33778 33779 33780 33763 33764 33765 33766 33767 33768 33787 33788 33789 33790 33791 33792 1975 1976 1977 1978 1979 1980 4007 4008 4009 4010 4011 4012 +48 2609 2610 2611 2612 2613 2614 33799 33800 33801 33802 33803 33804 33793 33794 33795 33796 33797 33798 33805 33806 33807 33808 33809 33810 33745 33746 33747 33748 33749 33750 33781 33782 33783 33784 33785 33786 2323 2324 2325 2326 2327 2328 3947 3948 3949 3950 3951 3952 +36 33793 33794 33795 33796 33797 33798 2609 2610 2611 2612 2613 2614 2849 2850 2851 2852 2853 2854 33799 33800 33801 33802 33803 33804 3911 3912 3913 3914 3915 3916 33811 33812 33813 33814 33815 33816 +36 33823 33824 33825 33826 33827 33828 2849 2850 2851 2852 2853 2854 2975 2976 2977 2978 2979 2980 33829 33830 33831 33832 33833 33834 3875 3876 3877 3878 3879 3880 33817 33818 33819 33820 33821 33822 +48 3161 3162 3163 3164 3165 3166 33835 33836 33837 33838 33839 33840 33841 33842 33843 33844 33845 33846 33847 33848 33849 33850 33851 33852 33823 33824 33825 33826 33827 33828 33817 33818 33819 33820 33821 33822 2975 2976 2977 2978 2979 2980 3839 3840 3841 3842 3843 3844 +36 33841 33842 33843 33844 33845 33846 3161 3162 3163 3164 3165 3166 3413 3414 3415 3416 3417 3418 33835 33836 33837 33838 33839 33840 3803 3804 3805 3806 3807 3808 33853 33854 33855 33856 33857 33858 +48 33859 33860 33861 33862 33863 33864 33865 33866 33867 33868 33869 33870 33871 33872 33873 33874 33875 33876 33877 33878 33879 33880 33881 33882 33883 33884 33885 33886 33887 33888 33889 33890 33891 33892 33893 33894 33607 33608 33609 33610 33611 33612 33895 33896 33897 33898 33899 33900 +48 2233 2234 2235 2236 2237 2238 33901 33902 33903 33904 33905 33906 33859 33860 33861 33862 33863 33864 33895 33896 33897 33898 33899 33900 33607 33608 33609 33610 33611 33612 33601 33602 33603 33604 33605 33606 1927 1928 1929 1930 1931 1932 3995 3996 3997 3998 3999 4000 +48 33907 33908 33909 33910 33911 33912 33913 33914 33915 33916 33917 33918 33919 33920 33921 33922 33923 33924 33925 33926 33927 33928 33929 33930 33871 33872 33873 33874 33875 33876 33865 33866 33867 33868 33869 33870 33859 33860 33861 33862 33863 33864 33931 33932 33933 33934 33935 33936 +48 2507 2508 2509 2510 2511 2512 33937 33938 33939 33940 33941 33942 33907 33908 33909 33910 33911 33912 33931 33932 33933 33934 33935 33936 33859 33860 33861 33862 33863 33864 33901 33902 33903 33904 33905 33906 2233 2234 2235 2236 2237 2238 3941 3942 3943 3944 3945 3946 +48 33943 33944 33945 33946 33947 33948 33949 33950 33951 33952 33953 33954 33919 33920 33921 33922 33923 33924 33913 33914 33915 33916 33917 33918 33907 33908 33909 33910 33911 33912 33955 33956 33957 33958 33959 33960 2825 2826 2827 2828 2829 2830 33961 33962 33963 33964 33965 33966 +36 33907 33908 33909 33910 33911 33912 2507 2508 2509 2510 2511 2512 2825 2826 2827 2828 2829 2830 33937 33938 33939 33940 33941 33942 3905 3906 3907 3908 3909 3910 33955 33956 33957 33958 33959 33960 +36 33943 33944 33945 33946 33947 33948 2825 2826 2827 2828 2829 2830 33967 33968 33969 33970 33971 33972 33961 33962 33963 33964 33965 33966 33979 33980 33981 33982 33983 33984 33973 33974 33975 33976 33977 33978 +36 33967 33968 33969 33970 33971 33972 2825 2826 2827 2828 2829 2830 2945 2946 2947 2948 2949 2950 33979 33980 33981 33982 33983 33984 3869 3870 3871 3872 3873 3874 33985 33986 33987 33988 33989 33990 +48 3131 3132 3133 3134 3135 3136 33991 33992 33993 33994 33995 33996 33997 33998 33999 34000 34001 34002 34003 34004 34005 34006 34007 34008 33967 33968 33969 33970 33971 33972 33985 33986 33987 33988 33989 33990 2945 2946 2947 2948 2949 2950 3833 3834 3835 3836 3837 3838 +36 33997 33998 33999 34000 34001 34002 3131 3132 3133 3134 3135 3136 3395 3396 3397 3398 3399 3400 33991 33992 33993 33994 33995 33996 3797 3798 3799 3800 3801 3802 34009 34010 34011 34012 34013 34014 +48 34015 34016 34017 34018 34019 34020 34021 34022 34023 34024 34025 34026 34027 34028 34029 34030 34031 34032 34033 34034 34035 34036 34037 34038 34039 34040 34041 34042 34043 34044 34045 34046 34047 34048 34049 34050 33631 33632 33633 33634 33635 33636 34051 34052 34053 34054 34055 34056 +48 2185 2186 2187 2188 2189 2190 34057 34058 34059 34060 34061 34062 34015 34016 34017 34018 34019 34020 34051 34052 34053 34054 34055 34056 33631 33632 33633 33634 33635 33636 33625 33626 33627 33628 33629 33630 1879 1880 1881 1882 1883 1884 3965 3966 3967 3968 3969 3970 +48 34063 34064 34065 34066 34067 34068 34069 34070 34071 34072 34073 34074 34075 34076 34077 34078 34079 34080 34081 34082 34083 34084 34085 34086 34027 34028 34029 34030 34031 34032 34021 34022 34023 34024 34025 34026 34015 34016 34017 34018 34019 34020 34087 34088 34089 34090 34091 34092 +48 2459 2460 2461 2462 2463 2464 34093 34094 34095 34096 34097 34098 34063 34064 34065 34066 34067 34068 34087 34088 34089 34090 34091 34092 34015 34016 34017 34018 34019 34020 34057 34058 34059 34060 34061 34062 2185 2186 2187 2188 2189 2190 3935 3936 3937 3938 3939 3940 +48 34099 34100 34101 34102 34103 34104 34105 34106 34107 34108 34109 34110 34111 34112 34113 34114 34115 34116 34117 34118 34119 34120 34121 34122 34075 34076 34077 34078 34079 34080 34069 34070 34071 34072 34073 34074 34063 34064 34065 34066 34067 34068 34123 34124 34125 34126 34127 34128 +48 2735 2736 2737 2738 2739 2740 34129 34130 34131 34132 34133 34134 34099 34100 34101 34102 34103 34104 34123 34124 34125 34126 34127 34128 34063 34064 34065 34066 34067 34068 34093 34094 34095 34096 34097 34098 2459 2460 2461 2462 2463 2464 3899 3900 3901 3902 3903 3904 +36 34111 34112 34113 34114 34115 34116 34099 34100 34101 34102 34103 34104 34135 34136 34137 34138 34139 34140 34105 34106 34107 34108 34109 34110 34147 34148 34149 34150 34151 34152 34141 34142 34143 34144 34145 34146 +48 2915 2916 2917 2918 2919 2920 34153 34154 34155 34156 34157 34158 34135 34136 34137 34138 34139 34140 34147 34148 34149 34150 34151 34152 34099 34100 34101 34102 34103 34104 34129 34130 34131 34132 34133 34134 2735 2736 2737 2738 2739 2740 3863 3864 3865 3866 3867 3868 +48 3101 3102 3103 3104 3105 3106 34159 34160 34161 34162 34163 34164 34165 34166 34167 34168 34169 34170 34171 34172 34173 34174 34175 34176 34135 34136 34137 34138 34139 34140 34153 34154 34155 34156 34157 34158 2915 2916 2917 2918 2919 2920 3827 3828 3829 3830 3831 3832 +36 34165 34166 34167 34168 34169 34170 3101 3102 3103 3104 3105 3106 3377 3378 3379 3380 3381 3382 34159 34160 34161 34162 34163 34164 3791 3792 3793 3794 3795 3796 34177 34178 34179 34180 34181 34182 +48 34183 34184 34185 34186 34187 34188 34189 34190 34191 34192 34193 34194 34195 34196 34197 34198 34199 34200 34201 34202 34203 34204 34205 34206 34207 34208 34209 34210 34211 34212 34213 34214 34215 34216 34217 34218 33655 33656 33657 33658 33659 33660 34219 34220 34221 34222 34223 34224 +48 2137 2138 2139 2140 2141 2142 34225 34226 34227 34228 34229 34230 34183 34184 34185 34186 34187 34188 34219 34220 34221 34222 34223 34224 33655 33656 33657 33658 33659 33660 33649 33650 33651 33652 33653 33654 1831 1832 1833 1834 1835 1836 3971 3972 3973 3974 3975 3976 +48 34231 34232 34233 34234 34235 34236 34237 34238 34239 34240 34241 34242 34243 34244 34245 34246 34247 34248 34249 34250 34251 34252 34253 34254 34195 34196 34197 34198 34199 34200 34189 34190 34191 34192 34193 34194 34183 34184 34185 34186 34187 34188 34255 34256 34257 34258 34259 34260 +48 2411 2412 2413 2414 2415 2416 34261 34262 34263 34264 34265 34266 34231 34232 34233 34234 34235 34236 34255 34256 34257 34258 34259 34260 34183 34184 34185 34186 34187 34188 34225 34226 34227 34228 34229 34230 2137 2138 2139 2140 2141 2142 3929 3930 3931 3932 3933 3934 +48 34267 34268 34269 34270 34271 34272 34273 34274 34275 34276 34277 34278 34279 34280 34281 34282 34283 34284 34285 34286 34287 34288 34289 34290 34243 34244 34245 34246 34247 34248 34237 34238 34239 34240 34241 34242 34231 34232 34233 34234 34235 34236 34291 34292 34293 34294 34295 34296 +48 2687 2688 2689 2690 2691 2692 34297 34298 34299 34300 34301 34302 34267 34268 34269 34270 34271 34272 34291 34292 34293 34294 34295 34296 34231 34232 34233 34234 34235 34236 34261 34262 34263 34264 34265 34266 2411 2412 2413 2414 2415 2416 3893 3894 3895 3896 3897 3898 +36 34279 34280 34281 34282 34283 34284 34267 34268 34269 34270 34271 34272 34303 34304 34305 34306 34307 34308 34273 34274 34275 34276 34277 34278 34315 34316 34317 34318 34319 34320 34309 34310 34311 34312 34313 34314 +48 2885 2886 2887 2888 2889 2890 34321 34322 34323 34324 34325 34326 34303 34304 34305 34306 34307 34308 34315 34316 34317 34318 34319 34320 34267 34268 34269 34270 34271 34272 34297 34298 34299 34300 34301 34302 2687 2688 2689 2690 2691 2692 3857 3858 3859 3860 3861 3862 +48 3071 3072 3073 3074 3075 3076 34327 34328 34329 34330 34331 34332 34333 34334 34335 34336 34337 34338 34339 34340 34341 34342 34343 34344 34303 34304 34305 34306 34307 34308 34321 34322 34323 34324 34325 34326 2885 2886 2887 2888 2889 2890 3821 3822 3823 3824 3825 3826 +36 34333 34334 34335 34336 34337 34338 3071 3072 3073 3074 3075 3076 3323 3324 3325 3326 3327 3328 34327 34328 34329 34330 34331 34332 3785 3786 3787 3788 3789 3790 34345 34346 34347 34348 34349 34350 +48 34351 34352 34353 34354 34355 34356 34357 34358 34359 34360 34361 34362 34363 34364 34365 34366 34367 34368 34369 34370 34371 34372 34373 34374 34375 34376 34377 34378 34379 34380 34381 34382 34383 34384 34385 34386 33679 33680 33681 33682 33683 33684 34387 34388 34389 34390 34391 34392 +48 2065 2066 2067 2068 2069 2070 34393 34394 34395 34396 34397 34398 34351 34352 34353 34354 34355 34356 34387 34388 34389 34390 34391 34392 33679 33680 33681 33682 33683 33684 33673 33674 33675 33676 33677 33678 1759 1760 1761 1762 1763 1764 3953 3954 3955 3956 3957 3958 +48 34399 34400 34401 34402 34403 34404 34405 34406 34407 34408 34409 34410 34411 34412 34413 34414 34415 34416 34417 34418 34419 34420 34421 34422 34363 34364 34365 34366 34367 34368 34357 34358 34359 34360 34361 34362 34351 34352 34353 34354 34355 34356 34423 34424 34425 34426 34427 34428 +48 2287 2288 2289 2290 2291 2292 34429 34430 34431 34432 34433 34434 34399 34400 34401 34402 34403 34404 34423 34424 34425 34426 34427 34428 34351 34352 34353 34354 34355 34356 34393 34394 34395 34396 34397 34398 2065 2066 2067 2068 2069 2070 3917 3918 3919 3920 3921 3922 +48 34435 34436 34437 34438 34439 34440 34441 34442 34443 34444 34445 34446 34447 34448 34449 34450 34451 34452 34453 34454 34455 34456 34457 34458 34411 34412 34413 34414 34415 34416 34405 34406 34407 34408 34409 34410 34399 34400 34401 34402 34403 34404 34459 34460 34461 34462 34463 34464 +48 2561 2562 2563 2564 2565 2566 34465 34466 34467 34468 34469 34470 34435 34436 34437 34438 34439 34440 34459 34460 34461 34462 34463 34464 34399 34400 34401 34402 34403 34404 34429 34430 34431 34432 34433 34434 2287 2288 2289 2290 2291 2292 3881 3882 3883 3884 3885 3886 +36 34447 34448 34449 34450 34451 34452 34435 34436 34437 34438 34439 34440 34471 34472 34473 34474 34475 34476 34441 34442 34443 34444 34445 34446 34483 34484 34485 34486 34487 34488 34477 34478 34479 34480 34481 34482 +48 2789 2790 2791 2792 2793 2794 34489 34490 34491 34492 34493 34494 34471 34472 34473 34474 34475 34476 34483 34484 34485 34486 34487 34488 34435 34436 34437 34438 34439 34440 34465 34466 34467 34468 34469 34470 2561 2562 2563 2564 2565 2566 3845 3846 3847 3848 3849 3850 +48 3029 3030 3031 3032 3033 3034 34495 34496 34497 34498 34499 34500 34501 34502 34503 34504 34505 34506 34507 34508 34509 34510 34511 34512 34471 34472 34473 34474 34475 34476 34489 34490 34491 34492 34493 34494 2789 2790 2791 2792 2793 2794 3809 3810 3811 3812 3813 3814 +48 3215 3216 3217 3218 3219 3220 34513 34514 34515 34516 34517 34518 34519 34520 34521 34522 34523 34524 34525 34526 34527 34528 34529 34530 34501 34502 34503 34504 34505 34506 34495 34496 34497 34498 34499 34500 3029 3030 3031 3032 3033 3034 3773 3774 3775 3776 3777 3778 +48 21554 21555 21556 21557 21558 21559 32420 32421 32422 32423 32424 32425 30896 30897 30898 30899 30900 30901 30890 30891 30892 30893 30894 30895 30884 30885 30886 30887 30888 30889 34531 34532 34533 34534 34535 34536 33703 33704 33705 33706 33707 33708 34537 34538 34539 34540 34541 34542 +48 2053 2054 2055 2056 2057 2058 21548 21549 21550 21551 21552 21553 21554 21555 21556 21557 21558 21559 34537 34538 34539 34540 34541 34542 33703 33704 33705 33706 33707 33708 33697 33698 33699 33700 33701 33702 1747 1748 1749 1750 1751 1752 3959 3960 3961 3962 3963 3964 +48 29546 29547 29548 29549 29550 29551 32372 32373 32374 32375 32376 32377 30914 30915 30916 30917 30918 30919 30920 30921 30922 30923 30924 30925 30896 30897 30898 30899 30900 30901 32420 32421 32422 32423 32424 32425 21554 21555 21556 21557 21558 21559 29552 29553 29554 29555 29556 29557 +48 2275 2276 2277 2278 2279 2280 34543 34544 34545 34546 34547 34548 29546 29547 29548 29549 29550 29551 29552 29553 29554 29555 29556 29557 21554 21555 21556 21557 21558 21559 21548 21549 21550 21551 21552 21553 2053 2054 2055 2056 2057 2058 3923 3924 3925 3926 3927 3928 +48 29804 29805 29806 29807 29808 29809 32318 32319 32320 32321 32322 32323 31442 31443 31444 31445 31446 31447 31448 31449 31450 31451 31452 31453 30914 30915 30916 30917 30918 30919 32372 32373 32374 32375 32376 32377 29546 29547 29548 29549 29550 29551 29810 29811 29812 29813 29814 29815 +48 2549 2550 2551 2552 2553 2554 34549 34550 34551 34552 34553 34554 29804 29805 29806 29807 29808 29809 29810 29811 29812 29813 29814 29815 29546 29547 29548 29549 29550 29551 34543 34544 34545 34546 34547 34548 2275 2276 2277 2278 2279 2280 3887 3888 3889 3890 3891 3892 +36 31442 31443 31444 31445 31446 31447 29804 29805 29806 29807 29808 29809 30062 30063 30064 30065 30066 30067 32318 32319 32320 32321 32322 32323 30068 30069 30070 30071 30072 30073 31724 31725 31726 31727 31728 31729 +48 2777 2778 2779 2780 2781 2782 34555 34556 34557 34558 34559 34560 30062 30063 30064 30065 30066 30067 30068 30069 30070 30071 30072 30073 29804 29805 29806 29807 29808 29809 34549 34550 34551 34552 34553 34554 2549 2550 2551 2552 2553 2554 3851 3852 3853 3854 3855 3856 +48 3017 3018 3019 3020 3021 3022 32246 32247 32248 32249 32250 32251 30320 30321 30322 30323 30324 30325 30326 30327 30328 30329 30330 30331 30062 30063 30064 30065 30066 30067 34555 34556 34557 34558 34559 34560 2777 2778 2779 2780 2781 2782 3815 3816 3817 3818 3819 3820 +48 3203 3204 3205 3206 3207 3208 32270 32271 32272 32273 32274 32275 30602 30603 30604 30605 30606 30607 30608 30609 30610 30611 30612 30613 30320 30321 30322 30323 30324 30325 32246 32247 32248 32249 32250 32251 3017 3018 3019 3020 3021 3022 3779 3780 3781 3782 3783 3784 +48 34015 34016 34017 34018 34019 34020 34561 34562 34563 34564 34565 34566 33871 33872 33873 33874 33875 33876 33877 33878 33879 33880 33881 33882 33883 33884 33885 33886 33887 33888 34567 34568 34569 34570 34571 34572 33631 33632 33633 33634 33635 33636 34051 34052 34053 34054 34055 34056 +48 34183 34184 34185 34186 34187 34188 34573 34574 34575 34576 34577 34578 34015 34016 34017 34018 34019 34020 34051 34052 34053 34054 34055 34056 33631 33632 33633 33634 33635 33636 33727 33728 33729 33730 33731 33732 33655 33656 33657 33658 33659 33660 34219 34220 34221 34222 34223 34224 +48 34351 34352 34353 34354 34355 34356 34579 34580 34581 34582 34583 34584 34183 34184 34185 34186 34187 34188 34219 34220 34221 34222 34223 34224 33655 33656 33657 33658 33659 33660 33733 33734 33735 33736 33737 33738 33679 33680 33681 33682 33683 33684 34387 34388 34389 34390 34391 34392 +48 21554 21555 21556 21557 21558 21559 34585 34586 34587 34588 34589 34590 34351 34352 34353 34354 34355 34356 34387 34388 34389 34390 34391 34392 33679 33680 33681 33682 33683 33684 33739 33740 33741 33742 33743 33744 33703 33704 33705 33706 33707 33708 34537 34538 34539 34540 34541 34542 +48 34063 34064 34065 34066 34067 34068 34591 34592 34593 34594 34595 34596 33919 33920 33921 33922 33923 33924 33925 33926 33927 33928 33929 33930 33871 33872 33873 33874 33875 33876 34561 34562 34563 34564 34565 34566 34015 34016 34017 34018 34019 34020 34087 34088 34089 34090 34091 34092 +48 34231 34232 34233 34234 34235 34236 34597 34598 34599 34600 34601 34602 34063 34064 34065 34066 34067 34068 34087 34088 34089 34090 34091 34092 34015 34016 34017 34018 34019 34020 34573 34574 34575 34576 34577 34578 34183 34184 34185 34186 34187 34188 34255 34256 34257 34258 34259 34260 +48 34399 34400 34401 34402 34403 34404 34603 34604 34605 34606 34607 34608 34231 34232 34233 34234 34235 34236 34255 34256 34257 34258 34259 34260 34183 34184 34185 34186 34187 34188 34579 34580 34581 34582 34583 34584 34351 34352 34353 34354 34355 34356 34423 34424 34425 34426 34427 34428 +48 29546 29547 29548 29549 29550 29551 34609 34610 34611 34612 34613 34614 34399 34400 34401 34402 34403 34404 34423 34424 34425 34426 34427 34428 34351 34352 34353 34354 34355 34356 34585 34586 34587 34588 34589 34590 21554 21555 21556 21557 21558 21559 29552 29553 29554 29555 29556 29557 +48 34099 34100 34101 34102 34103 34104 34615 34616 34617 34618 34619 34620 2825 2826 2827 2828 2829 2830 34621 34622 34623 34624 34625 34626 33919 33920 33921 33922 33923 33924 34591 34592 34593 34594 34595 34596 34063 34064 34065 34066 34067 34068 34123 34124 34125 34126 34127 34128 +48 34267 34268 34269 34270 34271 34272 34627 34628 34629 34630 34631 34632 34099 34100 34101 34102 34103 34104 34123 34124 34125 34126 34127 34128 34063 34064 34065 34066 34067 34068 34597 34598 34599 34600 34601 34602 34231 34232 34233 34234 34235 34236 34291 34292 34293 34294 34295 34296 +48 34435 34436 34437 34438 34439 34440 34633 34634 34635 34636 34637 34638 34267 34268 34269 34270 34271 34272 34291 34292 34293 34294 34295 34296 34231 34232 34233 34234 34235 34236 34603 34604 34605 34606 34607 34608 34399 34400 34401 34402 34403 34404 34459 34460 34461 34462 34463 34464 +48 29804 29805 29806 29807 29808 29809 34639 34640 34641 34642 34643 34644 34435 34436 34437 34438 34439 34440 34459 34460 34461 34462 34463 34464 34399 34400 34401 34402 34403 34404 34609 34610 34611 34612 34613 34614 29546 29547 29548 29549 29550 29551 29810 29811 29812 29813 29814 29815 +48 34135 34136 34137 34138 34139 34140 34645 34646 34647 34648 34649 34650 33967 33968 33969 33970 33971 33972 33979 33980 33981 33982 33983 33984 2825 2826 2827 2828 2829 2830 34615 34616 34617 34618 34619 34620 34099 34100 34101 34102 34103 34104 34147 34148 34149 34150 34151 34152 +48 34303 34304 34305 34306 34307 34308 34651 34652 34653 34654 34655 34656 34135 34136 34137 34138 34139 34140 34147 34148 34149 34150 34151 34152 34099 34100 34101 34102 34103 34104 34627 34628 34629 34630 34631 34632 34267 34268 34269 34270 34271 34272 34315 34316 34317 34318 34319 34320 +48 34471 34472 34473 34474 34475 34476 34657 34658 34659 34660 34661 34662 34303 34304 34305 34306 34307 34308 34315 34316 34317 34318 34319 34320 34267 34268 34269 34270 34271 34272 34633 34634 34635 34636 34637 34638 34435 34436 34437 34438 34439 34440 34483 34484 34485 34486 34487 34488 +48 30062 30063 30064 30065 30066 30067 34663 34664 34665 34666 34667 34668 34471 34472 34473 34474 34475 34476 34483 34484 34485 34486 34487 34488 34435 34436 34437 34438 34439 34440 34639 34640 34641 34642 34643 34644 29804 29805 29806 29807 29808 29809 30068 30069 30070 30071 30072 30073 +34 34675 34676 34677 34678 34679 34680 2023 2024 2025 2026 2027 2028 2347 2348 2349 2350 34681 34682 34683 34684 34685 34686 3641 3642 3643 3644 3645 3646 34669 34670 34671 34672 34673 34674 +46 33745 33746 33747 33748 33749 33750 34687 34688 34689 34690 34691 34692 2347 2348 2349 2350 34669 34670 34671 34672 34673 34674 34675 34676 34677 34678 34679 34680 34693 34694 34695 34696 34697 34698 33757 33758 33759 33760 33761 33762 33751 33752 33753 33754 33755 33756 +48 33871 33872 33873 33874 33875 33876 34699 34700 34701 34702 34703 34704 33745 33746 33747 33748 33749 33750 33751 33752 33753 33754 33755 33756 33757 33758 33759 33760 33761 33762 34705 34706 34707 34708 34709 34710 33883 33884 33885 33886 33887 33888 33877 33878 33879 33880 33881 33882 +48 34027 34028 34029 34030 34031 34032 34711 34712 34713 34714 34715 34716 33871 33872 33873 33874 33875 33876 33877 33878 33879 33880 33881 33882 33883 33884 33885 33886 33887 33888 34717 34718 34719 34720 34721 34722 34039 34040 34041 34042 34043 34044 34033 34034 34035 34036 34037 34038 +48 34195 34196 34197 34198 34199 34200 34723 34724 34725 34726 34727 34728 34027 34028 34029 34030 34031 34032 34033 34034 34035 34036 34037 34038 34039 34040 34041 34042 34043 34044 34729 34730 34731 34732 34733 34734 34207 34208 34209 34210 34211 34212 34201 34202 34203 34204 34205 34206 +48 34363 34364 34365 34366 34367 34368 34735 34736 34737 34738 34739 34740 34195 34196 34197 34198 34199 34200 34201 34202 34203 34204 34205 34206 34207 34208 34209 34210 34211 34212 34741 34742 34743 34744 34745 34746 34375 34376 34377 34378 34379 34380 34369 34370 34371 34372 34373 34374 +48 30896 30897 30898 30899 30900 30901 34747 34748 34749 34750 34751 34752 34363 34364 34365 34366 34367 34368 34369 34370 34371 34372 34373 34374 34375 34376 34377 34378 34379 34380 34753 34754 34755 34756 34757 34758 30884 30885 30886 30887 30888 30889 30890 30891 30892 30893 30894 30895 +46 33793 33794 33795 33796 33797 33798 34759 34760 34761 34762 34763 34764 2621 2622 2623 2624 2625 2626 3593 3594 3595 3596 3597 3598 2347 2348 2349 2350 34687 34688 34689 34690 34691 34692 33745 33746 33747 33748 33749 33750 33805 33806 33807 33808 33809 33810 +48 33919 33920 33921 33922 33923 33924 34765 34766 34767 34768 34769 34770 33793 33794 33795 33796 33797 33798 33805 33806 33807 33808 33809 33810 33745 33746 33747 33748 33749 33750 34699 34700 34701 34702 34703 34704 33871 33872 33873 33874 33875 33876 33925 33926 33927 33928 33929 33930 +48 34075 34076 34077 34078 34079 34080 34771 34772 34773 34774 34775 34776 33919 33920 33921 33922 33923 33924 33925 33926 33927 33928 33929 33930 33871 33872 33873 33874 33875 33876 34711 34712 34713 34714 34715 34716 34027 34028 34029 34030 34031 34032 34081 34082 34083 34084 34085 34086 +48 34243 34244 34245 34246 34247 34248 34777 34778 34779 34780 34781 34782 34075 34076 34077 34078 34079 34080 34081 34082 34083 34084 34085 34086 34027 34028 34029 34030 34031 34032 34723 34724 34725 34726 34727 34728 34195 34196 34197 34198 34199 34200 34249 34250 34251 34252 34253 34254 +48 34411 34412 34413 34414 34415 34416 34783 34784 34785 34786 34787 34788 34243 34244 34245 34246 34247 34248 34249 34250 34251 34252 34253 34254 34195 34196 34197 34198 34199 34200 34735 34736 34737 34738 34739 34740 34363 34364 34365 34366 34367 34368 34417 34418 34419 34420 34421 34422 +48 30914 30915 30916 30917 30918 30919 34789 34790 34791 34792 34793 34794 34411 34412 34413 34414 34415 34416 34417 34418 34419 34420 34421 34422 34363 34364 34365 34366 34367 34368 34747 34748 34749 34750 34751 34752 30896 30897 30898 30899 30900 30901 30920 30921 30922 30923 30924 30925 +36 2621 2622 2623 2624 2625 2626 33793 33794 33795 33796 33797 33798 2849 2850 2851 2852 2853 2854 34759 34760 34761 34762 34763 34764 33811 33812 33813 33814 33815 33816 3551 3552 3553 3554 3555 3556 +48 33943 33944 33945 33946 33947 33948 34795 34796 34797 34798 34799 34800 2849 2850 2851 2852 2853 2854 33811 33812 33813 33814 33815 33816 33793 33794 33795 33796 33797 33798 34765 34766 34767 34768 34769 34770 33919 33920 33921 33922 33923 33924 33949 33950 33951 33952 33953 33954 +48 34111 34112 34113 34114 34115 34116 34801 34802 34803 34804 34805 34806 33943 33944 33945 33946 33947 33948 33949 33950 33951 33952 33953 33954 33919 33920 33921 33922 33923 33924 34771 34772 34773 34774 34775 34776 34075 34076 34077 34078 34079 34080 34117 34118 34119 34120 34121 34122 +48 34279 34280 34281 34282 34283 34284 34807 34808 34809 34810 34811 34812 34111 34112 34113 34114 34115 34116 34117 34118 34119 34120 34121 34122 34075 34076 34077 34078 34079 34080 34777 34778 34779 34780 34781 34782 34243 34244 34245 34246 34247 34248 34285 34286 34287 34288 34289 34290 +48 34447 34448 34449 34450 34451 34452 34813 34814 34815 34816 34817 34818 34279 34280 34281 34282 34283 34284 34285 34286 34287 34288 34289 34290 34243 34244 34245 34246 34247 34248 34783 34784 34785 34786 34787 34788 34411 34412 34413 34414 34415 34416 34453 34454 34455 34456 34457 34458 +48 31442 31443 31444 31445 31446 31447 34819 34820 34821 34822 34823 34824 34447 34448 34449 34450 34451 34452 34453 34454 34455 34456 34457 34458 34411 34412 34413 34414 34415 34416 34789 34790 34791 34792 34793 34794 30914 30915 30916 30917 30918 30919 31448 31449 31450 31451 31452 31453 +36 3005 3006 3007 3008 3009 3010 2849 2850 2851 2852 2853 2854 33823 33824 33825 33826 33827 33828 3509 3510 3511 3512 3513 3514 33829 33830 33831 33832 33833 33834 34825 34826 34827 34828 34829 34830 +48 33967 33968 33969 33970 33971 33972 34831 34832 34833 34834 34835 34836 33823 33824 33825 33826 33827 33828 33829 33830 33831 33832 33833 33834 2849 2850 2851 2852 2853 2854 34795 34796 34797 34798 34799 34800 33943 33944 33945 33946 33947 33948 33973 33974 33975 33976 33977 33978 +48 34135 34136 34137 34138 34139 34140 34645 34646 34647 34648 34649 34650 33967 33968 33969 33970 33971 33972 33973 33974 33975 33976 33977 33978 33943 33944 33945 33946 33947 33948 34801 34802 34803 34804 34805 34806 34111 34112 34113 34114 34115 34116 34141 34142 34143 34144 34145 34146 +48 34303 34304 34305 34306 34307 34308 34651 34652 34653 34654 34655 34656 34135 34136 34137 34138 34139 34140 34141 34142 34143 34144 34145 34146 34111 34112 34113 34114 34115 34116 34807 34808 34809 34810 34811 34812 34279 34280 34281 34282 34283 34284 34309 34310 34311 34312 34313 34314 +48 34471 34472 34473 34474 34475 34476 34657 34658 34659 34660 34661 34662 34303 34304 34305 34306 34307 34308 34309 34310 34311 34312 34313 34314 34279 34280 34281 34282 34283 34284 34813 34814 34815 34816 34817 34818 34447 34448 34449 34450 34451 34452 34477 34478 34479 34480 34481 34482 +48 30062 30063 30064 30065 30066 30067 34663 34664 34665 34666 34667 34668 34471 34472 34473 34474 34475 34476 34477 34478 34479 34480 34481 34482 34447 34448 34449 34450 34451 34452 34819 34820 34821 34822 34823 34824 31442 31443 31444 31445 31446 31447 31724 31725 31726 31727 31728 31729 +48 33841 33842 33843 33844 33845 33846 34837 34838 34839 34840 34841 34842 3191 3192 3193 3194 3195 3196 3467 3468 3469 3470 3471 3472 3005 3006 3007 3008 3009 3010 34825 34826 34827 34828 34829 34830 33823 33824 33825 33826 33827 33828 33847 33848 33849 33850 33851 33852 +48 33997 33998 33999 34000 34001 34002 34843 34844 34845 34846 34847 34848 33841 33842 33843 33844 33845 33846 33847 33848 33849 33850 33851 33852 33823 33824 33825 33826 33827 33828 34831 34832 34833 34834 34835 34836 33967 33968 33969 33970 33971 33972 34003 34004 34005 34006 34007 34008 +48 34165 34166 34167 34168 34169 34170 34849 34850 34851 34852 34853 34854 33997 33998 33999 34000 34001 34002 34003 34004 34005 34006 34007 34008 33967 33968 33969 33970 33971 33972 34645 34646 34647 34648 34649 34650 34135 34136 34137 34138 34139 34140 34171 34172 34173 34174 34175 34176 +48 34333 34334 34335 34336 34337 34338 34855 34856 34857 34858 34859 34860 34165 34166 34167 34168 34169 34170 34171 34172 34173 34174 34175 34176 34135 34136 34137 34138 34139 34140 34651 34652 34653 34654 34655 34656 34303 34304 34305 34306 34307 34308 34339 34340 34341 34342 34343 34344 +48 34501 34502 34503 34504 34505 34506 34861 34862 34863 34864 34865 34866 34333 34334 34335 34336 34337 34338 34339 34340 34341 34342 34343 34344 34303 34304 34305 34306 34307 34308 34657 34658 34659 34660 34661 34662 34471 34472 34473 34474 34475 34476 34507 34508 34509 34510 34511 34512 +48 30320 30321 30322 30323 30324 30325 34867 34868 34869 34870 34871 34872 34501 34502 34503 34504 34505 34506 34507 34508 34509 34510 34511 34512 34471 34472 34473 34474 34475 34476 34663 34664 34665 34666 34667 34668 30062 30063 30064 30065 30066 30067 30326 30327 30328 30329 30330 30331 +36 3191 3192 3193 3194 3195 3196 33841 33842 33843 33844 33845 33846 3413 3414 3415 3416 3417 3418 34837 34838 34839 34840 34841 34842 33853 33854 33855 33856 33857 33858 3425 3426 3427 3428 3429 3430 +48 3395 3396 3397 3398 3399 3400 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 33853 33854 33855 33856 33857 33858 33841 33842 33843 33844 33845 33846 34843 34844 34845 34846 34847 34848 33997 33998 33999 34000 34001 34002 34009 34010 34011 34012 34013 34014 +48 3377 3378 3379 3380 3381 3382 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 34009 34010 34011 34012 34013 34014 33997 33998 33999 34000 34001 34002 34849 34850 34851 34852 34853 34854 34165 34166 34167 34168 34169 34170 34177 34178 34179 34180 34181 34182 +48 3323 3324 3325 3326 3327 3328 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 34177 34178 34179 34180 34181 34182 34165 34166 34167 34168 34169 34170 34855 34856 34857 34858 34859 34860 34333 34334 34335 34336 34337 34338 34345 34346 34347 34348 34349 34350 +48 34519 34520 34521 34522 34523 34524 34873 34874 34875 34876 34877 34878 3323 3324 3325 3326 3327 3328 34345 34346 34347 34348 34349 34350 34333 34334 34335 34336 34337 34338 34861 34862 34863 34864 34865 34866 34501 34502 34503 34504 34505 34506 34525 34526 34527 34528 34529 34530 +48 30602 30603 30604 30605 30606 30607 34879 34880 34881 34882 34883 34884 34519 34520 34521 34522 34523 34524 34525 34526 34527 34528 34529 34530 34501 34502 34503 34504 34505 34506 34867 34868 34869 34870 34871 34872 30320 30321 30322 30323 30324 30325 30608 30609 30610 30611 30612 30613 +48 3263 3264 3265 3266 3267 3268 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 33619 33620 33621 33622 33623 33624 1591 1592 1593 1594 1595 1596 1585 1586 1587 1588 1589 1590 1579 1580 1581 1582 1583 1584 33643 33644 33645 33646 33647 33648 +36 34519 34520 34521 34522 34523 34524 3323 3324 3325 3326 3327 3328 3215 3216 3217 3218 3219 3220 34873 34874 34875 34876 34877 34878 3329 3330 3331 3332 3333 3334 34513 34514 34515 34516 34517 34518 +48 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3281 3282 3283 3284 3285 3286 33691 33692 33693 33694 33695 33696 1621 1622 1623 1624 1625 1626 1615 1616 1617 1618 1619 1620 1609 1610 1611 1612 1613 1614 33715 33716 33717 33718 33719 33720 +48 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3251 3252 3253 3254 3255 3256 33667 33668 33669 33670 33671 33672 1597 1598 1599 1600 1601 1602 1627 1628 1629 1630 1631 1632 1621 1622 1623 1624 1625 1626 33691 33692 33693 33694 33695 33696 +48 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 33643 33644 33645 33646 33647 33648 1579 1580 1581 1582 1583 1584 1603 1604 1605 1606 1607 1608 1597 1598 1599 1600 1601 1602 33667 33668 33669 33670 33671 33672 +48 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 34513 34514 34515 34516 34517 34518 34519 34520 34521 34522 34523 34524 34879 34880 34881 34882 34883 34884 30602 30603 30604 30605 30606 30607 32270 32271 32272 32273 32274 32275 +36 33841 33842 33843 33844 33845 33846 3191 3192 3193 3194 3195 3196 3161 3162 3163 3164 3165 3166 34837 34838 34839 34840 34841 34842 3197 3198 3199 3200 3201 3202 33835 33836 33837 33838 33839 33840 +48 3131 3132 3133 3134 3135 3136 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 33835 33836 33837 33838 33839 33840 33841 33842 33843 33844 33845 33846 34843 34844 34845 34846 34847 34848 33997 33998 33999 34000 34001 34002 33991 33992 33993 33994 33995 33996 +48 3101 3102 3103 3104 3105 3106 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 33991 33992 33993 33994 33995 33996 33997 33998 33999 34000 34001 34002 34849 34850 34851 34852 34853 34854 34165 34166 34167 34168 34169 34170 34159 34160 34161 34162 34163 34164 +48 3071 3072 3073 3074 3075 3076 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 34159 34160 34161 34162 34163 34164 34165 34166 34167 34168 34169 34170 34855 34856 34857 34858 34859 34860 34333 34334 34335 34336 34337 34338 34327 34328 34329 34330 34331 34332 +48 3029 3030 3031 3032 3033 3034 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 34327 34328 34329 34330 34331 34332 34333 34334 34335 34336 34337 34338 34861 34862 34863 34864 34865 34866 34501 34502 34503 34504 34505 34506 34495 34496 34497 34498 34499 34500 +48 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 34495 34496 34497 34498 34499 34500 34501 34502 34503 34504 34505 34506 34867 34868 34869 34870 34871 34872 30320 30321 30322 30323 30324 30325 32246 32247 32248 32249 32250 32251 +36 33823 33824 33825 33826 33827 33828 3005 3006 3007 3008 3009 3010 2975 2976 2977 2978 2979 2980 34825 34826 34827 34828 34829 34830 3011 3012 3013 3014 3015 3016 33817 33818 33819 33820 33821 33822 +48 2945 2946 2947 2948 2949 2950 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 33817 33818 33819 33820 33821 33822 33823 33824 33825 33826 33827 33828 34831 34832 34833 34834 34835 34836 33967 33968 33969 33970 33971 33972 33985 33986 33987 33988 33989 33990 +48 2915 2916 2917 2918 2919 2920 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 33985 33986 33987 33988 33989 33990 33967 33968 33969 33970 33971 33972 34645 34646 34647 34648 34649 34650 34135 34136 34137 34138 34139 34140 34153 34154 34155 34156 34157 34158 +48 2885 2886 2887 2888 2889 2890 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 34153 34154 34155 34156 34157 34158 34135 34136 34137 34138 34139 34140 34651 34652 34653 34654 34655 34656 34303 34304 34305 34306 34307 34308 34321 34322 34323 34324 34325 34326 +48 2789 2790 2791 2792 2793 2794 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 34321 34322 34323 34324 34325 34326 34303 34304 34305 34306 34307 34308 34657 34658 34659 34660 34661 34662 34471 34472 34473 34474 34475 34476 34489 34490 34491 34492 34493 34494 +36 34099 34100 34101 34102 34103 34104 2825 2826 2827 2828 2829 2830 2735 2736 2737 2738 2739 2740 34615 34616 34617 34618 34619 34620 2873 2874 2875 2876 2877 2878 34129 34130 34131 34132 34133 34134 +48 34099 34100 34101 34102 34103 34104 34105 34106 34107 34108 34109 34110 34111 34112 34113 34114 34115 34116 34801 34802 34803 34804 34805 34806 33943 33944 33945 33946 33947 33948 33961 33962 33963 33964 33965 33966 2825 2826 2827 2828 2829 2830 34615 34616 34617 34618 34619 34620 +36 33943 33944 33945 33946 33947 33948 2849 2850 2851 2852 2853 2854 2825 2826 2827 2828 2829 2830 34795 34796 34797 34798 34799 34800 2855 2856 2857 2858 2859 2860 33961 33962 33963 33964 33965 33966 +48 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 34489 34490 34491 34492 34493 34494 34471 34472 34473 34474 34475 34476 34663 34664 34665 34666 34667 34668 30062 30063 30064 30065 30066 30067 34555 34556 34557 34558 34559 34560 +48 34267 34268 34269 34270 34271 34272 34627 34628 34629 34630 34631 34632 34099 34100 34101 34102 34103 34104 34105 34106 34107 34108 34109 34110 34111 34112 34113 34114 34115 34116 34807 34808 34809 34810 34811 34812 34279 34280 34281 34282 34283 34284 34273 34274 34275 34276 34277 34278 +48 2687 2688 2689 2690 2691 2692 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 34129 34130 34131 34132 34133 34134 34099 34100 34101 34102 34103 34104 34627 34628 34629 34630 34631 34632 34267 34268 34269 34270 34271 34272 34297 34298 34299 34300 34301 34302 +48 34435 34436 34437 34438 34439 34440 34633 34634 34635 34636 34637 34638 34267 34268 34269 34270 34271 34272 34273 34274 34275 34276 34277 34278 34279 34280 34281 34282 34283 34284 34813 34814 34815 34816 34817 34818 34447 34448 34449 34450 34451 34452 34441 34442 34443 34444 34445 34446 +48 2561 2562 2563 2564 2565 2566 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 34297 34298 34299 34300 34301 34302 34267 34268 34269 34270 34271 34272 34633 34634 34635 34636 34637 34638 34435 34436 34437 34438 34439 34440 34465 34466 34467 34468 34469 34470 +48 29804 29805 29806 29807 29808 29809 34639 34640 34641 34642 34643 34644 34435 34436 34437 34438 34439 34440 34441 34442 34443 34444 34445 34446 34447 34448 34449 34450 34451 34452 34819 34820 34821 34822 34823 34824 31442 31443 31444 31445 31446 31447 32318 32319 32320 32321 32322 32323 +48 2507 2508 2509 2510 2511 2512 33937 33938 33939 33940 33941 33942 33907 33908 33909 33910 33911 33912 34885 34886 34887 34888 34889 34890 33793 33794 33795 33796 33797 33798 33799 33800 33801 33802 33803 33804 2609 2610 2611 2612 2613 2614 2645 2646 2647 2648 2649 2650 +36 33919 33920 33921 33922 33923 33924 33793 33794 33795 33796 33797 33798 33907 33908 33909 33910 33911 33912 34765 34766 34767 34768 34769 34770 34885 34886 34887 34888 34889 34890 33913 33914 33915 33916 33917 33918 +36 33793 33794 33795 33796 33797 33798 2621 2622 2623 2624 2625 2626 2609 2610 2611 2612 2613 2614 34759 34760 34761 34762 34763 34764 2627 2628 2629 2630 2631 2632 33799 33800 33801 33802 33803 33804 +48 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 34465 34466 34467 34468 34469 34470 34435 34436 34437 34438 34439 34440 34639 34640 34641 34642 34643 34644 29804 29805 29806 29807 29808 29809 34549 34550 34551 34552 34553 34554 +48 34063 34064 34065 34066 34067 34068 34891 34892 34893 34894 34895 34896 33907 33908 33909 33910 33911 33912 33913 33914 33915 33916 33917 33918 33919 33920 33921 33922 33923 33924 34771 34772 34773 34774 34775 34776 34075 34076 34077 34078 34079 34080 34069 34070 34071 34072 34073 34074 +48 2459 2460 2461 2462 2463 2464 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 33937 33938 33939 33940 33941 33942 33907 33908 33909 33910 33911 33912 34891 34892 34893 34894 34895 34896 34063 34064 34065 34066 34067 34068 34093 34094 34095 34096 34097 34098 +48 34231 34232 34233 34234 34235 34236 34597 34598 34599 34600 34601 34602 34063 34064 34065 34066 34067 34068 34069 34070 34071 34072 34073 34074 34075 34076 34077 34078 34079 34080 34777 34778 34779 34780 34781 34782 34243 34244 34245 34246 34247 34248 34237 34238 34239 34240 34241 34242 +48 2411 2412 2413 2414 2415 2416 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 34093 34094 34095 34096 34097 34098 34063 34064 34065 34066 34067 34068 34597 34598 34599 34600 34601 34602 34231 34232 34233 34234 34235 34236 34261 34262 34263 34264 34265 34266 +48 34399 34400 34401 34402 34403 34404 34603 34604 34605 34606 34607 34608 34231 34232 34233 34234 34235 34236 34237 34238 34239 34240 34241 34242 34243 34244 34245 34246 34247 34248 34783 34784 34785 34786 34787 34788 34411 34412 34413 34414 34415 34416 34405 34406 34407 34408 34409 34410 +48 2287 2288 2289 2290 2291 2292 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 34261 34262 34263 34264 34265 34266 34231 34232 34233 34234 34235 34236 34603 34604 34605 34606 34607 34608 34399 34400 34401 34402 34403 34404 34429 34430 34431 34432 34433 34434 +48 29546 29547 29548 29549 29550 29551 34609 34610 34611 34612 34613 34614 34399 34400 34401 34402 34403 34404 34405 34406 34407 34408 34409 34410 34411 34412 34413 34414 34415 34416 34789 34790 34791 34792 34793 34794 30914 30915 30916 30917 30918 30919 32372 32373 32374 32375 32376 32377 +48 2233 2234 2235 2236 2237 2238 2369 2370 2371 2372 2373 2374 2323 2324 2325 2326 2327 2328 33781 33782 33783 33784 33785 33786 33745 33746 33747 33748 33749 33750 34897 34898 34899 34900 34901 34902 33859 33860 33861 33862 33863 33864 33901 33902 33903 33904 33905 33906 +36 33871 33872 33873 33874 33875 33876 33745 33746 33747 33748 33749 33750 33859 33860 33861 33862 33863 33864 34699 34700 34701 34702 34703 34704 34897 34898 34899 34900 34901 34902 33865 33866 33867 33868 33869 33870 +34 33745 33746 33747 33748 33749 33750 2347 2348 2349 2350 2323 2324 2325 2326 2327 2328 34687 34688 34689 34690 34691 34692 2351 2352 2353 2354 2355 2356 33781 33782 33783 33784 33785 33786 +48 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 34429 34430 34431 34432 34433 34434 34399 34400 34401 34402 34403 34404 34609 34610 34611 34612 34613 34614 29546 29547 29548 29549 29550 29551 34543 34544 34545 34546 34547 34548 +48 34015 34016 34017 34018 34019 34020 34903 34904 34905 34906 34907 34908 33859 33860 33861 33862 33863 33864 33865 33866 33867 33868 33869 33870 33871 33872 33873 33874 33875 33876 34711 34712 34713 34714 34715 34716 34027 34028 34029 34030 34031 34032 34021 34022 34023 34024 34025 34026 +48 2185 2186 2187 2188 2189 2190 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 33901 33902 33903 33904 33905 33906 33859 33860 33861 33862 33863 33864 34903 34904 34905 34906 34907 34908 34015 34016 34017 34018 34019 34020 34057 34058 34059 34060 34061 34062 +48 34183 34184 34185 34186 34187 34188 34573 34574 34575 34576 34577 34578 34015 34016 34017 34018 34019 34020 34021 34022 34023 34024 34025 34026 34027 34028 34029 34030 34031 34032 34723 34724 34725 34726 34727 34728 34195 34196 34197 34198 34199 34200 34189 34190 34191 34192 34193 34194 +48 2137 2138 2139 2140 2141 2142 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 34057 34058 34059 34060 34061 34062 34015 34016 34017 34018 34019 34020 34573 34574 34575 34576 34577 34578 34183 34184 34185 34186 34187 34188 34225 34226 34227 34228 34229 34230 +48 34351 34352 34353 34354 34355 34356 34579 34580 34581 34582 34583 34584 34183 34184 34185 34186 34187 34188 34189 34190 34191 34192 34193 34194 34195 34196 34197 34198 34199 34200 34735 34736 34737 34738 34739 34740 34363 34364 34365 34366 34367 34368 34357 34358 34359 34360 34361 34362 +48 2065 2066 2067 2068 2069 2070 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 34225 34226 34227 34228 34229 34230 34183 34184 34185 34186 34187 34188 34579 34580 34581 34582 34583 34584 34351 34352 34353 34354 34355 34356 34393 34394 34395 34396 34397 34398 +48 21554 21555 21556 21557 21558 21559 34585 34586 34587 34588 34589 34590 34351 34352 34353 34354 34355 34356 34357 34358 34359 34360 34361 34362 34363 34364 34365 34366 34367 34368 34747 34748 34749 34750 34751 34752 30896 30897 30898 30899 30900 30901 32420 32421 32422 32423 32424 32425 +48 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 34393 34394 34395 34396 34397 34398 34351 34352 34353 34354 34355 34356 34585 34586 34587 34588 34589 34590 21554 21555 21556 21557 21558 21559 21548 21549 21550 21551 21552 21553 +36 33757 33758 33759 33760 33761 33762 34675 34676 34677 34678 34679 34680 33763 33764 33765 33766 33767 33768 34693 34694 34695 34696 34697 34698 34909 34910 34911 34912 34913 34914 33769 33770 33771 33772 33773 33774 +48 1975 1976 1977 1978 1979 1980 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 34681 34682 34683 34684 34685 34686 34675 34676 34677 34678 34679 34680 34909 34910 34911 34912 34913 34914 33763 33764 33765 33766 33767 33768 33787 33788 33789 33790 33791 33792 +48 33607 33608 33609 33610 33611 33612 34915 34916 34917 34918 34919 34920 33763 33764 33765 33766 33767 33768 33769 33770 33771 33772 33773 33774 33757 33758 33759 33760 33761 33762 34705 34706 34707 34708 34709 34710 33883 33884 33885 33886 33887 33888 33889 33890 33891 33892 33893 33894 +48 1927 1928 1929 1930 1931 1932 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 33787 33788 33789 33790 33791 33792 33763 33764 33765 33766 33767 33768 34915 34916 34917 34918 34919 34920 33607 33608 33609 33610 33611 33612 33601 33602 33603 33604 33605 33606 +48 33631 33632 33633 33634 33635 33636 33721 33722 33723 33724 33725 33726 33607 33608 33609 33610 33611 33612 33889 33890 33891 33892 33893 33894 33883 33884 33885 33886 33887 33888 34717 34718 34719 34720 34721 34722 34039 34040 34041 34042 34043 34044 34045 34046 34047 34048 34049 34050 +48 1879 1880 1881 1882 1883 1884 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 33601 33602 33603 33604 33605 33606 33607 33608 33609 33610 33611 33612 33721 33722 33723 33724 33725 33726 33631 33632 33633 33634 33635 33636 33625 33626 33627 33628 33629 33630 +48 33655 33656 33657 33658 33659 33660 33727 33728 33729 33730 33731 33732 33631 33632 33633 33634 33635 33636 34045 34046 34047 34048 34049 34050 34039 34040 34041 34042 34043 34044 34729 34730 34731 34732 34733 34734 34207 34208 34209 34210 34211 34212 34213 34214 34215 34216 34217 34218 +48 1831 1832 1833 1834 1835 1836 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 33625 33626 33627 33628 33629 33630 33631 33632 33633 33634 33635 33636 33727 33728 33729 33730 33731 33732 33655 33656 33657 33658 33659 33660 33649 33650 33651 33652 33653 33654 +48 33679 33680 33681 33682 33683 33684 33733 33734 33735 33736 33737 33738 33655 33656 33657 33658 33659 33660 34213 34214 34215 34216 34217 34218 34207 34208 34209 34210 34211 34212 34741 34742 34743 34744 34745 34746 34375 34376 34377 34378 34379 34380 34381 34382 34383 34384 34385 34386 +48 1759 1760 1761 1762 1763 1764 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 33649 33650 33651 33652 33653 33654 33655 33656 33657 33658 33659 33660 33733 33734 33735 33736 33737 33738 33679 33680 33681 33682 33683 33684 33673 33674 33675 33676 33677 33678 +48 33703 33704 33705 33706 33707 33708 33739 33740 33741 33742 33743 33744 33679 33680 33681 33682 33683 33684 34381 34382 34383 34384 34385 34386 34375 34376 34377 34378 34379 34380 34753 34754 34755 34756 34757 34758 30884 30885 30886 30887 30888 30889 34531 34532 34533 34534 34535 34536 +48 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 33673 33674 33675 33676 33677 33678 33679 33680 33681 33682 33683 33684 33739 33740 33741 33742 33743 33744 33703 33704 33705 33706 33707 33708 33697 33698 33699 33700 33701 33702 diff -Nru scotch-6.0.4.dfsg1/src/check/Makefile scotch-6.0.6/src/check/Makefile --- scotch-6.0.4.dfsg1/src/check/Makefile 2015-03-01 10:18:02.000000000 +0000 +++ scotch-6.0.6/src/check/Makefile 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -## Copyright 2011,2012,2014,2015 IPB, Universite de Bordeaux, INRIA & CNRS +## Copyright 2011,2012,2014-2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ## ## This file is part of the Scotch software package for static mapping, ## graph partitioning and sparse matrix ordering. @@ -30,18 +30,24 @@ ## knowledge of the CeCILL-C license and that you accept its terms. ## +TMPDIR = /tmp + SCOTCHINCLUDEDIR = ../../include SCOTCHLIBDIR = ../../lib SCOTCHBINDIR = ../../bin -LIBPTSCOTCH = -lptscotch -lscotch -lptscotcherrexit -LIBSCOTCH = -lscotch -lscotcherrexit +LIBPTSCOTCH = -lptscotch -lscotch -lptscotcherr +LIBSCOTCH = -lscotch -lscotcherr DEPPTSCOTCH = $(SCOTCHLIBDIR)/libptscotch$(LIB) DEPSCOTCH = $(SCOTCHLIBDIR)/libscotch$(LIB) -EXECS = -EXECP = mpirun -n 4 +EXECS ?= +EXECP ?= mpirun -n 3 +# EXECP ?= mpirun -n 3 valgrind --leak-check=full --track-origins=yes +# EXECP ?= mpirun -n 3 --oversubscribe + +PROGDIFF ?= diff ## ## General inference rules. @@ -72,11 +78,15 @@ realclean : clean -$(RM) \ + test_common_file_compress \ test_common_random \ test_common_thread \ + test_fibo \ + test_scotch_arch \ + test_scotch_arch_deco \ test_scotch_graph_coarsen \ - test_scotch_graph_coarsen_build \ test_scotch_graph_color \ + test_scotch_graph_diam \ test_scotch_graph_map \ test_scotch_graph_map_copy \ test_scotch_graph_order \ @@ -86,6 +96,7 @@ test_scotch_dgraph_coarsen \ test_scotch_dgraph_grow \ test_scotch_dgraph_redist \ + test_scotch_mesh_graph \ test_strat_par \ test_strat_seq @@ -93,16 +104,24 @@ ## Test cases dependencies. ## -CHECKSCOTCH = check_common_random \ +CHECKSCOTCH = check_common_file_compress \ + check_common_random \ check_common_thread \ + check_fibo \ check_strat_seq \ + check_scotch_arch \ + check_scotch_arch_deco \ check_scotch_graph_coarsen \ - check_scotch_graph_coarsen_build \ check_scotch_graph_color \ + check_scotch_graph_diam \ check_scotch_graph_map \ check_scotch_graph_map_copy \ check_scotch_graph_order \ check_scotch_graph_part_ovl \ + check_scotch_mesh_graph \ + check_prog_amk \ + check_prog_amk_grf \ + check_prog_gmk \ check_prog_gord \ check_prog_gpart_remap @@ -112,14 +131,34 @@ check_scotch_dgraph_coarsen \ check_scotch_dgraph_grow \ check_scotch_dgraph_redist \ + check_prog_dgscat-dggath ## -## Todo list. +## Sequential library tests. +## + +check_common_file_compress : test_common_file_compress + -cp "data/bump_b1.grf" "$(TMPDIR)/bump_b1.grf" + $(EXECS) ./test_common_file_compress "data/bump_b1.grf" "$(TMPDIR)/bump_b1.grf.gz" + $(EXECS) ./test_common_file_compress "$(TMPDIR)/bump_b1.grf.gz" "$(TMPDIR)/bump_b1.grf" + diff -q "data/bump_b1.grf" "$(TMPDIR)/bump_b1.grf" + -cp "data/bump_b1.grf" "$(TMPDIR)/bump_b1.grf" + $(EXECS) ./test_common_file_compress "data/bump_b1.grf" "$(TMPDIR)/bump_b1.grf.bz2" + $(EXECS) ./test_common_file_compress "$(TMPDIR)/bump_b1.grf.bz2" "$(TMPDIR)/bump_b1.grf" + diff -q "data/bump_b1.grf" "$(TMPDIR)/bump_b1.grf" + -cp "data/bump_b1.grf" "$(TMPDIR)/bump_b1.grf" + $(EXECS) ./test_common_file_compress "data/bump_b1.grf" "$(TMPDIR)/bump_b1.grf.lzma" + $(EXECS) ./test_common_file_compress "$(TMPDIR)/bump_b1.grf.lzma" "$(TMPDIR)/bump_b1.grf" + diff -q "data/bump_b1.grf" "$(TMPDIR)/bump_b1.grf" + +test_common_file_compress : test_common_file_compress.c \ + $(SCOTCHLIBDIR)/libscotch$(LIB) + ## check_common_random : test_common_random - $(EXECS) ./test_common_random /tmp/rand.dat 0 - $(EXECS) ./test_common_random /tmp/rand.dat 1 + $(EXECS) ./test_common_random "$(TMPDIR)/rand.dat" 0 + $(EXECS) ./test_common_random "$(TMPDIR)/rand.dat" 1 test_common_random : test_common_random.c \ $(SCOTCHLIBDIR)/libscotch$(LIB) @@ -134,32 +173,33 @@ ## -check_dgraph_fold_comm : test_dgraph_fold_comm - $(EXECS) ./test_dgraph_fold_comm data/dgraph_fold_comm_1.txt +check_fibo : test_fibo + $(EXECS) ./test_fibo -test_dgraph_fold_comm : test_dgraph_fold_comm.c +test_fibo : test_fibo.c \ + $(SCOTCHLIBDIR)/libscotch$(LIB) ## -check_scotch_dgraph_redist : test_scotch_dgraph_redist - $(EXECP) ./test_scotch_dgraph_redist data/bump.grf +check_scotch_arch : test_scotch_arch + $(EXECS) ./test_scotch_arch "$(TMPDIR)/arch.tgt" -test_scotch_dgraph_redist : test_scotch_dgraph_redist.c +test_scotch_arch : test_scotch_arch.c \ + $(SCOTCHLIBDIR)/libscotch$(LIB) ## -check_prog_gord : - $(EXECS) $(SCOTCHBINDIR)/gord data/bump.grf /dev/null -vt - $(EXECS) $(SCOTCHBINDIR)/gord data/bump_b1.grf /dev/null -vt - -## +check_scotch_arch_deco : test_scotch_arch_deco + $(EXECS) ./test_scotch_arch_deco data/m4x4.grf "$(TMPDIR)/arch2.tgt" +# $(EXECS) ./test_scotch_arch_deco data/m4x4_b1.grf "$(TMPDIR)/arch2.tgt" -check_prog_gpart_remap : - $(EXECS) $(SCOTCHBINDIR)/gpart 32 data/bump_imbal_32.grf /dev/null -rodata/bump_old.map -vmt +test_scotch_arch_deco : test_scotch_arch_deco.c \ + $(SCOTCHLIBDIR)/libscotch$(LIB) ## check_scotch_graph_coarsen : test_scotch_graph_coarsen + $(EXECS) ./test_scotch_graph_coarsen data/bump.grf $(EXECS) ./test_scotch_graph_coarsen data/bump_b1.grf test_scotch_graph_coarsen : test_scotch_graph_coarsen.c \ @@ -167,19 +207,20 @@ ## -check_scotch_graph_coarsen_build : test_scotch_graph_coarsen_build - $(EXECS) ./test_scotch_graph_coarsen_build data/bump.grf - $(EXECS) ./test_scotch_graph_coarsen_build data/bump_b1.grf +check_scotch_graph_color : test_scotch_graph_color + $(EXECS) ./test_scotch_graph_color data/bump.grf -test_scotch_graph_coarsen_build : test_scotch_graph_coarsen_build.c \ +test_scotch_graph_color : test_scotch_graph_color.c \ $(SCOTCHLIBDIR)/libscotch$(LIB) ## -check_scotch_graph_color : test_scotch_graph_color - $(EXECS) ./test_scotch_graph_color data/bump.grf +check_scotch_graph_diam : test_scotch_graph_diam + $(EXECS) ./test_scotch_graph_diam data/bump.grf + $(EXECS) ./test_scotch_graph_diam data/m16x16_b1.grf + $(EXECS) ./test_scotch_graph_diam data/p2-p2.grf -test_scotch_graph_color : test_scotch_graph_color.c \ +test_scotch_graph_diam : test_scotch_graph_diam.c \ $(SCOTCHLIBDIR)/libscotch$(LIB) ## @@ -221,6 +262,14 @@ ## +check_scotch_mesh_graph : test_scotch_mesh_graph + $(EXECS) ./test_scotch_mesh_graph data/ship001.msh + +test_scotch_mesh_graph : test_scotch_mesh_graph.c \ + $(SCOTCHLIBDIR)/libscotch$(LIB) + +## + check_strat_seq : test_strat_seq $(EXECS) ./test_strat_seq @@ -228,6 +277,8 @@ $(SCOTCHLIBDIR)/libscotch$(LIB) ## +## Parallel library tests. +## check_strat_par : test_strat_par $(EXECS) ./test_strat_par @@ -268,3 +319,60 @@ test_scotch_dgraph_grow : test_scotch_dgraph_grow.c \ $(SCOTCHLIBDIR)/libptscotch$(LIB) + +## + +check_scotch_dgraph_redist : test_scotch_dgraph_redist + $(EXECP) ./test_scotch_dgraph_redist data/bump.grf + +test_scotch_dgraph_redist : test_scotch_dgraph_redist.c + +## +## Sequential program tests. +## + +check_prog_amk : + $(EXECS) $(SCOTCHBINDIR)/amk_ccc 5 /dev/null + $(EXECS) $(SCOTCHBINDIR)/amk_fft2 5 /dev/null + $(EXECS) $(SCOTCHBINDIR)/amk_hy 5 /dev/null + $(EXECS) $(SCOTCHBINDIR)/amk_m2 5 12 /dev/null + $(EXECS) $(SCOTCHBINDIR)/amk_m2 -mo 5 12 /dev/null + $(EXECS) $(SCOTCHBINDIR)/amk_p2 5 7 /dev/null + +check_prog_amk_grf : + $(EXECS) $(SCOTCHBINDIR)/amk_grf data/m16x16.grf /dev/null + $(EXECS) $(SCOTCHBINDIR)/amk_grf -2 data/m16x16.grf /dev/null + $(EXECS) $(SCOTCHBINDIR)/amk_grf -ldata/m4x4_vertlist.txt data/m4x4.grf /dev/null + $(EXECS) $(SCOTCHBINDIR)/amk_grf -ldata/m4x4_vertlist.txt -2 data/m4x4.grf /dev/null + +check_prog_gmk : + $(EXECS) $(SCOTCHBINDIR)/gmk_hy 5 | $(SCOTCHBINDIR)/gtst + $(EXECS) $(SCOTCHBINDIR)/gmk_m2 5 1 | $(SCOTCHBINDIR)/gtst + $(EXECS) $(SCOTCHBINDIR)/gmk_m2 -b1 5 4 -g/dev/null | $(SCOTCHBINDIR)/gtst + $(EXECS) $(SCOTCHBINDIR)/gmk_m2 -t 5 4 | $(SCOTCHBINDIR)/gtst + $(EXECS) $(SCOTCHBINDIR)/gmk_m2 -b1 -t 5 1 | $(SCOTCHBINDIR)/gtst + $(EXECS) $(SCOTCHBINDIR)/gmk_m3 -b1 5 4 3 -g/dev/null | $(SCOTCHBINDIR)/gtst + $(EXECS) $(SCOTCHBINDIR)/gmk_msh data/ship001.msh | $(SCOTCHBINDIR)/gtst + $(EXECS) $(SCOTCHBINDIR)/gmk_ub2 5 | $(SCOTCHBINDIR)/gtst + +check_prog_gord : + $(EXECS) $(SCOTCHBINDIR)/gord data/bump.grf /dev/null -vt + $(EXECS) $(SCOTCHBINDIR)/gord data/bump_b1.grf /dev/null -vt + +## + +check_prog_gpart_remap : + $(EXECS) $(SCOTCHBINDIR)/gpart 32 data/bump_imbal_32.grf /dev/null -rodata/bump_old.map -vmt + +## +## Parallel program tests. +## + +check_prog_dgscat-dggath : TMP := $(shell mktemp -u) +check_prog_dgscat-dggath : + $(EXECP) $(SCOTCHBINDIR)/dgscat -r1 -c data/m16x16.grf "$(TMP)1_%r.grf" + $(EXECP) $(SCOTCHBINDIR)/dggath -r1 -c "$(TMP)1_%r.grf" "$(TMP)1.grf" + $(PROGDIFF) data/m16x16.grf "$(TMP)1.grf" + $(EXECP) $(SCOTCHBINDIR)/dgscat -c data/m16x16_b1.grf "$(TMP)2_%r.grf" + $(EXECP) $(SCOTCHBINDIR)/dggath -c "$(TMP)2_%r.grf" "$(TMP)2.grf" + $(PROGDIFF) data/m16x16_b1.grf "$(TMP)2.grf" diff -Nru scotch-6.0.4.dfsg1/src/check/test_common_file_compress.c scotch-6.0.6/src/check/test_common_file_compress.c --- scotch-6.0.4.dfsg1/src/check/test_common_file_compress.c 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/check/test_common_file_compress.c 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,141 @@ +/* Copyright 2018 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : test_common_file_compress.c **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : This module tests the random number **/ +/** generator module. **/ +/** **/ +/** DATES : # Version 6.0 : from : 09 jul 2018 **/ +/** to 10 jul 2018 **/ +/** **/ +/************************************************************/ + +/* +** The defines and includes. +*/ + +#ifndef _XOPEN_SOURCE +#define _XOPEN_SOURCE 600 +#endif /* _XOPEN_SOURCE */ +#ifndef __USE_XOPEN2K +#define __USE_XOPEN2K /* For POSIX pthread_barrier_t */ +#endif /* __USE_XOPEN2K */ + +#include +#include +#include +#include + +#include "../libscotch/module.h" +#include "../libscotch/common.h" +#include "scotch.h" + +#define C_FILENBR 2 /* Number of files in list */ + +#define C_BUFFSIZ 65536 + +#define C_filepntrinp fileBlockFile (C_fileTab, 0) /* Input file */ +#define C_filepntrout fileBlockFile (C_fileTab, 1) /* Output file */ + +/* +** The static and global variables. +*/ + +static File C_fileTab[2] = { /* File array */ + { FILEMODER }, + { FILEMODEW } }; + +/*********************/ +/* */ +/* The main routine. */ +/* */ +/*********************/ + +int +main ( +int argc, +char * argv[]) +{ + byte * bufftab; + + if (argc != 3) { + SCOTCH_errorPrint ("usage: %s infile outfile", argv[0]); + exit (EXIT_FAILURE); + } + + if ((bufftab = malloc (C_BUFFSIZ * sizeof (byte))) == NULL) { + SCOTCH_errorPrint ("main: out of memory"); + exit (EXIT_FAILURE); + } + + fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ + fileBlockName (C_fileTab, 0) = argv[1]; + fileBlockName (C_fileTab, 1) = argv[2]; + + switch (fileBlockOpen (C_fileTab, C_FILENBR)) { /* Open all files */ + case 2 : + SCOTCH_errorPrint ("main: (un)compression method not implemented"); + free (bufftab); + exit (EXIT_SUCCESS); + case 1 : + SCOTCH_errorPrint ("main: cannot open files"); + free (bufftab); + exit (EXIT_FAILURE); + } + + while (1) { + size_t bytenbr; + + if ((bytenbr = fread (bufftab, 1, C_BUFFSIZ, C_filepntrinp)) == 0) { + if (ferror (C_filepntrinp)) + SCOTCH_errorPrint ("main: read error"); + break; + } + if (fwrite (bufftab, 1, bytenbr, C_filepntrout) != bytenbr) { + SCOTCH_errorPrint ("main: write error"); + break; + } + } + + free (bufftab); + + fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ + +#ifdef COMMON_PTHREAD + pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ +#endif /* COMMON_PTHREAD */ + exit (EXIT_SUCCESS); +} diff -Nru scotch-6.0.4.dfsg1/src/check/test_common_random.c scotch-6.0.6/src/check/test_common_random.c --- scotch-6.0.4.dfsg1/src/check/test_common_random.c 2015-03-01 10:19:44.000000000 +0000 +++ scotch-6.0.6/src/check/test_common_random.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2012,2014,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -31,15 +31,15 @@ */ /************************************************************/ /** **/ -/** NAME : test_common_thread.c **/ +/** NAME : test_common_random.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ -/** FUNCTION : This module tests the sequential **/ -/** strategy building routines. **/ +/** FUNCTION : This module tests the random number **/ +/** generator module. **/ /** **/ /** DATES : # Version 6.0 : from : 01 oct 2014 **/ -/** to 16 oct 2014 **/ +/** to 22 may 2018 **/ /** **/ /************************************************************/ @@ -61,6 +61,7 @@ #include "../libscotch/module.h" #include "../libscotch/common.h" +#include "scotch.h" #define RANDNBR 100 @@ -76,20 +77,18 @@ char * argv[]) { INT * randtab; - int randnbr; int randnum; - struct stat statdat; FILE * fileptr; int passnum; if (argc != 3) { - errorPrint ("usage: %s file passnum", argv[0]); - return (1); + SCOTCH_errorPrint ("usage: %s state_file passnum", argv[0]); + exit (EXIT_FAILURE); } if ((randtab = malloc (RANDNBR * sizeof (INT))) == NULL) { - errorPrint ("main: out of memory"); - return (1); + SCOTCH_errorPrint ("main: out of memory"); + exit (EXIT_FAILURE); } intRandInit (); /* Initialize random generator */ @@ -102,33 +101,54 @@ passnum = (atoi (argv[2]) == 0); /* First pass to write file; second pass to read it */ if ((fileptr = fopen (argv[1], (passnum) ? "w+" : "r")) == NULL) { - errorPrint ("main: cannot open file"); - return (1); + SCOTCH_errorPrint ("main: cannot open file"); + exit (EXIT_FAILURE); } if (passnum) { /* If first pass */ for (randnum = 0; randnum < RANDNBR; randnum ++) { if (randtab[randnum] != intRandVal (INTVALMAX)) { - errorPrint ("main: cannot replay random sequence"); - return (1); + SCOTCH_errorPrint ("main: cannot replay random sequence"); + exit (EXIT_FAILURE); } } if (fwrite (randtab, sizeof (INT), RANDNBR, fileptr) < RANDNBR) { - errorPrint ("main: cannot write to file"); - return (1); + SCOTCH_errorPrint ("main: cannot write to file (1)"); + exit (EXIT_FAILURE); + } + + switch (SCOTCH_randomSave (fileptr)) { /* Try to save random state, if enabled */ + case 0 : + if (fprintf (fileptr, "#") != 1) { /* Write separator character */ + SCOTCH_errorPrint ("main: cannot write to file (3)"); + exit (EXIT_FAILURE); + } + + for (randnum = 0; randnum < RANDNBR; randnum ++) + randtab[randnum] = intRandVal (INTVALMAX); + if (fwrite (randtab, sizeof (INT), RANDNBR, fileptr) < RANDNBR) { + SCOTCH_errorPrint ("main: cannot write to file (3)"); + exit (EXIT_FAILURE); + } + break; + case 1 : + printf ("Random state cannot be saved\n"); + break; + default : + SCOTCH_errorPrint ("Could not save random state"); + break; } sleep (1); /* Next run will not get the same time() value */ } else { /* Second pass */ - const char * const bufftab = ""; char * charptr; int o; if (fread (randtab, sizeof (INT), RANDNBR, fileptr) < RANDNBR) { - errorPrint ("main: cannot read from file"); - return (1); + SCOTCH_errorPrint ("main: cannot read from file (1)"); + exit (EXIT_FAILURE); } for (randnum = 0; randnum < RANDNBR; randnum ++) { @@ -143,14 +163,50 @@ #endif /* ((defined COMMON_DEBUG) || (defined COMMON_RANDOM_FIXED_SEED) || (defined SCOTCH_DETERMINISTIC)) */ if (o) { - errorPrint ("main: two consecutive runs yield %s values.", charptr); - return (1); + SCOTCH_errorPrint ("main: two consecutive runs yield %s values.", charptr); + exit (EXIT_FAILURE); } printf ("Two consecutive runs yield %s values.\n", charptr); + + intRandReset (); /* Reset random seed to be sure */ + + switch (SCOTCH_randomLoad (fileptr)) { + case 0 : + while (1) { /* Discard all CR(LF) before separator character */ + int c; + + c = getc (fileptr); + if (c == '#') /* If separator character found */ + break; + if (c == EOF) { + SCOTCH_errorPrint ("main: cannot read from file (2)"); + exit (EXIT_FAILURE); + } + } + + if (fread (randtab, sizeof (INT), RANDNBR, fileptr) < RANDNBR) { + SCOTCH_errorPrint ("main: cannot read from file (3)"); + exit (EXIT_FAILURE); + } + + for (randnum = 0; randnum < RANDNBR; randnum ++) { + if (randtab[randnum] != intRandVal (INTVALMAX)) { + SCOTCH_errorPrint ("main: state not properly saved/restored"); + exit (EXIT_FAILURE); + } + } + break; + case 1 : + SCOTCH_errorPrint ("main: random state cannot be loaded"); + break; + default : + SCOTCH_errorPrint ("main: could not save random state"); + break; + } } fclose (fileptr); free (randtab); - return (0); + exit (EXIT_SUCCESS); } diff -Nru scotch-6.0.4.dfsg1/src/check/test_common_thread.c scotch-6.0.6/src/check/test_common_thread.c --- scotch-6.0.4.dfsg1/src/check/test_common_thread.c 2015-03-01 10:18:48.000000000 +0000 +++ scotch-6.0.6/src/check/test_common_thread.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2012,2014,2015 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2012,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -35,11 +35,11 @@ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ -/** FUNCTION : This module tests the sequential **/ -/** strategy building routines. **/ +/** FUNCTION : This module tests the thread **/ +/** management module. **/ /** **/ /** DATES : # Version 6.0 : from : 04 nov 2012 **/ -/** to 01 mar 2015 **/ +/** to 10 jul 2018 **/ /** **/ /************************************************************/ @@ -121,7 +121,6 @@ TestThread * restrict thrdptr) { TestThreadGroup * restrict const grouptr = (TestThreadGroup *) (thrdptr->thrddat.grouptr); - const int thrdnbr = grouptr->thrddat.thrdnbr; const int thrdnum = thrdptr->thrddat.thrdnum; int o; @@ -174,8 +173,8 @@ int argc, char * argv[]) { - TestThreadGroup groudat; #if ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) + TestThreadGroup groudat; TestThread * restrict thrdtab; int thrdnbr; #endif /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */ @@ -188,14 +187,14 @@ groudat.redusum = COMPVAL (thrdnbr); if ((thrdtab = malloc (thrdnbr * sizeof (TestThread))) == NULL) { - errorPrint ("main: out of memory"); - return (1); + SCOTCH_errorPrint ("main: out of memory"); + exit (EXIT_FAILURE); } if (threadLaunch (&groudat, thrdtab, sizeof (TestThread), (ThreadLaunchStartFunc) testThreads, (ThreadLaunchJoinFunc) NULL, thrdnbr, THREADCANBARRIER | THREADCANREDUCE | THREADCANSCAN) != 0) { - errorPrint ("main: cannot launch or run threads"); - return (1); + SCOTCH_errorPrint ("main: cannot launch or run threads"); + exit (EXIT_FAILURE); } free (thrdtab); @@ -203,5 +202,5 @@ printf ("Scotch not compiled with either COMMON_PTHREAD or SCOTCH_PTHREAD\n"); #endif /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */ - return (0); + exit (EXIT_SUCCESS); } diff -Nru scotch-6.0.4.dfsg1/src/check/test_fibo.c scotch-6.0.6/src/check/test_fibo.c --- scotch-6.0.4.dfsg1/src/check/test_fibo.c 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/check/test_fibo.c 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,240 @@ +/* Copyright 2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : test_fibo.c **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : This module tests the fibonacci heap **/ +/** routines. **/ +/** **/ +/** DATES : # Version 6.0 : from : 23 aug 2016 **/ +/** to 22 may 2018 **/ +/** **/ +/************************************************************/ + +/* +** The defines and includes. +*/ + +#ifndef _XOPEN_SOURCE +#define _XOPEN_SOURCE 600 +#endif /* _XOPEN_SOURCE */ +#ifndef __USE_XOPEN2K +#define __USE_XOPEN2K /* For POSIX pthread_barrier_t */ +#endif /* __USE_XOPEN2K */ + +#include +#include +#include +#include + +#include "../libscotch/module.h" +#include "../libscotch/common.h" +#include "../libscotch/fibo.h" + +/* +** The type and structure definitions. +*/ + +/* The fibo cell structure. */ + +typedef struct TestFibo_ { + FiboNode nodedat; /* TRICK: FIRST */ + int randval; +} TestFibo; + +/***************************/ +/* */ +/* The comparison routine. */ +/* */ +/***************************/ + +static +int +testFiboCmpFunc ( +const FiboNode * nod0ptr, +const FiboNode * nod1ptr) +{ + int ran0val; + int ran1val; + + ran0val = ((TestFibo *) nod0ptr)->randval; + ran1val = ((TestFibo *) nod1ptr)->randval; + if (ran0val < ran1val) + return (-1); + return (1); +} + +/*********************/ +/* */ +/* The main routine. */ +/* */ +/*********************/ + +int +main ( +int argc, +char * argv[]) +{ + FiboHeap fibodat; + TestFibo * nodetab; + TestFibo * nodeptr; + int nodesiz; + int nodemax; + int nodenbr; + int nodenum; + int nodetmp; + int randval; + int randtmp; + int passnbr; + int passnum; + + SCOTCH_errorProg (argv[0]); + + if (fiboHeapInit (&fibodat, testFiboCmpFunc) != 0) { + SCOTCH_errorPrint ("main: cannot initialize Fibonacci heap"); + exit (EXIT_FAILURE); + } + + intRandInit (); /* Initialize random generator */ + + nodesiz = 100; + passnbr = -1; + switch (argc) { + case 4 : + intRandSeed (MAX (0, atoi (argv[3]))); + case 3 : + passnbr = MAX (1, atoi (argv[2])); + case 2 : + nodesiz = MAX (1, atoi (argv[1])); + case 1 : + break; + default : + SCOTCH_errorPrint ("usage: %s [nodenbr [passnbr [seed]]]", argv[0]); + exit (EXIT_FAILURE); + } + if (passnbr < 0) + passnbr = 10 * nodesiz; + + if ((nodetab = malloc (nodesiz * sizeof (TestFibo))) == NULL) { + SCOTCH_errorPrint ("main: out of memory"); + exit (EXIT_FAILURE); + } + for (nodenum = 0; nodenum < nodesiz; nodenum ++) /* Initialize node array */ + nodetab[nodenum].randval = -1; + + nodemax = nodesiz - 1; /* Set maximum index */ + nodenbr = 0; /* Array is empty */ + for (passnum = 0; passnum < passnbr; passnum ++) { + switch (intRandVal (6)) { + case 0 : /* Add node */ + case 1 : + case 2 : /* More additions than deletions on average */ + if (nodenbr >= nodemax) + break; + for (nodenum = 0; nodenum <= nodemax; nodenum ++) { /* Search for a free slot */ + if (nodetab[nodenum].randval < 0) + break; + } + if (nodenum > nodemax) { + SCOTCH_errorPrint ("main: invalid node array (1)"); + exit (EXIT_FAILURE); + } + nodetab[nodenum].randval = abs (intRandVal (INTVALMAX)); + fiboHeapAdd (&fibodat, (FiboNode *) &nodetab[nodenum]); + nodenbr ++; + break; + case 3 : /* Remove arbitrary node */ + if (nodenbr <= 0) + break; + nodetmp = intRandVal (nodenbr); + for (nodenum = 0; ; nodenum ++) { /* Search for non-empty slot */ + if (nodenum > nodemax) { + SCOTCH_errorPrint ("main: invalid node array (2)"); + exit (EXIT_FAILURE); + } + if (nodetab[nodenum].randval >= 0) { + if (-- nodetmp <= 0) + break; + } + } + fiboHeapDel (&fibodat, (FiboNode *) &nodetab[nodenum]); + nodetab[nodenum].randval = -1; + nodenbr --; + break; + case 4 : /* Remove minimum node */ + if (nodenbr <= 0) + break; + nodeptr = (TestFibo *) fiboHeapMin (&fibodat); + randval = nodeptr->randval; /* Keep node key value */ + fiboHeapDel (&fibodat, (FiboNode *) nodeptr); /* Remove node first */ + nodeptr->randval = -1; + nodenbr --; + for (nodenum = 0; nodenum <= nodemax; nodenum ++) { /* Check if smaller node exists */ + if ((nodetab[nodenum].randval >= 0) && + (nodetab[nodenum].randval < randval)) { + SCOTCH_errorPrint ("main: node is not of minimum key"); + } + } + break; + case 5 : /* Decrease value of arbitrary node */ + if (nodenbr <= 0) + break; + nodetmp = intRandVal (nodenbr); + for (nodenum = 0; ; nodenum ++) { /* Search for non-empty slot */ + if (nodenum > nodemax) { + SCOTCH_errorPrint ("main: invalid node array (3)"); + exit (EXIT_FAILURE); + } + if (nodetab[nodenum].randval >= 0) { + if (-- nodetmp <= 0) + break; + } + } + if (nodetab[nodenum].randval <= 0) /* Cannot decrease smallest value */ + break; + randtmp = intRandVal (nodetab[nodenum].randval + 1); + if (randtmp > nodetab[nodenum].randval) + break; + nodetab[nodenum].randval -= randtmp; + fiboHeapDecrease (&fibodat, (FiboNode *) &nodetab[nodenum]); + break; + } + } + + fiboHeapExit (&fibodat); + free (nodetab); + + exit (EXIT_SUCCESS); +} diff -Nru scotch-6.0.4.dfsg1/src/check/test_multilib.c scotch-6.0.6/src/check/test_multilib.c --- scotch-6.0.4.dfsg1/src/check/test_multilib.c 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/check/test_multilib.c 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,121 @@ +/* Copyright 2018 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : test_multilib.c **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : This module tests the use of two **/ +/** versions of the libScotch libraries. **/ +/** **/ +/** DATES : # Version 6.0 : from : 27 apr 2018 **/ +/** to 22 may 2018 **/ +/** **/ +/************************************************************/ + +/* +** The defines and includes. +*/ + +#include +#if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) +#include +#endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ +#include +#include + +#include "scotch.h" +#include "scotch_64.h" + +/*********************/ +/* */ +/* The main routine. */ +/* */ +/*********************/ + +int +main ( +int argc, +char * argv[]) +{ + FILE * fileptr; + SCOTCH_Graph grafdat; + SCOTCH_Num vertnbr; + SCOTCH_Graph_64 grafdat_64; + SCOTCH_Num_64 vertnbr_64; + + SCOTCH_errorProg (argv[0]); + + if (argc != 2) { + SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); + exit (EXIT_FAILURE); + } + + if ((SCOTCH_graphInit (&grafdat) != 0) || + (SCOTCH_graphInit_64 (&grafdat_64) != 0)) { /* Initialize source graph */ + SCOTCH_errorPrint ("main: cannot initialize graph"); + exit (EXIT_FAILURE); + } + + if ((fileptr = fopen (argv[1], "r")) == NULL) { + SCOTCH_errorPrint ("main: cannot open file (1)"); + exit (EXIT_FAILURE); + } + + if (SCOTCH_graphLoad (&grafdat, fileptr, -1, 0) != 0) { /* Read source graph */ + SCOTCH_errorPrint ("main: cannot load graph (1)"); + exit (EXIT_FAILURE); + } + + fclose (fileptr); + + if ((fileptr = fopen (argv[1], "r")) == NULL) { + SCOTCH_errorPrint ("main: cannot open file (2)"); + exit (EXIT_FAILURE); + } + + if (SCOTCH_graphLoad_64 (&grafdat_64, fileptr, -1, 0) != 0) { /* Read source graph */ + SCOTCH_errorPrint ("main: cannot load graph (2)"); + exit (EXIT_FAILURE); + } + + fclose (fileptr); + + SCOTCH_graphSize (&grafdat, &vertnbr, NULL); + SCOTCH_graphSize_64 (&grafdat_64, &vertnbr_64, NULL); + + SCOTCH_graphExit (&grafdat); + SCOTCH_graphExit_64 (&grafdat_64); + + exit (EXIT_SUCCESS); +} diff -Nru scotch-6.0.4.dfsg1/src/check/test_scotch_arch.c scotch-6.0.6/src/check/test_scotch_arch.c --- scotch-6.0.4.dfsg1/src/check/test_scotch_arch.c 2014-06-27 20:53:12.000000000 +0000 +++ scotch-6.0.6/src/check/test_scotch_arch.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -39,7 +39,7 @@ /** the SCOTCH_arch*() routines. **/ /** **/ /** DATES : # Version 6.0 : from : 25 jun 2014 **/ -/** to 25 jun 2014 **/ +/** to 22 may 2018 **/ /** **/ /************************************************************/ @@ -56,9 +56,7 @@ #include "scotch.h" - - int - SCOTCH_Arch archdat; +#define ARCHNBR 20 /*********************/ /* */ @@ -71,65 +69,114 @@ int argc, char * argv[]) { - - SCOTCH_Num baseval; - SCOTCH_Num vertnbr; - SCOTCH_Num vertnum; - SCOTCH_Num colonbr; - SCOTCH_Num colonum; - SCOTCH_Num * colotab; - SCOTCH_Num * cnbrtab; + FILE * fileptr; + SCOTCH_Arch archtab[ARCHNBR]; + SCOTCH_Num vnumnbr = 5; + SCOTCH_Num vnumtab[8] = { 0, 4, 1, 5, 7, 11, 13, 15 }; + SCOTCH_Num dimnnbr = 5; + SCOTCH_Num dimntab[5] = { 3, 3, 5, 4, 8 }; + SCOTCH_Num levlnbr = 3; + SCOTCH_Num sizetab[3] = { 6, 3, 4 }; + SCOTCH_Num linktab[3] = { 20, 5, 1 }; + int archnbr = 0; + int i; SCOTCH_errorProg (argv[0]); - if (SCOTCH_graphInit (&grafdat) != 0) { /* Initialize source graph */ - SCOTCH_errorPrint ("main: cannot initialize graph"); - return (1); + SCOTCH_randomReset (); + + if (SCOTCH_archHcub (&archtab[archnbr ++], 4) != 0) { /* TRICK: must be in rank 0 to create sub-architecture from it */ + SCOTCH_errorPrint ("main: cannot create hcub architecture"); + exit (EXIT_FAILURE); } - if ((fileptr = fopen (argv[1], "r")) == NULL) { - SCOTCH_errorPrint ("main: cannot open file"); - return (1); + if (SCOTCH_archCmplt (&archtab[archnbr ++], 8) != 0) { + SCOTCH_errorPrint ("main: cannot create cmplt architecture"); + exit (EXIT_FAILURE); } - if (SCOTCH_graphLoad (&grafdat, fileptr, -1, 0) != 0) { /* Read source graph */ - SCOTCH_errorPrint ("main: cannot load graph"); - return (1); + if (SCOTCH_archMesh2 (&archtab[archnbr ++], 2, 4) != 0) { + SCOTCH_errorPrint ("main: cannot create mesh2D architecture"); + exit (EXIT_FAILURE); } - fclose (fileptr); + if (SCOTCH_archMesh3 (&archtab[archnbr ++], 3, 4, 5) != 0) { + SCOTCH_errorPrint ("main: cannot create mesh3D architecture"); + exit (EXIT_FAILURE); + } + + if (SCOTCH_archMeshX (&archtab[archnbr ++], dimnnbr, dimntab) != 0) { + SCOTCH_errorPrint ("main: cannot create meshXD architecture"); + exit (EXIT_FAILURE); + } + + if (SCOTCH_archTleaf (&archtab[archnbr ++], levlnbr, sizetab, linktab) != 0) { + SCOTCH_errorPrint ("main: cannot create tleaf architecture"); + exit (EXIT_FAILURE); + } + + if (SCOTCH_archTorus2 (&archtab[archnbr ++], 2, 4) != 0) { + SCOTCH_errorPrint ("main: cannot create torus2D architecture"); + exit (EXIT_FAILURE); + } - SCOTCH_graphSize (&grafdat, &vertnbr, NULL); + if (SCOTCH_archTorus3 (&archtab[archnbr ++], 3, 4, 5) != 0) { + SCOTCH_errorPrint ("main: cannot create torus3D architecture"); + exit (EXIT_FAILURE); + } + + if (SCOTCH_archTorusX (&archtab[archnbr ++], dimnnbr, dimntab) != 0) { + SCOTCH_errorPrint ("main: cannot create torusXD architecture"); + exit (EXIT_FAILURE); + } - if ((colotab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL) { - SCOTCH_errorPrint ("main: out of memory (1)"); - return (1); + if (SCOTCH_archSub (&archtab[archnbr ++], &archtab[0], vnumnbr + 3, vnumtab) != 0) { /* TRICK: create sub-architecture of hypercube at rank 0 */ + SCOTCH_errorPrint ("main: cannot create sub-architecture (1)"); + exit (EXIT_FAILURE); } - if ((cnbrtab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL) { - SCOTCH_errorPrint ("main: out of memory (1)"); - return (1); + for (i = 0; i < archnbr; i ++) { + if (SCOTCH_archSub (&archtab[i + archnbr], &archtab[i], vnumnbr, vnumtab) != 0) { /* Create sub-architectures (of sub-architecture, too) */ + SCOTCH_errorPrint ("main: cannot create sub-architecture (%d)", 2 + i); + exit (EXIT_FAILURE); + } } - memset (cnbrtab, 0, vertnbr * sizeof (SCOTCH_Num)); + archnbr *= 2; /* Number of architectures has doubled */ - if (SCOTCH_graphColor (&grafdat, colotab, &colonbr, 0) != 0) { - SCOTCH_errorPrint ("main: cannot color graph"); - return (1); + if ((fileptr = fopen (argv[1], "w+")) == NULL) { /* Write all architectures to file */ + SCOTCH_errorPrint ("main: cannot open file (1)"); + exit (EXIT_FAILURE); } - printf ("Number of colors: %ld\n", (long) colonbr); + for (i = 0; i < archnbr; i ++) { /* Save all architectures to same file */ + if (SCOTCH_archSave (&archtab[i], fileptr) != 0) { + SCOTCH_errorPrint ("main: cannot save architecture (%d)", 1 + i); + exit (EXIT_FAILURE); + } + } + + fclose (fileptr); - for (vertnum = 0; vertnum < vertnbr; vertnum ++) /* Sum-up color histogram */ - cnbrtab[colotab[vertnum]] ++; + for (i = archnbr - 1; i >= 0; i --) /* Destroy architectures in reverse order to destroy sub-architectures first */ + SCOTCH_archExit (&archtab[i]); - for (colonum = 0; colonum < colonbr; colonum ++) - printf ("Color %5ld: %ld\n", - (long) colonum, - (long) cnbrtab[colonum]); + if ((fileptr = fopen (argv[1], "r")) == NULL) { /* Read all architectures from file where they were written to */ + SCOTCH_errorPrint ("main: cannot open file (2)"); + exit (EXIT_FAILURE); + } + + for (i = 0; i < archnbr; i ++) { + if ((SCOTCH_archInit (&archtab[i]) != 0) || + (SCOTCH_archLoad (&archtab[i], fileptr) != 0)) { + SCOTCH_errorPrint ("main: cannot load architecture (%d)", 1 + i); + exit (EXIT_FAILURE); + } + } + + fclose (fileptr); - free (cnbrtab); - free (colotab); - SCOTCH_graphExit (&grafdat); + for (i = 0; i < archnbr; i ++) /* Destroy architectures in any order, as they are now all autonomous from each other */ + SCOTCH_archExit (&archtab[i]); - return (0); + exit (EXIT_SUCCESS); } diff -Nru scotch-6.0.4.dfsg1/src/check/test_scotch_arch_deco.c scotch-6.0.6/src/check/test_scotch_arch_deco.c --- scotch-6.0.4.dfsg1/src/check/test_scotch_arch_deco.c 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/check/test_scotch_arch_deco.c 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,189 @@ +/* Copyright 2015,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : test_scotch_arch_deco.c **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : This module tests the operation of **/ +/** the SCOTCH_arch*() routines. **/ +/** **/ +/** DATES : # Version 6.0 : from : 28 dec 2015 **/ +/** to 22 may 2018 **/ +/** **/ +/** DATES : # This code derives from that of **/ +/** test_scotch_arch.c **/ +/** **/ +/************************************************************/ + +/* +** The defines and includes. +*/ + +#include +#if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) +#include +#endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ +#include +#include + +#include "scotch.h" + +#define ARCHNBR 6 + +/*********************/ +/* */ +/* The main routine. */ +/* */ +/*********************/ + +int +main ( +int argc, +char * argv[]) +{ + FILE * fileptr; + SCOTCH_Num vertnbr; + SCOTCH_Graph grafdat; + SCOTCH_Strat stradat; + SCOTCH_Arch archtab[ARCHNBR]; + int archnbr = 0; + int i; + SCOTCH_Num listnbr = 5; + SCOTCH_Num listtab[] = { 0, 4, 1, 5, 7 }; + + SCOTCH_errorProg (argv[0]); + + if (argc != 3) { + SCOTCH_errorPrint ("usage: %s graph_file architecture_file", argv[0]); + exit (EXIT_FAILURE); + } + + SCOTCH_randomReset (); + + if (SCOTCH_graphInit (&grafdat) != 0) { /* Initialize source graph */ + SCOTCH_errorPrint ("main: cannot initialize graph"); + exit (EXIT_FAILURE); + } + + if ((fileptr = fopen (argv[1], "r")) == NULL) { + SCOTCH_errorPrint ("main: cannot open file"); + exit (EXIT_FAILURE); + } + + if (SCOTCH_graphLoad (&grafdat, fileptr, -1, 0) != 0) { /* Read source graph */ + SCOTCH_errorPrint ("main: cannot load graph"); + exit (EXIT_FAILURE); + } + + fclose (fileptr); + + SCOTCH_graphSize (&grafdat, &vertnbr, NULL); + if (vertnbr < 8) { + SCOTCH_errorPrint ("main: graph is too small"); + exit (EXIT_FAILURE); + } + + SCOTCH_stratInit (&stradat); + + if ((fileptr = fopen (argv[2], "w")) == NULL) { + SCOTCH_errorPrint ("main: cannot open file"); + exit (EXIT_FAILURE); + } + + for (i = 1, archnbr = 0; i <= 2; i ++) { + int j; + int o; + + if (i == 1) + o = SCOTCH_archBuild0 (&archtab[archnbr], &grafdat, vertnbr, NULL, &stradat); + else + o = SCOTCH_archBuild2 (&archtab[archnbr], &grafdat, vertnbr, NULL); + if (o != 0) { + SCOTCH_errorPrint ("main: cannot create decomposition-described architecture (%d)", 2 * i - 1); + exit (EXIT_FAILURE); + } + + if (i == 1) + o = SCOTCH_archBuild0 (&archtab[archnbr + 1], &grafdat, listnbr, listtab, &stradat); + else + o = SCOTCH_archBuild2 (&archtab[archnbr + 1], &grafdat, listnbr, listtab); + if (o != 0) { + SCOTCH_errorPrint ("main: cannot create decomposition-described architecture (%d)", 2 * i); + exit (EXIT_FAILURE); + } + + if (i == 2) { + if (SCOTCH_archSub (&archtab[archnbr + 2], &archtab[archnbr], listnbr, listtab) != 0) { + SCOTCH_errorPrint ("main: cannot create sub-architecture (%d)", i); + exit (EXIT_FAILURE); + } + } + + for (j = 0; j < (1 + i); j ++) { + if (SCOTCH_archSave (&archtab[archnbr + j], fileptr) != 0) { + SCOTCH_errorPrint ("main: cannot save architecture (%d)", archnbr + 1 + j); + exit (EXIT_FAILURE); + } + } + + archnbr += (1 + i); + } + + fclose (fileptr); + + for (i = archnbr - 1; i >= 0; i --) /* Destroy architectures in reverse order to destroy sub-architectures first */ + SCOTCH_archExit (&archtab[i]); + + SCOTCH_graphExit (&grafdat); + + if ((fileptr = fopen (argv[2], "r")) == NULL) { /* Read all architectures from file where they were written to */ + SCOTCH_errorPrint ("main: cannot open file (2)"); + exit (EXIT_FAILURE); + } + + for (i = 0; i < archnbr; i ++) { + if ((SCOTCH_archInit (&archtab[i]) != 0) || + (SCOTCH_archLoad (&archtab[i], fileptr) != 0)) { + SCOTCH_errorPrint ("main: cannot load architecture (%d)", 1 + i); + exit (EXIT_FAILURE); + } + } + + fclose (fileptr); + + for (i = 0; i < archnbr; i ++) /* Destroy architectures in any order, as they are now all autonomous from each other */ + SCOTCH_archExit (&archtab[i]); + + exit (EXIT_SUCCESS); +} diff -Nru scotch-6.0.4.dfsg1/src/check/test_scotch_dgraph_band.c scotch-6.0.6/src/check/test_scotch_dgraph_band.c --- scotch-6.0.4.dfsg1/src/check/test_scotch_dgraph_band.c 2015-03-13 16:57:49.000000000 +0000 +++ scotch-6.0.6/src/check/test_scotch_dgraph_band.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2011,2012,2014,2015 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2011,2012,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -39,7 +39,7 @@ /** the SCOTCH_dgraphBand() routine. **/ /** **/ /** DATES : # Version 6.0 : from : 10 nov 2011 **/ -/** to 02 mar 2015 **/ +/** to 21 may 2018 **/ /** **/ /************************************************************/ @@ -60,9 +60,6 @@ #include "ptscotch.h" -#define errorProg SCOTCH_errorProg -#define errorPrint SCOTCH_errorPrint - /*********************/ /* */ /* The main routine. */ @@ -94,22 +91,22 @@ int thrdlvlproval; #endif /* SCOTCH_PTHREAD */ - errorProg (argv[0]); + SCOTCH_errorProg (argv[0]); #ifdef SCOTCH_PTHREAD thrdlvlreqval = MPI_THREAD_MULTIPLE; if (MPI_Init_thread (&argc, &argv, thrdlvlreqval, &thrdlvlproval) != MPI_SUCCESS) - errorPrint ("main: Cannot initialize (1)"); + SCOTCH_errorPrint ("main: Cannot initialize (1)"); if (thrdlvlreqval > thrdlvlproval) - errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD"); + SCOTCH_errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD"); #else /* SCOTCH_PTHREAD */ if (MPI_Init (&argc, &argv) != MPI_SUCCESS) - errorPrint ("main: Cannot initialize (2)"); + SCOTCH_errorPrint ("main: Cannot initialize (2)"); #endif /* SCOTCH_PTHREAD */ if (argc != 2) { - errorPrint ("main: invalid number of parameters"); - exit (1); + SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); + exit (EXIT_FAILURE); } proccomm = MPI_COMM_WORLD; @@ -128,52 +125,52 @@ #endif /* SCOTCH_CHECK_NOAUTO */ if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */ - errorPrint ("main: cannot communicate"); - return (1); + SCOTCH_errorPrint ("main: cannot communicate (1)"); + exit (EXIT_FAILURE); } if (SCOTCH_dgraphInit (&grafdat, proccomm) != 0) { /* Initialize source graph */ - errorPrint ("main: cannot initialize graph (1)"); - return (1); + SCOTCH_errorPrint ("main: cannot initialize graph (1)"); + exit (EXIT_FAILURE); } file = NULL; if ((proclocnum == 0) && ((file = fopen (argv[1], "r")) == NULL)) { - errorPrint ("main: cannot open graph file"); - return (1); + SCOTCH_errorPrint ("main: cannot open graph file"); + exit (EXIT_FAILURE); } if (SCOTCH_dgraphLoad (&grafdat, file, 0, 0) != 0) { - errorPrint ("main: cannot load graph"); - return (1); + SCOTCH_errorPrint ("main: cannot load graph"); + exit (EXIT_FAILURE); } if (file != NULL) fclose (file); if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */ - errorPrint ("main: cannot communicate"); - return (1); + SCOTCH_errorPrint ("main: cannot communicate (2)"); + exit (EXIT_FAILURE); } SCOTCH_dgraphData (&grafdat, NULL, &vertglbnbr, &vertlocnbr, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); if ((fronloctab = malloc (vertlocnbr * sizeof (SCOTCH_Num))) == NULL) { - errorPrint ("main: cannot allocate frontier array"); - return (1); + SCOTCH_errorPrint ("main: cannot allocate frontier array"); + exit (EXIT_FAILURE); } if (SCOTCH_dgraphInit (&bandgrafdat, proccomm) != 0) { /* Initialize band graph */ - errorPrint ("main: cannot initialize graph (2)"); - return (1); + SCOTCH_errorPrint ("main: cannot initialize graph (2)"); + exit (EXIT_FAILURE); } fronloctab[0] = 0; if (SCOTCH_dgraphBand (&grafdat, (proclocnum == 1) ? 1 : 0, fronloctab, 4, &bandgrafdat) != 0) { - errorPrint ("main: cannot compute band graph"); - return (1); + SCOTCH_errorPrint ("main: cannot compute band graph"); + exit (EXIT_FAILURE); } free (fronloctab); @@ -187,8 +184,8 @@ if (procnum == proclocnum) { if ((file = fopen ("/tmp/test_scotch_dgraph_band.map", (procnum == 0) ? "w" : "a+")) == NULL) { - errorPrint ("main: cannot open mapping file"); - return (1); + SCOTCH_errorPrint ("main: cannot open mapping file"); + exit (EXIT_FAILURE); } if (procnum == 0) @@ -205,5 +202,5 @@ SCOTCH_dgraphExit (&grafdat); MPI_Finalize (); - exit (0); + exit (EXIT_SUCCESS); } diff -Nru scotch-6.0.4.dfsg1/src/check/test_scotch_dgraph_check.c scotch-6.0.6/src/check/test_scotch_dgraph_check.c --- scotch-6.0.4.dfsg1/src/check/test_scotch_dgraph_check.c 2015-03-13 16:57:50.000000000 +0000 +++ scotch-6.0.6/src/check/test_scotch_dgraph_check.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2014,2015 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -39,7 +39,7 @@ /** the SCOTCH_dgraphCheck() routine. **/ /** **/ /** DATES : # Version 6.0 : from : 28 sep 2014 **/ -/** to 02 mar 2015 **/ +/** to 22 may 2018 **/ /** **/ /************************************************************/ @@ -60,9 +60,6 @@ #include "ptscotch.h" -#define errorProg SCOTCH_errorProg -#define errorPrint SCOTCH_errorPrint - /*********************/ /* */ /* The main routine. */ @@ -85,22 +82,22 @@ int thrdlvlproval; #endif /* SCOTCH_PTHREAD */ - errorProg (argv[0]); + SCOTCH_errorProg (argv[0]); #ifdef SCOTCH_PTHREAD thrdlvlreqval = MPI_THREAD_MULTIPLE; if (MPI_Init_thread (&argc, &argv, thrdlvlreqval, &thrdlvlproval) != MPI_SUCCESS) - errorPrint ("main: Cannot initialize (1)"); + SCOTCH_errorPrint ("main: Cannot initialize (1)"); if (thrdlvlreqval > thrdlvlproval) - errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD"); + SCOTCH_errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD"); #else /* SCOTCH_PTHREAD */ if (MPI_Init (&argc, &argv) != MPI_SUCCESS) - errorPrint ("main: Cannot initialize (2)"); + SCOTCH_errorPrint ("main: Cannot initialize (2)"); #endif /* SCOTCH_PTHREAD */ if (argc != 2) { - errorPrint ("main: invalid number of parameters"); - exit (1); + SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); + exit (EXIT_FAILURE); } proccomm = MPI_COMM_WORLD; @@ -119,42 +116,42 @@ #endif /* SCOTCH_CHECK_NOAUTO */ if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */ - errorPrint ("main: cannot communicate"); - return (1); + SCOTCH_errorPrint ("main: cannot communicate (1)"); + exit (EXIT_FAILURE); } if (SCOTCH_dgraphInit (&grafdat, proccomm) != 0) { /* Initialize source graph */ - errorPrint ("main: cannot initialize graph"); - return (1); + SCOTCH_errorPrint ("main: cannot initialize graph"); + exit (EXIT_FAILURE); } file = NULL; if ((proclocnum == 0) && ((file = fopen (argv[1], "r")) == NULL)) { - errorPrint ("main: cannot open graph file"); - return (1); + SCOTCH_errorPrint ("main: cannot open graph file"); + exit (EXIT_FAILURE); } if (SCOTCH_dgraphLoad (&grafdat, file, 0, 0) != 0) { - errorPrint ("main: cannot load graph"); - return (1); + SCOTCH_errorPrint ("main: cannot load graph"); + exit (EXIT_FAILURE); } if (file != NULL) fclose (file); if (SCOTCH_dgraphCheck (&grafdat) != 0) { - errorPrint ("main: invalid graph"); - return (1); + SCOTCH_errorPrint ("main: invalid graph"); + exit (EXIT_FAILURE); } if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */ - errorPrint ("main: cannot communicate"); - return (1); + SCOTCH_errorPrint ("main: cannot communicate (2)"); + exit (EXIT_FAILURE); } SCOTCH_dgraphExit (&grafdat); MPI_Finalize (); - exit (0); + exit (EXIT_SUCCESS); } diff -Nru scotch-6.0.4.dfsg1/src/check/test_scotch_dgraph_coarsen.c scotch-6.0.6/src/check/test_scotch_dgraph_coarsen.c --- scotch-6.0.4.dfsg1/src/check/test_scotch_dgraph_coarsen.c 2015-03-13 16:57:50.000000000 +0000 +++ scotch-6.0.6/src/check/test_scotch_dgraph_coarsen.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2014,2015 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -39,7 +39,7 @@ /** the SCOTCH_dgraphCoarsen() routine. **/ /** **/ /** DATES : # Version 6.0 : from : 28 sep 2014 **/ -/** to 02 mar 2015 **/ +/** to 22 may 2018 **/ /** **/ /************************************************************/ @@ -60,9 +60,6 @@ #include "ptscotch.h" -#define errorProg SCOTCH_errorProg -#define errorPrint SCOTCH_errorPrint - /*********************/ /* */ /* The main routine. */ @@ -80,7 +77,6 @@ int proclocnum; /* Number of this process */ SCOTCH_Num vertglbnbr; SCOTCH_Num vertlocnbr; - SCOTCH_Num baseval; SCOTCH_Dgraph grafdat; SCOTCH_Dgraph coargrafdat; SCOTCH_Num coarvertglbnbr; @@ -93,22 +89,22 @@ #endif /* SCOTCH_PTHREAD */ int i; - errorProg (argv[0]); + SCOTCH_errorProg (argv[0]); #ifdef SCOTCH_PTHREAD thrdlvlreqval = MPI_THREAD_MULTIPLE; if (MPI_Init_thread (&argc, &argv, thrdlvlreqval, &thrdlvlproval) != MPI_SUCCESS) - errorPrint ("main: Cannot initialize (1)"); + SCOTCH_errorPrint ("main: Cannot initialize (1)"); if (thrdlvlreqval > thrdlvlproval) - errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD"); + SCOTCH_errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD"); #else /* SCOTCH_PTHREAD */ if (MPI_Init (&argc, &argv) != MPI_SUCCESS) - errorPrint ("main: Cannot initialize (2)"); + SCOTCH_errorPrint ("main: Cannot initialize (2)"); #endif /* SCOTCH_PTHREAD */ if (argc != 2) { - errorPrint ("main: invalid number of parameters"); - exit (1); + SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); + exit (EXIT_FAILURE); } proccomm = MPI_COMM_WORLD; @@ -127,33 +123,33 @@ #endif /* SCOTCH_CHECK_NOAUTO */ if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */ - errorPrint ("main: cannot communicate"); - return (1); + SCOTCH_errorPrint ("main: cannot communicate (1)"); + exit (EXIT_FAILURE); } if (SCOTCH_dgraphInit (&grafdat, proccomm) != 0) { /* Initialize source graph */ - errorPrint ("main: cannot initialize graph (1)"); - return (1); + SCOTCH_errorPrint ("main: cannot initialize graph (1)"); + exit (EXIT_FAILURE); } file = NULL; if ((proclocnum == 0) && ((file = fopen (argv[1], "r")) == NULL)) { - errorPrint ("main: cannot open graph file"); - return (1); + SCOTCH_errorPrint ("main: cannot open graph file"); + exit (EXIT_FAILURE); } if (SCOTCH_dgraphLoad (&grafdat, file, 0, 0) != 0) { - errorPrint ("main: cannot load graph"); - return (1); + SCOTCH_errorPrint ("main: cannot load graph"); + exit (EXIT_FAILURE); } if (file != NULL) fclose (file); if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */ - errorPrint ("main: cannot communicate"); - return (1); + SCOTCH_errorPrint ("main: cannot communicate (2)"); + exit (EXIT_FAILURE); } SCOTCH_dgraphData (&grafdat, NULL, &vertglbnbr, &vertlocnbr, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); @@ -191,13 +187,13 @@ printf ("%s\n", foldstr); if ((multloctab = malloc (multlocsiz * 2 * sizeof (SCOTCH_Num))) == NULL) { - errorPrint ("main: cannot allocate multinode array"); - return (1); + SCOTCH_errorPrint ("main: cannot allocate multinode array"); + exit (EXIT_FAILURE); } if (SCOTCH_dgraphInit (&coargrafdat, proccomm) != 0) { /* Initialize band graph */ - errorPrint ("main: cannot initialize graph (2)"); - return (1); + SCOTCH_errorPrint ("main: cannot initialize graph (2)"); + exit (EXIT_FAILURE); } o = SCOTCH_dgraphCoarsen (&grafdat, 0, coarrat, foldval, &coargrafdat, multloctab); @@ -227,8 +223,8 @@ } if (coarvertlocnbr > multlocsiz) { - errorPrint ("main: invalid local multinode array size"); - return (1); + SCOTCH_errorPrint ("main: invalid local multinode array size"); + exit (EXIT_FAILURE); } SCOTCH_dgraphExit (&coargrafdat); @@ -238,5 +234,5 @@ SCOTCH_dgraphExit (&grafdat); MPI_Finalize (); - exit (0); + exit (EXIT_SUCCESS); } diff -Nru scotch-6.0.4.dfsg1/src/check/test_scotch_dgraph_grow.c scotch-6.0.6/src/check/test_scotch_dgraph_grow.c --- scotch-6.0.4.dfsg1/src/check/test_scotch_dgraph_grow.c 2015-03-13 16:57:51.000000000 +0000 +++ scotch-6.0.6/src/check/test_scotch_dgraph_grow.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2012,2014,2015 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2012,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -39,7 +39,7 @@ /** the SCOTCH_dgraphGrow() routine. **/ /** **/ /** DATES : # Version 6.0 : from : 26 sep 2012 **/ -/** to 02 mar 2015 **/ +/** to 22 may 2018 **/ /** **/ /************************************************************/ @@ -61,9 +61,6 @@ #include "ptscotch.h" -#define errorProg SCOTCH_errorProg -#define errorPrint SCOTCH_errorPrint - void _SCOTCHintRandInit (void); SCOTCH_Num _SCOTCHintRandVal (SCOTCH_Num); @@ -98,22 +95,22 @@ int thrdlvlproval; #endif /* SCOTCH_PTHREAD */ - errorProg (argv[0]); + SCOTCH_errorProg (argv[0]); #ifdef SCOTCH_PTHREAD thrdlvlreqval = MPI_THREAD_MULTIPLE; if (MPI_Init_thread (&argc, &argv, thrdlvlreqval, &thrdlvlproval) != MPI_SUCCESS) - errorPrint ("main: Cannot initialize (1)"); + SCOTCH_errorPrint ("main: Cannot initialize (1)"); if (thrdlvlreqval > thrdlvlproval) - errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD"); + SCOTCH_errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD"); #else /* SCOTCH_PTHREAD */ if (MPI_Init (&argc, &argv) != MPI_SUCCESS) - errorPrint ("main: Cannot initialize (2)"); + SCOTCH_errorPrint ("main: Cannot initialize (2)"); #endif /* SCOTCH_PTHREAD */ if (argc != 2) { - errorPrint ("main: invalid number of parameters"); - exit (1); + SCOTCH_errorPrint ("main: invalid number of parameters"); + exit (EXIT_FAILURE); } proccomm = MPI_COMM_WORLD; @@ -132,50 +129,50 @@ #endif /* SCOTCH_CHECK_NOAUTO */ if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */ - errorPrint ("main: cannot communicate"); - return (1); + SCOTCH_errorPrint ("main: cannot communicate (1)"); + exit (EXIT_FAILURE); } if (SCOTCH_dgraphInit (&grafdat, proccomm) != 0) { /* Initialize source graph */ - errorPrint ("main: cannot initialize graph"); - return (1); + SCOTCH_errorPrint ("main: cannot initialize graph"); + exit (EXIT_FAILURE); } file = NULL; if ((proclocnum == 0) && ((file = fopen (argv[1], "r")) == NULL)) { - errorPrint ("main: cannot open graph file"); - return (1); + SCOTCH_errorPrint ("main: cannot open graph file"); + exit (EXIT_FAILURE); } if (SCOTCH_dgraphLoad (&grafdat, file, 0, 0) != 0) { - errorPrint ("main: cannot load graph"); - return (1); + SCOTCH_errorPrint ("main: cannot load graph"); + exit (EXIT_FAILURE); } if (file != NULL) fclose (file); if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */ - errorPrint ("main: cannot communicate"); - return (1); + SCOTCH_errorPrint ("main: cannot communicate (2)"); + exit (EXIT_FAILURE); } if (SCOTCH_dgraphGhst (&grafdat) != 0) { - errorPrint ("main: cannot compute ghost edge array"); - return (1); + SCOTCH_errorPrint ("main: cannot compute ghost edge array"); + exit (EXIT_FAILURE); } SCOTCH_dgraphData (&grafdat, &baseval, &vertglbnbr, &vertlocnbr, NULL, &vertgstnbr, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); if ((seedloctab = malloc (vertlocnbr * sizeof (SCOTCH_Num))) == NULL) { - errorPrint ("main: cannot allocate seed array"); - return (1); + SCOTCH_errorPrint ("main: cannot allocate seed array"); + exit (EXIT_FAILURE); } if ((partgsttab = malloc (vertgstnbr * sizeof (SCOTCH_Num))) == NULL) { - errorPrint ("main: cannot allocate part array"); - return (1); + SCOTCH_errorPrint ("main: cannot allocate part array"); + exit (EXIT_FAILURE); } memset (partgsttab, ~0, vertgstnbr * sizeof (SCOTCH_Num)); @@ -190,8 +187,8 @@ partgsttab[seedloctab[2] - baseval] = 2; if (SCOTCH_dgraphGrow (&grafdat, 3, seedloctab, 4, partgsttab) != 0) { - errorPrint ("main: cannot compute grown regions"); - return (1); + SCOTCH_errorPrint ("main: cannot compute grown regions"); + exit (EXIT_FAILURE); } free (seedloctab); @@ -203,8 +200,8 @@ if (procnum == proclocnum) { if ((file = fopen ("/tmp/test_scotch_dgraph_grow.map", (procnum == 0) ? "w" : "a+")) == NULL) { - errorPrint ("main: cannot open mapping file"); - return (1); + SCOTCH_errorPrint ("main: cannot open mapping file"); + exit (EXIT_FAILURE); } if (procnum == 0) { @@ -229,5 +226,5 @@ SCOTCH_dgraphExit (&grafdat); MPI_Finalize (); - exit (0); + exit (EXIT_SUCCESS); } diff -Nru scotch-6.0.4.dfsg1/src/check/test_scotch_dgraph_redist.c scotch-6.0.6/src/check/test_scotch_dgraph_redist.c --- scotch-6.0.4.dfsg1/src/check/test_scotch_dgraph_redist.c 2015-03-13 16:57:52.000000000 +0000 +++ scotch-6.0.6/src/check/test_scotch_dgraph_redist.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -39,7 +39,7 @@ /** the SCOTCH_dgraphBand() routine. **/ /** **/ /** DATES : # Version 6.0 : from : 21 feb 2012 **/ -/** to 02 mar 2015 **/ +/** to 22 may 2018 **/ /** **/ /************************************************************/ @@ -60,9 +60,6 @@ #include "ptscotch.h" -#define errorProg SCOTCH_errorProg -#define errorPrint SCOTCH_errorPrint - /*********************/ /* */ /* The main routine. */ @@ -71,7 +68,6 @@ int main ( - int argc, char * argv[]) { @@ -82,32 +78,30 @@ SCOTCH_Num vertlocnbr; SCOTCH_Num vertlocnum; SCOTCH_Num * partloctab; - SCOTCH_Num baseval; SCOTCH_Dgraph srcgrafdat; SCOTCH_Dgraph dstgrafdat; FILE * file; - int procnum; #ifdef SCOTCH_PTHREAD int thrdlvlreqval; int thrdlvlproval; #endif /* SCOTCH_PTHREAD */ - errorProg (argv[0]); + SCOTCH_errorProg (argv[0]); #ifdef SCOTCH_PTHREAD thrdlvlreqval = MPI_THREAD_MULTIPLE; if (MPI_Init_thread (&argc, &argv, thrdlvlreqval, &thrdlvlproval) != MPI_SUCCESS) - errorPrint ("main: Cannot initialize (1)"); + SCOTCH_errorPrint ("main: Cannot initialize (1)"); if (thrdlvlreqval > thrdlvlproval) - errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD"); + SCOTCH_errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD"); #else /* SCOTCH_PTHREAD */ if (MPI_Init (&argc, &argv) != MPI_SUCCESS) - errorPrint ("main: Cannot initialize (2)"); + SCOTCH_errorPrint ("main: Cannot initialize (2)"); #endif /* SCOTCH_PTHREAD */ if (argc != 2) { - errorPrint ("main: invalid number of parameters"); - exit (1); + SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); + exit (EXIT_FAILURE); } proccomm = MPI_COMM_WORLD; @@ -126,57 +120,57 @@ #endif /* SCOTCH_CHECK_NOAUTO */ if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */ - errorPrint ("main: cannot communicate"); - return (1); + SCOTCH_errorPrint ("main: cannot communicate (1)"); + exit (EXIT_FAILURE); } if (SCOTCH_dgraphInit (&srcgrafdat, proccomm) != 0) { /* Initialize source graph */ - errorPrint ("main: cannot initialize source graph"); - return (1); + SCOTCH_errorPrint ("main: cannot initialize source graph"); + exit (EXIT_FAILURE); } if (SCOTCH_dgraphInit (&dstgrafdat, proccomm) != 0) { /* Initialize destination graph */ - errorPrint ("main: cannot initialize destination graph"); - return (1); + SCOTCH_errorPrint ("main: cannot initialize destination graph"); + exit (EXIT_FAILURE); } file = NULL; if ((proclocnum == 0) && ((file = fopen (argv[1], "r")) == NULL)) { - errorPrint ("main: cannot open graph file"); - return (1); + SCOTCH_errorPrint ("main: cannot open graph file"); + exit (EXIT_FAILURE); } if (SCOTCH_dgraphLoad (&srcgrafdat, file, -1, 0) != 0) { - errorPrint ("main: cannot load source graph"); - return (1); + SCOTCH_errorPrint ("main: cannot load source graph"); + exit (EXIT_FAILURE); } if (file != NULL) fclose (file); if (SCOTCH_dgraphCheck (&srcgrafdat) != 0) { - errorPrint ("main: invalid source graph"); - return (1); + SCOTCH_errorPrint ("main: invalid source graph"); + exit (EXIT_FAILURE); } if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */ - errorPrint ("main: cannot communicate"); - return (1); + SCOTCH_errorPrint ("main: cannot communicate (2)"); + exit (EXIT_FAILURE); } SCOTCH_dgraphData (&srcgrafdat, NULL, &vertglbnbr, &vertlocnbr, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); if ((partloctab = malloc (vertlocnbr * sizeof (SCOTCH_Num))) == NULL) { - errorPrint ("main: cannot allocate frontier array"); - return (1); + SCOTCH_errorPrint ("main: cannot allocate frontier array"); + exit (EXIT_FAILURE); } for (vertlocnum = 0; vertlocnum < vertlocnbr; vertlocnum ++) /* Create packs of 3 vertices each */ partloctab[vertlocnum] = (vertlocnum / 3) % procglbnbr; if (SCOTCH_dgraphRedist (&srcgrafdat, partloctab, NULL, -1, -1, &dstgrafdat) != 0) { - errorPrint ("main: cannot compute redistributed graph"); - return (1); + SCOTCH_errorPrint ("main: cannot compute redistributed graph"); + exit (EXIT_FAILURE); } SCOTCH_dgraphExit (&dstgrafdat); @@ -184,5 +178,5 @@ free (partloctab); MPI_Finalize (); - exit (0); + exit (EXIT_SUCCESS); } diff -Nru scotch-6.0.4.dfsg1/src/check/test_scotch_graph_coarsen_build.c scotch-6.0.6/src/check/test_scotch_graph_coarsen_build.c --- scotch-6.0.4.dfsg1/src/check/test_scotch_graph_coarsen_build.c 2015-03-01 10:20:27.000000000 +0000 +++ scotch-6.0.6/src/check/test_scotch_graph_coarsen_build.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,181 +0,0 @@ -/* Copyright 2015 IPB, Universite de Bordeaux, INRIA & CNRS -** -** This file is part of the Scotch software package for static mapping, -** graph partitioning and sparse matrix ordering. -** -** This software is governed by the CeCILL-C license under French law -** and abiding by the rules of distribution of free software. You can -** use, modify and/or redistribute the software under the terms of the -** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following -** URL: "http://www.cecill.info". -** -** As a counterpart to the access to the source code and rights to copy, -** modify and redistribute granted by the license, users are provided -** only with a limited warranty and the software's author, the holder of -** the economic rights, and the successive licensors have only limited -** liability. -** -** In this respect, the user's attention is drawn to the risks associated -** with loading, using, modifying and/or developing or reproducing the -** software by the user in light of its specific status of free software, -** that may mean that it is complicated to manipulate, and that also -** therefore means that it is reserved for developers and experienced -** professionals having in-depth computer knowledge. Users are therefore -** encouraged to load and test the software's suitability as regards -** their requirements in conditions enabling the security of their -** systems and/or data to be ensured and, more generally, to use and -** operate it in the same conditions as regards security. -** -** The fact that you are presently reading this means that you have had -** knowledge of the CeCILL-C license and that you accept its terms. -*/ -/************************************************************/ -/** **/ -/** NAME : test_scotch_graph_coarsen_build.c **/ -/** **/ -/** AUTHOR : Francois PELLEGRINI **/ -/** **/ -/** FUNCTION : This module tests the operation of **/ -/** the SCOTCH_graphCoarsenBuild() routine. **/ -/** **/ -/** DATES : # Version 6.0 : from : 24 feb 2015 **/ -/** to 26 feb 2015 **/ -/** **/ -/************************************************************/ - -/* -** The defines and includes. -*/ - -#include -#include -#if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) -#include -#endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ -#include -#include - -#include "scotch.h" - -/*********************/ -/* */ -/* The main routine. */ -/* */ -/*********************/ - -int -main ( -int argc, -char * argv[]) -{ - SCOTCH_Num baseval; /* Base value */ - SCOTCH_Graph finegrafdat; /* Fine graph */ - SCOTCH_Num finevertnbr; /* Number of fine vertices */ - SCOTCH_Num finevertnnd; /* Based end of vertex array */ - SCOTCH_Num finevertnum; - SCOTCH_Num * fineverttax; - SCOTCH_Num * finevendtax; - SCOTCH_Num * fineedgetax; - SCOTCH_Num * finematetax; - SCOTCH_Graph coargrafdat; /* Coarse graph */ - SCOTCH_Num * coarmulttab; /* Multinode array */ - SCOTCH_Num coarvertnbr; /* Number of coarse vertices */ - SCOTCH_Num coaredgenbr; - FILE * fileptr; - - SCOTCH_errorProg (argv[0]); - - if (SCOTCH_graphInit (&finegrafdat) != 0) { /* Initialize fine source graph */ - SCOTCH_errorPrint ("main: cannot initialize graph"); - return (1); - } - - if ((fileptr = fopen (argv[1], "r")) == NULL) { /* Open fine graph file */ - SCOTCH_errorPrint ("main: cannot open file"); - return (1); - } - - if (SCOTCH_graphLoad (&finegrafdat, fileptr, -1, 0) != 0) { /* Read fine source graph */ - SCOTCH_errorPrint ("main: cannot load graph"); - return (1); - } - - fclose (fileptr); - - SCOTCH_graphData (&finegrafdat, &baseval, - &finevertnbr, &fineverttax, &finevendtax, NULL, NULL, - NULL, &fineedgetax, NULL); - fineverttax -= baseval; - finevendtax -= baseval; - fineedgetax -= baseval; - - if ((finematetax = malloc (finevertnbr * sizeof (SCOTCH_Num))) == NULL) { - SCOTCH_errorPrint ("main: out of memory (1)"); - return (1); - } - memset (finematetax, ~0, finevertnbr * sizeof (SCOTCH_Num)); /* Set un-based array to "-1"'s */ - finematetax -= baseval; /* From now on, base index array */ - - for (finevertnum = baseval, finevertnnd = finevertnbr + baseval, coarvertnbr = 0; /* Compute simple matching */ - finevertnum < finevertnnd; finevertnum ++) { - SCOTCH_Num finematenum; - - if (finematetax[finevertnum] >= 0) /* If vertex already matched */ - continue; - - coarvertnbr ++; /* One more coarse vertex will be created */ - - finematenum = finevertnum; /* Assume we mate with ourselves */ - if (fineverttax[finevertnum] == finevendtax[finevertnum]) { /* If isolated vertex */ - while (1) { /* Use first free vertex as a mate */ - if (++ finevertnum >= finevertnnd) { /* If no other free vertex available */ - finematetax[finematenum] = finematenum; /* Mate isolated vertex with itself */ - goto endloop; /* Exit nested loops */ - } - if (finematetax[finevertnum] < 0) /* If vertex is free, keep it as mate */ - break; /* Increment performed in outer loop */ - } - } - else { - SCOTCH_Num fineedgenum; - - for (fineedgenum = fineverttax[finevertnum]; /* Find a suitable mate */ - fineedgenum < finevendtax[finevertnum]; fineedgenum ++) { - SCOTCH_Num finevertend; - - finevertend = fineedgetax[fineedgenum]; /* FInd end vertex */ - if (finematetax[finevertend] < 0) { /* If vertex is free */ - finematenum = finevertend; /* Keep vertex as mate */ - break; - } - } - } - - finematetax[finevertnum] = finematenum; - finematetax[finematenum] = finevertnum; - } -endloop: - - if ((coarmulttab = malloc (coarvertnbr * 2 * sizeof (SCOTCH_Num))) == NULL) { - SCOTCH_errorPrint ("main: out of memory (2)"); - return (1); - } - - if (SCOTCH_graphCoarsenBuild (&finegrafdat, &coargrafdat, coarmulttab, coarvertnbr, finematetax + baseval) != 0) { - SCOTCH_errorPrint ("main: cannot compute coarse graph"); - return (1); - } - - SCOTCH_graphSize (&coargrafdat, &coarvertnbr, &coaredgenbr); - printf ("Coarse graph has " SCOTCH_NUMSTRING " vertices and " SCOTCH_NUMSTRING " edges\n", - coarvertnbr, - coaredgenbr); - printf ("Graph coarsened with a ratio of %lg\n", (double) coarvertnbr / (double) finevertnbr); - - SCOTCH_graphExit (&coargrafdat); - SCOTCH_graphExit (&finegrafdat); - free (coarmulttab); - free (finematetax + baseval); - - return (0); -} diff -Nru scotch-6.0.4.dfsg1/src/check/test_scotch_graph_coarsen.c scotch-6.0.6/src/check/test_scotch_graph_coarsen.c --- scotch-6.0.4.dfsg1/src/check/test_scotch_graph_coarsen.c 2015-03-01 10:20:27.000000000 +0000 +++ scotch-6.0.6/src/check/test_scotch_graph_coarsen.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -36,10 +36,11 @@ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the operation of **/ -/** the SCOTCH_graphColor() routine. **/ +/** the sequential graph coarsening **/ +/** routines. **/ /** **/ /** DATES : # Version 6.0 : from : 15 oct 2014 **/ -/** to 15 oct 2014 **/ +/** to 22 may 2018 **/ /** **/ /************************************************************/ @@ -67,93 +68,240 @@ int argc, char * argv[]) { - SCOTCH_Num baseval; - FILE * fileptr; - SCOTCH_Num finevertnbr; - SCOTCH_Graph finegrafdat; - double coarrat; - SCOTCH_Num coarvertmax; - SCOTCH_Graph coargrafdat; - SCOTCH_Num * coarmulttab; - int o; + SCOTCH_Num baseval; /* Base value */ + SCOTCH_Graph finegrafdat; /* Fine graph */ + SCOTCH_Num finevertnbr; /* Number of fine vertices */ + SCOTCH_Num finevertnnd; /* Based end of vertex array */ + SCOTCH_Num finevertnum; + SCOTCH_Num * fineverttax; + SCOTCH_Num * finevendtax; + SCOTCH_Num * fineedgetax; + SCOTCH_Num * finematetax; + SCOTCH_Graph coargrafdat; /* Coarse graph */ + SCOTCH_Num * coarmulttab; /* Multinode array */ + SCOTCH_Num coarvertnbr; /* Number of coarse vertices */ + SCOTCH_Num coarvertnum; + SCOTCH_Num coarverttmp; + SCOTCH_Num coaredgenbr; + FILE * fileptr; SCOTCH_errorProg (argv[0]); - if (SCOTCH_graphInit (&finegrafdat) != 0) { /* Initialize source, fine graph */ - SCOTCH_errorPrint ("main: cannot initialize fine graph"); - return (1); + if (argc != 2) { + SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); + exit (EXIT_FAILURE); } - if (SCOTCH_graphInit (&coargrafdat) != 0) { /* Initialize coarse graph */ - SCOTCH_errorPrint ("main: cannot initialize coarse graph"); - return (1); + if (SCOTCH_graphInit (&finegrafdat) != 0) { /* Initialize fine source graph */ + SCOTCH_errorPrint ("main: cannot initialize graph"); + exit (EXIT_FAILURE); } - if ((fileptr = fopen (argv[1], "r")) == NULL) { + if ((fileptr = fopen (argv[1], "r")) == NULL) { /* Open fine graph file */ SCOTCH_errorPrint ("main: cannot open file"); - return (1); + exit (EXIT_FAILURE); } - if (SCOTCH_graphLoad (&finegrafdat, fileptr, -1, 0) != 0) { /* Read source graph */ + if (SCOTCH_graphLoad (&finegrafdat, fileptr, -1, 0) != 0) { /* Read fine source graph */ SCOTCH_errorPrint ("main: cannot load graph"); - return (1); + exit (EXIT_FAILURE); } fclose (fileptr); - SCOTCH_graphData (&finegrafdat, &baseval, &finevertnbr, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + SCOTCH_graphData (&finegrafdat, &baseval, + &finevertnbr, &fineverttax, &finevendtax, NULL, NULL, + NULL, &fineedgetax, NULL); + fineverttax -= baseval; + finevendtax -= baseval; + fineedgetax -= baseval; - coarrat = 0.8; - coarvertmax = (SCOTCH_Num) (coarrat * (double) finevertnbr); - - if ((coarmulttab = malloc (coarvertmax * 2 * sizeof (SCOTCH_Num))) == NULL) { + if ((finematetax = malloc (finevertnbr * sizeof (SCOTCH_Num))) == NULL) { /* Array is un-based */ SCOTCH_errorPrint ("main: out of memory (1)"); - return (1); + exit (EXIT_FAILURE); } - if ((o = SCOTCH_graphCoarsen (&finegrafdat, &coargrafdat, coarmulttab, 1, coarrat)) >= 2) { - SCOTCH_errorPrint ("main: cannot coarsen graph"); - return (1); + coarvertnbr = 0; /* Set minimum number of vertices in graph */ + if (SCOTCH_graphCoarsenMatch (&finegrafdat, &coarvertnbr, 1.0, SCOTCH_COARSENNOMERGE, finematetax) != 0) { + SCOTCH_errorPrint ("main: cannot compute matching"); + exit (EXIT_FAILURE); } - if (o == 0) { - SCOTCH_Num finevertnnd; - SCOTCH_Num coarvertnbr; - SCOTCH_Num coarvertnum; - SCOTCH_Num coarverttmp; - - SCOTCH_graphSize (&coargrafdat, &coarvertnbr, NULL); - - printf ("Graph coarsened with a ratio of %lg\n", (double) coarvertnbr / (double) finevertnbr); - - for (coarvertnum = 0, coarverttmp = finevertnbr, finevertnnd = finevertnbr + baseval; - coarvertnum < coarvertnbr; coarvertnum ++) { - SCOTCH_Num finevertnum0; - SCOTCH_Num finevertnum1; - - finevertnum0 = coarmulttab[2 * coarvertnum]; - finevertnum1 = coarmulttab[2 * coarvertnum + 1]; - if ((finevertnum0 < baseval) || - (finevertnum0 >= finevertnnd) || - (finevertnum1 < baseval) || - (finevertnum1 >= finevertnnd)) { - SCOTCH_errorPrint ("main: invalid multinode array (1)"); - return (1); + finematetax -= baseval; /* Array is based from now on */ + for (finevertnum = baseval, finevertnnd = finevertnbr + baseval, coarverttmp = finevertnbr; + finevertnum < finevertnnd; finevertnum ++) { + SCOTCH_Num finevertend; + + finevertend = finematetax[finevertnum]; + if ((finevertend < baseval) || + (finevertend >= finevertnnd)) { + SCOTCH_errorPrint ("main: invalid mate array (1)"); + exit (EXIT_FAILURE); + } + if (finevertend > finevertnum) { /* If mates make a multinode (counted once) */ + coarverttmp --; /* One less coarse vertex */ + if (finematetax[finevertend] != finevertnum) { + SCOTCH_errorPrint ("main: invalid mate array (2)"); + exit (EXIT_FAILURE); } - if (finevertnum0 != finevertnum1) - coarverttmp --; } - if (coarverttmp != coarvertnbr) { - SCOTCH_errorPrint ("main: invalid multinode array (2)"); - return (1); + } + if (coarverttmp != coarvertnbr) { + SCOTCH_errorPrint ("main: invalid mate array (3)"); + exit (EXIT_FAILURE); + } + + printf ("Mate array has " SCOTCH_NUMSTRING " vertices\n", + coarvertnbr); + printf ("Graph mated with a ratio of %lg\n", (double) coarvertnbr / (double) finevertnbr); + + if ((coarmulttab = malloc (coarvertnbr * 2 * sizeof (SCOTCH_Num))) == NULL) { + SCOTCH_errorPrint ("main: out of memory (2)"); + exit (EXIT_FAILURE); + } + + if (SCOTCH_graphCoarsenBuild (&finegrafdat, coarvertnbr, finematetax + baseval, &coargrafdat, coarmulttab) != 0) { + SCOTCH_errorPrint ("main: cannot compute coarse graph (1)"); + exit (EXIT_FAILURE); + } + + SCOTCH_graphSize (&coargrafdat, &coarvertnbr, &coaredgenbr); + printf ("Coarse graph has " SCOTCH_NUMSTRING " vertices and " SCOTCH_NUMSTRING " edges\n", + coarvertnbr, + coaredgenbr); + printf ("Graph coarsened with a ratio of %lg\n", (double) coarvertnbr / (double) finevertnbr); + + for (coarvertnum = 0, coarverttmp = finevertnbr, finevertnnd = finevertnbr + baseval; + coarvertnum < coarvertnbr; coarvertnum ++) { + SCOTCH_Num finevertnum0; + SCOTCH_Num finevertnum1; + + finevertnum0 = coarmulttab[2 * coarvertnum]; + finevertnum1 = coarmulttab[2 * coarvertnum + 1]; + if ((finevertnum0 < baseval) || + (finevertnum0 >= finevertnnd) || + (finevertnum1 < baseval) || + (finevertnum1 >= finevertnnd)) { + SCOTCH_errorPrint ("main: invalid multinode array (1)"); + exit (EXIT_FAILURE); } + if (finevertnum0 != finevertnum1) + coarverttmp --; + } + if (coarverttmp != coarvertnbr) { + SCOTCH_errorPrint ("main: invalid multinode array (2)"); + exit (EXIT_FAILURE); + } + + SCOTCH_graphExit (&coargrafdat); + free (coarmulttab); /* Free first multinode array */ + + memset (finematetax + baseval, ~0, finevertnbr * sizeof (SCOTCH_Num)); /* Set based array to "-1"'s */ + + for (finevertnum = baseval, finevertnnd = finevertnbr + baseval, coarvertnbr = 0; /* Compute simple matching */ + finevertnum < finevertnnd; finevertnum ++) { + SCOTCH_Num finematenum; + + if (finematetax[finevertnum] >= 0) /* If vertex already matched */ + continue; + + coarvertnbr ++; /* One more coarse vertex will be created */ + + finematenum = finevertnum; /* Assume we mate with ourselves */ + if (fineverttax[finevertnum] == finevendtax[finevertnum]) { /* If isolated vertex */ + while (1) { /* Use first free vertex as a mate */ + if (++ finevertnum >= finevertnnd) { /* If no other free vertex available */ + finematetax[finematenum] = finematenum; /* Mate isolated vertex with itself */ + goto endloop; /* Exit nested loops */ + } + if (finematetax[finevertnum] < 0) /* If vertex is free, keep it as mate */ + break; /* Increment performed in outer loop */ + } + } + else { + SCOTCH_Num fineedgenum; + + for (fineedgenum = fineverttax[finevertnum]; /* Find a suitable mate */ + fineedgenum < finevendtax[finevertnum]; fineedgenum ++) { + SCOTCH_Num finevertend; + + finevertend = fineedgetax[fineedgenum]; /* FInd end vertex */ + if (finematetax[finevertend] < 0) { /* If vertex is free */ + finematenum = finevertend; /* Keep vertex as mate */ + break; + } + } + } + + finematetax[finevertnum] = finematenum; + finematetax[finematenum] = finevertnum; + } +endloop: + printf ("Mate array has " SCOTCH_NUMSTRING " vertices\n", + coarvertnbr); + printf ("Graph mated with a ratio of %lg\n", (double) coarvertnbr / (double) finevertnbr); + + if ((coarmulttab = malloc (coarvertnbr * 2 * sizeof (SCOTCH_Num))) == NULL) { + SCOTCH_errorPrint ("main: out of memory (3)"); + exit (EXIT_FAILURE); + } + + if (SCOTCH_graphCoarsenBuild (&finegrafdat, coarvertnbr, finematetax + baseval, &coargrafdat, coarmulttab) != 0) { + SCOTCH_errorPrint ("main: cannot compute coarse graph (2)"); + exit (EXIT_FAILURE); + } + + SCOTCH_graphSize (&coargrafdat, &coarvertnbr, &coaredgenbr); + printf ("Coarse graph has " SCOTCH_NUMSTRING " vertices and " SCOTCH_NUMSTRING " edges\n", + coarvertnbr, + coaredgenbr); + printf ("Graph coarsened with a ratio of %lg\n", (double) coarvertnbr / (double) finevertnbr); + + SCOTCH_graphExit (&coargrafdat); + free (coarmulttab); /* Free second multinode array */ + free (finematetax + baseval); + + if ((coarmulttab = malloc (finevertnbr * 2 * sizeof (SCOTCH_Num))) == NULL) { /* Number of coarse vertices and ratio not bounded */ + SCOTCH_errorPrint ("main: out of memory (3)"); + exit (EXIT_FAILURE); + } + + if (SCOTCH_graphCoarsen (&finegrafdat, 1, 1.0, SCOTCH_COARSENNONE, &coargrafdat, coarmulttab) != 0) { + SCOTCH_errorPrint ("main: cannot coarsen graph"); + exit (EXIT_FAILURE); + } + + SCOTCH_graphSize (&coargrafdat, &coarvertnbr, NULL); + printf ("Coarse graph has " SCOTCH_NUMSTRING " vertices and " SCOTCH_NUMSTRING " edges\n", + coarvertnbr, + coaredgenbr); + printf ("Graph coarsened with a ratio of %lg\n", (double) coarvertnbr / (double) finevertnbr); + + for (coarvertnum = 0, coarverttmp = finevertnbr, finevertnnd = finevertnbr + baseval; + coarvertnum < coarvertnbr; coarvertnum ++) { + SCOTCH_Num finevertnum0; + SCOTCH_Num finevertnum1; + + finevertnum0 = coarmulttab[2 * coarvertnum]; + finevertnum1 = coarmulttab[2 * coarvertnum + 1]; + if ((finevertnum0 < baseval) || + (finevertnum0 >= finevertnnd) || + (finevertnum1 < baseval) || + (finevertnum1 >= finevertnnd)) { + SCOTCH_errorPrint ("main: invalid multinode array (3)"); + exit (EXIT_FAILURE); + } + if (finevertnum0 != finevertnum1) + coarverttmp --; + } + if (coarverttmp != coarvertnbr) { + SCOTCH_errorPrint ("main: invalid multinode array (4)"); + exit (EXIT_FAILURE); } - else - printf ("Graph could not be coarsened with a ratio of %lg\n", coarrat); - free (coarmulttab); SCOTCH_graphExit (&coargrafdat); + free (coarmulttab); /* Free third multinode array */ SCOTCH_graphExit (&finegrafdat); - return (0); + exit (EXIT_SUCCESS); } diff -Nru scotch-6.0.4.dfsg1/src/check/test_scotch_graph_color.c scotch-6.0.6/src/check/test_scotch_graph_color.c --- scotch-6.0.4.dfsg1/src/check/test_scotch_graph_color.c 2015-03-01 10:18:24.000000000 +0000 +++ scotch-6.0.6/src/check/test_scotch_graph_color.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -39,7 +39,7 @@ /** the SCOTCH_graphColor() routine. **/ /** **/ /** DATES : # Version 6.0 : from : 06 jan 2012 **/ -/** to 15 oct 2014 **/ +/** to 22 may 2018 **/ /** **/ /************************************************************/ @@ -78,19 +78,24 @@ SCOTCH_errorProg (argv[0]); + if (argc != 2) { + SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); + exit (EXIT_FAILURE); + } + if (SCOTCH_graphInit (&grafdat) != 0) { /* Initialize source graph */ SCOTCH_errorPrint ("main: cannot initialize graph"); - return (1); + exit (EXIT_FAILURE); } if ((fileptr = fopen (argv[1], "r")) == NULL) { SCOTCH_errorPrint ("main: cannot open file"); - return (1); + exit (EXIT_FAILURE); } if (SCOTCH_graphLoad (&grafdat, fileptr, -1, 0) != 0) { /* Read source graph */ SCOTCH_errorPrint ("main: cannot load graph"); - return (1); + exit (EXIT_FAILURE); } fclose (fileptr); @@ -99,18 +104,18 @@ if ((colotab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL) { SCOTCH_errorPrint ("main: out of memory (1)"); - return (1); + exit (EXIT_FAILURE); } if ((cnbrtab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL) { SCOTCH_errorPrint ("main: out of memory (1)"); - return (1); + exit (EXIT_FAILURE); } memset (cnbrtab, 0, vertnbr * sizeof (SCOTCH_Num)); if (SCOTCH_graphColor (&grafdat, colotab, &colonbr, 0) != 0) { SCOTCH_errorPrint ("main: cannot color graph"); - return (1); + exit (EXIT_FAILURE); } printf ("Number of colors: %ld\n", (long) colonbr); @@ -127,5 +132,5 @@ free (colotab); SCOTCH_graphExit (&grafdat); - return (0); + exit (EXIT_SUCCESS); } diff -Nru scotch-6.0.4.dfsg1/src/check/test_scotch_graph_diam.c scotch-6.0.6/src/check/test_scotch_graph_diam.c --- scotch-6.0.4.dfsg1/src/check/test_scotch_graph_diam.c 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/check/test_scotch_graph_diam.c 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,113 @@ +/* Copyright 2017,2018 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : test_scotch_graph_diam.c **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : This module tests the operation of **/ +/** the SCOTCH_graphColor() routine. **/ +/** **/ +/** DATES : # Version 6.0 : from : 26 jan 2017 **/ +/** to 22 may 2018 **/ +/** **/ +/************************************************************/ + +/* +** The defines and includes. +*/ + +#include +#if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) +#include +#endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ +#include +#include + +#include "scotch.h" + +void _SCOTCHintRandInit (void); +SCOTCH_Num _SCOTCHintRandVal (SCOTCH_Num); + +/*********************/ +/* */ +/* The main routine. */ +/* */ +/*********************/ + +int +main ( +int argc, +char * argv[]) +{ + FILE * fileptr; + SCOTCH_Graph grafdat; + SCOTCH_Num diamval; + + SCOTCH_errorProg (argv[0]); + + if (argc != 2) { + SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); + exit (EXIT_FAILURE); + } + + if (SCOTCH_graphInit (&grafdat) != 0) { /* Initialize source graph */ + SCOTCH_errorPrint ("main: cannot initialize graph"); + exit (EXIT_FAILURE); + } + + if ((fileptr = fopen (argv[1], "r")) == NULL) { + SCOTCH_errorPrint ("main: cannot open file"); + exit (EXIT_FAILURE); + } + + if (SCOTCH_graphLoad (&grafdat, fileptr, -1, 0) != 0) { /* Read source graph */ + SCOTCH_errorPrint ("main: cannot load graph"); + exit (EXIT_FAILURE); + } + + fclose (fileptr); + + _SCOTCHintRandInit (); + + if ((diamval = SCOTCH_graphDiamPV (&grafdat)) < 0) { + SCOTCH_errorPrint ("main: cannot compute graph pseudo-diameter"); + exit (EXIT_FAILURE); + } + + printf ("Graph pseudo-diameter: %ld\n", (long) diamval); + + SCOTCH_graphExit (&grafdat); + + exit (EXIT_SUCCESS); +} diff -Nru scotch-6.0.4.dfsg1/src/check/test_scotch_graph_map.c scotch-6.0.6/src/check/test_scotch_graph_map.c --- scotch-6.0.4.dfsg1/src/check/test_scotch_graph_map.c 2014-09-28 16:39:59.000000000 +0000 +++ scotch-6.0.6/src/check/test_scotch_graph_map.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -39,7 +39,7 @@ /** the SCOTCH_graphMap*() routines. **/ /** **/ /** DATES : # Version 6.0 : from : 12 aug 2014 **/ -/** to 20 sep 2014 **/ +/** to 22 may 2018 **/ /** **/ /************************************************************/ @@ -83,7 +83,6 @@ SCOTCH_Strat stratab[STRANBR]; int stranum; int typenum; - SCOTCH_Num baseval; SCOTCH_Num vertnbr; SCOTCH_Num vertnum; SCOTCH_Num * parttab; @@ -93,19 +92,24 @@ SCOTCH_errorProg (argv[0]); + if (argc != 2) { + SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); + exit (EXIT_FAILURE); + } + if (SCOTCH_graphInit (&grafdat) != 0) { /* Initialize source graph */ SCOTCH_errorPrint ("main: cannot initialize graph"); - return (1); + exit (EXIT_FAILURE); } if ((fileptr = fopen (argv[1], "r")) == NULL) { /* Read a square 2D grid graph */ SCOTCH_errorPrint ("main: cannot open file (1)"); - return (1); + exit (EXIT_FAILURE); } if (SCOTCH_graphLoad (&grafdat, fileptr, -1, 0) != 0) { /* Read source graph */ SCOTCH_errorPrint ("main: cannot load graph"); - return (1); + exit (EXIT_FAILURE); } fclose (fileptr); @@ -114,14 +118,14 @@ xdimsiz = (SCOTCH_Num) sqrt ((double) vertnbr); if (vertnbr != (xdimsiz * xdimsiz)) { SCOTCH_errorPrint ("main: graph is not a square grid"); - return (1); + exit (EXIT_FAILURE); } if (((parttab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL) || ((parotab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL) || ((vmlotab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL)) { SCOTCH_errorPrint ("main: out of memory"); - return (1); + exit (EXIT_FAILURE); } for (vertnum = 0; vertnum < vertnbr; vertnum ++) /* Fill vertex migration load array */ @@ -130,7 +134,7 @@ for (stranum = 0; stranum < STRANBR; stranum ++) { /* Initialize mapping strategies */ if (SCOTCH_stratInit (&stratab[stranum]) != 0) { SCOTCH_errorPrint ("main: cannot initialize strategy"); - return (1); + exit (EXIT_FAILURE); } } SCOTCH_stratGraphMapBuild (&stratab[0], SCOTCH_STRATRECURSIVE, 4, 0.05); @@ -139,7 +143,7 @@ for (archnum = 0; archnum < ARCHNBR; archnum ++) { /* Initialize architectures */ if (SCOTCH_archInit (&archtab[archnum]) != 0) { SCOTCH_errorPrint ("main: cannot initialize architecture"); - return (1); + exit (EXIT_FAILURE); } } SCOTCH_archCmplt (&archtab[0], 5); @@ -149,7 +153,7 @@ if ((fileptr = tmpfile ()) == NULL) { /* Open temporary file for resulting output */ SCOTCH_errorPrint ("main: cannot open file (2)"); - return (1); + exit (EXIT_FAILURE); } for (stranum = 0; stranum < STRANBR; stranum ++) { @@ -158,11 +162,11 @@ if (SCOTCH_graphMapInit (&grafdat, &mappdat, &archtab[archnum], parttab) != 0) { /* Initialize new mapping */ SCOTCH_errorPrint ("main: cannot initialize mapping (1)"); - return (1); + exit (EXIT_FAILURE); } if (SCOTCH_graphMapInit (&grafdat, &mapodat, &archtab[archnum], parotab) != 0) { /* Initialize old mapping */ SCOTCH_errorPrint ("main: cannot initialize mapping (2)"); - return (1); + exit (EXIT_FAILURE); } archsiz = SCOTCH_archSize (&archtab[archnum]); @@ -214,7 +218,7 @@ if (o != 0) { SCOTCH_errorPrint ("main: cannot compute mapping"); - return (1); + exit (EXIT_FAILURE); } } @@ -239,5 +243,5 @@ fclose (fileptr); - return (0); + exit (EXIT_SUCCESS); } diff -Nru scotch-6.0.4.dfsg1/src/check/test_scotch_graph_map_copy.c scotch-6.0.6/src/check/test_scotch_graph_map_copy.c --- scotch-6.0.4.dfsg1/src/check/test_scotch_graph_map_copy.c 2015-03-01 10:21:12.000000000 +0000 +++ scotch-6.0.6/src/check/test_scotch_graph_map_copy.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2014,2015 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,7 +40,7 @@ /** specific case of the "copy" method. **/ /** **/ /** DATES : # Version 6.0 : from : 15 oct 2014 **/ -/** to 28 feb 2015 **/ +/** to 22 may 2018 **/ /** **/ /************************************************************/ @@ -75,33 +75,34 @@ SCOTCH_Mapping mapodat; /* Old mapping */ FILE * fileptr; SCOTCH_Graph grafdat; - SCOTCH_Num xdimsiz; - int archnum; SCOTCH_Arch archdat; SCOTCH_Strat stratab[STRANBR]; int stranum; int typenum; - SCOTCH_Num baseval; SCOTCH_Num vertnbr; - SCOTCH_Num vertnum; SCOTCH_Num * parttab; SCOTCH_Num * parotab; SCOTCH_errorProg (argv[0]); + if (argc != 2) { + SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); + exit (EXIT_FAILURE); + } + if (SCOTCH_graphInit (&grafdat) != 0) { /* Initialize source graph */ SCOTCH_errorPrint ("main: cannot initialize graph"); - return (1); + exit (EXIT_FAILURE); } if ((fileptr = fopen (argv[1], "r")) == NULL) { /* Read the givel graph */ SCOTCH_errorPrint ("main: cannot open file (1)"); - return (1); + exit (EXIT_FAILURE); } if (SCOTCH_graphLoad (&grafdat, fileptr, -1, 0) != 0) { /* Read source graph */ SCOTCH_errorPrint ("main: cannot load graph"); - return (1); + exit (EXIT_FAILURE); } fclose (fileptr); @@ -111,13 +112,13 @@ if (((parttab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL) || ((parotab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL)) { SCOTCH_errorPrint ("main: out of memory"); - return (1); + exit (EXIT_FAILURE); } for (stranum = 0; stranum < STRANBR; stranum ++) { /* Initialize mapping strategies */ if (SCOTCH_stratInit (&stratab[stranum]) != 0) { SCOTCH_errorPrint ("main: cannot initialize strategy"); - return (1); + exit (EXIT_FAILURE); } } SCOTCH_stratGraphMap (&stratab[0], "cf{move=10000,pass=-1,bal=0.05}"); @@ -125,13 +126,12 @@ if (SCOTCH_archInit (&archdat) != 0) { SCOTCH_errorPrint ("main: cannot initialize architecture"); - return (1); + exit (EXIT_FAILURE); } SCOTCH_archCmplt (&archdat, 5); for (stranum = 0; stranum < (STRANBR - 1); stranum ++) { for (typenum = 0; typenum < 2; typenum ++) { - int i; int o; printf ("Strat %d, type %d\n", stranum, typenum); @@ -140,7 +140,7 @@ case 0 : /* Plain mapping */ if (SCOTCH_graphMapInit (&grafdat, &mappdat, &archdat, parttab) != 0) { /* Initialize new mapping */ SCOTCH_errorPrint ("main: cannot initialize mapping (1)"); - return (1); + exit (EXIT_FAILURE); } o = SCOTCH_graphMapCompute (&grafdat, &mappdat, &stratab[STRANBR - 1]); /* Last strategy is plain mapping strategy */ @@ -149,7 +149,7 @@ case 1 : /* Remapping with copy of the old partition array */ if (SCOTCH_graphMapInit (&grafdat, &mapodat, &archdat, parotab) != 0) { /* Initialize old mapping */ SCOTCH_errorPrint ("main: cannot initialize mapping (2)"); - return (1); + exit (EXIT_FAILURE); } o = SCOTCH_graphRemapCompute (&grafdat, &mappdat, &mapodat, 0, NULL, &stratab[stranum]); @@ -158,7 +158,7 @@ if (o != 0) { SCOTCH_errorPrint ("main: cannot compute mapping"); - return (1); + exit (EXIT_FAILURE); } } @@ -176,5 +176,5 @@ free (parttab); SCOTCH_graphExit (&grafdat); - return (0); + exit (EXIT_SUCCESS); } diff -Nru scotch-6.0.4.dfsg1/src/check/test_scotch_graph_order.c scotch-6.0.6/src/check/test_scotch_graph_order.c --- scotch-6.0.4.dfsg1/src/check/test_scotch_graph_order.c 2014-09-28 16:39:59.000000000 +0000 +++ scotch-6.0.6/src/check/test_scotch_graph_order.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,7 +40,7 @@ /** routines. **/ /** **/ /** DATES : # Version 6.0 : from : 05 aug 2014 **/ -/** to 29 aug 2014 **/ +/** to 22 may 2018 **/ /** **/ /************************************************************/ @@ -81,19 +81,24 @@ SCOTCH_errorProg (argv[0]); + if (argc != 2) { + SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); + exit (EXIT_FAILURE); + } + if (SCOTCH_graphInit (&grafdat) != 0) { /* Initialize source graph */ SCOTCH_errorPrint ("main: cannot initialize graph"); - return (1); + exit (EXIT_FAILURE); } if ((fileptr = fopen (argv[1], "r")) == NULL) { SCOTCH_errorPrint ("main: cannot open file (1)"); - return (1); + exit (EXIT_FAILURE); } if (SCOTCH_graphLoad (&grafdat, fileptr, -1, 0) != 0) { /* Read source graph */ SCOTCH_errorPrint ("main: cannot load graph"); - return (1); + exit (EXIT_FAILURE); } fclose (fileptr); @@ -103,7 +108,7 @@ listnbr = (vertnbr + 1) / 2; /* Only keep half of the vertices in induced graph */ if ((listtab = malloc (listnbr * sizeof (SCOTCH_Num))) == NULL) { SCOTCH_errorPrint ("main: out of memory (1)"); - return (1); + exit (EXIT_FAILURE); } for (listnum = 0, vertnum = baseval + (listnbr / 4); /* Keep only middle half of the vertices */ listnum < listnbr; listnum ++, vertnum ++) @@ -111,27 +116,27 @@ if ((fileptr = tmpfile ()) == NULL) { /* Open temporary file for resulting output */ SCOTCH_errorPrint ("main: cannot open file (2)"); - return (1); + exit (EXIT_FAILURE); } if (SCOTCH_stratInit (&stradat) != 0) { /* Initialize ordering strategy */ SCOTCH_errorPrint ("main: cannot initialize strategy"); - return (1); + exit (EXIT_FAILURE); } if (SCOTCH_graphOrderInit (&grafdat, &ordedat, NULL, NULL, NULL, NULL, NULL) != 0) { /* Initialize ordering */ SCOTCH_errorPrint ("main: cannot initialize ordering (1)"); - return (1); + exit (EXIT_FAILURE); } if (SCOTCH_graphOrderCompute (&grafdat, &ordedat, &stradat) != 0) { SCOTCH_errorPrint ("main: cannot order graph"); - return (1); + exit (EXIT_FAILURE); } if (SCOTCH_graphOrderCheck (&grafdat, &ordedat) != 0) { SCOTCH_errorPrint ("main: invalid ordering (1)"); - return (1); + exit (EXIT_FAILURE); } SCOTCH_graphOrderSave (&grafdat, &ordedat, fileptr); /* Test ordering data output routines */ @@ -142,17 +147,17 @@ if (SCOTCH_graphOrderInit (&grafdat, &ordedat, NULL, NULL, NULL, NULL, NULL) != 0) { /* Initialize ordering again */ SCOTCH_errorPrint ("main: cannot initialize ordering (2)"); - return (1); + exit (EXIT_FAILURE); } if (SCOTCH_graphOrderComputeList (&grafdat, &ordedat, listnbr, listtab, &stradat) != 0) { SCOTCH_errorPrint ("main: cannot order induced graph"); - return (1); + exit (EXIT_FAILURE); } if (SCOTCH_graphOrderCheck (&grafdat, &ordedat) != 0) { SCOTCH_errorPrint ("main: invalid ordering (2)"); - return (1); + exit (EXIT_FAILURE); } SCOTCH_graphOrderSave (&grafdat, &ordedat, fileptr); /* Test ordering data output routines */ @@ -164,5 +169,5 @@ SCOTCH_graphOrderExit (&grafdat, &ordedat); SCOTCH_graphExit (&grafdat); - return (0); + exit (EXIT_SUCCESS); } diff -Nru scotch-6.0.4.dfsg1/src/check/test_scotch_graph_part_ovl.c scotch-6.0.6/src/check/test_scotch_graph_part_ovl.c --- scotch-6.0.4.dfsg1/src/check/test_scotch_graph_part_ovl.c 2014-09-28 16:39:59.000000000 +0000 +++ scotch-6.0.6/src/check/test_scotch_graph_part_ovl.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,7 +40,7 @@ /** routine. **/ /** **/ /** DATES : # Version 6.0 : from : 20 sep 2014 **/ -/** to 20 sep 2014 **/ +/** to 22 may 2018 **/ /** **/ /************************************************************/ @@ -92,39 +92,39 @@ SCOTCH_errorProg (argv[0]); if ((argc < 4) || (argc > 5)) { - SCOTCH_errorPrint ("main: usage is \"%s []\"\n", argv[0]); - exit (1); + SCOTCH_errorPrint ("usage: %s nparts input_source_graph_file output_mapping_file [strategy]", argv[0]); + exit (EXIT_FAILURE); } if ((partnbr = (SCOTCH_Num) atoi (argv[1])) < 1) { SCOTCH_errorPrint ("main: invalid number of parts (\"%s\")", argv[1]); - return (1); + exit (EXIT_FAILURE); } if (SCOTCH_stratInit (&stradat) != 0) { SCOTCH_errorPrint ("main: cannot initialize strategy"); - return (1); + exit (EXIT_FAILURE); } if (argc == 5) { if (SCOTCH_stratGraphPartOvl (&stradat, argv[4]) != 0) { SCOTCH_errorPrint ("main: invalid user-provided strategy"); - return (1); + exit (EXIT_FAILURE); } } if (SCOTCH_graphInit (&grafdat) != 0) { SCOTCH_errorPrint ("main: cannot initialize graph"); - return (1); + exit (EXIT_FAILURE); } if ((fileptr = fopen (argv[2], "r")) == NULL) { SCOTCH_errorPrint ("main: cannot open file (1)"); - return (1); + exit (EXIT_FAILURE); } if (SCOTCH_graphLoad (&grafdat, fileptr, -1, 0) != 0) { SCOTCH_errorPrint ("main: cannot load graph"); - return (1); + exit (EXIT_FAILURE); } fclose (fileptr); @@ -135,12 +135,12 @@ ((flagtab = malloc (partnbr * sizeof (SCOTCH_Num))) == NULL) || ((loadtab = malloc (partnbr * sizeof (SCOTCH_Num))) == NULL)) { SCOTCH_errorPrint ("main: out of memory"); - return (1); + exit (EXIT_FAILURE); } if (SCOTCH_graphPartOvl (&grafdat, partnbr, &stradat, parttax) != 0) { /* Parttax is not based yet */ SCOTCH_errorPrint ("main: cannot compute mapping"); - return (1); + exit (EXIT_FAILURE); } edgetax -= baseval; @@ -200,12 +200,12 @@ if ((fileptr = fopen (argv[3], "w")) == NULL) { SCOTCH_errorPrint ("main: cannot open file (2)"); - return (1); + exit (EXIT_FAILURE); } if (fprintf (fileptr, "%ld\n", (long) vertnbr) == EOF) { SCOTCH_errorPrint ("main: bad output (1)"); - return (1); + exit (EXIT_FAILURE); } for (vertnum = 0; vertnum < vertnbr; vertnum ++) { @@ -213,7 +213,7 @@ (long) ((vlbltab == NULL) ? vertnum : vlbltab[vertnum]), (long) parttax[vertnum + baseval]) == EOF) { SCOTCH_errorPrint ("main: bad output (2)"); - return (1); + exit (EXIT_FAILURE); } } @@ -226,5 +226,5 @@ SCOTCH_stratExit (&stradat); SCOTCH_graphExit (&grafdat); - exit (0); + exit (EXIT_SUCCESS); } diff -Nru scotch-6.0.4.dfsg1/src/check/test_scotch_mesh_graph.c scotch-6.0.6/src/check/test_scotch_mesh_graph.c --- scotch-6.0.4.dfsg1/src/check/test_scotch_mesh_graph.c 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/check/test_scotch_mesh_graph.c 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,112 @@ +/* Copyright 2018 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : test_scotch_mesh_graph.c **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : This module tests the operation of **/ +/** the SCOTCH_graphColor() routine. **/ +/** **/ +/** DATES : # Version 6.0 : from : 11 feb 2018 **/ +/** to 22 may 2018 **/ +/** **/ +/************************************************************/ + +/* +** The defines and includes. +*/ + +#include +#if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) +#include +#endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ +#include +#include + +#include "scotch.h" + +/*********************/ +/* */ +/* The main routine. */ +/* */ +/*********************/ + +int +main ( +int argc, +char * argv[]) +{ + FILE * fileptr; + SCOTCH_Mesh meshdat; + SCOTCH_Graph grafdat; + + SCOTCH_errorProg (argv[0]); + + if (argc != 2) { + SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); + exit (EXIT_FAILURE); + } + + if (SCOTCH_meshInit (&meshdat) != 0) { /* Initialize source graph */ + SCOTCH_errorPrint ("main: cannot initialize mesh"); + exit (EXIT_FAILURE); + } + + if (SCOTCH_graphInit (&grafdat) != 0) { /* Initialize source graph */ + SCOTCH_errorPrint ("main: cannot initialize graph"); + exit (EXIT_FAILURE); + } + + if ((fileptr = fopen (argv[1], "r")) == NULL) { + SCOTCH_errorPrint ("main: cannot open file"); + exit (EXIT_FAILURE); + } + + if (SCOTCH_meshLoad (&meshdat, fileptr, -1) != 0) { /* Read source mesh */ + SCOTCH_errorPrint ("main: cannot load mesh"); + exit (EXIT_FAILURE); + } + + fclose (fileptr); + + if (SCOTCH_meshGraph (&meshdat, &grafdat) != 0) { + SCOTCH_errorPrint ("main: cannot create graph from mesh"); + exit (EXIT_FAILURE); + } + + SCOTCH_graphExit (&grafdat); + SCOTCH_meshExit (&meshdat); + + exit (EXIT_SUCCESS); +} diff -Nru scotch-6.0.4.dfsg1/src/check/test_strat_par.c scotch-6.0.6/src/check/test_strat_par.c --- scotch-6.0.4.dfsg1/src/check/test_strat_par.c 2014-09-28 16:39:59.000000000 +0000 +++ scotch-6.0.6/src/check/test_strat_par.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2012,2013 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2012,2013,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -39,7 +39,7 @@ /** strategy building routines. **/ /** **/ /** DATES : # Version 6.0 : from : 08 jan 2012 **/ -/** to 11 oct 2013 **/ +/** to 22 may 2018 **/ /** **/ /************************************************************/ @@ -71,6 +71,11 @@ SCOTCH_errorProg (argv[0]); + if (argc != 1) { + SCOTCH_errorPrint ("usage: %s", argv[0]); + exit (EXIT_FAILURE); + } + printf ("Parallel mapping strategy, SCOTCH_STRATDEFAULT\n"); SCOTCH_stratInit (&stradat); @@ -119,5 +124,5 @@ SCOTCH_stratDgraphOrderBuild (&stradat, SCOTCH_STRATSEPASIMPLE, 1, 0, 0.2); SCOTCH_stratExit (&stradat); - return (0); + exit (EXIT_SUCCESS); } diff -Nru scotch-6.0.4.dfsg1/src/check/test_strat_seq.c scotch-6.0.6/src/check/test_strat_seq.c --- scotch-6.0.4.dfsg1/src/check/test_strat_seq.c 2014-09-28 16:39:59.000000000 +0000 +++ scotch-6.0.6/src/check/test_strat_seq.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2012,2013 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2012,2013,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -39,7 +39,7 @@ /** strategy building routines. **/ /** **/ /** DATES : # Version 6.0 : from : 08 jan 2012 **/ -/** to 11 oct 2013 **/ +/** to 14 jul 2018 **/ /** **/ /************************************************************/ @@ -70,6 +70,11 @@ SCOTCH_errorProg (argv[0]); + if (argc != 1) { + SCOTCH_errorPrint ("usage: %s", argv[0]); + exit (EXIT_FAILURE); + } + printf ("Sequential mapping strategy, SCOTCH_STRATDEFAULT\n"); SCOTCH_stratInit (&stradat); @@ -100,6 +105,12 @@ SCOTCH_stratGraphOrderBuild (&stradat, SCOTCH_STRATDEFAULT, 0, 0.2); SCOTCH_stratExit (&stradat); + printf ("Sequential ordering strategy, SCOTCH_STRATDISCONNECTED\n"); + + SCOTCH_stratInit (&stradat); + SCOTCH_stratGraphOrderBuild (&stradat, SCOTCH_STRATDISCONNECTED, 3, 0.2); + SCOTCH_stratExit (&stradat); + printf ("Sequential ordering strategy, SCOTCH_STRATLEVELMAX\n"); SCOTCH_stratInit (&stradat); @@ -130,5 +141,5 @@ SCOTCH_stratGraphOrderBuild (&stradat, SCOTCH_STRATSEPASIMPLE, 3, 0.2); SCOTCH_stratExit (&stradat); - return (0); + exit (EXIT_SUCCESS); } diff -Nru scotch-6.0.4.dfsg1/src/esmumps/dof.h scotch-6.0.6/src/esmumps/dof.h --- scotch-6.0.4.dfsg1/src/esmumps/dof.h 2012-12-01 13:59:17.000000000 +0000 +++ scotch-6.0.6/src/esmumps/dof.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -48,6 +48,8 @@ /** to 06 jun 2002 **/ /** # Version 3.0 : from : 28 feb 2004 **/ /** to 29 feb 2004 **/ +/** # Version 6.0 : from : 22 may 2018 **/ +/** to 22 may 2018 **/ /** **/ /************************************************************/ @@ -74,10 +76,6 @@ ** The function prototypes. */ -#ifndef DOF -#define static -#endif - int dofInit (Dof * const deofptr); void dofExit (Dof * const deofptr); int dofLoad (Dof * const deofptr, FILE * const stream); @@ -87,8 +85,6 @@ int dofGraph (Dof * const deofptr, const Graph * grafptr, const INT, const INT * const peritab); #endif /* GRAPH_H */ -#undef static - /* ** The macro definitions. */ diff -Nru scotch-6.0.4.dfsg1/src/esmumps/esmumps_f.c scotch-6.0.6/src/esmumps/esmumps_f.c --- scotch-6.0.4.dfsg1/src/esmumps/esmumps_f.c 2012-12-01 13:59:17.000000000 +0000 +++ scotch-6.0.6/src/esmumps/esmumps_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -58,8 +58,8 @@ /* */ /**************************************/ -FORTRAN ( \ -ESMUMPSF, esmumpsf, ( \ +ESMUMPS_FORTRAN ( \ +ESMUMPS_VOID, ESMUMPS_VOID, ( \ const INT * const n, \ const INT * const iwlen, \ INT * const petab, \ diff -Nru scotch-6.0.4.dfsg1/src/esmumps/esmumps.h scotch-6.0.6/src/esmumps/esmumps.h --- scotch-6.0.4.dfsg1/src/esmumps/esmumps.h 2012-12-01 13:59:17.000000000 +0000 +++ scotch-6.0.6/src/esmumps/esmumps.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,6 +42,8 @@ /** to 24 sep 1998 **/ /** # Version 0.1 : from : 04 apr 1999 **/ /** to 01 may 1999 **/ +/** # Version 6.0 : from : 22 may 2018 **/ +/** to 22 may 2018 **/ /** **/ /************************************************************/ @@ -51,12 +53,6 @@ ** The function prototypes. */ -#ifndef ESMUMPS -#define static -#endif - int esmumps (const INT n, const INT iwlen, INT * const pe, const INT pfree, INT * const len, INT * const iw, INT * const nv, INT * const elen, INT * const last); int esmumps_strat1 (const INT procnbr, const INT leafsiz, const int leorval, const INT cminval, const INT cmaxval, const double fratval, const int verbval, FILE * const stream, char * const straptr); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/esmumps/fax.h scotch-6.0.6/src/esmumps/fax.h --- scotch-6.0.4.dfsg1/src/esmumps/fax.h 2012-12-01 13:59:17.000000000 +0000 +++ scotch-6.0.6/src/esmumps/fax.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -56,6 +56,8 @@ /** to 03 mar 2004 **/ /** # Version 3.0 : from : 23 nov 2004 **/ /** to 03 mar 2005 **/ +/** # Version 6.0 : from : 22 may 2018 **/ +/** to 22 may 2018 **/ /** **/ /************************************************************/ @@ -65,10 +67,6 @@ ** The function prototypes. */ -#ifndef FAX -#define static -#endif - int symbolCompact (SymbolMatrix * const symbptr); int symbolFax (SymbolMatrix * const symbptr, const INT vertnbr, const INT edgenbr, const INT baseval, void * const ngbdptr, INT ngbfrst (void * const, const INT), INT ngbnext (void * const), INT ngbdegr (void * const, const INT), const Order * const ordeptr); #ifdef GRAPH_H @@ -92,5 +90,3 @@ int symbolFaxiGrid2E (SymbolMatrix * const symbptr, const INT xnbr, const INT ynbr, const INT baseval, const Order * const ordeptr, const INT levfmax); int symbolFaxiGrid3D (SymbolMatrix * const symbptr, const INT xnbr, const INT ynbr, const INT znbr, const INT baseval, const Order * const ordeptr, const INT levfmax); int symbolFaxiGrid3E (SymbolMatrix * const symbptr, const INT xnbr, const INT ynbr, const INT znbr, const INT baseval, const Order * const ordeptr, const INT levfmax); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/esmumps/graph.h scotch-6.0.6/src/esmumps/graph.h --- scotch-6.0.4.dfsg1/src/esmumps/graph.h 2012-12-01 13:59:17.000000000 +0000 +++ scotch-6.0.6/src/esmumps/graph.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -46,6 +46,8 @@ /** to 24 jan 2004 **/ /** # Version 2.0 : from : 28 feb 2004 **/ /** to 23 apr 2004 **/ +/** # Version 6.0 : from : 22 may 2018 **/ +/** to 22 may 2018 **/ /** **/ /************************************************************/ @@ -69,12 +71,6 @@ ** The function prototypes. */ -#ifndef GRAPH -#define static -#endif - int graphBuild (Graph * const grafptr, const INT baseval, const INT vertnbr, const INT edgenbr, void * const ngbdptr, INT nghbfrstfunc (void * const, const INT), INT nghbnextfunc (void * const)); int graphBuildGraph (Graph * const grafptr, const INT baseval, const INT vertnbr, const INT edgenbr, INT * restrict verttab, INT * restrict velotab, INT * restrict edgetab); int graphBuildGraph2 (Graph * const grafptr, const INT baseval, const INT vertnbr, const INT edgenbr, INT * restrict verttab, INT * restrict vendtab, INT * restrict velotab, INT * restrict vlbltab, INT * restrict edgetab, INT * restrict edlotab); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/esmumps/main_esmumps.c scotch-6.0.6/src/esmumps/main_esmumps.c --- scotch-6.0.4.dfsg1/src/esmumps/main_esmumps.c 2012-12-01 14:30:13.000000000 +0000 +++ scotch-6.0.6/src/esmumps/main_esmumps.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2009,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2009,2012,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,7 +45,7 @@ /** # Version 5.1 : from : 22 jan 2009 **/ /** to 22 jan 2009 **/ /** # Version 6.0 : from : 01 dec 2012 **/ -/** to 01 dec 2012 **/ +/** to 21 may 2018 **/ /** **/ /************************************************************/ @@ -54,11 +54,7 @@ */ #include "common.h" -#ifdef SCOTCH_PTSCOTCH -#include "ptscotch.h" -#else /* SCOTCH_PTSCOTCH */ #include "scotch.h" -#endif /* SCOTCH_PTSCOTCH */ #include "graph.h" #include "esmumps.h" @@ -109,11 +105,16 @@ graphData (&grafdat, NULL, &vertnbr, &verttab, NULL, NULL, NULL, &edgenbr, &edgetab, NULL); - if ((lentab = (INT *) memAlloc (vertnbr * sizeof (INT))) == NULL) { - errorPrint ("main_esmumps: out of memory (1)"); + if (memAllocGroup ((void **) (void *) + &lentab, (size_t) (vertnbr * sizeof (INT)), + &nvtab, (size_t) (vertnbr * sizeof (INT)), + &elentab, (size_t) (vertnbr * sizeof (INT)), + &lasttab, (size_t) (vertnbr * sizeof (INT)), NULL) == NULL) { + errorPrint ("main_esmumps: out of memory"); graphExit (&grafdat); return (1); } + for (vertnum = 0; vertnum < vertnbr; vertnum ++) { if (verttab[vertnum] == verttab[vertnum + 1]) { lentab[vertnum] = 0; @@ -123,27 +124,11 @@ lentab[vertnum] = verttab[vertnum + 1] - verttab[vertnum]; } - if (((nvtab = (INT *) memAlloc (vertnbr * sizeof (INT))) == NULL) || - ((elentab = (INT *) memAlloc (vertnbr * sizeof (INT))) == NULL) || - ((lasttab = (INT *) memAlloc (vertnbr * sizeof (INT))) == NULL)) { - errorPrint ("main_esmumps: out of memory (2)"); - if (nvtab != NULL) { - if (elentab != NULL) - memFree (elentab); - memFree (nvtab); - } - graphExit (&grafdat); - return (1); - } - pfree = edgenbr + 1; ESMUMPSF (&vertnbr, &edgenbr, verttab, &pfree, lentab, edgetab, nvtab, elentab, lasttab, &ncmpa); - memFree (lasttab); - memFree (elentab); - memFree (nvtab); - memFree (lentab); + memFree (lentab); /* Free group leader */ graphExit (&grafdat); if (ncmpa < 0) { diff -Nru scotch-6.0.4.dfsg1/src/esmumps/Makefile scotch-6.0.6/src/esmumps/Makefile --- scotch-6.0.4.dfsg1/src/esmumps/Makefile 2015-03-13 23:32:06.000000000 +0000 +++ scotch-6.0.6/src/esmumps/Makefile 2018-07-14 15:24:49.000000000 +0000 @@ -44,7 +44,7 @@ $(CC) $(CFLAGS) $(CLIBFLAGS) -I$(includedir) -c $(<) -o $(@) %$(EXE) : %.c - $(CC) $(CFLAGS) -I$(includedir) $(<) -o $(@) -L$(libdir) $(LDFLAGS) -L. -l$(ESMUMPSLIB) -l$(SCOTCHLIB) -lscotch -l$(SCOTCHLIB)errexit -lm + $(CC) $(CFLAGS) -I$(includedir) $(<) -o $(@) -L. -lesmumps -L$(libdir) -lscotch -lscotcherrexit $(LDFLAGS) ## ## Project rules. @@ -53,22 +53,19 @@ .PHONY : ptscotch scotch ptinstall install clean realclean scotch : clean - $(MAKE) CC="$(CCS)" CCD="$(CCS)" SCOTCHLIB=scotch ESMUMPSLIB=esmumps \ - libesmumps$(LIB) \ + $(MAKE) CC="$(CCS)" CCD="$(CCS)" \ + libesmumps$(LIB) \ main_esmumps$(EXE) -ptscotch : clean - $(MAKE) CFLAGS="$(CFLAGS) -DSCOTCH_PTSCOTCH" CC="$(CCP)" SCOTCHLIB=ptscotch ESMUMPSLIB=ptesmumps \ - libesmumps$(LIB) \ - main_esmumps$(EXE) +ptscotch : scotch -install : +install : scotch -$(CP) esmumps.h $(includedir) -$(CP) libesmumps$(LIB) $(libdir) -ptinstall : +ptinstall : scotch -$(CP) esmumps.h $(includedir) - -$(CP) libptesmumps$(LIB) $(libdir) + -$(CP) libesmumps$(LIB) $(libdir)/libptesmumps$(LIB) clean : -$(RM) *~ common.h *$(OBJ) lib*$(LIB) main_esmumps$(EXE) @@ -85,7 +82,7 @@ graph_graph$(OBJ) : graph_graph.c \ common.h \ - $(includedir)/$(SCOTCHLIB).h \ + $(includedir)/scotch.h \ graph.h order$(OBJ) : order.c \ @@ -97,13 +94,13 @@ order.h \ common.h \ graph.h \ - $(includedir)/$(SCOTCHLIB).h + $(includedir)/scotch.h dof$(OBJ) : dof.c \ dof.h \ common.h \ graph.h \ - $(includedir)/$(SCOTCHLIB).h + $(includedir)/scotch.h symbol$(OBJ) : symbol.c \ symbol.h \ @@ -123,7 +120,7 @@ symbol.h \ order.h \ fax.h \ - $(includedir)/$(SCOTCHLIB).h + $(includedir)/scotch.h esmumps$(OBJ) : esmumps.c \ common.h \ @@ -132,7 +129,7 @@ order.h \ fax.h \ esmumps.h \ - $(includedir)/$(SCOTCHLIB).h + $(includedir)/scotch.h esmumps_f$(OBJ) : esmumps_f.c \ common.h \ @@ -151,8 +148,8 @@ esmumps$(OBJ) \ esmumps_f$(OBJ) \ esmumps_strats$(OBJ) - $(AR) $(ARFLAGS) lib$(ESMUMPSLIB)$(LIB) $(?) - -$(RANLIB) lib$(ESMUMPSLIB)$(LIB) + $(AR) $(ARFLAGS) $(@) $(?) + -$(RANLIB) $(@) main_esmumps$(EXE) : main_esmumps.c \ common.h \ @@ -160,6 +157,6 @@ order.h \ symbol.h \ esmumps.h \ - lib$(ESMUMPSLIB)$(LIB) \ - $(libdir)/lib$(SCOTCHLIB)$(LIB) \ - $(libdir)/lib$(SCOTCHLIB)errexit$(LIB) + libesmumps$(LIB) \ + $(libdir)/libscotch$(LIB) \ + $(libdir)/libscotcherrexit$(LIB) diff -Nru scotch-6.0.4.dfsg1/src/esmumps/module.h scotch-6.0.6/src/esmumps/module.h --- scotch-6.0.4.dfsg1/src/esmumps/module.h 2012-12-01 13:59:17.000000000 +0000 +++ scotch-6.0.6/src/esmumps/module.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2009 ENSEIRB, INRIA & CNRS +/* Copyright 2009,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,6 +40,8 @@ /** **/ /** DATES : # Version 5.1 : from : 22 jan 2009 **/ /** to 22 jan 2009 **/ +/** # Version 6.0 : from : 21 may 2018 **/ +/** to 21 may 2018 **/ /** **/ /************************************************************/ @@ -77,3 +79,83 @@ #define memReallocGroup _SCOTCHmemReallocGroup #define memOffset _SCOTCHmemOffset #endif /* ((! defined SCOTCH_COMMON_EXTERNAL) || (defined SCOTCH_COMMON_RENAME)) */ + +#ifndef ESMUMPS_NAME_PREFIX_INTERN +#define ESMUMPS_NAME_PREFIX_INTERN _ESMUMPS +#define ESMUMPS_NAME_PREFIX_PUBLICFL esmumpsf +#define ESMUMPS_NAME_PREFIX_PUBLICFU ESMUMPSF +#endif /* ESMUMPS_NAME_PREFIX_INTERN */ + +#ifndef ESMUMPS_NAME_SUFFIX +#define ESMUMPS_NAME_SUFFIX +#endif /* ESMUMPS_NAME_SUFFIX */ +#ifndef ESMUMPS_NAME_SUFFIXFL +#define ESMUMPS_NAME_SUFFIXFL ESMUMPS_NAME_SUFFIX +#define ESMUMPS_NAME_SUFFIXFU ESMUMPS_NAME_SUFFIX +#endif /* SCOTCH_NAME_SUFFIXFL */ + +#define ESMUMPS_VOID + +#define ESMUMPS_NAME_GLUE2(n,s) n##s +#define ESMUMPS_NAME_GLUE3(p,n,s) p##n##s +#define ESMUMPS_NAME_MACRO2(n,s) ESMUMPS_NAME_GLUE2 (n,s) +#define ESMUMPS_NAME_MACRO3(p,n,s) ESMUMPS_NAME_GLUE3 (p,n,s) +#define ESMUMPS_NAME_INTERN(f) ESMUMPS_NAME_MACRO3 (ESMUMPS_NAME_PREFIX_INTERN,f,ESMUMPS_NAME_SUFFIX) +#define ESMUMPS_NAME_PUBLIC(f) ESMUMPS_NAME_MACRO2 (f,ESMUMPS_NAME_SUFFIX) +#define ESMUMPS_NAME_PUBLICFL(f) ESMUMPS_NAME_MACRO3 (ESMUMPS_NAME_PREFIX_PUBLICFL,f,ESMUMPS_NAME_SUFFIXFL) +#define ESMUMPS_NAME_PUBLICFU(f) ESMUMPS_NAME_MACRO3 (ESMUMPS_NAME_PREFIX_PUBLICFU,f,ESMUMPS_NAME_SUFFIXFU) +#define ESMUMPS_FORTRAN(nu,nl,pl,pc) FORTRAN (ESMUMPS_NAME_PUBLICFU(nu),ESMUMPS_NAME_PUBLICFL(nl),pl,pc) + +#define dofConstant ESMUMPS_NAME_INTERN (dofConstant) +#define dofGraph ESMUMPS_NAME_INTERN (dofGraph) +#define dofExit ESMUMPS_NAME_INTERN (dofExit) +#define dofInit ESMUMPS_NAME_INTERN (dofInit) +#define dofLoad ESMUMPS_NAME_INTERN (dofLoad) +#define dofSave ESMUMPS_NAME_INTERN (dofSave) + +#define graphBuild ESMUMPS_NAME_INTERN (graphBuild) +#define graphBuildGraph ESMUMPS_NAME_INTERN (graphBuildGraph) +#define graphBuildGraph2 ESMUMPS_NAME_INTERN (graphBuildGraph2) + +#define orderBase ESMUMPS_NAME_INTERN (orderBase) +#define orderCheck ESMUMPS_NAME_INTERN (orderCheck) +#define orderExit ESMUMPS_NAME_INTERN (orderExit) +#define orderGraph ESMUMPS_NAME_INTERN (orderGraph) +#define orderGraphList ESMUMPS_NAME_INTERN (orderGraphList) +#define orderGraphListStrat ESMUMPS_NAME_INTERN (orderGraphListStrat) +#define orderGraphStrat ESMUMPS_NAME_INTERN (orderGraphStrat) +#define orderGrid2 ESMUMPS_NAME_INTERN (orderGrid2) +#define orderGrid2C ESMUMPS_NAME_INTERN (orderGrid2C) +#define orderGrid3 ESMUMPS_NAME_INTERN (orderGrid3) +#define orderGrid3C ESMUMPS_NAME_INTERN (orderGrid3C) +#define orderInit ESMUMPS_NAME_INTERN (orderInit) +#define orderLoad ESMUMPS_NAME_INTERN (orderLoad) +#define orderMesh ESMUMPS_NAME_INTERN (orderMesh) +#define orderMeshList ESMUMPS_NAME_INTERN (orderMeshList) +#define orderMeshListStrat ESMUMPS_NAME_INTERN (orderMeshListStrat) +#define orderMeshStrat ESMUMPS_NAME_INTERN (orderMeshStrat) +#define orderSave ESMUMPS_NAME_INTERN (orderSave) + +#define symbolCheck ESMUMPS_NAME_INTERN (symbolCheck) +#define symbolCost ESMUMPS_NAME_INTERN (symbolCost) +#define symbolCosti ESMUMPS_NAME_INTERN (symbolCosti) +#define symbolDraw ESMUMPS_NAME_INTERN (symbolDraw) +#define symbolDrawColor ESMUMPS_NAME_INTERN (symbolDrawColor) +#define symbolDrawFunc ESMUMPS_NAME_INTERN (symbolDrawFunc) +#define symbolExit ESMUMPS_NAME_INTERN (symbolExit) +#define symbolInit ESMUMPS_NAME_INTERN (symbolInit) +#define symbolLevf ESMUMPS_NAME_INTERN (symbolLevf) +#define symbolLoad ESMUMPS_NAME_INTERN (symbolLoad) +#define symbolNonzeros ESMUMPS_NAME_INTERN (symbolNonzeros) +#define symbolRealloc ESMUMPS_NAME_INTERN (symbolRealloc) +#define symbolSave ESMUMPS_NAME_INTERN (symbolSave) +#define symbolTree ESMUMPS_NAME_INTERN (symbolTree) + +#define symbolKeepAdd ESMUMPS_NAME_INTERN (symbolKeepAdd) +#define symbolKeepCompute ESMUMPS_NAME_INTERN (symbolKeepCompute) +#define symbolKeepDel ESMUMPS_NAME_INTERN (symbolKeepDel) +#define symbolKeepExit ESMUMPS_NAME_INTERN (symbolKeepExit) +#define symbolKeepHisto ESMUMPS_NAME_INTERN (symbolKeepHisto) +#define symbolKeepInit ESMUMPS_NAME_INTERN (symbolKeepInit) +#define symbolKeepPurge ESMUMPS_NAME_INTERN (symbolKeepPurge) +#define symbolKeepView ESMUMPS_NAME_INTERN (symbolKeepView) diff -Nru scotch-6.0.4.dfsg1/src/esmumps/order.h scotch-6.0.6/src/esmumps/order.h --- scotch-6.0.4.dfsg1/src/esmumps/order.h 2012-12-01 13:59:17.000000000 +0000 +++ scotch-6.0.6/src/esmumps/order.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to 01 may 1999 **/ /** # Version 2.0 : from : 25 oct 2003 **/ /** to 02 jul 2010 **/ +/** # Version 6.0 : from : 22 may 2018 **/ +/** to 22 may 2018 **/ /** **/ /************************************************************/ @@ -69,10 +71,6 @@ ** The function prototypes. */ -#ifndef ORDER -#define static -#endif - int orderInit (Order * const ordeptr); void orderExit (Order * const ordeptr); int orderLoad (Order * const ordeptr, FILE * const stream); @@ -99,5 +97,3 @@ int orderMeshStrat (Order * restrict const ordeptr, Mesh * restrict const meshptr, const char * const); int orderMeshListStrat (Order * restrict const ordeptr, Mesh * restrict const meshptr, const INT listnbr, const INT * restrict const listtab, const char * const); #endif /* MESH_H */ - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/esmumps/symbol.h scotch-6.0.6/src/esmumps/symbol.h --- scotch-6.0.4.dfsg1/src/esmumps/symbol.h 2012-12-01 13:59:17.000000000 +0000 +++ scotch-6.0.6/src/esmumps/symbol.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -54,6 +54,8 @@ /** to 03 mar 2005 **/ /** # Version 5.1 : from : 05 nov 2010 **/ /** to 05 nov 2010 **/ +/** # Version 6.0 : from : 22 may 2018 **/ +/** to 22 may 2018 **/ /** **/ /************************************************************/ @@ -130,10 +132,6 @@ ** The function prototypes. */ -#ifndef SYMBOL -#define static -#endif - int symbolInit (SymbolMatrix * const symbptr); void symbolExit (SymbolMatrix * const symbptr); void symbolRealloc (SymbolMatrix * const symbptr); @@ -159,5 +157,3 @@ int symbolKeepHisto (SymbolKeep * const keepptr, const SymbolMatrix * const, int (* funcptr) (const SymbolKeepBlok * const, void * const), void * dataptr); int symbolKeepPurge (SymbolKeep * restrict const keepptr, SymbolMatrix * restrict const symbptr); int symbolKeepView (const SymbolKeep * const keepptr, const double nnzlmax, const char * const nameptr); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_build2.c scotch-6.0.6/src/libscotch/arch_build2.c --- scotch-6.0.4.dfsg1/src/libscotch/arch_build2.c 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_build2.c 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,742 @@ +/* Copyright 2015,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : arch_build2.c **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : This module builds a type-2 **/ +/** decomposition-described architecture **/ +/** from a source graph. **/ +/** **/ +/** DATES : # Version 6.0 : from : 02 may 2015 **/ +/** to 22 feb 2018 **/ +/** **/ +/** NOTES : # The code of the main routine derives **/ +/** from that of archSubArchBuild(). **/ +/** **/ +/************************************************************/ + +/* +** The defines and includes. +*/ + +#define ARCH_DECO2 +#define ARCH_BUILD2 + +#include "module.h" +#include "common.h" +#include "graph.h" +#include "arch.h" +#include "arch_sub.h" +#include "arch_deco2.h" +#include "graph_coarsen.h" +#include "arch_build2.h" + +/***********************************/ +/* */ +/* The matching handling routines. */ +/* */ +/***********************************/ + +/* This routine frees the matching data +** structure. +** It returns: +** - void : in all cases. +*/ + +static +void +archDeco2BuildMatchExit ( +ArchDeco2BuildMatch * restrict const matcptr) +{ + ArchDeco2BuildLevl * lewgtab; + ArchDeco2Levl * levltab; + + if ((lewgtab = matcptr->lewgtab) != NULL) { + ArchDeco2BuildLevl * lewgptr; + + for (lewgptr = lewgtab + matcptr->levlnum; lewgptr >= lewgtab; lewgptr --) { + Gnum * edwgtab; + + if ((edwgtab = lewgptr->edwgtab) != NULL) + memFree (edwgtab); /* Free group leader */ + } + memFree (lewgtab); + } + + if ((levltab = matcptr->levltab) != NULL) { + ArchDeco2Levl * levlptr; + + for (levlptr = levltab + matcptr->levlnum; levlptr >= levltab; levlptr --) + graphExit (&levlptr->grafdat); + + memFree (levltab); + } + + memFree (matcptr->multtab); /* Free group leader */ + memFree (matcptr->hashtab); +} + +/* This routine initializes the matching +** data structure according to the original +** graph to be coarsened. +** It returns: +** - 0 : if the data structure has been +** successfully initialized. +** - !0 : on error. +*/ + +static +int +archDeco2BuildMatchInit ( +ArchDeco2BuildMatch * restrict const matcptr, +const Graph * restrict const grafptr) +{ + Gnum verttmp; + Gnum levlmax; /* Estimated upper bound on number of coarsening levels */ + Gnum multnbr; + Gnum hashmax; + Gnum hashsiz; + + const Gnum vertnbr = grafptr->vertnbr; + +#ifdef SCOTCH_DEBUG_ARCH1 + if (sizeof (ArchCoarsenMulti) != sizeof (GraphCoarsenMulti)) { + errorPrint ("archDeco2BuildMatchInit: invalid type specification"); + return (1); + } +#endif /* SCOTCH_DEBUG_ARCH1 */ + + for (hashsiz = 32, hashmax = grafptr->degrmax * 4; /* Compute size of hash table */ + hashsiz < hashmax; hashsiz *= 2) ; + matcptr->hashsiz = hashsiz; + if ((matcptr->hashtab = memAlloc (hashsiz * sizeof (ArchDeco2BuildHash))) == NULL) { + errorPrint ("archDeco2BuildMatchInit: out of memory (1)"); + return (1); + } + + multnbr = vertnbr - 1; /* In case graph is star-like, only one matching will take place */ + if (memAllocGroup ((void **) (void *) + &matcptr->multtab, (size_t) (multnbr * sizeof (ArchCoarsenMulti)), + &matcptr->ficotab, (size_t) (vertnbr * sizeof (Gnum)), NULL) == NULL) { + errorPrint ("archDeco2BuildMatchInit: out of memory (2)"); + memFree (matcptr->hashtab); + return (1); + } + + for (verttmp = vertnbr, levlmax = 1; verttmp != 0; verttmp >>= 1, levlmax ++) ; + levlmax *= 2; /* Compute estimated upper bound on number of coarsening levels */ +#ifdef SCOTCH_DEBUG_ARCH2 + levlmax = 1; /* Set levlmax to a small value to test reallocation */ +#endif /* SCOTCH_DEBUG_ARCH2 */ + + matcptr->levltab = NULL; /* In case of error */ + matcptr->levlmax = levlmax; + matcptr->levlnum = 0; + if ((matcptr->lewgtab = memAlloc (levlmax * sizeof (ArchDeco2BuildLevl))) == NULL) { + errorPrint ("archDeco2BuildMatchInit: out of memory (3)"); + archDeco2BuildMatchExit (matcptr); + return (1); + } + matcptr->lewgtab[0].edwgtab = NULL; /* TRICK: in case of error */ + matcptr->lewgtab[0].vewgtab = NULL; /* No vertex traversal cost at level 0 */ + matcptr->lewgtab[0].vewgsum = 0; + matcptr->lewgtab[0].edwgsum = grafptr->edlosum; /* Assume graph has no edge weights */ + + if ((matcptr->levltab = memAlloc (levlmax * sizeof (ArchDeco2Levl))) == NULL) { + errorPrint ("archDeco2BuildMatchInit: out of memory (4)"); + archDeco2BuildMatchExit (matcptr); + return (1); + } + + if (graphClone (grafptr, &matcptr->levltab[0].grafdat) != 0) { /* Clone original graph in level 0 */ + errorPrint ("archDeco2BuildMatchInit: cannot create clone graph"); + archDeco2BuildMatchExit (matcptr); + return (1); + } + + if (matcptr->levltab[0].grafdat.edlotax != NULL) { /* If original graph has edge loads */ + Gnum edgenbr; + + edgenbr = matcptr->levltab[0].grafdat.edgenbr; + if ((matcptr->lewgtab[0].edwgtab = memAlloc (edgenbr * sizeof (Gnum))) == NULL) { + errorPrint ("archDeco2BuildMatchInit: out of memory (5)"); + archDeco2BuildMatchExit (matcptr); + return (1); + } + matcptr->lewgtab[0].edwgsum = grafptr->edlosum; /* Record edge load sum for finest graph */ + memCpy (matcptr->lewgtab[0].edwgtab, matcptr->levltab[0].grafdat.edlotax + grafptr->baseval, edgenbr * sizeof (Gnum)); /* Keep edge costs (if any) */ + matcptr->levltab[0].grafdat.edlosum = /* Record edge load sum of inversed loads */ + graphIelo (&matcptr->levltab[0].grafdat, matcptr->levltab[0].grafdat.edlotax, matcptr->levltab[0].grafdat.edlotax); /* Inverse edge costs for coarsening */ + } + + return (0); +} + +/* This routine computes a matching from +** the current state of the matching structure. +** It returns: +** - >=0 : size of matching. +** - <0 : on error. +*/ + +Anum +archDeco2BuildMatchMate ( +ArchDeco2BuildMatch * restrict const matcptr, +ArchCoarsenMulti * restrict * restrict const multptr) +{ + const Graph * restrict finegrafptr; + const Gnum * restrict fineedwgtax; + const Gnum * restrict finevewgtax; + const Gnum * restrict fineedgetax; + const Gnum * restrict fineverttax; + const Gnum * restrict finevendtax; + Anum finevertnbr; + Gnum * restrict finecoartax; + const ArchDeco2Levl * restrict finelevlptr; + ArchDeco2Levl * restrict coarlevlptr; + ArchCoarsenMulti * restrict coarmulttax; + Graph * restrict coargrafptr; + Gnum * restrict coaredwgtax; + Gnum * restrict coarvewgtax; + Gnum coarvewgsum; + Gnum coaredwgsum; + Gnum coarvertnnd; + Gnum coarvertnum; + Gnum coarvertsum; /* Sum of all coarse vertices kept in coarsening tree */ + Gnum * restrict coarvelotax; + Gnum coaredgenum; + ArchDeco2BuildHash * restrict coarhashtab; + Gnum coarhashmax; + Gnum coarhashsiz; + Gnum coarhashmsk; + Gnum levlmax; + Gnum levlnum; + + levlnum = matcptr->levlnum; + finelevlptr = &matcptr->levltab[levlnum]; + finevertnbr = finelevlptr->grafdat.vertnbr; + if (finevertnbr <= 1) /* This routine is not meant to handle single-vertex graphs */ + return (-1); + + levlmax = matcptr->levlmax; + if (++ levlnum >= levlmax) { /* If level array already full */ + ArchDeco2BuildLevl * lewgtmp; + ArchDeco2Levl * levltmp; + + levlmax += (levlmax >> 2) + 1; /* Increase size by 25% */ + + if ((lewgtmp = memRealloc (matcptr->lewgtab, levlmax * sizeof (ArchDeco2BuildLevl))) == NULL) { + errorPrint ("archDeco2BuildMatchMate: out of memory (1)"); + return (-1); + } + matcptr->lewgtab = lewgtmp; + + if ((levltmp = memRealloc (matcptr->levltab, levlmax * sizeof (ArchDeco2Levl))) == NULL) { + errorPrint ("archDeco2BuildMatchMate: out of memory (2)"); + return (-1); + } + matcptr->levltab = levltmp; + matcptr->levlmax = levlmax; + finelevlptr = &levltmp[levlnum - 1]; /* In case array was moved */ + } + + *multptr = /* Provide address of multinode array */ + coarmulttax = matcptr->multtab; /* Un-based multinode array */ + finecoartax = matcptr->ficotab; /* Un-based fine-to-coarse array */ + finegrafptr = &finelevlptr->grafdat; + coarlevlptr = &matcptr->levltab[levlnum]; + coargrafptr = &coarlevlptr->grafdat; + if (graphCoarsen (&finelevlptr->grafdat, coargrafptr, + (Gnum **) &finecoartax, (GraphCoarsenMulti **) &coarmulttax, + 0, 1.0, GRAPHCOARSENNONE, NULL, NULL, 0, NULL) != 0) { + errorPrint ("archDeco2BuildMatchMate: cannot coarsen graph"); + return (-1); + } + + matcptr->levlnum = levlnum; /* Record new level since coarse graph must be freed */ + matcptr->lewgtab[levlnum].edwgtab = NULL; /* Group leader not yet allocated */ + + for (coarhashsiz = matcptr->hashsiz, coarhashmax = coargrafptr->degrmax * 4; /* Recompute size of hash table */ + coarhashsiz < coarhashmax; coarhashsiz *= 2) ; + if (coarhashsiz > matcptr->hashsiz) { /* Reallocate hash table if it has to be expanded */ + ArchDeco2BuildHash * coarhashtmp; + + if ((coarhashtmp = memRealloc (matcptr->hashtab, coarhashsiz * sizeof (ArchDeco2BuildHash))) == NULL) { + errorPrint ("archDeco2BuildMatchMate: out of memory (3)"); + return (-1); + } + matcptr->hashtab = coarhashtmp; + matcptr->hashsiz = coarhashsiz; + } + coarhashmsk = coarhashsiz - 1; + coarhashtab = matcptr->hashtab; + memSet (coarhashtab, ~0, coarhashsiz * sizeof (ArchDeco2BuildHash)); /* Initialize hash table area */ + + if (memAllocGroup ((void **) (void *) + &matcptr->lewgtab[levlnum].edwgtab, (size_t) (coargrafptr->edgenbr * sizeof (Gnum)), + &matcptr->lewgtab[levlnum].vewgtab, (size_t) (coargrafptr->vertnbr * sizeof (Gnum)), NULL) == NULL) { + errorPrint ("archDeco2BuildMatchMate: out of memory (4)"); + return (-1); + } + + coarvewgtax = matcptr->lewgtab[levlnum].vewgtab - coargrafptr->baseval; + coaredwgtax = matcptr->lewgtab[levlnum].edwgtab - coargrafptr->baseval; + coarvelotax = coargrafptr->velotax; + coarmulttax -= coargrafptr->baseval; + finecoartax -= coargrafptr->baseval; + fineverttax = finegrafptr->verttax; + finevendtax = finegrafptr->vendtax; + fineedgetax = finegrafptr->edgetax; + finevewgtax = matcptr->lewgtab[levlnum - 1].vewgtab; + fineedwgtax = matcptr->lewgtab[levlnum - 1].edwgtab; + if (finevewgtax != NULL) /* Fine edge and vertex weight arrays may be NULL */ + finevewgtax-= finegrafptr->baseval; + if (fineedwgtax != NULL) + fineedwgtax-= finegrafptr->baseval; + + coarvewgsum = + coaredwgsum = 0; + for (coarvertnum = coaredgenum = coargrafptr->baseval, coarvertnnd = coargrafptr->vertnnd, coarvertsum = 0; + coarvertnum < coarvertnnd; coarvertnum ++) { + Gnum coaredgetmp; + Gnum coarvewgval; /* Aggregated vertex traversal cost */ + Gnum coaredwgval; /* Aggregated edge traversal cost */ + Gnum finevertnum; + int i; + + if (coarvelotax[coarvertnum] != 0) /* If coarse vertex does not have a zero weight */ + coarvertsum ++; /* Account for it in tree */ + + coaredgetmp = coaredgenum; /* Record edge position in array */ + coarvewgval = 0; /* Accumulate coarse vertex traversal costs */ + coaredwgval = 0; /* Accumulate coarse edge traversal costs for collapsed edges */ + + i = 0; + do { /* For all fine edges of multinode vertices */ + Gnum fineedgenum; + + finevertnum = coarmulttax[coarvertnum].vertnum[i]; + + coarvewgval += (finevewgtax != NULL) ? finevewgtax[finevertnum] : 0; /* Accumulate vertex traversal costs */ + + for (fineedgenum = fineverttax[finevertnum]; + fineedgenum < finevendtax[finevertnum]; fineedgenum ++) { + Gnum coarvertend; /* Number of coarse vertex which is end of fine edge */ + Gnum h; + + coarvertend = finecoartax[fineedgetax[fineedgenum]]; + if (coarvertend != coarvertnum) { /* If not end of collapsed edge */ + for (h = (coarvertend * GRAPHCOARSENHASHPRIME) & coarhashmsk; ; h = (h + 1) & coarhashmsk) { + if (coarhashtab[h].coarvertnum != coarvertnum) { /* If old slot */ + coarhashtab[h].coarvertnum = coarvertnum; /* Mark it in reference array */ + coarhashtab[h].coarvertend = coarvertend; + coarhashtab[h].coaredgenum = coaredgenum; /* Edge location in coarse graph */ + coarhashtab[h].fineedwgmin = (fineedwgtax != NULL) ? fineedwgtax[fineedgenum] : 1; + coaredwgtax[coaredgenum] = h; /* Record edge location for summing up */ + coaredgenum ++; /* One more edge created */ + break; /* Give up hashing */ + } + if (coarhashtab[h].coarvertend == coarvertend) { /* If coarse edge already exists */ + Gnum fineedwgval; + + fineedwgval = (fineedwgtax != NULL) ? fineedwgtax[fineedgenum] : 1; + if (coarhashtab[h].fineedwgmin > fineedwgval) /* Take minimum of edge weights */ + coarhashtab[h].fineedwgmin = fineedwgval; + break; /* Give up hashing */ + } + } + } + else /* If collapsed edge, accumulate traversal cost (twice: once for each arc) */ + coaredwgval += (fineedwgtax != NULL) ? fineedwgtax[fineedgenum] : 1; + } + } while (i ++, finevertnum != coarmulttax[coarvertnum].vertnum[1]); /* Skip to next matched vertex if both vertices not equal */ + + coarvewgsum += /* Accumulate vertex load sum of coarse graph */ + coarvewgtax[coarvertnum] = coarvewgval + coaredwgval; /* Add vertex traversal cost plus edge traversal cost */ + +#ifdef SCOTCH_DEBUG_ARCH2 + if (coaredgenum != coargrafptr->verttax[coarvertnum + 1]) { /* If not same number of coarse edges found */ + errorPrint ("archDeco2BuildMatchMate: internal error (1)"); + return (1); + } +#endif /* SCOTCH_DEBUG_ARCH2 */ + + for ( ; coaredgetmp < coaredgenum; coaredgetmp ++) { /* Finalize building of edge traversal cost array */ + Gnum h; + + h = coaredwgtax[coaredgetmp]; /* Replace hash table index with average edge traversal cost */ +#ifdef SCOTCH_DEBUG_ARCH2 + if (coarhashtab[h].coaredgenum != coaredgetmp) { + errorPrint ("archDeco2BuildMatchMate: internal error (2)"); + return (1); + } +#endif /* SCOTCH_DEBUG_ARCH2 */ + coaredwgsum += + coaredwgtax[coaredgetmp] = coarhashtab[h].fineedwgmin; + } + } + matcptr->lewgtab[levlnum].edwgsum = coaredwgsum; + matcptr->lewgtab[levlnum].vewgsum = coarvewgsum; + + matcptr->vertsum += coarvertsum; /* Sum all vertices in coarsening tree */ + + return (coargrafptr->vertnbr); +} + +/******************************************/ +/* */ +/* The main routine, which computes the */ +/* type-2, decomposition-described target */ +/* architecture. */ +/* */ +/******************************************/ + +/* This routine collapses the recursive coarsening tree +** into a decomposition-defined tree, by removing single +** vertices that have not been collapsed. Unlike the +** archSubArchBuild3() routine from which it derives, it +** preserves some information on removed single vertices, +** so as to identify the relevant vertices at each level, +** to start distance computations. +** It returns: +** - the first free index in the domain array. +*/ + +static +Anum +archDeco2BuildBuild3 ( +ArchDeco2Build3 * restrict const dataptr, /*+ Data area +*/ +const ArchSubTree * restrict const treeptr, /*+ Pointer to current node being traversed +*/ +const Anum domnnum, /*+ Domain number of current node +*/ +const Anum domnidx, /*+ Current first free slot in domain array +*/ +const Anum levlnum) /*+ Current tree level +*/ +{ + Anum termnum; + const ArchSubTree * son0ptr; + const ArchSubTree * son1ptr; + const ArchSubTree * sonsptr; + Anum levltmp; + Anum didxtmp; + Gnum vnumidx; + + ArchSubData * restrict const domntab = dataptr->domntab; + ArchDeco2Data * restrict const doextab = dataptr->doextab; + ArchSubTerm * restrict const termtab = dataptr->termtab; + + vnumidx = dataptr->vnumidx ++; /* One more slot for vertex number */ + dataptr->vnumtab[vnumidx] = treeptr->vertnum; /* Record vertex number of collapsed node */ + + son0ptr = treeptr->sonstab[0]; + son1ptr = treeptr->sonstab[1]; + sonsptr = NULL; + + levltmp = levlnum - 1; /* Level 0 is finest graph, so proceed in decreasing order */ + if (son0ptr != NULL) /* If node is a single node, traverse it without any processing */ + sonsptr = son0ptr; + if (son1ptr != NULL) + sonsptr = (sonsptr != NULL) ? NULL : son1ptr; + if (sonsptr != NULL) + return (archDeco2BuildBuild3 (dataptr, sonsptr, domnnum, domnidx, levltmp)); + + domntab[domnidx].domnnum = domnnum; + domntab[domnidx].domnsiz = treeptr->domnsiz; + domntab[domnidx].domnwgt = treeptr->domnwgt; + termnum = + domntab[domnidx].termnum = treeptr->termnum; + doextab[domnidx].levlnum = levlnum; + doextab[domnidx].vnumidx = vnumidx; /* Record index of vertex number for this level */ + + didxtmp = domnidx + 1; + if (son0ptr != NULL) { /* If node is a branch node */ + Anum domntmp; + + domntmp = domnnum * 2; /* Domain number of first son */ + domntab[didxtmp].dfatidx = domnidx; + domntab[domnidx].dsubidx[0] = didxtmp; + didxtmp = archDeco2BuildBuild3 (dataptr, son0ptr, domntmp, didxtmp, levltmp); + domntab[didxtmp].dfatidx = domnidx; + domntab[domnidx].dsubidx[1] = didxtmp; + didxtmp = archDeco2BuildBuild3 (dataptr, son1ptr, domntmp + 1, didxtmp, levltmp); + } + else { + domntab[domnidx].dsubidx[0] = + domntab[domnidx].dsubidx[1] = -1; + + termtab[termnum].domnidx = domnidx; + } + + return (didxtmp); +} + +/* +** This routine builds a type-2 target architecture +** from the given source graph and the optional +** vertex list. If vnumtab is null, all vertices +** are part of the target architecture. +** It returns: +** - 0 : on success. +** - !0 : on error. +*/ + +int +archDeco2ArchBuild ( +Arch * restrict const archptr, /*+ Decomposition architecture to build +*/ +const Graph * const grafptr, /*+ Source graph modeling the architecture +*/ +const Gnum vnumnbr, /*+ Number of vertices in list +*/ +const Gnum * restrict const vnumtab) /*+ vertex array +*/ +{ + ArchDeco2Build3 datadat; /* Data for building decomposition tree */ + ArchDeco2BuildMatch matcdat; /* Data for successive matchings */ + ArchSubTree * rootptr; + ArchSubTree * treetab; + ArchSubTree * treetmp; + ArchSubTerm * termtab; + ArchSubData * domntab; + ArchDeco2Data * doextab; + Anum domnnbr; /* Number of domains */ + Gnum vertnum; + Gnum * restrict velotmp; /* Temporary vertex load array */ + Anum vnumnum; + Gnum * vnumtmp; + Anum levlnum; + const char * messptr; /* Pointer to error message */ + + ArchDeco2 * restrict const decoptr = &archptr->data.deco2; + const Gnum baseval = grafptr->baseval; + const Gnum vertnbr = grafptr->vertnbr; /* Number of terminals in original graph */ + const Gnum * restrict const velotab = (grafptr->velotax != NULL) ? grafptr->velotax + baseval : NULL; /* Un-based original vertex load array */ + + if (baseval != 0) { /* Because of current limitations in archSubArchBuild2() */ + errorPrint ("archDeco2ArchBuild: input graph must have base value set to 0"); + return (1); + } + +#ifdef SCOTCH_DEBUG_ARCH1 + if ((vnumnbr < 0) || (vnumnbr > vertnbr)) { + errorPrint ("archDeco2ArchBuild: invalid number of terminal domains"); + return (1); + } +#endif /* SCOTCH_DEBUG_ARCH1 */ + + archInit (archptr); /* Initialize architecture body */ + archptr->class = archClass2 ("deco", 1); /* Set type-2 architecture class */ + + domnnbr = 2 * vnumnbr - 1; + if (memAllocGroup ((void **) (void *) + &termtab, (size_t) (vnumnbr * sizeof (ArchSubTerm)), + &domntab, (size_t) (domnnbr * sizeof (ArchSubData)), + &doextab, (size_t) (domnnbr * sizeof (ArchDeco2Data)), NULL) == NULL) { + errorPrint ("archDeco2ArchBuild: out of memory (1)"); + return (1); + } + if ((treetab = memAlloc ((vertnbr + 1) * sizeof (ArchSubTree))) == NULL) { /* TRICK: One more slot to link to coarser array */ + errorPrint ("archDeco2ArchBuild: out of memory (2)"); + memFree (termtab); /* Free group leader */ + return (1); + } + + velotmp = NULL; /* Assume no need for temporary load array */ + if (vnumnbr < vertnbr) { /* If restriction of the target architecture */ + if ((velotmp = memAlloc (vertnbr * sizeof (Gnum))) == NULL) { /* Create temporary load array */ + errorPrint ("archDeco2ArchBuild: out of memory (3)"); + memFree (treetab); + memFree (termtab); + return (1); + } + memSet (velotmp, 0, vertnbr * sizeof (Gnum)); /* Assume no vertex kept in target architecture */ + } + + treetab ++; /* TRICK: Hide first slot */ + + for (vertnum = 0; vertnum < vertnbr; vertnum ++) { /* Initialize values for all vertices of original architecture */ + treetab[vertnum].domnsiz = + treetab[vertnum].domnwgt = 0; + treetab[vertnum].termnum = + treetab[vertnum].vertnum = ANUMMAX; + treetab[vertnum].sonstab[0] = + treetab[vertnum].sonstab[1] = NULL; + } + + messptr = NULL; + for (vnumnum = 0; vnumnum < vnumnbr; vnumnum ++) { /* For all kept terminal numbers */ + Gnum vertnum; /* Terminal number in original architecture */ + + vertnum = (vnumtab != NULL) ? (vnumtab[vnumnum] - baseval) : vnumnum; /* Un-base vertex number */ + if ((vertnum < 0) || (vertnum >= vertnbr)) + messptr = "archDeco2ArchBuild: invalid vertex number in vertex list"; + else if (treetab[vertnum].domnsiz != 0) + messptr = "archDeco2ArchBuild: duplicate vertex number in vertex list"; + if (messptr != NULL) { + errorPrint (messptr); + if (velotmp != NULL) + memFree (velotmp); + memFree (treetab - 1); + memFree (termtab); + return (1); + } + + termtab[vnumnum].termnum = vertnum; /* Record number of original terminal number */ + + if (velotmp != NULL) + velotmp[vertnum] = 1; /* Vertex belongs to restricted architecture */ + + treetab[vertnum].domnsiz = 1; /* Here lies one terminal vertex */ + treetab[vertnum].domnwgt = (velotab != NULL) ? velotab[vertnum] : 1; + treetab[vertnum].vertnum = vertnum; /* Record number of original vertex in original graph */ + treetab[vertnum].termnum = vnumnum; /* Sub-architecture terminal number in original architecture */ + } + + if (archDeco2BuildMatchInit (&matcdat, grafptr) != 0) { /* Initialize matching structure */ + errorPrint ("archDeco2ArchBuild: cannot initialize matching structure"); + if (velotmp != NULL) + memFree (velotmp); + memFree (treetab - 1); + memFree (termtab); + return (1); + } + + if (velotmp != NULL) { /* If restricted architecture, keep track of present vertices */ + matcdat.levltab[0].grafdat.velotax = velotmp - baseval; /* Graph is cloned, so velotax can be modified */ + matcdat.levltab[0].grafdat.velosum = vnumnbr; + } + + decoptr->baseval = baseval; + decoptr->termnbr = vnumnbr; + decoptr->termtab = termtab; /* From now on, termtab will be freed on its own */ + decoptr->domnnbr = domnnbr; + decoptr->domntab = domntab; + decoptr->doextab = doextab; +#ifdef SCOTCH_DEBUG_ARCH1 + decoptr->vnumtab = NULL; +#endif /* SCOTCH_DEBUG_ARCH1 */ + + intRandInit (); /* Initialize random generator for coarsening */ + + matcdat.vertsum = vnumnbr; /* Account for kept vertices of original graph */ + rootptr = archSubArchBuild2 (&matcdat, (Anum (*) (void *, ArchCoarsenMulti * restrict *)) archDeco2BuildMatchMate, treetab, vnumnbr); + + if (velotmp != NULL) /* Temporary vertex load array will no longer be necessary */ + memFree (velotmp); + + if (rootptr == NULL) { + errorPrint ("archDeco2ArchBuild: cannot create sub-architecture (1)"); + archDeco2BuildMatchExit (&matcdat); + memFree (treetab - 1); + return (1); + } +#ifdef SCOTCH_DEBUG_ARCH2 + if (rootptr->domnsiz != vnumnbr) { + errorPrint ("archDeco2ArchBuild: internal error (2)"); + return (1); + } +#endif /* SCOTCH_DEBUG_ARCH2 */ + for (levlnum = matcdat.levlnum; levlnum >= 0; levlnum --) { + ArchDeco2BuildLevl * lewgptr; + ArchDeco2Levl * levlptr; + + lewgptr = &matcdat.lewgtab[levlnum]; + levlptr = &matcdat.levltab[levlnum]; + if (lewgptr->vewgtab != NULL) { + memCpy (levlptr->grafdat.velotax + levlptr->grafdat.baseval, lewgptr->vewgtab, levlptr->grafdat.vertnbr * sizeof (Gnum)); + levlptr->grafdat.velosum = lewgptr->vewgsum; + } + else { + levlptr->grafdat.velotax = NULL; + levlptr->grafdat.velosum = levlptr->grafdat.vertnbr; + } + if (lewgptr->edwgtab != NULL) { + memCpy (levlptr->grafdat.edlotax + levlptr->grafdat.baseval, lewgptr->edwgtab, levlptr->grafdat.edgenbr * sizeof (Gnum)); + levlptr->grafdat.edlosum = lewgptr->edwgsum; + memFree (lewgptr->edwgtab); + lewgptr->edwgtab = NULL; + } + else { + levlptr->grafdat.edlotax = NULL; + levlptr->grafdat.edlosum = levlptr->grafdat.edgenbr; + } +#ifdef SCOTCH_DEBUG_ARCH2 + if (graphCheck (&levlptr->grafdat) != 0) { + errorPrint ("archDeco2ArchBuild: internal error (3)"); + return (1); + } +#endif /* SCOTCH_DEBUG_ARCH2 */ + if ((levlptr->wdiaval = graphDiamPV (&levlptr->grafdat)) < 0) { + errorPrint ("archDeco2ArchBuild: cannot compute graph diameter"); + return (1); + } + if (levlptr->wdiaval < 1) /* No division by zero allowed */ + levlptr->wdiaval = 1; + } + + if ((vnumtmp = memAlloc (matcdat.vertsum * sizeof (Gnum))) == NULL) { + errorPrint ("archDeco2ArchBuild: out of memory (4)"); + archDeco2BuildMatchExit (&matcdat); + memFree (treetab - 1); + return (1); + } + decoptr->vnumnbr = matcdat.vertsum; + decoptr->vnumtab = vnumtmp; + + datadat.domntab = domntab; + datadat.doextab = doextab; + datadat.termtab = termtab; + datadat.vnumtab = vnumtmp; + datadat.vnumidx = 0; /* Vertex number index array is empty */ + if (archDeco2BuildBuild3 (&datadat, rootptr, 1, 0, matcdat.levlnum) != domnnbr) { + errorPrint ("archDeco2ArchBuild: cannot create sub-architecture (2)"); + memFree (treetab - 1); + return (1); + } + domntab[0].dfatidx = -1; /* Set index of root father as -1 */ +#ifdef SCOTCH_DEBUG_ARCH2 + if (datadat.vnumidx != matcdat.vertsum) { + errorPrint ("archDeco2ArchBuild: internal error (3)"); + return (1); + } +#endif /* SCOTCH_DEBUG_ARCH2 */ + + for (treetab --; treetab != NULL; treetab = treetmp) { /* Free all tree blocks */ + treetmp = treetab[0].sonstab[0]; /* Get pointer to next tree block */ + memFree (treetab); + } + + decoptr->levlmax = matcdat.levlnum; /* Save maximum level number */ + decoptr->levltab = matcdat.levltab; /* Reuse graph array for architecture */ + matcdat.levltab = NULL; /* Will not be freed in archDeco2BuildMatchExit() */ + + archDeco2BuildMatchExit (&matcdat); /* Free data structures used for matching */ + + return (0); +} diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_build2.h scotch-6.0.6/src/libscotch/arch_build2.h --- scotch-6.0.4.dfsg1/src/libscotch/arch_build2.h 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_build2.h 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,115 @@ +/* Copyright 2015,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : arch_build2.h **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : These lines are the data declarations **/ +/** for the type-2 decomposition-described **/ +/** architecture building routine. **/ +/** **/ +/** DATES : # Version 6.0 : from : 02 may 2015 **/ +/** to 31 may 2018 **/ +/** **/ +/************************************************************/ + +/* +** The internal type and structure definitions. +*/ + +#ifdef ARCH_BUILD2 + +/*+ Ancillary structure to avoid passing + too many parameters recursively in + the archDeco2Build3() routine. +*/ + +typedef struct ArchDeco2Build3_ { + ArchSubData * domntab; /*+ Domain array to fill [domnnbr] +*/ + ArchDeco2Data * doextab; /*+ Extended domain array to fill [domnnbr] +*/ + ArchSubTerm * termtab; /*+ Terminal domain array to fill [termnbr] +*/ + Gnum * vnumtab; /*+ Level vertex index array +*/ + Anum vnumidx; /*+ Current first free index in index array +*/ +} ArchDeco2Build3; + +/*+ Hash table cell to find coarse vertex + ends during the computation of edge + costs in the coarsened graph. +*/ + +typedef struct ArchDeco2BuildHash_ { + Gnum coarvertnum; /*+ Origin vertex (i.e. pass) number +*/ + Gnum coarvertend; /*+ Other end vertex number +*/ + Gnum coaredgenum; /*+ Index of corresponding edge in graph +*/ + Gnum fineedwgmin; /*+ Minimum of all fine edge weights +*/ +} ArchDeco2BuildHash; + +/*+ Communication vertex and edge weights for + graph coarsenings. Edge array is the group + leader because there are no vertex traversal + costs at level 0, while there may be edge + traversal costs. +*/ + +typedef struct ArchDeco2BuildLevl_ { + Gnum * edwgtab; /*+ Edge load array; TRICK: group leader +*/ + Gnum * vewgtab; /*+ Vertex load array +*/ + Gnum edwgsum; /*+ Sum of edge weights +*/ + Gnum vewgsum; /*+ Sum of vertex weights +*/ +} ArchDeco2BuildLevl; + +/*+ Matching structure for graph coarsenings. +*/ + +typedef struct ArchDeco2BuildMatch_ { + ArchDeco2BuildHash * hashtab; /*+ Hash array for edge coarsening +*/ + Gnum hashsiz; /*+ Size of hash data structure +*/ + ArchCoarsenMulti * multtab; /*+ Multinode array for all coarsenings +*/ + Gnum * ficotab; /*+ Fine-to-coarse array for all coarsenings +*/ + ArchDeco2BuildLevl * lewgtab; /*+ Level array for vertex weights +*/ + ArchDeco2Levl * levltab; /*+ Level array +*/ + Gnum levlmax; /*+ Maximum number of levels in array +*/ + Gnum levlnum; /*+ Current number of levels in array +*/ + Gnum vertsum; /*+ Sum of all vertices at all levels +*/ +} ArchDeco2BuildMatch; + +#endif /* ARCH_BUILD2 */ + +/* +** The function prototypes. +*/ + +#ifdef ARCH_BUILD2 +static int archDeco2BuildMatchInit (ArchDeco2BuildMatch * restrict const, const Graph * restrict const); +static void archDeco2BuildMatchExit (ArchDeco2BuildMatch * restrict const); +static Anum archDeco2BuildMatchMate (ArchDeco2BuildMatch * restrict const, ArchCoarsenMulti * restrict * restrict const); +#endif /* ARCH_BUILD2 */ + +int archDeco2ArchBuild (Arch * const, const Graph * const, const Gnum, const Gnum * restrict const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_build.c scotch-6.0.6/src/libscotch/arch_build.c --- scotch-6.0.4.dfsg1/src/libscotch/arch_build.c 2014-08-05 16:20:38.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_build.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010,2011,2014,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -52,7 +52,7 @@ /** # Version 5.1 : from : 28 sep 2008 **/ /** to 28 jun 2011 **/ /** # Version 6.0 : from : 28 jun 2011 **/ -/** to 05 aug 2014 **/ +/** to 15 may 2018 **/ /** **/ /************************************************************/ @@ -88,10 +88,10 @@ static void -archBuildJobExit ( -ArchBuildJob * const jobtab) +archDecoBuildJobExit ( +ArchDecoBuildJob * const jobtab) { - ArchBuildJob * jobptr; + ArchDecoBuildJob * jobptr; jobptr = jobtab; do { @@ -117,36 +117,35 @@ */ int -archBuild ( +archDecoArchBuild ( Arch * restrict const tgtarchptr, /*+ Decomposition architecture to build +*/ const Graph * const tgtgrafptr, /*+ Source graph modeling the architecture +*/ const VertList * const tgtlistptr, /*+ Subset of source graph vertices +*/ const Strat * const mapstrat) /*+ Bipartitioning strategy +*/ { - Gnum * restrict mapparttax; /* Based access to mapping part array */ - Arch archdat; /* Variable-sized architecture for bipartitioning */ - ArchDom domsub0; /* Temporary space for subdomain 0 */ - Gnum termdomnbr; /* Number of terminal domains */ - Gnum termdommax; /* Maximum terminal number */ - ArchDecoTermVert * restrict termverttab; /* Terminal vertex table */ - Anum * restrict termdisttab; /* Vertex distance table */ - ArchBuildDistElem * restrict disttax; /* Distance table */ - ArchBuildQueuElem * restrict queutab; /* Distance queue table */ - Gnum queuhead; /* Head-of-queue index */ - Gnum queutail; /* Tail-of-queue index */ - Mapping mappdat; /* Partial and final mapping data */ - ArchBuildJob * restrict jobtab; /* Job array */ - ArchBuildJob * joblink; /* Linked list of jobs to process */ - ArchBuildJob * joborgptr; /* Pointer to original job and first subjob */ - ArchBuildJob * jobsubptr; /* Pointer to second subjob */ - Bgraph actgrafdat; /* Active graph for bipartitioning */ - Gnum invedlosiz; /* Size of inversed edge load array */ - Gnum * restrict invedlotax; /* Inversed edge load array for cutting */ - Gnum * restrict actfrontab; /* Frontier array for all bipartitionings */ - GraphPart * restrict actparttax; /* Part array for all bipartitionings */ - GraphPart actpartval; /* Part value to put to subjob */ - Gnum actpartnbr; /* Size of part value to put to subjob */ - Gnum termdomnum; + Arch archdat; /* Variable-sized architecture for bipartitioning */ + ArchDom domsub0; /* Temporary space for subdomain 0 */ + Gnum termdomnbr; /* Number of terminal domains */ + Gnum termdommax; /* Maximum terminal number */ + ArchDecoTermVert * restrict termverttab; /* Terminal vertex table */ + Anum * restrict termdisttab; /* Vertex distance table */ + ArchDecoBuildDistElem * restrict disttax; /* Distance table */ + ArchDecoBuildQueuElem * restrict queutab; /* Distance queue table */ + Gnum queuhead; /* Head-of-queue index */ + Gnum queutail; /* Tail-of-queue index */ + Mapping mappdat; /* Partial and final mapping data */ + ArchDecoBuildJob * restrict jobtab; /* Job array */ + ArchDecoBuildJob * joblink; /* Linked list of jobs to process */ + ArchDecoBuildJob * joborgptr; /* Pointer to original job and first subjob */ + ArchDecoBuildJob * jobsubptr; /* Pointer to second subjob */ + Bgraph actgrafdat; /* Active graph for bipartitioning */ + Gnum invedlosiz; /* Size of inversed edge load array */ + Gnum * restrict invedlotax; /* Inversed edge load array for cutting */ + Gnum * restrict actfrontab; /* Frontier array for all bipartitionings */ + GraphPart * restrict actparttax; /* Part array for all bipartitionings */ + GraphPart actpartval; /* Part value to put to subjob */ + Gnum actpartnbr; /* Size of part value to put to subjob */ + Gnum termdomnum; const Gnum * restrict const tgtverttax = tgtgrafptr->verttax; const Gnum * restrict const tgtvendtax = tgtgrafptr->vendtax; @@ -164,13 +163,13 @@ invedlosiz = (tgtedlotax != NULL) ? tgtgrafptr->edgenbr : 0; if ((memAllocGroup ((void **) (void *) - &jobtab, (size_t) (termdomnbr * sizeof (ArchBuildJob)), + &jobtab, (size_t) (termdomnbr * sizeof (ArchDecoBuildJob)), &actfrontab, (size_t) (termdomnbr * sizeof (Gnum)), &actparttax, (size_t) (termdomnbr * sizeof (GraphPart)), &invedlotax, (size_t) (invedlosiz * sizeof (Gnum)), NULL) == NULL) || ((mappdat.parttax = memAlloc (tgtgrafptr->vertnbr * sizeof (ArchDomNum))) == NULL) || /* Final mapping array is for all graph vertices */ ((mappdat.domntab = memAlloc (termdomnbr * sizeof (ArchDom))) == NULL)) { - errorPrint ("archBuild: out of memory (1)"); + errorPrint ("archDecoBuild: out of memory (1)"); if (jobtab != NULL) { memFree (jobtab); if (mappdat.parttax != NULL) @@ -178,7 +177,7 @@ } return (1); } - memSet (mappdat.parttax, 0, termdomnbr * sizeof (ArchDomNum)); + memSet (mappdat.parttax, 0, tgtgrafptr->vertnbr * sizeof (ArchDomNum)); actparttax -= tgtgrafptr->baseval; mappdat.flagval = MAPPINGFREEPART | MAPPINGFREEDOMN; mappdat.grafptr = tgtgrafptr; @@ -193,78 +192,19 @@ jobtab[0].domnum = 0; /* All vertices mapped to first domain */ if ((tgtlistptr != NULL) && (tgtlistptr->vnumtab != NULL)) /* If vertex list given */ - graphInduceList (tgtgrafptr, tgtlistptr, &jobtab[0].grafdat); /* Restrict initial job */ + graphInduceList (tgtgrafptr, tgtlistptr->vnumnbr, tgtlistptr->vnumtab, &jobtab[0].grafdat); /* Restrict initial job */ else { /* If no vertex list given */ memCpy (&jobtab[0].grafdat, tgtgrafptr, sizeof (Graph)); /* Job takes whole graph */ jobtab[0].grafdat.flagval &= ~GRAPHFREETABS; /* Graph is a clone */ jobtab[0].grafdat.vnumtax = NULL; /* Assume we have no vertex index array */ } - if (tgtedlotax != NULL) { /* If architecture graph has edge loads */ - Gnum vertnum; - Gnum vertnnd; - Gnum edlomin; - Gnum edlomax; - float prodval; - - const Gnum * restrict const indverttax = jobtab[0].grafdat.verttax; - const Gnum * restrict const indvendtax = jobtab[0].grafdat.vendtax; - const Gnum * restrict const indedlotax = jobtab[0].grafdat.edlotax; /* Point to possibly induced original edge array */ - - invedlotax -= tgtgrafptr->baseval; /* Base inversed edge load array */ - - edlomin = GNUMMAX; - edlomax = 1; - for (vertnum = jobtab[0].grafdat.baseval, vertnnd = jobtab[0].grafdat.vertnnd; /* Handle non-compact graphs as well as compact graphs */ - vertnum < vertnnd; vertnum ++) { - Gnum edgenum; - Gnum edgennd; - - for (edgenum = indverttax[vertnum], edgennd = indvendtax[vertnum]; - edgenum < edgennd; edgenum ++) { - Gnum edloval; - - edloval = indedlotax[edgenum]; - if (edloval < edlomin) - edlomin = edloval; - if (edloval > edlomax) - edlomax = edloval; - } - } - - prodval = (float) edlomin * (float) edlomax; - - for (vertnum = jobtab[0].grafdat.baseval; - vertnum < vertnnd; vertnum ++) { - Gnum edgenum; - Gnum edgennd; - - for (edgenum = indverttax[vertnum], edgennd = indvendtax[vertnum]; - edgenum < edgennd; edgenum ++) { - Gnum edloval; - - edloval = indedlotax[edgenum]; - if (edloval == edlomin) - edloval = edlomax; - else if (edloval == edlomax) - edloval = edlomin; - else - edloval = (Gnum) (prodval / (float) edloval + 0.49F); -#ifdef SCOTCH_DEBUG_ARCH2 - if ((edloval < edlomin) || (edloval > edlomax)) { - errorPrint ("archBuild: internal error (1)"); - return (1); - } -#endif /* SCOTCH_DEBUG_ARCH2 */ - invedlotax[edgenum] = edloval; /* Write inversed cost in working array */ - } - } - + if (tgtedlotax != NULL) { /* If architecture graph has edge loads */ + invedlotax -= tgtgrafptr->baseval; /* Base inversed edge load array */ + graphIelo (&jobtab[0].grafdat, jobtab[0].grafdat.edlotax, invedlotax); /* Compute inverse of edge loads */ jobtab[0].grafdat.edlotax = invedlotax; /* Replace potentially induced edge array with inversed one */ } /* Edge array will be freed along with jobtab group leader */ - mapparttax = mappdat.parttax; - actgrafdat.veextax = NULL; /* No external gain array */ actgrafdat.parttax = actparttax; /* Set global auxiliary arrays */ actgrafdat.frontab = actfrontab; @@ -282,24 +222,24 @@ actgrafdat.s.flagval = joborgptr->grafdat.flagval & ~GRAPHFREETABS; bgraphInit2 (&actgrafdat, 1, 1, 1, 0, 0); /* Create active graph */ if (bgraphBipartSt (&actgrafdat, mapstrat) != 0) { /* Perform bipartitioning */ - errorPrint ("archBuild: internal error (2)"); - archBuildJobExit (joborgptr); - archBuildJobExit (joblink); - archExit (&archdat); - mapExit (&mappdat); - memFree (jobtab); - return (1); + errorPrint ("archDecoBuild: internal error"); + archDecoBuildJobExit (joborgptr); + archDecoBuildJobExit (joblink); + archExit (&archdat); + mapExit (&mappdat); + memFree (jobtab); + return (1); } if ((actgrafdat.compsize0 == 0) || /* If one of the jobs is empty */ (actgrafdat.compsize0 == actgrafdat.s.vertnbr)) { - errorPrint ("archBuild: strategy leads to empty domains"); - graphExit (&actgrafdat.s); /* Only free graph part, global arrays kept */ - archBuildJobExit (joborgptr); - archBuildJobExit (joblink); - archExit (&archdat); - mapExit (&mappdat); - memFree (jobtab); - return (1); + errorPrint ("archDecoBuild: strategy leads to empty domains"); + graphExit (&actgrafdat.s); /* Only free graph part, global arrays kept */ + archDecoBuildJobExit (joborgptr); + archDecoBuildJobExit (joblink); + archExit (&archdat); + mapExit (&mappdat); + memFree (jobtab); + return (1); } archVcmpltDomBipart ((const ArchVcmplt * const) (void *) &archdat, /* Update mapping domains */ @@ -350,9 +290,9 @@ if (memAllocGroup ((void **) (void *) &termverttab, (size_t) (termdomnbr * sizeof (ArchDecoTermVert)), &termdisttab, (size_t) (((termdomnbr * (termdomnbr - 1)) / 2) * sizeof (Anum)), - &disttax, (size_t) (tgtgrafptr->vertnbr * sizeof (ArchBuildDistElem)), - &queutab, (size_t) (tgtgrafptr->vertnbr * sizeof (ArchBuildQueuElem)), NULL) == NULL) { - errorPrint ("archBuild: out of memory (2)"); + &disttax, (size_t) (tgtgrafptr->vertnbr * sizeof (ArchDecoBuildDistElem)), + &queutab, (size_t) (tgtgrafptr->vertnbr * sizeof (ArchDecoBuildQueuElem)), NULL) == NULL) { + errorPrint ("archDecoBuild: out of memory (2)"); mapExit (&mappdat); archExit (&archdat); return (1); @@ -414,7 +354,7 @@ disttax[termverttab[termdomend].labl].distval; } - archDecoArchBuild ((ArchDeco *) (void *) &tgtarchptr->data, termdomnbr, termdommax, termverttab, termdisttab); + archDecoArchBuild2 ((ArchDeco *) (void *) &tgtarchptr->data, termdomnbr, termdommax, termverttab, termdisttab); memFree (termverttab); /* Free group leader */ mapExit (&mappdat); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_build.h scotch-6.0.6/src/libscotch/arch_build.h --- scotch-6.0.4.dfsg1/src/libscotch/arch_build.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_build.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,6 +44,8 @@ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 29 nov 2003 **/ /** to 29 nov 2003 **/ +/** # Version 6.0 : from : 14 mar 2016 **/ +/** to 31 may 2018 **/ /** **/ /** NOTES : # This file contains pieces of code **/ /** extracted from release 3.1 of **/ @@ -57,36 +59,32 @@ /*+ Job to process. +*/ -typedef struct ArchBuildJob_ { - struct ArchBuildJob_ * joblink; /*+ Link to job pool +*/ - ArchDomNum domnum; /*+ Mapping domain to which vertices belong +*/ - Graph grafdat; /*+ Job graph data +*/ -} ArchBuildJob; +typedef struct ArchDecoBuildJob_ { + struct ArchDecoBuildJob_ * joblink; /*+ Link to job pool +*/ + ArchDomNum domnum; /*+ Mapping domain to which vertices belong +*/ + Graph grafdat; /*+ Job graph data +*/ +} ArchDecoBuildJob; /*+ Vertex distance information. +*/ -typedef struct ArchBuildDistElem_ { +typedef struct ArchDecoBuildDistElem_ { int queued; /*+ Flag set if vertex queued +*/ Anum distval; /*+ Distance to initial vertex +*/ -} ArchBuildDistElem; +} ArchDecoBuildDistElem; /*+ Queue element. +*/ -typedef struct ArchBuildQueuElem_ { +typedef struct ArchDecoBuildQueuElem_ { Gnum vertnum; /*+ Vertex number in source graph +*/ Anum distval; /*+ Distance reached +*/ -} ArchBuildQueuElem; +} ArchDecoBuildQueuElem; /* ** The function prototypes. */ -#ifndef ARCH_BUILD -#define static -#endif +#ifdef ARCH_BUILD +static void archDecoBuildJobExit (ArchDecoBuildJob *); +#endif /* ARCH_BUILD */ -static void archBuildJobExit (ArchBuildJob *); - -int archBuild (Arch * const, const Graph * const, const VertList * const, const Strat * const); - -#undef static +int archDecoArchBuild (Arch * const, const Graph * const, const VertList * const, const Strat * const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch.c scotch-6.0.6/src/libscotch/arch.c --- scotch-6.0.4.dfsg1/src/libscotch/arch.c 2014-08-29 10:39:03.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007-2013 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007-2013,2015,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -63,8 +63,8 @@ /** to 09 jan 2004 **/ /** # Version 5.1 : from : 11 dec 2007 **/ /** to 25 jun 2010 **/ -/** # Version 6.0 : from : 14 fev 2011 **/ -/** to 26 nov 2013 **/ +/** # Version 6.0 : from : 14 feb 2011 **/ +/** to 22 feb 2016 **/ /** **/ /************************************************************/ @@ -76,13 +76,16 @@ #include "module.h" #include "common.h" +#include "graph.h" #include "arch.h" #include "arch_cmplt.h" #include "arch_cmpltw.h" #include "arch_deco.h" +#include "arch_deco2.h" #include "arch_dist.h" #include "arch_hcub.h" #include "arch_mesh.h" +#include "arch_sub.h" #include "arch_tleaf.h" #include "arch_torus.h" #include "arch_vcmplt.h" @@ -95,6 +98,7 @@ static const ArchClass archClassTab[] = { ARCHCLASSBLOCK ("cmplt", Cmplt, ARCHPART), ARCHCLASSBLOCK ("cmpltw", Cmpltw, ARCHPART), ARCHCLASSBLOCK ("deco", Deco, ARCHNONE), + ARCHCLASSBLOCK ("deco", Deco2, ARCHNONE), /* Hidden, type-2 decomposition-defined architecture */ ARCHCLASSBLOCK ("dist", Dist, ARCHNONE), ARCHCLASSBLOCK ("hcub", Hcub, ARCHNONE), ARCHCLASSBLOCK ("tleaf", Tleaf, ARCHNONE), @@ -105,6 +109,8 @@ ARCHCLASSBLOCK ("mesh2U", Mesh2u, ARCHNONE), #endif /* SCOTCH_DEBUG_ARCH3 */ ARCHCLASSBLOCK ("mesh3D", Mesh3, ARCHNONE), + ARCHCLASSBLOCK ("meshXD", MeshX, ARCHNONE), + ARCHCLASSBLOCK ("sub", Sub, ARCHNONE), ARCHCLASSBLOCK ("torus2D", Torus2, ARCHNONE), ARCHCLASSBLOCK ("torus3D", Torus3, ARCHNONE), ARCHCLASSBLOCK ("torusXD", TorusX, ARCHNONE), @@ -164,9 +170,12 @@ o = 0; /* Assume everything will be all right */ if ((archptr->class != NULL) && - (archptr->class->archFree != NULL)) /* If there is a specific freeing routing */ + (archptr->class->archFree != NULL)) /* If there is a specific freeing routine */ o = archptr->class->archFree (&archptr->data); /* Call it */ - memSet (archptr, 0, sizeof (Arch)); /* Initialize the architecture body (arch->class = NULL) */ + +#ifdef SCOTCH_DEBUG_GRAPH2 + memSet (archptr, ~0, sizeof (Arch)); /* Purge graph fields */ +#endif /* SCOTCH_DEBUG_GRAPH2 */ return (o); } @@ -196,6 +205,9 @@ return (1); } + archptr->class = class; /* Set architecture class */ + archptr->flagval = archptr->class->flagval | ARCHFREE; /* Copy architecture flag before it can be modified and set freeing flag */ + if (class->archLoad != NULL) { /* If class has loading function */ if (class->archLoad (&archptr->data, stream) != 0) { /* Load class data */ errorPrint ("archLoad: cannot load architecture data"); @@ -204,8 +216,6 @@ return (1); } } - archptr->class = class; /* Set architecture class */ - archptr->flagval = archptr->class->flagval; /* Copy architecture flag */ return (0); } @@ -230,7 +240,6 @@ archptr->class->archname) == EOF); if (archptr->class->archSave != NULL) /* If class has saving function */ o |= archptr->class->archSave (&archptr->data, stream); /* Write architecture data */ - o |= (fprintf (stream, "\n") == EOF); if (o != 0) errorPrint ("archSave: bad output"); @@ -249,14 +258,22 @@ archClass ( const char * const name) { + return (archClass2 (name, 0)); /* Get first instance of class name */ +} + +const ArchClass * +archClass2 ( +const char * const name, +const int num) +{ const ArchClass * restrict class; /* Pointer to architecture class */ - for (class = archClassTab; /* For all classes */ - (class->archname != NULL) && /* Search if class names match */ - (strcasecmp (name, class->archname) != 0); - class ++) ; + for (class = archClassTab; class->archname != NULL; class ++) { /* For all classes */ + if (strcasecmp (name, class->archname) == 0) /* If class names matches */ + return (class + num); /* Return proper class */ + } - return ((class->archname != NULL) ? class : NULL); + return (NULL); /* Class not found */ } /**************************************/ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_cmplt.c scotch-6.0.6/src/libscotch/arch_cmplt.c --- scotch-6.0.4.dfsg1/src/libscotch/arch_cmplt.c 2014-07-01 16:00:37.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_cmplt.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010,2011 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2011,2015 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -61,8 +61,8 @@ /** to 10 mar 2005 **/ /** # Version 5.1 : from : 19 jan 2008 **/ /** to 11 aug 2010 **/ -/** # Version 6.0 : from : 14 fev 2011 **/ -/** to 14 fev 2011 **/ +/** # Version 6.0 : from : 14 feb 2011 **/ +/** to 02 may 2015 **/ /** **/ /************************************************************/ @@ -95,8 +95,6 @@ ArchCmplt * restrict const archptr, FILE * restrict const stream) { - long numnbr; - #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchCmplt) > sizeof (ArchDummy)) || (sizeof (ArchCmpltDom) > sizeof (ArchDomDummy))) { @@ -105,12 +103,11 @@ } #endif /* SCOTCH_DEBUG_ARCH1 */ - if ((fscanf (stream, "%ld", &numnbr) != 1) || - (numnbr < 1)) { + if ((intLoad (stream, &archptr->termnbr) != 1) || + (archptr->termnbr < 1)) { errorPrint ("archCmpltArchLoad: bad input"); return (1); } - archptr->numnbr = (Anum) numnbr; return (0); } @@ -135,7 +132,7 @@ } #endif /* SCOTCH_DEBUG_ARCH1 */ - if (fprintf (stream, ANUMSTRING " ", (Anum) archptr->numnbr) == EOF) { + if (fprintf (stream, ANUMSTRING "\n", (Anum) archptr->termnbr) == EOF) { errorPrint ("archCmpltArchSave: bad output"); return (1); } @@ -143,6 +140,107 @@ return (0); } +/* This routine initializes the matching +** data structure according to the number +** of vertices to be managed. +** It returns: +** - 0 : if the data structure has been +** successfully initialized. +** - !0 : on error. +*/ + +int +archCmpltMatchInit ( +ArchCmpltMatch * restrict const matcptr, +const ArchCmplt * restrict const archptr) +{ + Anum vertnbr; + + vertnbr = archptr->termnbr; + + if ((matcptr->multtab = memAlloc (((vertnbr + 1) >> 1) * sizeof (ArchCoarsenMulti))) == NULL) { /* In case vertnbr is odd */ + errorPrint ("archCmpltMatchInit: out of memory"); + return (1); + } + + matcptr->vertnbr = vertnbr; + matcptr->passnum = 0; + + return (0); +} + +/* This routine frees the matching data +** structure. +** It returns: +** - void : in all cases. +*/ + +void +archCmpltMatchExit ( +ArchCmpltMatch * restrict const matcptr) +{ + memFree (matcptr->multtab); +} + +/* This routine computes a matching from +** the current state of the matching structure. +** It returns: +** - >=0 : size of matching. +** - <0 : on error. +*/ + +Anum +archCmpltMatchMate ( +ArchCmpltMatch * restrict const matcptr, +ArchCoarsenMulti ** restrict const multptr) +{ + ArchCoarsenMulti * restrict coarmulttab; + Anum coarvertmax; /* Maximum coarse vertex index to be processed for matching */ + Anum coarvertnum; + Anum finevertnbr; + Anum finevertnum; + Anum passnum; + + finevertnbr = matcptr->vertnbr; + if (finevertnbr <= 1) + return (-1); + + coarvertmax = finevertnbr >> 1; /* One less slot when finevertnbr is odd */ + coarmulttab = matcptr->multtab; + coarvertnum = + finevertnum = 0; + passnum = matcptr->passnum; + + if ((finevertnbr & passnum) != 0) { /* If finevertnbr is odd and old passnum == 1 */ + coarmulttab[coarvertnum].vertnum[0] = /* First coarse vertex is single multinode */ + coarmulttab[coarvertnum].vertnum[1] = finevertnum ++; + coarvertnum ++; + } + for ( ; coarvertnum < coarvertmax; coarvertnum ++) { /* For all even slots */ + coarmulttab[coarvertnum].vertnum[0] = finevertnum ++; /* Dimensional splatting */ + coarmulttab[coarvertnum].vertnum[1] = finevertnum ++; + } + if ((finevertnbr & (passnum ^ 1)) != 0) { /* If finevertnbr is odd and old passnum == 0 */ + coarmulttab[coarvertnum].vertnum[0] = /* Last coarse vertex is single multinode */ + coarmulttab[coarvertnum].vertnum[1] = finevertnum ++; + coarvertnum ++; + } +#ifdef SCOTCH_DEBUG_ARCH2 + if (coarvertnum != ((finevertnbr + 1) >> 1)) { /* Number of coarse vertices in all cases */ + errorPrint ("archCmpltMatchMate: internal error"); + return (-1); + } +#endif /* SCOTCH_DEBUG_ARCH2 */ + + matcptr->vertnbr = coarvertnum; /* Prepare for next mating */ + if (finevertnbr & 1) /* Invert pass value if dimension is odd */ + matcptr->passnum = passnum; + + *multptr = coarmulttab; /* Always provide same mating array */ + + return (coarvertnum); +} + /* This function returns the smallest number ** of terminal domain included in the given ** domain. @@ -151,9 +249,9 @@ ArchDomNum archCmpltDomNum ( const ArchCmplt * const archptr, -const ArchCmpltDom * const domptr) +const ArchCmpltDom * const domnptr) { - return (domptr->nummin); /* Return vertex number */ + return (domnptr->termmin); /* Return vertex number */ } /* This function returns the terminal domain associated @@ -167,12 +265,12 @@ int archCmpltDomTerm ( const ArchCmplt * const archptr, -ArchCmpltDom * const domptr, -const ArchDomNum domnum) +ArchCmpltDom * const domnptr, +const ArchDomNum domnnum) { - if (domnum < archptr->numnbr) { /* If valid label */ - domptr->nummin = domnum; /* Set the domain */ - domptr->numnbr = 1; + if (domnnum < archptr->termnbr) { /* If valid label */ + domnptr->termmin = domnnum; /* Set the domain */ + domnptr->termnbr = 1; return (0); } @@ -187,9 +285,9 @@ Anum archCmpltDomSize ( const ArchCmplt * const archptr, -const ArchCmpltDom * const domptr) +const ArchCmpltDom * const domnptr) { - return (domptr->numnbr); + return (domnptr->termnbr); } /* This function returns the average @@ -203,8 +301,8 @@ const ArchCmpltDom * const dom0ptr, const ArchCmpltDom * const dom1ptr) { - return (((dom0ptr->nummin == dom1ptr->nummin) && /* All domains are at distance 1 */ - (dom0ptr->numnbr == dom1ptr->numnbr)) ? 0 : 1); /* If they are different */ + return (((dom0ptr->termmin == dom1ptr->termmin) && /* All domains are at distance 1 */ + (dom0ptr->termnbr == dom1ptr->termnbr)) ? 0 : 1); /* If they are different */ } /* This function sets the biggest @@ -218,10 +316,10 @@ int archCmpltDomFrst ( const ArchCmplt * const archptr, -ArchCmpltDom * restrict const domptr) +ArchCmpltDom * restrict const domnptr) { - domptr->nummin = 0; - domptr->numnbr = archptr->numnbr; + domnptr->termmin = 0; + domnptr->termnbr = archptr->termnbr; return (0); } @@ -236,22 +334,21 @@ int archCmpltDomLoad ( const ArchCmplt * const archptr, -ArchCmpltDom * restrict const domptr, +ArchCmpltDom * restrict const domnptr, FILE * const stream) { - long nummin; - long numnbr; + Anum termmin; + Anum termnbr; - if ((fscanf (stream, "%ld%ld", - &nummin, - &numnbr) != 2) || - (numnbr < 1) || - (numnbr + nummin > (long) archptr->numnbr)) { + if ((intLoad (stream, &termmin) != 1) || + (intLoad (stream, &termnbr) != 1) || + (termnbr < 1) || + ((termnbr + termmin) > archptr->termnbr)) { errorPrint ("archCmpltDomLoad: bad input"); return (1); } - domptr->nummin = (Anum) nummin; - domptr->numnbr = (Anum) numnbr; + domnptr->termmin = termmin; + domnptr->termnbr = termnbr; return (0); } @@ -266,12 +363,12 @@ int archCmpltDomSave ( const ArchCmplt * const archptr, -const ArchCmpltDom * const domptr, +const ArchCmpltDom * const domnptr, FILE * const stream) { if (fprintf (stream, ANUMSTRING " " ANUMSTRING " ", - (Anum) domptr->nummin, - (Anum) domptr->numnbr) == EOF) { + (Anum) domnptr->termmin, + (Anum) domnptr->termnbr) == EOF) { errorPrint ("archCmpltDomSave: bad output"); return (1); } @@ -290,17 +387,17 @@ int archCmpltDomBipart ( const ArchCmplt * const archptr, -const ArchCmpltDom * const domptr, +const ArchCmpltDom * const domnptr, ArchCmpltDom * restrict const dom0ptr, ArchCmpltDom * restrict const dom1ptr) { - if (domptr->numnbr <= 1) /* Return if cannot bipartition more */ + if (domnptr->termnbr <= 1) /* Return if cannot bipartition more */ return (1); - dom0ptr->nummin = domptr->nummin; /* Bipartition vertices */ - dom0ptr->numnbr = domptr->numnbr / 2; - dom1ptr->nummin = domptr->nummin + dom0ptr->numnbr; - dom1ptr->numnbr = domptr->numnbr - dom0ptr->numnbr; + dom0ptr->termmin = domnptr->termmin; /* Bipartition vertices */ + dom0ptr->termnbr = domnptr->termnbr / 2; + dom1ptr->termmin = domnptr->termmin + dom0ptr->termnbr; + dom1ptr->termnbr = domnptr->termnbr - dom0ptr->termnbr; return (0); } @@ -319,8 +416,8 @@ const ArchCmpltDom * const dom0ptr, const ArchCmpltDom * const dom1ptr) { - if ((dom1ptr->nummin >= dom0ptr->nummin) && - ((dom1ptr->nummin + dom1ptr->numnbr) <= (dom0ptr->nummin + dom0ptr->numnbr))) + if ((dom1ptr->termmin >= dom0ptr->termmin) && + ((dom1ptr->termmin + dom1ptr->termnbr) <= (dom0ptr->termmin + dom0ptr->termnbr))) return (1); return (0); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_cmplt.h scotch-6.0.6/src/libscotch/arch_cmplt.h --- scotch-6.0.4.dfsg1/src/libscotch/arch_cmplt.h 2014-07-01 13:06:13.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_cmplt.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2011,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -62,8 +62,8 @@ /** to 09 jan 2004 **/ /** # Version 5.1 : from : 19 jan 2008 **/ /** to 19 jan 2008 **/ -/** # Version 6.0 : from : 14 fev 2011 **/ -/** to 01 jul 2014 **/ +/** # Version 6.0 : from : 14 feb 2011 **/ +/** to 28 may 2018 **/ /** **/ /************************************************************/ @@ -77,14 +77,20 @@ /*+ The complete graph definitions. +*/ typedef struct ArchCmplt_ { - Anum numnbr; /*+ Number of vertices +*/ + Anum termnbr; /*+ Number of vertices +*/ } ArchCmplt; typedef struct ArchCmpltDom_ { - Anum nummin; /*+ Minimum vertex number +*/ - Anum numnbr; /*+ Number of vertices +*/ + Anum termmin; /*+ Minimum vertex number +*/ + Anum termnbr; /*+ Number of vertices +*/ } ArchCmpltDom; +typedef struct ArchCmpltMatch_ { + ArchCoarsenMulti * multtab; /*+ Multinode array for all coarsenings +*/ + Anum vertnbr; /*+ Number of vertices in fine graph +*/ + Anum passnum; /*+ Pass number +*/ +} ArchCmpltMatch; + #endif /* ARCH_CMPLT_H_STRUCT */ /* @@ -95,13 +101,14 @@ #ifndef ARCH_CMPLT_H_PROTO #define ARCH_CMPLT_H_PROTO -#ifndef ARCH_CMPLT -#define static -#endif - int archCmpltArchLoad (ArchCmplt * restrict const, FILE * restrict const); int archCmpltArchSave (const ArchCmplt * const, FILE * restrict const); #define archCmpltArchFree NULL + +int archCmpltMatchInit (ArchCmpltMatch * restrict const, const ArchCmplt * restrict const); +void archCmpltMatchExit (ArchCmpltMatch * restrict const); +Anum archCmpltMatchMate (ArchCmpltMatch * restrict const, ArchCoarsenMulti ** restrict const); + ArchDomNum archCmpltDomNum (const ArchCmplt * const, const ArchCmpltDom * const); int archCmpltDomTerm (const ArchCmplt * const, ArchCmpltDom * restrict const, const ArchDomNum); Anum archCmpltDomSize (const ArchCmplt * const, const ArchCmpltDom * const); @@ -116,7 +123,5 @@ int archCmpltDomMpiType (const ArchCmplt * const, MPI_Datatype * const); #endif /* SCOTCH_PTSCOTCH */ -#undef static - #endif /* ARCH_CMPLT_H_PROTO */ #endif /* ARCH_NOPROTO */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_cmpltw.c scotch-6.0.6/src/libscotch/arch_cmpltw.c --- scotch-6.0.4.dfsg1/src/libscotch/arch_cmpltw.c 2014-09-23 19:26:17.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_cmpltw.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2008,2010,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2008,2010,2011,2014,2015 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,8 +41,8 @@ /** **/ /** DATES : # Version 5.1 : from : 11 dec 2007 **/ /** to 11 aug 2010 **/ -/** # Version 6.0 : from : 14 fev 2011 **/ -/** to 23 sep 2014 **/ +/** # Version 6.0 : from : 14 feb 2011 **/ +/** to 12 apr 2015 **/ /** **/ /************************************************************/ @@ -66,6 +66,9 @@ /* This routine builds a complete weighted ** graph architecture from the given load array. +** The load array is sorted recursively in such +** a way that recusive bipartitions of subdomains +** yield parts that are not too much imbalanced. ** It returns: ** - 0 : if the architecture has been successfully built. ** - !0 : on error. @@ -294,6 +297,11 @@ } } + if (fprintf (stream, "\n") == EOF) { + errorPrint ("archCmpltwArchSave: bad output (3)"); + return (1); + } + return (0); } @@ -332,9 +340,9 @@ ArchDomNum archCmpltwDomNum ( const ArchCmpltw * const archptr, -const ArchCmpltwDom * const domptr) +const ArchCmpltwDom * const domnptr) { - return (archptr->velotab[domptr->vertmin].vertnum); /* Return vertex number */ + return (archptr->velotab[domnptr->vertmin].vertnum); /* Return vertex number */ } /* This function returns the terminal domain associated @@ -349,14 +357,14 @@ int archCmpltwDomTerm ( const ArchCmpltw * const archptr, -ArchCmpltwDom * const domptr, -const ArchDomNum domnum) +ArchCmpltwDom * const domnptr, +const ArchDomNum domnnum) { - if (domnum < archptr->vertnbr) { /* If valid label */ + if (domnnum < archptr->vertnbr) { /* If valid label */ Anum vertnum; for (vertnum = 0; vertnum < archptr->vertnbr; vertnum ++) { /* Search for terminal domain index matching vertex label */ - if (archptr->velotab[vertnum].vertnum == domnum) + if (archptr->velotab[vertnum].vertnum == domnnum) break; } #ifdef SCOTCH_DEBUG_ARCH2 @@ -366,9 +374,9 @@ } #endif /* SCOTCH_DEBUG_ARCH2 */ - domptr->vertmin = vertnum; /* Set the domain */ - domptr->vertnbr = 1; - domptr->veloval = archptr->velotab[vertnum].veloval; + domnptr->vertmin = vertnum; /* Set the domain */ + domnptr->vertnbr = 1; + domnptr->veloval = archptr->velotab[vertnum].veloval; return (0); } @@ -383,9 +391,9 @@ Anum archCmpltwDomSize ( const ArchCmpltw * const archptr, -const ArchCmpltwDom * const domptr) +const ArchCmpltwDom * const domnptr) { - return (domptr->vertnbr); + return (domnptr->vertnbr); } /* This function returns the weight of @@ -395,9 +403,9 @@ Anum archCmpltwDomWght ( const ArchCmpltw * const archptr, -const ArchCmpltwDom * const domptr) +const ArchCmpltwDom * const domnptr) { - return (domptr->veloval); + return (domnptr->veloval); } /* This function returns the average @@ -426,11 +434,11 @@ int archCmpltwDomFrst ( const ArchCmpltw * const archptr, -ArchCmpltwDom * restrict const domptr) +ArchCmpltwDom * restrict const domnptr) { - domptr->vertmin = 0; - domptr->vertnbr = archptr->vertnbr; - domptr->veloval = archptr->velosum; + domnptr->vertmin = 0; + domnptr->vertnbr = archptr->vertnbr; + domnptr->veloval = archptr->velosum; return (0); } @@ -445,7 +453,7 @@ int archCmpltwDomLoad ( const ArchCmpltw * const archptr, -ArchCmpltwDom * restrict const domptr, +ArchCmpltwDom * restrict const domnptr, FILE * const stream) { long vertmin; @@ -462,14 +470,14 @@ errorPrint ("archCmpltwDomLoad: bad input"); return (1); } - domptr->vertmin = (Anum) vertmin; - domptr->vertnbr = (Anum) vertnbr; + domnptr->vertmin = (Anum) vertmin; + domnptr->vertnbr = (Anum) vertnbr; - for (vertnum = domptr->vertmin, vertnnd = vertnum + domptr->vertnbr, velosum = 0; + for (vertnum = domnptr->vertmin, vertnnd = vertnum + domnptr->vertnbr, velosum = 0; vertnum < vertnnd; vertnum ++) velosum += archptr->velotab[vertnum].veloval; - domptr->veloval += velosum; + domnptr->veloval += velosum; return (0); } @@ -484,12 +492,12 @@ int archCmpltwDomSave ( const ArchCmpltw * const archptr, -const ArchCmpltwDom * const domptr, +const ArchCmpltwDom * const domnptr, FILE * const stream) { if (fprintf (stream, ANUMSTRING " " ANUMSTRING " ", - (Anum) domptr->vertmin, - (Anum) domptr->vertnbr) == EOF) { + (Anum) domnptr->vertmin, + (Anum) domnptr->vertnbr) == EOF) { errorPrint ("archCmpltwDomSave: bad output"); return (1); } @@ -508,7 +516,7 @@ int archCmpltwDomBipart ( const ArchCmpltw * const archptr, -const ArchCmpltwDom * const domptr, +const ArchCmpltwDom * const domnptr, ArchCmpltwDom * restrict const dom0ptr, ArchCmpltwDom * restrict const dom1ptr) { @@ -516,13 +524,13 @@ Anum velosum1; Anum velosum2; /* Half of overall load sum */ - if (domptr->vertnbr <= 1) /* Return if cannot bipartition more */ + if (domnptr->vertnbr <= 1) /* Return if cannot bipartition more */ return (1); - vertnum = domptr->vertmin + domptr->vertnbr - 1; + vertnum = domnptr->vertmin + domnptr->vertnbr - 1; velosum1 = (Anum) archptr->velotab[vertnum].veloval; - velosum2 = domptr->veloval / 2; - for (vertnum --; vertnum > domptr->vertmin; vertnum --) { + velosum2 = domnptr->veloval / 2; + for (vertnum --; vertnum > domnptr->vertmin; vertnum --) { Anum velotmp; velotmp = velosum1 + (Anum) archptr->velotab[vertnum].veloval; @@ -531,11 +539,11 @@ velosum1 = velotmp; } - dom0ptr->vertmin = domptr->vertmin; /* Bipartition vertices */ + dom0ptr->vertmin = domnptr->vertmin; /* Bipartition vertices */ dom1ptr->vertmin = vertnum + 1; - dom0ptr->vertnbr = dom1ptr->vertmin - domptr->vertmin; - dom1ptr->vertnbr = domptr->vertnbr - dom0ptr->vertnbr; - dom0ptr->veloval = domptr->veloval - velosum1; + dom0ptr->vertnbr = dom1ptr->vertmin - domnptr->vertmin; + dom1ptr->vertnbr = domnptr->vertnbr - dom0ptr->vertnbr; + dom0ptr->veloval = domnptr->veloval - velosum1; dom1ptr->veloval = velosum1; return (0); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_cmpltw.h scotch-6.0.6/src/libscotch/arch_cmpltw.h --- scotch-6.0.4.dfsg1/src/libscotch/arch_cmpltw.h 2014-09-23 19:26:17.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_cmpltw.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2008,2010,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2008,2010,2011,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,8 +42,8 @@ /** **/ /** DATES : # Version 5.1 : from : 11 dec 2007 **/ /** to 04 nov 2010 **/ -/** # Version 6.0 : from : 14 fev 2011 **/ -/** to 23 sep 2014 **/ +/** # Version 6.0 : from : 14 feb 2011 **/ +/** to 28 may 2018 **/ /** **/ /************************************************************/ @@ -79,6 +79,8 @@ Anum veloval; /*+ Weight of subdomain +*/ } ArchCmpltwDom; +#define archCmpltwMatch archCmpltMatch + #endif /* ARCH_CMPLTW_H_STRUCT */ /* @@ -89,14 +91,15 @@ #ifndef ARCH_CMPLTW_H_PROTO #define ARCH_CMPLTW_H_PROTO -#ifndef ARCH_CMPLTW -#define static -#endif - int archCmpltwArchBuild (ArchCmpltw * restrict const archptr, const Anum, const Anum * restrict const); int archCmpltwArchLoad (ArchCmpltw * restrict const, FILE * restrict const); int archCmpltwArchSave (const ArchCmpltw * const, FILE * restrict const); int archCmpltwArchFree (ArchCmpltw * restrict const); + +#define archCmpltwMatchInit archCmpltMatchInit +#define archCmpltwMatchExit archCmpltMatchExit +#define archCmpltwMatchMate archCmpltMatchMate + ArchDomNum archCmpltwDomNum (const ArchCmpltw * const, const ArchCmpltwDom * const); int archCmpltwDomTerm (const ArchCmpltw * const, ArchCmpltwDom * restrict const, const ArchDomNum); Anum archCmpltwDomSize (const ArchCmpltw * const, const ArchCmpltwDom * const); @@ -111,7 +114,5 @@ int archCmpltwDomMpiType (const ArchCmpltw * const, MPI_Datatype * const); #endif /* SCOTCH_PTSCOTCH */ -#undef static - #endif /* ARCH_CMPLTW_H_PROTO */ #endif /* ARCH_NOPROTO */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_deco2.c scotch-6.0.6/src/libscotch/arch_deco2.c --- scotch-6.0.4.dfsg1/src/libscotch/arch_deco2.c 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_deco2.c 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,863 @@ +/* Copyright 2015-2018 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : arch_deco2.c **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : This module handles the type-2 **/ +/** decomposition-defined target **/ +/** architecture. **/ +/** **/ +/** DATES : # Version 6.0 : from : 30 apr 2015 **/ +/** to 15 may 2018 **/ +/** **/ +/************************************************************/ + +/* +** The defines and includes. +*/ + +#define ARCH_DECO2 + +#include "module.h" +#include "common.h" +#include "graph.h" +#include "arch.h" +#include "arch_deco2.h" +#include "arch_sub.h" + +/***************************************/ +/* */ +/* These are the type-2 decomposition- */ +/* defined architecture routines. */ +/* */ +/***************************************/ + +/* This routine frees the decomposition +** architecture structures. +** It returns: +** - 0 : if the decomposition has been successfully freed. +** - !0 : on error. +*/ + +int +archDeco2ArchFree ( +ArchDeco2 * const archptr) +{ + ArchDeco2Levl * levltab; + + if (archptr->vnumtab != NULL) + memFree (archptr->vnumtab); + + if ((levltab = archptr->levltab) != NULL) { + ArchDeco2Levl * levlptr; + + for (levlptr = levltab + archptr->levlmax; levlptr >= levltab; levlptr --) + graphExit (&levlptr->grafdat); + + memFree (levltab); + } + + if (archptr->termtab != NULL) /* Free group leader */ + memFree (archptr->termtab); + + return (0); +} + +/* This routine loads and computes the version-2, +** decomposition-defined architecture tables. +** It is called by archDecoArchLoad. +** It returns: +** - 0 : if the decomposition has been successfully read. +** - !0 : on error. +*/ + +int +archDeco2ArchLoad2 ( +ArchDeco2 * restrict const archptr, +FILE * restrict const stream) +{ + ArchSubTerm * restrict termtab; + Anum termnbr; + Anum termnum; + ArchSubData * restrict domntab; + Anum domnnbr; + Anum domnnum; + ArchDeco2Data * restrict doextab; + ArchDeco2Levl * restrict levltab; + Anum levlnbr; + Anum levlnum; + Anum * restrict vnumtab; + Anum vnummax; + Anum vnumnbr; + Anum vnumnum; + Gnum vertnbr; + +#ifdef SCOTCH_DEBUG_ARCH1 + if ((sizeof (ArchDeco2) > sizeof (ArchDummy)) || + (sizeof (ArchDeco2Dom) > sizeof (ArchDomDummy))) { + errorPrint ("archDeco2ArchLoad2: invalid type specification"); + return (1); + } +#endif /* SCOTCH_DEBUG_ARCH1 */ + + if ((intLoad (stream, &archptr->termnbr) != 1) || + (intLoad (stream, &archptr->levlmax) != 1) || /* Read levlnbr, not lvlmax */ + (intLoad (stream, &archptr->vnumnbr) != 1) || + (archptr->termnbr < 1) || + (archptr->levlmax <= 0)) { + errorPrint ("archDeco2ArchLoad2: bad input (1)"); + return (1); + } + archptr->termtab = NULL; /* Assume nothing allocated yet */ + archptr->vnumtab = NULL; + archptr->levltab = NULL; + + termnbr = archptr->termnbr; + domnnbr = 2 * termnbr - 1; + levlnbr = archptr->levlmax --; /* Get levlmax */ + if (memAllocGroup ((void **) (void *) + &archptr->termtab, (size_t) (termnbr * sizeof (ArchSubTerm)), + &archptr->domntab, (size_t) (domnnbr * sizeof (ArchSubData)), + &archptr->doextab, (size_t) (domnnbr * sizeof (ArchDeco2Data)), NULL) == NULL) { + errorPrint ("archDeco2ArchLoad2: out of memory (1)"); + return (1); + } + termtab = archptr->termtab; + domntab = archptr->domntab; + doextab = archptr->doextab; + + for (termnum = 0; termnum < termnbr; termnum ++) { /* For all declared terminals */ + if ((intLoad (stream, &termtab[termnum].domnidx) != 1) || + (intLoad (stream, &termtab[termnum].termnum) != 1) || + (termtab[termnum].domnidx < 0) || + (termtab[termnum].domnidx >= domnnbr) || + (termtab[termnum].termnum < 0)) { + errorPrint ("archDeco2ArchLoad2: bad input (2)"); + goto abort; + } + } + + vnummax = -1; + for (domnnum = 0; domnnum < domnnbr; domnnum ++) { /* For all declared domains */ + if ((intLoad (stream, &domntab[domnnum].domnnum) != 1) || + (intLoad (stream, &domntab[domnnum].domnsiz) != 1) || + (intLoad (stream, &domntab[domnnum].domnwgt) != 1) || + (intLoad (stream, &domntab[domnnum].termnum) != 1) || + (intLoad (stream, &domntab[domnnum].dfatidx) != 1) || + (intLoad (stream, &domntab[domnnum].dsubidx[0]) != 1) || + (intLoad (stream, &domntab[domnnum].dsubidx[1]) != 1) || + (intLoad (stream, &doextab[domnnum].levlnum) != 1) || + (intLoad (stream, &doextab[domnnum].vnumidx) != 1) || + (domntab[domnnum].domnnum < 0) || + (domntab[domnnum].domnsiz < 1) || + (domntab[domnnum].domnwgt < 1) || + (domntab[domnnum].termnum < 0) || + (domntab[domnnum].termnum >= termnbr) || + (domntab[domnnum].dfatidx < -1) || + (domntab[domnnum].dfatidx >= domnnbr) || + (domntab[domnnum].dsubidx[0] < -1) || + (domntab[domnnum].dsubidx[0] >= domnnbr) || + (domntab[domnnum].dsubidx[1] < -1) || + (domntab[domnnum].dsubidx[1] >= domnnbr) || + (doextab[domnnum].levlnum < 0) || + (doextab[domnnum].levlnum >= levlnbr) || + (doextab[domnnum].vnumidx < 0)) { + errorPrint ("archDeco2ArchLoad2: bad input (3)"); + goto abort; + } + if (doextab[domnnum].vnumidx > vnummax) /* Keep track of max index */ + vnummax = doextab[domnnum].vnumidx; + } + + if ((levltab = memAlloc (levlnbr * sizeof (ArchDeco2Levl))) == NULL) { + errorPrint ("archDeco2ArchLoad2: out of memory (2)"); + goto abort; + } + archptr->levltab = levltab; + + for (levlnum = 0; levlnum < levlnbr; levlnum ++) { + if (graphLoad (&levltab[levlnum].grafdat, stream, -1, 0) != 0) { + errorPrint ("archDeco2ArchLoad2: bad input (4)"); + archptr->levlmax = levlnum - 1; /* Only free existing levels */ + goto abort; + } + if (intLoad (stream, &levltab[levlnum].wdiaval) != 1) { /* Read graph diameter */ + errorPrint ("archDeco2ArchLoad2: bad input (5)"); + archptr->levlmax = levlnum; /* Free this level as well */ + goto abort; + } + } + archptr->levlmax = levlnbr - 1; /* All levels have been read */ + archptr->baseval = levltab[0].grafdat.baseval; /* Get base value */ + + vnumnbr = archptr->vnumnbr; + if (vnummax >= vnumnbr) { + errorPrint ("archDeco2ArchLoad2: bad input (6)"); + goto abort; + } + + if ((vnumtab = memAlloc (vnumnbr * sizeof (Anum))) == NULL) { + errorPrint ("archDeco2ArchLoad2: out of memory (3)"); + goto abort; + } + archptr->vnumtab = vnumtab; + + vertnbr = levltab[0].grafdat.vertnbr; /* Size of largest graph */ + for (vnumnum = 0; vnumnum < vnumnbr; vnumnum ++) { /* For all vertex indices */ + if ((intLoad (stream, &vnumtab[vnumnum]) != 1) || + (vnumtab[vnumnum] < 0) || + (vnumtab[vnumnum] >= vertnbr)) { + errorPrint ("archDeco2ArchLoad2: bad input (7)"); + goto abort; + } + } + +#ifdef SCOTCH_DEBUG_ARCH1 + for (domnnum = 0; domnnum < domnnbr; domnnum ++) { + if (doextab[domnnum].vnumidx > vnumnbr) { + errorPrint ("archDeco2ArchLoad2: bad input (8)"); + goto abort; + } + } +#endif /* SCOTCH_DEBUG_ARCH1 */ + + return (0); + +abort: + archDeco2ArchFree (archptr); + return (1); +} + +/* This routine saves the given target architecture +** as compiled decomposition tables. +** It returns: +** - 0 : if the decomposition has been successfully written. +** - !0 : on error. +*/ + +int +archDeco2ArchSave ( +const ArchDeco2 * restrict const archptr, +FILE * restrict const stream) +{ + Anum termnum; + Anum domnnum; + Anum levlnum; + Anum vnumnum; + int o; + + const Anum termnbr = archptr->termnbr; + const ArchSubTerm * restrict const termtab = archptr->termtab; + const Anum domnnbr = archptr->domnnbr; + const ArchSubData * restrict const domntab = archptr->domntab; + const ArchDeco2Data * restrict const doextab = archptr->doextab; + const Anum levlmax = archptr->levlmax; + const ArchDeco2Levl * restrict const levltab = archptr->levltab; + const Anum vnumnbr = archptr->vnumnbr; + const Anum * restrict const vnumtab = archptr->vnumtab; + +#ifdef SCOTCH_DEBUG_ARCH1 + if ((sizeof (ArchDeco2) > sizeof (ArchDummy)) || + (sizeof (ArchDeco2Dom) > sizeof (ArchDomDummy))) { + errorPrint ("archDeco2ArchSave: invalid type specification"); + return (1); + } +#endif /* SCOTCH_DEBUG_ARCH1 */ + + if (fprintf (stream, "2\n" ANUMSTRING "\t" ANUMSTRING "\t" ANUMSTRING "\n", /* Write file header */ + (Anum) archptr->termnbr, + (Anum) (archptr->levlmax + 1), + (Anum) archptr->vnumnbr) == EOF) { + errorPrint ("archDeco2ArchSave: bad output (1)"); + return (1); + } + + for (termnum = 0; termnum < termnbr; termnum ++) { + if (fprintf (stream, ANUMSTRING "\t" ANUMSTRING "\n", + (Anum) termtab[termnum].domnidx, + (Anum) termtab[termnum].termnum) == EOF) { + errorPrint ("archDeco2ArchSave: bad output (2)"); + return (1); + } + } + + for (domnnum = 0; domnnum < domnnbr; domnnum ++) { /* For all declared domains */ + if (fprintf (stream, ANUMSTRING "\t" ANUMSTRING "\t" ANUMSTRING "\t" + ANUMSTRING "\t" ANUMSTRING "\t" ANUMSTRING "\t" + ANUMSTRING "\t" ANUMSTRING "\t" ANUMSTRING "\n", + (Anum) domntab[domnnum].domnnum, + (Anum) domntab[domnnum].domnsiz, + (Anum) domntab[domnnum].domnwgt, + (Anum) domntab[domnnum].termnum, + (Anum) domntab[domnnum].dfatidx, + (Anum) domntab[domnnum].dsubidx[0], + (Anum) domntab[domnnum].dsubidx[1], + (Anum) doextab[domnnum].levlnum, + (Anum) doextab[domnnum].vnumidx) == EOF) { + errorPrint ("archDeco2ArchSave: bad output (3)"); + return (1); + } + } + + for (levlnum = 0; levlnum <= levlmax; levlnum ++) { + if (graphSave (&levltab[levlnum].grafdat, stream) != 0) { + errorPrint ("archDeco2ArchSave: bad output (4)"); + return (1); + } + if (fprintf (stream, ANUMSTRING "\n", + (Anum) levltab[levlnum].wdiaval) == EOF) { + errorPrint ("archDeco2ArchSave: bad output (5)"); + return (1); + } + } + + o = 0; + for (vnumnum = 0; vnumnum < (vnumnbr - 1); vnumnum ++) { + if (fprintf (stream, ANUMSTRING "\t", (Anum) vnumtab[vnumnum]) == EOF) { + o = 1; + break; + } + } + if (vnumnum < vnumnbr) { + if (fprintf (stream, ANUMSTRING "\n", (Anum) vnumtab[vnumnum]) == EOF) + o = 1; + } + if (o != 0) { + errorPrint ("archDeco2ArchSave: bad output (6)"); + return (1); + } + + return (0); +} + +/* This routine initializes the matching data +** structure according to the number of vertices +** to be managed. +** Its purpose is to help compute a "sub" +** architecture of a "deco2" architecture. +** Since "deco2" and "sub" architectures posess +** the same hierarchical domain structure, it +** can be re-used at no additional cost. +** It returns: +** - 0 : if the data structure has been +** successfully initialized. +** - !0 : on error. +*/ + +int +archDeco2MatchInit ( +ArchSubMatch * restrict const matcptr, /* Use "sub" matching data structure instead of propre one */ +const ArchDeco2 * restrict const archptr) +{ + Anum termnbr; + Anum termnum; + Anum domnmax; + Anum levlnbr; + Anum multnbr; + + const ArchSubTerm * restrict const termtab = archptr->termtab; + const ArchSubData * restrict const domntab = archptr->domntab; + + for (termnum = 0, termnbr = archptr->termnbr, domnmax = 0; /* Get maximum domain number */ + termnum < termnbr; termnum ++) { + Anum domnval; + + domnval = domntab[termtab[termnum].domnidx].domnnum; + if (domnval > domnmax) + domnmax = domnval; + } + + for (levlnbr = 1; domnmax > 0; levlnbr ++, domnmax >>= 1) ; /* Compute maximum recursion level in bipartitioning tree */ + + multnbr = 1 << levlnbr; /* Maximum number of multinodes is the size of last level */ + if ((matcptr->multtab = memAlloc (multnbr * sizeof (ArchCoarsenMulti))) == NULL) { + errorPrint ("archDeco2MatchInit: out of memory"); + return (1); + } + + matcptr->domntab = archptr->domntab; /* Keep pointer to sub-architecture domain array */ + matcptr->levlnum = + matcptr->levlmax = levlnbr - 1; + + return (0); +} + +/* This function returns the smallest number +** of terminal domain included in the given +** domain. +*/ + +ArchDomNum +archDeco2DomNum ( +const ArchDeco2 * const archptr, +const ArchDeco2Dom * const domnptr) +{ + return (archptr->domntab[domnptr->domnidx].termnum + archptr->baseval); /* Return based terminal number from un-based number */ +} + +/* This function returns the terminal domain associated +** with the given terminal number in the architecture. +** It returns: +** - 0 : if label is valid and domain has been updated. +** - 1 : if label is invalid. +** - 2 : on error. +*/ + +int +archDeco2DomTerm ( +const ArchDeco2 * const archptr, +ArchDeco2Dom * const domnptr, +const ArchDomNum termnum) +{ + Gnum termtmp; + + termtmp = termnum - archptr->baseval; /* Un-base terminal number */ + if ((termtmp < 0) || /* Check if it was not un-based */ + (termtmp >= archptr->termnbr)) + return (1); + + domnptr->domnidx = archptr->termtab[termtmp].domnidx; + + return (0); +} + +/* This function returns the number of +** elements in the given domain. +*/ + +Anum +archDeco2DomSize ( +const ArchDeco2 * const archptr, +const ArchDeco2Dom * const domnptr) +{ + return (archptr->domntab[domnptr->domnidx].domnsiz); +} + +/* This function returns the weight of +** the given domain. +*/ + +Anum +archDeco2DomWght ( +const ArchDeco2 * const archptr, +const ArchDeco2Dom * const domnptr) +{ + return (archptr->domntab[domnptr->domnidx].domnwgt); +} + +/* This function returns the average distance +** between two domains, which is extracted +** from the table. +*/ + +Anum +archDeco2DomDist ( +const ArchDeco2 * const archptr, +const ArchDeco2Dom * const dom0ptr, +const ArchDeco2Dom * const dom1ptr) +{ + Anum levlnum; + Anum levlnum0; + Anum levlnum1; + Anum domnidx0; + Anum domnidx1; + const ArchDeco2Levl * levlptr; + Gnum * restrict queutab; + Gnum * restrict disttax; + Anum distmin; + Gnum baseval; + Gnum vertnbr; +#ifdef SCOTCH_DEBUG_ARCH2 + Anum domnnum0; + Anum domnnum1; +#endif /* SCOTCH_DEBUG_ARCH2 */ + + const ArchSubData * restrict const domntab = archptr->domntab; + const ArchDeco2Data * restrict const doextab = archptr->doextab; + const Gnum * restrict const vnumtab = archptr->vnumtab; + + domnidx0 = dom0ptr->domnidx; + domnidx1 = dom1ptr->domnidx; + if (domnidx0 == domnidx1) /* If same domains, zero distance */ + return (0); + + levlnum0 = doextab[domnidx0].levlnum; + levlnum1 = doextab[domnidx1].levlnum; + levlnum = MAX (levlnum0, levlnum1); /* Level where to start distance computations */ + levlptr = &archptr->levltab[levlnum]; /* Point to start level for distance computation */ + vertnbr = levlptr->grafdat.vertnbr; /* Get upper bound on number of vertices */ +#ifdef SCOTCH_DEBUG_ARCH2 + if (vertnbr <= 1) { /* If coarsest graph hit without exiting before */ + errorPrint ("archDeco2DomDist: internal error (1)"); + return (-1); + } +#endif /* SCOTCH_DEBUG_ARCH2 */ + +#ifdef SCOTCH_DEBUG_ARCH2 + domnnum0 = domntab[domnidx0].domnnum; + domnnum1 = domntab[domnidx1].domnnum; + if ((domntab[domnidx0].domnnum != domnnum0) || + (domntab[domnidx1].domnnum != domnnum1)) { + errorPrint ("archDeco2DomDist: internal error (2)"); + return (-1); + } +#endif /* SCOTCH_DEBUG_ARCH2 */ + while (levlnum0 < levlnum1) { /* Level subdomains as much as possible */ + Anum domntmp0; + Anum levltmp0; + + domntmp0 = domntab[domnidx0].dfatidx; + levltmp0 = doextab[domntmp0].levlnum; + if (levltmp0 > levlnum1) /* If cannot find coarser subdomain */ + break; + + domnidx0 = domntmp0; /* Father domain becomes current domain */ + levlnum0 = levltmp0; /* Set new current level for new domain */ +#ifdef SCOTCH_DEBUG_ARCH2 + domnnum0 >>= 1; + if ((doextab[domnidx0].levlnum != levlnum0) || + (domntab[domnidx0].domnnum != domnnum0)) { + errorPrint ("archDeco2DomDist: internal error (3)"); + return (-1); + } +#endif /* SCOTCH_DEBUG_ARCH2 */ + } + while (levlnum1 < levlnum0) { /* Level subdomains as much as possible */ + Anum domntmp1; + Anum levltmp1; + + domntmp1 = domntab[domnidx1].dfatidx; + levltmp1 = doextab[domntmp1].levlnum; + if (levltmp1 > levlnum0) /* If cannot find coarser subdomain */ + break; + + domnidx1 = domntmp1; + levlnum1 = levltmp1; +#ifdef SCOTCH_DEBUG_ARCH2 + domnnum1 >>= 1; + if ((doextab[domnidx1].levlnum != levlnum1) || + (domntab[domnidx1].domnnum != domnnum1)) { + errorPrint ("archDeco2DomDist: internal error (4)"); + return (-1); + } +#endif /* SCOTCH_DEBUG_ARCH2 */ + } + + if (domnidx0 == domnidx1) /* If same domains after leveling, half distance of largest domain */ + return (levlptr->grafdat.velotax[vnumtab[domnidx0]]); + + if (memAllocGroup ((void **) (void *) + &queutab, (size_t) ((vertnbr + ARCHDECO2PASSNBR + 1) * sizeof (Anum)), /* Room for pass markers */ + &disttax, (size_t) (vertnbr * sizeof (Anum)), NULL) == NULL) { + errorPrint ("archDeco2DomDist: out of memory"); + return (0); /* Nothing to free because group allocation failed */ + } + baseval = levlptr->grafdat.baseval; + disttax -= baseval; + + while (1) { /* As long as coarsest graph not hit */ + const Gnum * restrict verttax; + const Gnum * restrict vendtax; + const Gnum * restrict velotax; + const Gnum * restrict edgetax; + const Gnum * restrict edlotax; + Gnum vertnum0; + Gnum vertnum1; + Anum domntmp0; + Anum domntmp1; + Gnum queuheadidx; + Gnum queutailidx; + int passnbr; + int flagval; + + vertnum0 = vnumtab[doextab[domnidx0].vnumidx - (levlnum - levlnum0)]; /* Find vertices at proper level for domain indices */ + vertnum1 = vnumtab[doextab[domnidx1].vnumidx - (levlnum - levlnum1)]; +#ifdef SCOTCH_DEBUG_ARCH2 + if ((vertnum0 < 0) || (vertnum0 >= vertnbr) || + (vertnum1 < 0) || (vertnum1 >= vertnbr)) { + errorPrint ("archDeco2DomDist: internal error (5)"); + return (-1); + } +#endif /* SCOTCH_DEBUG_ARCH2 */ + + distmin = GNUMMAX; + flagval = 1; + + verttax = levlptr->grafdat.verttax; + vendtax = levlptr->grafdat.vendtax; + velotax = levlptr->grafdat.velotax; + edgetax = levlptr->grafdat.edgetax; + edlotax = levlptr->grafdat.edlotax; + + memSet (disttax + baseval, ~0, vertnbr * sizeof (Gnum)); /* Set flag and distance array to -1 */ + disttax[vertnum0] = (velotax != NULL) + ? ((velotax[vertnum0] + velotax[vertnum1]) / 2) /* Account for half of traversal costs of end vertices */ + : 0; + + passnbr = ARCHDECO2PASSNBR; + queutab[0] = vertnum0; + queutab[1] = -1; /* Enqueue pass marker as end of pass 0 */ + queutailidx = 0; + queuheadidx = 2; + while (queutailidx != queuheadidx) { + Gnum vertnum; + Gnum edgenum; + Gnum edgennd; + Gnum distval; + +loop: vertnum = queutab[queutailidx ++]; /* Get vertex number from queue */ + if (vertnum < 0) { /* If vertex is pass marker */ + if (passnbr == 0) /* If vertex found or passes exhausted */ + break; + queutab[queuheadidx ++] = vertnum; /* Re-enqueue pass marker */ + passnbr --; /* One more pass completed */ + + goto loop; /* Get another vertex number from queue */ + } + + distval = disttax[vertnum]; + for (edgenum = verttax[vertnum], edgennd = vendtax[vertnum]; + edgenum < edgennd; edgenum ++) { + Gnum vertend; + Gnum disttmp; + + vertend = edgetax[edgenum]; + disttmp = distval + ((edlotax != NULL) ? edlotax[edgenum] : 1); + + if (vertend == vertnum1) { /* If path to end vertex found */ + if (disttmp < distmin) + distmin = disttmp; + passnbr = 0; /* Abort at end of this pass */ + flagval = 0; /* Record path found for this pass */ + } + else { + disttmp += (velotax != NULL) ? velotax[vertend] : 0; /* Vertex will have to be traversed fully */ + + if (disttax[vertend] < 0) { /* If vertex not already considered */ + queutab[queuheadidx ++] = vertend; /* Enqueue new vertex */ + disttax[vertend] = disttmp; + } + else if (disttax[vertend] > disttmp) /* If path improves distance at this pass */ + disttax[vertend] = disttmp; + } + } + } + + if (flagval == 0) /* If path found, don't search in coarser graphs */ + break; + + levlnum ++; + levlptr ++; /* Consider coarser level */ + vertnbr = levlptr->grafdat.vertnbr; /* Reduce size of work arrays */ + + domntmp0 = domntab[domnidx0].dfatidx; /* For both subdomains independently */ + if (doextab[domntmp0].levlnum <= levlnum) { /* If father domain is at proper level */ + domnidx0 = domntmp0; /* Father domain becomes current domain */ + levlnum0 = levlnum; /* Set new current level for new domain */ +#ifdef SCOTCH_DEBUG_ARCH2 + domnnum0 >>= 1; + if ((doextab[domnidx0].levlnum != levlnum0) || + (domntab[domnidx0].domnnum != domnnum0)) { + errorPrint ("archDeco2DomDist: internal error (6)"); + return (-1); + } +#endif /* SCOTCH_DEBUG_ARCH2 */ + } + domntmp1 = domntab[domnidx1].dfatidx; + if (doextab[domntmp1].levlnum <= levlnum) { + domnidx1 = domntmp1; + levlnum1 = levlnum; +#ifdef SCOTCH_DEBUG_ARCH2 + domnnum1 >>= 1; + if ((doextab[domnidx1].levlnum != levlnum1) || + (domntab[domnidx1].domnnum != domnnum1)) { + errorPrint ("archDeco2DomDist: internal error (7)"); + return (-1); + } +#endif /* SCOTCH_DEBUG_ARCH2 */ + } + + if (domnidx0 == domnidx1) { /* If same domains after leveling, half distance of largest domain */ + distmin = levlptr->grafdat.velotax[vnumtab[domnidx0]]; + break; + } +#ifdef SCOTCH_DEBUG_ARCH2 + if (vertnbr <= 1) { /* If coarsest graph hit without exiting before */ + errorPrint ("archDeco2DomDist: internal error (8)"); + return (-1); + } +#endif /* SCOTCH_DEBUG_ARCH2 */ + } + + memFree (queutab); /* Free group leader */ + + return (distmin); +} + +/* This function sets the biggest +** domain available for this +** architecture. +** It returns: +** - 0 : on success. +** - !0 : on error. +*/ + +int +archDeco2DomFrst ( +const ArchDeco2 * const archptr, +ArchDeco2Dom * restrict const domnptr) +{ + domnptr->domnidx = 0; /* First domain index is slot 0 */ + + return (0); +} + +/* This routine reads domain information +** from the given stream. +** It returns: +** - 0 : on success. +** - !0 : on error. +*/ + +int +archDeco2DomLoad ( +const ArchDeco2 * const archptr, +ArchDeco2Dom * restrict const domnptr, +FILE * restrict const stream) +{ + if ((intLoad (stream, &domnptr->domnidx) != 1) || + (domnptr->domnidx < 0) || + (domnptr->domnidx >= archptr->domnnbr)) { + errorPrint ("archDeco2DomLoad: bad input"); + return (1); + } + + return (0); +} + +/* This routine saves domain information +** to the given stream. +** It returns: +** - 0 : on success. +** - !0 : on error. +*/ + +int +archDeco2DomSave ( +const ArchDeco2 * const archptr, +const ArchDeco2Dom * const domnptr, +FILE * restrict const stream) +{ + if (fprintf (stream, ANUMSTRING " ", + (Anum) domnptr->domnidx) == EOF) { + errorPrint ("archDeco2DomSave: bad output"); + return (1); + } + + return (0); +} + +/* This function tries to split a +** decomposition domain into two +** subdomains. +** It returns: +** - 0 : if bipartitioning succeeded. +** - 1 : if bipartitioning could not be performed. +** - 2 : on error. +*/ + +int +archDeco2DomBipart ( +const ArchDeco2 * const archptr, +const ArchDeco2Dom * const domnptr, +ArchDeco2Dom * restrict const dom0ptr, +ArchDeco2Dom * restrict const dom1ptr) +{ + Anum dom0idx; + + dom0idx = archptr->domntab[domnptr->domnidx].dsubidx[0]; + if (dom0idx < 0) /* If domain is terminal */ + return (1); + + dom0ptr->domnidx = dom0idx; + dom1ptr->domnidx = archptr->domntab[domnptr->domnidx].dsubidx[1]; + + return (0); +} + +/* This function checks if dom1 is +** included in dom0. +** It returns: +** - 0 : if dom1 is not included in dom0. +** - 1 : if dom1 is included in dom0. +** - 2 : on error. +*/ + +int +archDeco2DomIncl ( +const ArchDeco2 * const archptr, +const ArchDeco2Dom * const dom0ptr, +const ArchDeco2Dom * const dom1ptr) +{ + Anum dom0num; + Anum dom1num; + + for (dom1num = archptr->domntab[dom1ptr->domnidx].domnnum, + dom0num = archptr->domntab[dom0ptr->domnidx].domnnum; + dom1num != 0; dom1num >>= 1) + if (dom1num == dom0num) + return (1); + + return (0); +} + +/* This function creates the MPI_Datatype for +** decomposition-described domains. +** It returns: +** - 0 : if type could be created. +** - 1 : on error. +*/ + +#ifdef SCOTCH_PTSCOTCH +int +archDeco2DomMpiType ( +const ArchDeco2 * const archptr, +MPI_Datatype * const typeptr) +{ + *typeptr = ANUM_MPI; + + return (0); +} +#endif /* SCOTCH_PTSCOTCH */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_deco2.h scotch-6.0.6/src/libscotch/arch_deco2.h --- scotch-6.0.4.dfsg1/src/libscotch/arch_deco2.h 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_deco2.h 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,163 @@ +/* Copyright 2015,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : arch_deco2.h **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : These lines are the data declaration **/ +/** for the type-2 decomposition-defined **/ +/** target architecture functions. **/ +/** **/ +/** DATES : # Version 6.0 : from : 01 may 2015 **/ +/** to 28 may 2018 **/ +/** **/ +/** NOTES : # The internals of the "deco2" **/ +/** architecture derive from those of **/ +/** the "sub" architecture regarding **/ +/** domain handling. Hence, most domain- **/ +/** related routines are identical, and **/ +/** amount to looking-up into dedicated **/ +/** arrays. Hence, it was more efficient **/ +/** to copy its code act as a sub-class **/ +/** of the "sub" class. The main **/ +/** difference with the latter is in the **/ +/** distance computation routine, which **/ +/** uses the graph hierarchy. **/ +/** Matching in the "deco2" architecture **/ +/** is identical to matching in the **/ +/** "sub" architecture. **/ +/** **/ +/************************************************************/ + +/* +** The defines. +*/ + +#ifndef ARCH_DECO2_H_STRUCT +#define ARCH_DECO2_H_STRUCT + +/*+ Depth of local search. +*/ + +#define ARCHDECO2PASSNBR 3 + +/*+ Decomposition architecture flags. +*/ + +#define ARCHDECONONE 0x0000 /*+ No options set +*/ + +#define ARCHDECOFREE 0x0001 /*+ Free arrays +*/ + +/* +** The internal type and structure definitions. +*/ + +#ifdef ARCH_DECO2 + +typedef struct ArchDeco2Levl_ { + Graph grafdat; /*+ Graph at this level +*/ + Gnum wdiaval; /*+ Graph weighted diameter +*/ +} ArchDeco2Levl; + +/*+ Data related to each architecture domain. + This structure extends ArchSubData in order + to record vertex numbers associated with + every domain and ascendent collapsed domains. +*/ + +typedef struct ArchDeco2Data_ { + Anum levlnum; /*+ Deepest level where this domain exists +*/ + Anum vnumidx; /*+ Index to vertex number index array +*/ +} ArchDeco2Data; + +#endif /* ARCH_DECO2 */ + +/* +** The type and structure definitions. +*/ + +/*+ The type-2 decomposition-described target + architecture. This architecture is based on + the "sub" architecture for handling domains. + Distance computations are specific. +*/ + +typedef struct ArchDeco2_ { + Anum baseval; /*+ Base value for terminal numbers +*/ + Anum termnbr; /*+ Number of terminals in architecture +*/ + struct ArchSubTerm_ * termtab; /*+ Terminal domain array +*/ + Anum domnnbr; /*+ Number of domains in domain array +*/ + struct ArchSubData_ * domntab; /*+ Domain array [domnnbr] +*/ + struct ArchDeco2Data_ * doextab; /*+ Extended domain array [domnnbr] +*/ + Anum vnumnbr; /*+ Number of indices un vertex index array +*/ + Anum * vnumtab; /*+ Level vertex index array [vnumnbr] +*/ + Anum levlmax; /*+ Maximum level number in decomposition +*/ + struct ArchDeco2Levl_ * levltab; /*+ Level array [levlnbr] +*/ +} ArchDeco2; + +typedef struct ArchDeco2Dom_ { + Anum domnidx; /*+ Domain index in domain array +*/ +} ArchDeco2Dom; + +#endif /* ARCH_DECO2_H_STRUCT */ + +/* +** The function prototypes. +*/ + +#ifndef ARCH_NOPROTO +#ifndef ARCH_DECO2_H_PROTO +#define ARCH_DECO2_H_PROTO + +#define archDeco2ArchLoad NULL +int archDeco2ArchLoad2 (ArchDeco2 * const, FILE * restrict const); +int archDeco2ArchSave (const ArchDeco2 * const, FILE * restrict const); +int archDeco2ArchFree (ArchDeco2 * const); + +int archDeco2MatchInit (struct ArchSubMatch_ * restrict const, const ArchDeco2 * restrict const); /* Use "sub" matching routines */ +#define archDeco2MatchExit archSubMatchExit +#define archDeco2MatchMate archSubMatchMate + +ArchDomNum archDeco2DomNum (const ArchDeco2 * const, const ArchDeco2Dom * const); +int archDeco2DomTerm (const ArchDeco2 * const, ArchDeco2Dom * restrict const, const ArchDomNum); +Anum archDeco2DomSize (const ArchDeco2 * const, const ArchDeco2Dom * const); +Anum archDeco2DomWght (const ArchDeco2 * const, const ArchDeco2Dom * const); +Anum archDeco2DomDist (const ArchDeco2 * const, const ArchDeco2Dom * const, const ArchDeco2Dom * const); +int archDeco2DomFrst (const ArchDeco2 * const, ArchDeco2Dom * restrict const); +int archDeco2DomLoad (const ArchDeco2 * const, ArchDeco2Dom * restrict const, FILE * restrict const); +int archDeco2DomSave (const ArchDeco2 * const, const ArchDeco2Dom * const, FILE * restrict const); +int archDeco2DomBipart (const ArchDeco2 * const, const ArchDeco2Dom * const, ArchDeco2Dom * restrict const, ArchDeco2Dom * restrict const); +int archDeco2DomIncl (const ArchDeco2 * const, const ArchDeco2Dom * const, const ArchDeco2Dom * const); +#ifdef SCOTCH_PTSCOTCH +int archDecoDomMpiType (const ArchDeco2 * const, MPI_Datatype * const); +#endif /* SCOTCH_PTSCOTCH */ + +#endif /* ARCH_DECO2_H_PROTO */ +#endif /* ARCH_NOPROTO */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_deco.c scotch-6.0.6/src/libscotch/arch_deco.c --- scotch-6.0.4.dfsg1/src/libscotch/arch_deco.c 2014-07-01 16:03:08.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_deco.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010,2011 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2008,2010,2011,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -63,8 +63,8 @@ /** to 28 feb 2008 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 11 aug 2010 **/ -/** # Version 6.0 : from : 14 fev 2011 **/ -/** to 14 fev 2011 **/ +/** # Version 6.0 : from : 14 feb 2011 **/ +/** to 31 may 2018 **/ /** **/ /************************************************************/ @@ -78,6 +78,7 @@ #include "common.h" #include "arch.h" #include "arch_deco.h" +#include "arch_deco2.h" /***************************************/ /* */ @@ -96,7 +97,7 @@ */ int -archDecoArchBuild ( +archDecoArchBuild2 ( ArchDeco * restrict const archptr, /*+ Architecture to build +*/ const Anum termdomnbr, /*+ Number of terminal domains (ie processors) +*/ const Anum termdommax, /*+ Maximum domain number given to a terminal domain +*/ @@ -108,15 +109,18 @@ #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchDeco) > sizeof (ArchDummy)) || (sizeof (ArchDecoDom) > sizeof (ArchDomDummy))) { - errorPrint ("archDecoArchBuild: invalid type specification"); + errorPrint ("archDecoArchBuild2: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ + +/* ,finegrafptr, &coargrafdat, &coarmulttab, 0, 1.0, NULL, NULL, 0, NULL) != 0) { */ + if (memAllocGroup ((void **) (void *) &archptr->domverttab, (size_t) (termdommax * sizeof (ArchDecoVert)), &archptr->domdisttab, (size_t) ((((termdommax * (termdommax - 1)) / 2) + 1) * sizeof (Anum)), NULL) == NULL) { - errorPrint ("archDecoArchBuild: out of memory"); + errorPrint ("archDecoArchBuild2: out of memory"); return (1); } archptr->flagval = ARCHDECOFREE; @@ -132,7 +136,7 @@ for (i = 0; i < termdomnbr; i ++) { /* Set terminal data of all declared terminals */ #ifdef SCOTCH_DEBUG_ARCH1 if (termverttab[i].num > termdommax) { /* If incorrect maximum terminal number */ - errorPrint ("archDecoArchBuild: bad maximum terminal"); + errorPrint ("archDecoArchBuild2: bad maximum terminal"); archDecoArchFree (archptr); return (1); } @@ -155,7 +159,7 @@ } #ifdef SCOTCH_DEBUG_ARCH1 if (archptr->domverttab[0].size != termdomnbr) { /* If incorrect accumulation */ - errorPrint ("archDecoArchBuild: bad terminal count"); + errorPrint ("archDecoArchBuild2: bad terminal count"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ @@ -190,7 +194,7 @@ #ifdef SCOTCH_DEBUG_ARCH1 else { /* If both domain are terminals */ if (archDecoArchDist (archptr, i, j) == 0) { /* Distance value must be greater than zero */ - errorPrint ("archDecoArchBuild: invalid null distance"); + errorPrint ("archDecoArchBuild2: invalid null distance"); archDecoArchFree (archptr); return (1); } @@ -216,7 +220,7 @@ ArchDeco * restrict const archptr, FILE * restrict const stream) { - INT decotype; /* Type of decomposition */ + INT typeval; /* Type of decomposition */ INT termdomnbr; /* Number of terminal domains (ie processors) */ INT termdommax; /* Maximum domain number given to a terminal domain */ ArchDecoTermVert * restrict termverttab; /* Table of terminal vertex data */ @@ -231,18 +235,27 @@ } #endif /* SCOTCH_DEBUG_ARCH1 */ - if ((intLoad (stream, &decotype) != 1) || /* Read header */ - (intLoad (stream, &termdomnbr) != 1) || + if ((intLoad (stream, &typeval) != 1) || /* Read decomposition type */ + (typeval < 0) || + (typeval > 2)) { + errorPrint ("archDecoArchLoad: bad input (1)"); + return (1); + } + + if (typeval == 2) { /* If type-2 decomposition */ + archArch (archptr)->class = archClass2 ("deco", 1); /* Switch class for future routines */ + return (archDeco2ArchLoad2 ((ArchDeco2 *) archptr, stream)); /* Call subclass loading routine */ + } + + if ((intLoad (stream, &termdomnbr) != 1) || /* Proceed with type-0 and type-1 architectures */ (intLoad (stream, &termdommax) != 1) || - (decotype < 0) || - (decotype > 1) || (termdommax < termdomnbr) || (termdomnbr < 1)) { - errorPrint ("archDecoArchLoad: bad input (1)"); + errorPrint ("archDecoArchLoad: bad input (2)"); return (1); } - if (decotype == 0) { /* If raw decomposition */ + if (typeval == 0) { /* If raw decomposition */ if (memAllocGroup ((void **) (void *) &termverttab, (size_t) (termdomnbr * sizeof (ArchDecoTermVert)), &termdisttab, (size_t) ((((termdommax * (termdommax - 1)) / 2) + 1) * sizeof (Anum)), NULL) == NULL) { @@ -260,7 +273,7 @@ (intLoad (stream, &termvertnum) != 1) || (termvertnum < 1) || (termvertnum > termdommax)) { - errorPrint ("archDecoArchLoad: bad input (2)"); + errorPrint ("archDecoArchLoad: bad input (3)"); memFree (termverttab); /* Free group leader */ return (1); } @@ -274,14 +287,14 @@ if ((intLoad (stream, &termdistval) != 1) || (termdistval < 1)) { - errorPrint ("archDecoArchLoad: bad input (3)"); + errorPrint ("archDecoArchLoad: bad input (4)"); memFree (termverttab); /* Free group leader */ return (1); } termdisttab[i] = (Anum) termdistval; } - archDecoArchBuild (archptr, termdomnbr, termdommax, termverttab, termdisttab); + archDecoArchBuild2 (archptr, termdomnbr, termdommax, termverttab, termdisttab); memFree (termverttab); /* Free group leader */ } @@ -304,7 +317,7 @@ if ((intLoad (stream, &domvertlabl) != 1) || (intLoad (stream, &domvertsize) != 1) || (intLoad (stream, &domvertwght) != 1)) { - errorPrint ("archDecoArchLoad: bad input (4)"); + errorPrint ("archDecoArchLoad: bad input (5)"); archDecoArchFree (archptr); return (1); } @@ -317,7 +330,7 @@ INT domdistval; if (intLoad (stream, &domdistval) != 1) { - errorPrint ("archDecoArchLoad: bad input (5)"); + errorPrint ("archDecoArchLoad: bad input (6)"); archDecoArchFree (archptr); return (1); } @@ -408,6 +421,11 @@ } } + if (fprintf (stream, "\n") == EOF) { + errorPrint ("archDecoArchSave: bad output (4)"); + return (1); + } + return (0); } @@ -598,7 +616,7 @@ Anum dom1num; for (dom1num = dom1ptr->num, dom0num = dom0ptr->num; dom1num != 0; dom1num >>= 1) - if (dom1num == dom0ptr->num) + if (dom1num == dom0num) return (1); return (0); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_deco.h scotch-6.0.6/src/libscotch/arch_deco.h --- scotch-6.0.4.dfsg1/src/libscotch/arch_deco.h 2014-07-01 13:14:45.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_deco.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2011,2014-2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -60,8 +60,8 @@ /** to 14 jun 2004 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 27 sep 2008 **/ -/** # Version 6.0 : from : 14 fev 2011 **/ -/** to 01 jul 2014 **/ +/** # Version 6.0 : from : 14 feb 2011 **/ +/** to 28 may 2018 **/ /** **/ /************************************************************/ @@ -110,6 +110,10 @@ Anum num; /*+ Domain number in the decomposition +*/ } ArchDecoDom; +typedef struct ArchDecoMatch_ { + Anum num; /*+ Domain number in the decomposition +*/ +} ArchDecoMatch; + #endif /* ARCH_DECO_H_STRUCT */ /* @@ -120,14 +124,15 @@ #ifndef ARCH_DECO_H_PROTO #define ARCH_DECO_H_PROTO -#ifndef ARCH_DECO -#define static -#endif - -int archDecoArchBuild (ArchDeco * const, const Anum, const Anum, const ArchDecoTermVert * const, const Anum * const); +int archDecoArchBuild2 (ArchDeco * const, const Anum, const Anum, const ArchDecoTermVert * const, const Anum * const); int archDecoArchLoad (ArchDeco * const, FILE * restrict const); int archDecoArchSave (const ArchDeco * const, FILE * restrict const); int archDecoArchFree (ArchDeco * const); + +#define archDecoMatchInit NULL +#define archDecoMatchExit NULL +#define archDecoMatchMate NULL + Anum archDecoArchSize (ArchDeco * const, const Anum); Anum archDecoArchDist (ArchDeco * const, const Anum, const Anum); Anum archDecoArchDistE (ArchDeco * const, const Anum, const Anum); @@ -145,8 +150,6 @@ int archDecoDomMpiType (const ArchDeco * const, MPI_Datatype * const); #endif /* SCOTCH_PTSCOTCH */ -#undef static - /* ** The macro definitions. */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_dist.c scotch-6.0.6/src/libscotch/arch_dist.c --- scotch-6.0.4.dfsg1/src/libscotch/arch_dist.c 2014-07-01 18:51:43.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_dist.c 2018-07-14 15:24:49.000000000 +0000 @@ -43,7 +43,7 @@ /** to handle floating-point migration **/ /** costs. **/ /** **/ -/** DATES : # Version 6.0 : from : 14 fev 2011 **/ +/** DATES : # Version 6.0 : from : 14 feb 2011 **/ /** to : 30 jun 2014 **/ /** **/ /************************************************************/ @@ -125,9 +125,8 @@ return (archSave (archptr->archptr, stream)); /* Save sub-architecture */ } -/* This routine build the -** distance graph architecture of -** an original one. +/* This routine builds the distance graph +** architecture of an original architecture. ** It returns: ** - 0 : if the architecture has been successfully built. ** - !0 : on error. diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_dist.h scotch-6.0.6/src/libscotch/arch_dist.h --- scotch-6.0.4.dfsg1/src/libscotch/arch_dist.h 2015-03-13 17:13:36.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_dist.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2011,2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2011,2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,8 +42,8 @@ /** tioning routines to handle floating- **/ /** point migration costs. **/ /** **/ -/** DATES : # Version 6.0 : from : 14 fev 2011 **/ -/** to : 01 jul 2014 **/ +/** DATES : # Version 6.0 : from : 14 feb 2011 **/ +/** to : 28 may 2018 **/ /** **/ /************************************************************/ @@ -73,13 +73,14 @@ #ifndef ARCH_DIST_H_PROTO #define ARCH_DIST_H_PROTO -#ifndef ARCH_DIST -#define static -#endif - int archDistArchLoad (ArchDist * restrict const, FILE * restrict const); int archDistArchSave (const ArchDist * const, FILE * restrict const); -#define archDistArchFree NULL +#define archDistArchFree NULL + +#define archDistMatchInit NULL +#define archDistMatchExit NULL +#define archDistMatchMate NULL + int archDistArchBuild (struct Arch_ * const, struct Arch_ * const, const Anum); ArchDomNum archDistDomNum (const ArchDist * const, const ArchDom * const); int archDistDomTerm (const ArchDist * const, ArchDom * restrict const, const ArchDomNum); @@ -95,7 +96,5 @@ int archDistDomMpiType (const ArchDist * const, MPI_Datatype * const); #endif /* SCOTCH_PTSCOTCH */ -#undef static - #endif /* ARCH_DIST_H_PROTO */ #endif /* ARCH_NOPROTO */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch.h scotch-6.0.6/src/libscotch/arch.h --- scotch-6.0.4.dfsg1/src/libscotch/arch.h 2014-09-14 12:29:51.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007-2011,2013,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007-2011,2013-2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -64,8 +64,8 @@ /** to 07 dec 2004 **/ /** # Version 5.1 : from : 11 dec 2007 **/ /** to 11 aug 2010 **/ -/** # Version 6.0 : from : 14 fev 2011 **/ -/** to 01 aug 2014 **/ +/** # Version 6.0 : from : 14 feb 2011 **/ +/** to 28 may 2018 **/ /** **/ /************************************************************/ @@ -77,15 +77,19 @@ /*+ Architecture flags. +*/ -#define ARCHNONE 0x0000 /*+ No options set +*/ -#define ARCHPART 0x0001 /*+ Architecture without external gains +*/ -#define ARCHVAR 0x0002 /*+ Variable-sized architecture +*/ +#define ARCHNONE 0x0000 /*+ No options set +*/ +#define ARCHPART 0x0001 /*+ Architecture without external gains +*/ +#define ARCHVAR 0x0002 /*+ Variable-sized architecture +*/ +#define ARCHFREE 0x0004 /*+ Architecture contents must be freed on exit +*/ + +#define ARCHBITSUSED 0x0007 /* Significant bits for plain arch routines */ +#define ARCHBITSNOTUSED 0x0008 /* Value above which bits not used by plain arch routines */ /* ** The type and structure definitions. */ -typedef INT Anum; /*+ Generic integer +*/ +typedef INT Anum; /*+ Generic integer for architectures +*/ #define ANUMMAX INTVALMAX #define ANUMSTRING INTSTRING @@ -97,16 +101,27 @@ #define ARCHDOMNOTTERM ((ArchDomNum) ~0) /*+ Not-terminal number +*/ +/*+ The architecture multinode element, + used for architecture coarsening. + It is equivalent to the + GraphCoarsenMulti structure. +*/ + +typedef struct ArchCoarsenMulti_ { + Anum vertnum[2]; /*+ Numbers of the collapsed vertices of a multinode +*/ +} ArchCoarsenMulti; + /*+ The sub-includes for structure size computations. +*/ #define ARCH_NOPROTO #include "arch_cmplt.h" #include "arch_cmpltw.h" #include "arch_deco.h" +#include "arch_deco2.h" #include "arch_dist.h" #include "arch_hcub.h" #include "arch_tleaf.h" #include "arch_mesh.h" +#include "arch_sub.h" #include "arch_torus.h" #include "arch_vcmplt.h" #include "arch_vhcub.h" @@ -115,41 +130,44 @@ /*+ The architecture class type. +*/ typedef struct ArchClass_ { - char * archname; /*+ Architecture name +*/ - int flagval; /*+ Architecture flags of the class +*/ - int (* archLoad) (); /*+ Architecture loading function +*/ - int (* archSave) (); /*+ Architecture saving function +*/ - int (* archFree) (); /*+ Architecture freeing function +*/ - ArchDomNum (* domNum) (); /*+ Domain labeling function +*/ - int (* domTerm) (); /*+ Terminal domain building function +*/ - Anum (* domSize) (); /*+ Domain size function +*/ - Anum (* domWght) (); /*+ Domain weight function +*/ - Anum (* domDist) (); /*+ Distance computation function +*/ - int (* domFrst) (); /*+ Compute biggest domain +*/ - int (* domLoad) (); /*+ Domain loading routine +*/ - int (* domSave) (); /*+ Domain saving routine +*/ - int (* domBipart) (); /*+ Domain bipartitioning routine +*/ - int (* domIncl) (); /*+ Domain inclusion routine +*/ + char * archname; /*+ Architecture name +*/ + int flagval; /*+ Architecture flags of the class +*/ + int (* archLoad) (); /*+ Architecture loading function +*/ + int (* archSave) (); /*+ Architecture saving function +*/ + int (* archFree) (); /*+ Architecture freeing function +*/ + int (* matchInit) (); /*+ Architecture matching init function +*/ + void (* matchExit) (); /*+ Architecture matching exit function +*/ + Anum (* matchMate) (); /*+ Architecture matching function +*/ + ArchDomNum (* domNum) (); /*+ Domain labeling function +*/ + int (* domTerm) (); /*+ Terminal domain building function +*/ + Anum (* domSize) (); /*+ Domain size function +*/ + Anum (* domWght) (); /*+ Domain weight function +*/ + Anum (* domDist) (); /*+ Distance computation function +*/ + int (* domFrst) (); /*+ Compute biggest domain +*/ + int (* domLoad) (); /*+ Domain loading routine +*/ + int (* domSave) (); /*+ Domain saving routine +*/ + int (* domBipart) (); /*+ Domain bipartitioning routine +*/ + int (* domIncl) (); /*+ Domain inclusion routine +*/ #ifdef SCOTCH_PTSCOTCH - int (* domMpiType) (); /*+ Domain MPI type building routine +*/ + int (* domMpiType) (); /*+ Domain MPI type building routine +*/ #endif /* SCOTCH_PTSCOTCH */ - int domsizeof; /*+ Size in bytes of domain data +*/ + int domsizeof; /*+ Size in bytes of domain data +*/ } ArchClass; /*+ The architecture union type. +*/ -typedef union { /*+ Architecture data +*/ - ArchCmplt cmplt; /*+ Complete graph architecture +*/ - ArchCmpltw cmpltw; /*+ Weighted complete graph architecture +*/ - ArchDeco deco; /*+ Decomposition-described architecture +*/ - ArchDist dist; /*+ Distance multiplicator pseudo-architecture +*/ - ArchHcub hcub; /*+ Hypercube architecture +*/ - ArchMesh2 mesh2; /*+ 2D-mesh architecture +*/ - ArchMesh3 mesh3; /*+ 3D-mesh architecture +*/ - ArchTleaf tleaf; /*+ Tree-leaf architecture +*/ - ArchTorusX torusx; /*+ xD-torus architecture (includes 2D and 3D) +*/ - ArchVcmplt vcmplt; /*+ Variable-sized complete graph architecture +*/ - ArchVhcub vhcub; /*+ Variable-sized hypercube architecture +*/ +typedef union { /*+ Architecture data +*/ + ArchCmplt cmplt; /*+ Complete graph architecture +*/ + ArchCmpltw cmpltw; /*+ Weighted complete graph architecture +*/ + ArchDeco deco; /*+ Type-1 decomposition-described architecture +*/ + ArchDeco2 deco2; /*+ Type-2 decomposition-described architecture +*/ + ArchDist dist; /*+ Distance multiplicator pseudo-architecture +*/ + ArchHcub hcub; /*+ Hypercube architecture +*/ + ArchMeshX meshx; /*+ xD-mesh architecture (includes 2D and 3D) +*/ + ArchSub sub; /*+ Sub-architecture meta-architecture +*/ + ArchTleaf tleaf; /*+ Tree-leaf architecture +*/ + ArchVcmplt vcmplt; /*+ Variable-sized complete graph architecture +*/ + ArchVhcub vhcub; /*+ Variable-sized hypercube architecture +*/ } ArchDummy; /*+ The architecture type. +*/ @@ -163,17 +181,17 @@ /*+ The architecture domain union type. +*/ typedef union { /*+ The domain data +*/ - ArchCmpltDom cmplt; /*+ Complete graph domain type +*/ - ArchCmpltwDom cmpltw; /*+ Weighted complete graph domain type +*/ - ArchDecoDom deco; /*+ Decomposition-descripted domain type +*/ + ArchCmpltDom cmplt; /*+ Complete graph domain +*/ + ArchCmpltwDom cmpltw; /*+ Weighted complete graph domain +*/ + ArchDecoDom deco; /*+ Type-1 decomposition-described domain +*/ + ArchDeco2Dom deco2; /*+ Type-2 decomposition-described domain +*/ /*+ ArchDistDom dist; *+ Distance multiplicator domain is ArchDom +*/ - ArchHcubDom hcub; /*+ Hypercube domain type +*/ - ArchMesh2Dom mesh2; /*+ 2D-mesh domain type +*/ - ArchMesh3Dom mesh3; /*+ 3D-mesh domain type +*/ - ArchTleafDom tleaf; /*+ Tree-leaf domain type +*/ - ArchTorusXDom torusx; /*+ xD-torus domain type (includes 2D and 3D) +*/ - ArchVcmpltDom vcmplt; /*+ Variable-sized complete graph domain type +*/ - ArchVhcubDom vhcub; /*+ Variable-sized hypercube domain type +*/ + ArchHcubDom hcub; /*+ Hypercube domain +*/ + ArchMeshXDom meshx; /*+ xD-mesh domain +*/ + ArchSubDom sub; /*+ Sub-architecture meta-architecture +*/ + ArchTleafDom tleaf; /*+ Tree-leaf domain +*/ + ArchVcmpltDom vcmplt; /*+ Variable-sized complete graph domain +*/ + ArchVhcubDom vhcub; /*+ Variable-sized hypercube domain +*/ } ArchDomDummy; /*+ The domain structure type. +*/ @@ -182,14 +200,29 @@ ArchDomDummy data; /*+ The domain data +*/ } ArchDom; +/*+ The architecture match union type. +*/ + +typedef union { /*+ Architecture data +*/ + ArchCmpltMatch cmplt; /*+ Complete graph architecture +*/ +/* ArchMatchCmpltw cmpltw; *+ Weighted complete graph architecture +*/ + ArchDecoMatch deco; /*+ Type-1 decomposition-described architecture +*/ +/* ArchMatchDist dist; *+ Distance multiplicator pseudo-architecture +*/ + ArchHcubMatch hcub; /*+ Hypercube architecture +*/ + ArchMeshXMatch meshx; /*+ xD-mesh architecture +*/ + ArchSubMatch sub; /*+ Sub-architecture meta-architecture +*/ + ArchTleafMatch tleaf; /*+ Tree-leaf architecture +*/ +} ArchMatchDummy; + +/*+ The architecture type. +*/ + +typedef struct ArchMatch_ { + ArchMatchDummy data; /*+ Architecture matching data +*/ +} ArchMatch; + /* ** The function prototypes. */ -#ifndef ARCH -#define static -#endif - int archInit (Arch * restrict const); int archExit (Arch * restrict const); int archFree (Arch * restrict const); @@ -197,6 +230,7 @@ int archSave (const Arch * const, FILE * const); char * archName (const Arch * const); const ArchClass * archClass (const char * const); +const ArchClass * archClass2 (const char * const, const int); ArchDomNum archDomNum (const Arch * const, const ArchDom * const); int archDomTerm (const Arch * const, ArchDom * const, const ArchDomNum); @@ -212,8 +246,6 @@ int archDomMpiType (const Arch * const, MPI_Datatype * const); #endif /* SCOTCH_PTSCOTCH */ -#undef static - /* ** The macro definitions. */ @@ -222,6 +254,7 @@ #define archName(a) (((a)->class == NULL) ? "" : (a)->class->archname) #define archPart(a) ((((a)->flagval) & ARCHPART) != 0) #define archVar(a) ((((a)->flagval) & ARCHVAR) != 0) +#define archArch(a) ((Arch *) ((char *) (a) - ((char *) (&(((Arch *) (NULL))->data)) - (char *) (NULL)))) #if ((! defined SCOTCH_DEBUG_ARCH2) || (defined ARCH)) #define archDomNum2(arch,dom) (((ArchDomNum (*) (const void * const, const void * const)) (arch)->class->domNum) ((const void * const) &(arch)->data, (const void * const) &(dom)->data)) @@ -249,7 +282,10 @@ arch##n##ArchLoad, \ arch##n##ArchSave, \ arch##n##ArchFree, \ - arch##n##DomNum, \ + arch##n##MatchInit, \ + arch##n##MatchExit, \ + arch##n##MatchMate, \ + arch##n##ArchLoad, \ arch##n##DomTerm, \ arch##n##DomSize, \ arch##n##DomWght, \ @@ -266,6 +302,9 @@ arch##n##ArchLoad, \ arch##n##ArchSave, \ arch##n##ArchFree, \ + arch##n##MatchInit, \ + arch##n##MatchExit, \ + arch##n##MatchMate, \ arch##n##DomNum, \ arch##n##DomTerm, \ arch##n##DomSize, \ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_hcub.c scotch-6.0.6/src/libscotch/arch_hcub.c --- scotch-6.0.4.dfsg1/src/libscotch/arch_hcub.c 2014-07-01 16:02:54.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_hcub.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2011 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2011,2015 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -59,8 +59,8 @@ /** to 10 mar 2005 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 11 aug 2010 **/ -/** # Version 6.0 : from : 14 fev 2011 **/ -/** to 14 fev 2011 **/ +/** # Version 6.0 : from : 14 feb 2011 **/ +/** to 02 may 2015 **/ /** **/ /************************************************************/ @@ -101,9 +101,9 @@ } #endif /* SCOTCH_DEBUG_ARCH1 */ - if ((intLoad (stream, &archptr->dimmax) != 1) || - (archptr->dimmax < 1) || - (archptr->dimmax > (sizeof (archptr->dimmax) << 3))) { + if ((intLoad (stream, &archptr->dimnnbr) != 1) || + (archptr->dimnnbr < 1) || + (archptr->dimnnbr > (sizeof (archptr->dimnnbr) << 3))) { errorPrint ("archHcubArchLoad: bad input"); return (1); } @@ -131,7 +131,7 @@ } #endif /* SCOTCH_DEBUG_ARCH1 */ - if (fprintf (stream, ANUMSTRING " ", (Anum) archptr->dimmax) == EOF) { + if (fprintf (stream, ANUMSTRING "\n", (Anum) archptr->dimnnbr) == EOF) { errorPrint ("archHcubArchSave: bad output"); return (1); } @@ -139,6 +139,79 @@ return (0); } +/* This routine initializes the matching +** data structure according to the number +** of vertices to be managed. +** It returns: +** - 0 : if the data structure has been +** successfully initialized. +** - !0 : on error. +*/ + +int +archHcubMatchInit ( +ArchHcubMatch * restrict const matcptr, +const ArchHcub * restrict const archptr) +{ + Anum vertnbr; + + vertnbr = 1 << archptr->dimnnbr; + if ((matcptr->multtab = memAlloc ((vertnbr >> 1) * sizeof (ArchCoarsenMulti))) == NULL) { /* Multinodes are half the number of vertices */ + errorPrint ("archHcubMatchInit: out of memory"); + return (1); + } + + matcptr->vertnbr = vertnbr; + + return (0); +} + +/* This routine frees the matching data +** structure. +** It returns: +** - void : in all cases. +*/ + +void +archHcubMatchExit ( +ArchHcubMatch * restrict const matcptr) +{ + memFree (matcptr->multtab); +} + +/* This routine computes a matching from +** the current state of the matching structure. +** It returns: +** - >=0 : size of matching. +** - <0 : on error. +*/ + +Anum +archHcubMatchMate ( +ArchHcubMatch * restrict const matcptr, +ArchCoarsenMulti ** restrict const multptr) +{ + ArchCoarsenMulti * restrict coarmulttab; + Anum coarvertnbr; + Anum coarvertnum; + Anum finevertnum; + + coarvertnbr = matcptr->vertnbr >> 1; + if (coarvertnbr <= 0) + return (-1); + + coarmulttab = matcptr->multtab; + for (coarvertnum = finevertnum = 0; coarvertnum < coarvertnbr; coarvertnum ++) { + coarmulttab[coarvertnum].vertnum[0] = finevertnum ++; /* Dimensional splatting */ + coarmulttab[coarvertnum].vertnum[1] = finevertnum ++; + } + matcptr->vertnbr = coarvertnbr; /* Prepare for next mating */ + + *multptr = coarmulttab; /* Always provide same mating array */ + + return (coarvertnbr); +} + /* This function returns the smallest number ** of terminal domain included in the given ** domain. @@ -147,9 +220,9 @@ ArchDomNum archHcubDomNum ( const ArchHcub * const archptr, -const ArchHcubDom * const domptr) +const ArchHcubDom * const domnptr) { - return (domptr->bitset); /* Return vertex number */ + return (domnptr->bitsset); /* Return vertex number */ } /* This function returns the terminal domain associated @@ -163,12 +236,12 @@ int archHcubDomTerm ( const ArchHcub * const archptr, -ArchHcubDom * const domptr, -const ArchDomNum domnum) +ArchHcubDom * const domnptr, +const ArchDomNum domnnum) { - if (domnum < (1 << archptr->dimmax)) { /* If valid label */ - domptr->dimcur = 0; /* Set the domain */ - domptr->bitset = domnum; + if (domnnum < (1 << archptr->dimnnbr)) { /* If valid label */ + domnptr->dimncur = 0; /* Set the domain */ + domnptr->bitsset = domnnum; return (0); } @@ -183,9 +256,9 @@ Anum archHcubDomSize ( const ArchHcub * const archptr, -const ArchHcubDom * const domptr) +const ArchHcubDom * const domnptr) { - return (1 << domptr->dimcur); + return (1 << domnptr->dimncur); } /* This function returns the average distance @@ -200,17 +273,17 @@ { Anum i, j, k; - if (dom0ptr->dimcur > dom1ptr->dimcur) { /* Get smallest set dimension value */ - i = dom0ptr->dimcur; - j = i - dom1ptr->dimcur; + if (dom0ptr->dimncur > dom1ptr->dimncur) { /* Get smallest set dimension value */ + i = dom0ptr->dimncur; + j = i - dom1ptr->dimncur; } else { - i = dom1ptr->dimcur; - j = i - dom0ptr->dimcur; + i = dom1ptr->dimncur; + j = i - dom0ptr->dimncur; } j /= 2; /* For set/unset bits, assume 1/2 difference */ - for (k = (dom0ptr->bitset ^ dom1ptr->bitset) >> i, i = archptr->dimmax - i; + for (k = (dom0ptr->bitsset ^ dom1ptr->bitsset) >> i, i = archptr->dimnnbr - i; i > 0; k >>= 1, i --) j += (k & 1); /* Add Hamming difference on set dimensions */ @@ -229,10 +302,10 @@ int archHcubDomFrst ( const ArchHcub * const archptr, -ArchHcubDom * restrict const domptr) +ArchHcubDom * restrict const domnptr) { - domptr->dimcur = archptr->dimmax; - domptr->bitset = 0; + domnptr->dimncur = archptr->dimnnbr; + domnptr->bitsset = 0; return (0); } @@ -247,12 +320,12 @@ int archHcubDomLoad ( const ArchHcub * const archptr, -ArchHcubDom * restrict const domptr, +ArchHcubDom * restrict const domnptr, FILE * restrict const stream) { - if ((intLoad (stream, &domptr->dimcur) != 1) || - (intLoad (stream, &domptr->bitset) != 1) || - (domptr->dimcur > archptr->dimmax)) { + if ((intLoad (stream, &domnptr->dimncur) != 1) || + (intLoad (stream, &domnptr->bitsset) != 1) || + (domnptr->dimncur > archptr->dimnnbr)) { errorPrint ("archHcubDomLoad: bad input"); return (1); } @@ -270,12 +343,12 @@ int archHcubDomSave ( const ArchHcub * const archptr, -const ArchHcubDom * const domptr, +const ArchHcubDom * const domnptr, FILE * restrict const stream) { if (fprintf (stream, ANUMSTRING " " ANUMSTRING " ", - (Anum) domptr->dimcur, - (Anum) domptr->bitset) == EOF) { + (Anum) domnptr->dimncur, + (Anum) domnptr->bitsset) == EOF) { errorPrint ("archHcubDomSave: bad output"); return (1); } @@ -294,17 +367,17 @@ int archHcubDomBipart ( const ArchHcub * const archptr, -const ArchHcubDom * const domptr, +const ArchHcubDom * const domnptr, ArchHcubDom * restrict const dom0ptr, ArchHcubDom * restrict const dom1ptr) { - if (domptr->dimcur <= 0) /* Return if cannot bipartition more */ + if (domnptr->dimncur <= 0) /* Return if cannot bipartition more */ return (1); - dom0ptr->dimcur = - dom1ptr->dimcur = domptr->dimcur - 1; - dom0ptr->bitset = domptr->bitset; - dom1ptr->bitset = domptr->bitset | (1 << dom1ptr->dimcur); + dom0ptr->dimncur = + dom1ptr->dimncur = domnptr->dimncur - 1; + dom0ptr->bitsset = domnptr->bitsset; + dom1ptr->bitsset = domnptr->bitsset | (1 << dom1ptr->dimncur); return (0); } @@ -323,8 +396,8 @@ const ArchHcubDom * const dom0ptr, const ArchHcubDom * const dom1ptr) { - if ((dom0ptr->dimcur >= dom1ptr->dimcur) && - (((dom0ptr->bitset ^ dom1ptr->bitset) >> dom0ptr->dimcur) == 0)) + if ((dom0ptr->dimncur >= dom1ptr->dimncur) && + (((dom0ptr->bitsset ^ dom1ptr->bitsset) >> dom0ptr->dimncur) == 0)) return (1); return (0); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_hcub.h scotch-6.0.6/src/libscotch/arch_hcub.h --- scotch-6.0.4.dfsg1/src/libscotch/arch_hcub.h 2014-07-01 13:18:04.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_hcub.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2011,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -59,8 +59,8 @@ /** to 11 nov 2003 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 21 jan 2008 **/ -/** # Version 6.0 : from : 14 fev 2011 **/ -/** to 01 jul 2014 **/ +/** # Version 6.0 : from : 14 feb 2011 **/ +/** to 28 may 2018 **/ /** **/ /************************************************************/ @@ -74,14 +74,19 @@ /*+ The binary hypercube definitions. +*/ typedef struct ArchHcub_ { - Anum dimmax; /*+ Number of hypercube dimensions +*/ + Anum dimnnbr; /*+ Number of hypercube dimensions +*/ } ArchHcub; typedef struct ArchHcubDom_ { - Anum dimcur; /*+ Current dimension to be set +*/ - Anum bitset; /*+ Bit set of set dimensions +*/ + Anum dimncur; /*+ Current dimension to be set +*/ + Anum bitsset; /*+ Bit set of set dimensions +*/ } ArchHcubDom; +typedef struct ArchHcubMatch_ { + ArchCoarsenMulti * multtab; /*+ Multinode array for all coarsenings +*/ + Anum vertnbr; /*+ Number of vertices in fine graph +*/ +} ArchHcubMatch; + #endif /* ARCH_HCUB_H_STRUCT */ /* @@ -92,13 +97,14 @@ #ifndef ARCH_HCUB_H_PROTO #define ARCH_HCUB_H_PROTO -#ifndef ARCH_HCUB -#define static -#endif - int archHcubArchLoad (ArchHcub * restrict const, FILE * restrict const); int archHcubArchSave (const ArchHcub * const, FILE * restrict const); #define archHcubArchFree NULL + +int archHcubMatchInit (ArchHcubMatch * restrict const, const ArchHcub * restrict const); +void archHcubMatchExit (ArchHcubMatch * restrict const); +Anum archHcubMatchMate (ArchHcubMatch * restrict const, ArchCoarsenMulti ** restrict const); + ArchDomNum archHcubDomNum (const ArchHcub * const, const ArchHcubDom * const); int archHcubDomTerm (const ArchHcub * const, ArchHcubDom * restrict const, const ArchDomNum); Anum archHcubDomSize (const ArchHcub * const, const ArchHcubDom * const); @@ -113,7 +119,5 @@ int archHcubDomMpiType (const ArchHcub * const, MPI_Datatype * const); #endif /* SCOTCH_PTSCOTCH */ -#undef static - #endif /* ARCH_HCUB_H_PROTO */ #endif /* ARCH_NOPROTO */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_mesh.c scotch-6.0.6/src/libscotch/arch_mesh.c --- scotch-6.0.4.dfsg1/src/libscotch/arch_mesh.c 2014-07-01 16:00:28.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_mesh.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010,2011 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2008,2010,2011,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -61,14 +61,18 @@ /** to 10 mar 2005 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 11 aug 2010 **/ -/** # Version 6.0 : from : 14 fev 2011 **/ -/** to 14 fev 2011 **/ +/** # Version 6.0 : from : 14 feb 2011 **/ +/** to 15 may 2018 **/ /** **/ /** NOTES : # The vertices of the (dX,dY) mesh are **/ /** numbered as terminals so that **/ /** t(0,0) = 0, t(1,0) = 1, **/ /** t(dX - 1, 0) = dX - 1, t(0,1) = dX, **/ /** and t(x,y) = (y * dX) + x. **/ +/** The same holds for meshes of higher **/ +/** dimensions: index increases in higher **/ +/** dimensions result in higher terminal **/ +/** domain numbers. **/ /** **/ /************************************************************/ @@ -115,6 +119,7 @@ errorPrint ("archMesh2ArchLoad: bad input"); return (1); } + archptr->dimnnbr = 2; return (0); } @@ -139,7 +144,7 @@ } #endif /* SCOTCH_DEBUG_ARCH1 */ - if (fprintf (stream, ANUMSTRING " " ANUMSTRING " ", + if (fprintf (stream, ANUMSTRING " " ANUMSTRING "\n", (Anum) archptr->c[0], (Anum) archptr->c[1]) == EOF) { errorPrint ("archMesh2ArchSave: bad output"); @@ -219,73 +224,6 @@ dom1ptr->c[1][0] - dom1ptr->c[1][1]) + 1) / 2)); } -/* This function sets the biggest -** domain available for this -** architecture. -** It returns: -** - 0 : on success. -** - !0 : on error. -*/ - -int -archMesh2DomFrst ( -const ArchMesh2 * const archptr, -ArchMesh2Dom * restrict const domptr) -{ - domptr->c[0][0] = - domptr->c[1][0] = 0; - domptr->c[0][1] = archptr->c[0] - 1; - domptr->c[1][1] = archptr->c[1] - 1; - - return (0); -} - -/* This routine reads domain information -** from the given stream. -** It returns: -** - 0 : on success. -** - !0 : on error. -*/ - -int -archMesh2DomLoad ( -const ArchMesh2 * const archptr, -ArchMesh2Dom * restrict const domptr, -FILE * restrict const stream) -{ - if ((intLoad (stream, &domptr->c[0][0]) != 1) || - (intLoad (stream, &domptr->c[1][0]) != 1) || - (intLoad (stream, &domptr->c[0][1]) != 1) || - (intLoad (stream, &domptr->c[1][1]) != 1)) { - errorPrint ("archMesh2DomLoad: bad input"); - return (1); - } - - return (0); -} - -/* This routine saves domain information -** to the given stream. -** - 0 : on success. -** - !0 : on error. -*/ - -int -archMesh2DomSave ( -const ArchMesh2 * const archptr, -const ArchMesh2Dom * const domptr, -FILE * restrict const stream) -{ - if (fprintf (stream, ANUMSTRING " " ANUMSTRING " " ANUMSTRING " " ANUMSTRING " ", - (Anum) domptr->c[0][0], (Anum) domptr->c[1][0], - (Anum) domptr->c[0][1], (Anum) domptr->c[1][1]) == EOF) { - errorPrint ("archMesh2DomSave: bad output"); - return (1); - } - - return (0); -} - /* These functions try to split a rectangular ** domain into two subdomains. ** It returns: @@ -473,6 +411,7 @@ errorPrint ("archMesh3ArchLoad: bad input"); return (1); } + archptr->dimnnbr = 3; return (0); } @@ -497,7 +436,7 @@ } #endif /* SCOTCH_DEBUG_ARCH1 */ - if (fprintf (stream, ANUMSTRING " " ANUMSTRING " " ANUMSTRING " ", + if (fprintf (stream, ANUMSTRING " " ANUMSTRING " " ANUMSTRING "\n", (Anum) archptr->c[0], (Anum) archptr->c[1], (Anum) archptr->c[2]) == EOF) { errorPrint ("archMesh3ArchSave: bad output"); return (1); @@ -582,78 +521,6 @@ dom1ptr->c[2][0] - dom1ptr->c[2][1]) + 1) / 2)); } -/* This function sets the biggest -** domain available for this -** architecture. -** It returns: -** - 0 : on success. -** - !0 : on error. -*/ - -int -archMesh3DomFrst ( -const ArchMesh3 * const archptr, -ArchMesh3Dom * restrict const domptr) -{ - domptr->c[0][0] = - domptr->c[1][0] = - domptr->c[2][0] = 0; - domptr->c[0][1] = archptr->c[0] - 1; - domptr->c[1][1] = archptr->c[1] - 1; - domptr->c[2][1] = archptr->c[2] - 1; - - return (0); -} - -/* This routine reads domain information -** from the given stream. -** It returns: -** - 0 : on success. -** - !0 : on error. -*/ - -int -archMesh3DomLoad ( -const ArchMesh3 * const archptr, -ArchMesh3Dom * restrict const domptr, -FILE * restrict const stream) -{ - if ((intLoad (stream, &domptr->c[0][0]) != 1) || - (intLoad (stream, &domptr->c[1][0]) != 1) || - (intLoad (stream, &domptr->c[2][0]) != 1) || - (intLoad (stream, &domptr->c[0][1]) != 1) || - (intLoad (stream, &domptr->c[1][1]) != 1) || - (intLoad (stream, &domptr->c[2][1]) != 1)) { - errorPrint ("archMesh3DomLoad: bad input"); - return (1); - } - - return (0); -} - -/* This routine saves domain information -** to the given stream. -** It returns: -** - 0 : on success. -** - !0 : on error. -*/ - -int -archMesh3DomSave ( -const ArchMesh3 * const archptr, -const ArchMesh3Dom * const domptr, -FILE * restrict const stream) -{ - if (fprintf (stream, ANUMSTRING " " ANUMSTRING " " ANUMSTRING " " ANUMSTRING " " ANUMSTRING " " ANUMSTRING " ", - (Anum) domptr->c[0][0], (Anum) domptr->c[1][0], (Anum) domptr->c[2][0], - (Anum) domptr->c[0][1], (Anum) domptr->c[1][1], (Anum) domptr->c[2][1]) == EOF) { - errorPrint ("archMesh3DomSave: bad output"); - return (1); - } - - return (0); -} - /* This function tries to split a cubic ** domain into two subdomains. ** It returns: @@ -772,4 +639,501 @@ return (0); } +#endif /* SCOTCH_PTSCOTCH */ + +/**********************************************/ +/* */ +/* These are the x-dimensional mesh routines. */ +/* */ +/**********************************************/ + +/* This routine loads the X-dimensional mesh +** architecture. +** It returns: +** - 0 : if the architecture has been successfully read. +** - !0 : on error. +*/ + +int +archMeshXArchLoad ( +ArchMeshX * restrict const archptr, +FILE * restrict const stream) +{ + Anum dimnnum; + +#ifdef SCOTCH_DEBUG_ARCH1 + if ((sizeof (ArchMeshX) > sizeof (ArchDummy)) || + (sizeof (ArchMeshXDom) > sizeof (ArchDomDummy))) { + errorPrint ("archMeshXArchLoad: invalid type specification"); + return (1); + } +#endif /* SCOTCH_DEBUG_ARCH1 */ + + if ((intLoad (stream, &archptr->dimnnbr) != 1) || + (archptr->dimnnbr > ARCHMESHDIMNMAX)) { + errorPrint ("archMeshXArchLoad: bad input (1)"); + return (1); + } + + for (dimnnum = 0; dimnnum < archptr->dimnnbr; dimnnum ++) { + if ((intLoad (stream, &archptr->c[dimnnum]) != 1) || + (archptr->c[dimnnum] < 1)) { + errorPrint ("archMeshXArchLoad: bad input (2)"); + return (1); + } + } + + return (0); +} + +/* This routine saves the +** tridimensional torus architecture. +** It returns: +** - 0 : if the architecture has been successfully written. +** - !0 : on error. +*/ + +int +archMeshXArchSave ( +const ArchMeshX * const archptr, +FILE * restrict const stream) +{ + Anum dimnnum; + +#ifdef SCOTCH_DEBUG_ARCH1 + if ((sizeof (ArchMeshX) > sizeof (ArchDummy)) || + (sizeof (ArchMeshXDom) > sizeof (ArchDomDummy))) { + errorPrint ("archMeshXArchSave: invalid type specification"); + return (1); + } +#endif /* SCOTCH_DEBUG_ARCH1 */ + + if (fprintf (stream, ANUMSTRING " ", + (Anum) archptr->dimnnbr) == EOF) { + errorPrint ("archMeshXArchSave: bad output (1)"); + return (1); + } + + for (dimnnum = 0; dimnnum < archptr->dimnnbr; dimnnum ++) { + if (fprintf (stream, ANUMSTRING " ", + (Anum) archptr->c[dimnnum]) == EOF) { + errorPrint ("archMeshXArchSave: bad output (2)"); + return (1); + } + } + + if (fprintf (stream, "\n") == EOF) { + errorPrint ("archMeshArchSave: bad output (3)"); + return (1); + } + + return (0); +} + +/* This routine initializes the matching +** data structure according to the number +** of vertices to be managed. +** It returns: +** - 0 : if the data structure has been +** successfully initialized. +** - !0 : on error. +*/ + +int +archMeshXMatchInit ( +ArchMeshXMatch * restrict const matcptr, +const ArchMeshX * restrict const archptr) +{ + Anum dimnnbr; + Anum dimnnum; + Anum multnbr; + + const Anum * restrict const dimntab = archptr->c; + + dimnnbr = archptr->dimnnbr; + multnbr = (dimntab[0] + 1) >> 1; /* In case dimension 0, which will be coarsened first, is odd */ + for (dimnnum = 1; dimnnum < dimnnbr; dimnnum ++) + multnbr *= dimntab[dimnnum]; + + if ((matcptr->multtab = memAlloc (multnbr * sizeof (ArchCoarsenMulti))) == NULL) { + errorPrint ("archMeshXMatchInit: out of memory"); + return (1); + } + + matcptr->dimnnbr = dimnnbr; /* Set number of dimensions */ + matcptr->dimnnum = 0; /* Set first dimension to consider for coarsening */ + memCpy (matcptr->dimntab, dimntab, dimnnbr * sizeof (Anum)); + memSet (matcptr->passtab, 0, dimnnbr * sizeof (int)); + + return (0); +} + +/* This routine frees the matching data +** structure. +** It returns: +** - void : in all cases. +*/ + +void +archMeshXMatchExit ( +ArchMeshXMatch * restrict const matcptr) +{ + memFree (matcptr->multtab); +} + +/* This routine computes a matching from +** the current state of the matching structure. +** It returns: +** - >=0 : size of matching. +** - <0 : on error. +*/ + +Anum +archMeshXMatchMate ( +ArchMeshXMatch * restrict const matcptr, +ArchCoarsenMulti ** restrict const multptr) +{ + ArchCoarsenMulti * restrict coarmulttab; + Anum coarvertnum; + Anum finevertnbr; + Anum finevertnum; + Anum finevertdlt; /* Span of blocks of fine vertices that have same characteristics */ + Anum fineverttmp; /* Next fine vertex index that will result in change in dimension index */ + Anum * restrict dimntab; /* Array of mesh dimensions */ + Anum dimnnbr; + Anum dimntmp; + Anum dimnnum; /* Number of dimension that will be coarsened */ + Anum indxnbr; /* NUmber of fine indices in coarsened dimension */ + Anum indxnum; /* Current fine vertex index in coarsened dimension */ + Anum indxval; /* Value of dimension index that will hold single nodes */ + int passnum; /* Flag that indicates whether even or odd dimension indices are matched */ + + dimnnbr = matcptr->dimnnbr; + dimntab = matcptr->dimntab; + for (dimnnum = matcptr->dimnnum, dimntmp = (dimnnum + dimnnbr - 1) % dimnnbr; /* Search for a dimension to coarsen */ + dimntab[dimnnum] <= 1; dimnnum = (dimnnum + 1) % dimnnbr) { + if (dimnnum == dimntmp) /* If no dimension can be coarsened, abort */ + return (-1); + } + matcptr->dimnnum = (dimnnum + 1) % dimnnbr; /* Record next dimension to process */ + + for (dimntmp = 0, finevertdlt = 1; /* Compute stride of blocks of fine vertices to be coarsened according to selected dimension */ + dimntmp < dimnnum; dimntmp ++) + finevertdlt *= dimntab[dimntmp]; + for (finevertnbr = finevertdlt; /* Compute number of fine vertices */ + dimntmp < dimnnbr; dimntmp ++) + finevertnbr *= dimntab[dimntmp]; + + indxnbr = dimntab[dimnnum]; /* Get size of selected dimension */ + dimntab[dimnnum] = (indxnbr + 1) >> 1; /* Record new size of selected dimension */ + if ((indxnbr & 1) != 0) { /* If dimension to consider is odd */ + passnum = matcptr->passtab[dimnnum] ^= 1; /* Record that pass did matter for this dimension */ + indxval = (passnum != 0) ? 0 : indxnbr - 1; /* Set index that will contain single nodes */ + } + else { + passnum = 0; /* Start multinodes from first index */ + indxval = -1; /* No need to have single nodes */ + } + + coarmulttab = matcptr->multtab; + for (finevertnum = coarvertnum = indxnum = 0, fineverttmp = finevertdlt - 1; + finevertnum < finevertnbr; finevertnum ++) { + if (indxnum == indxval) { /* If dimension index is that of single nodes */ + coarmulttab[coarvertnum].vertnum[0] = /* Create single node */ + coarmulttab[coarvertnum].vertnum[1] = finevertnum; + coarvertnum ++; + } + else if ((indxnum & 1) == passnum) { /* Else if dimension index is that of first mate */ + coarmulttab[coarvertnum].vertnum[0] = finevertnum; /* Create multinode */ + coarmulttab[coarvertnum].vertnum[1] = finevertnum + finevertdlt; + coarvertnum ++; + } + + if (finevertnum == fineverttmp) { /* If dimension stride reached */ + indxnum = (indxnum + 1) % indxnbr; /* Increase dimension index */ + fineverttmp += finevertdlt; /* Compute next step to reach */ + } + } + +#ifdef SCOTCH_DEBUG_ARCH2 + if (coarvertnum * indxnbr != finevertnbr * ((indxnbr + 1) >> 1)) { + errorPrint ("archMeshXMatchMate: internal error"); + return (-1); + } +#endif /* SCOTCH_DEBUG_ARCH2 */ + + *multptr = coarmulttab; /* Always provide same mating array */ + + return (coarvertnum); +} + +/* This function returns the smallest number +** of terminal domain included in the given +** domain. +*/ + +ArchDomNum +archMeshXDomNum ( +const ArchMeshX * const archptr, +const ArchMeshXDom * const domnptr) +{ + Anum dimnnum; + Anum domnnum; + + for (dimnnum = archptr->dimnnbr - 2, domnnum = domnptr->c[archptr->dimnnbr - 1][0]; dimnnum >= 0; dimnnum --) + domnnum = (domnnum * archptr->c[dimnnum]) + domnptr->c[dimnnum][0]; + + return (domnnum); /* Return vertex number */ +} + +/* This function returns the terminal domain associated +** with the given terminal number in the architecture. +** It returns: +** - 0 : if label is valid and domain has been updated. +** - 1 : if label is invalid. +** - 2 : on error. +*/ + +int +archMeshXDomTerm ( +const ArchMeshX * const archptr, +ArchMeshXDom * const domnptr, +const ArchDomNum domnnum) +{ + Anum dimnnum; + Anum domntmp; + + for (dimnnum = 0, domntmp = domnnum; dimnnum < archptr->dimnnbr; dimnnum ++) { /* Set the domain */ + domnptr->c[dimnnum][0] = + domnptr->c[dimnnum][1] = domntmp % archptr->c[dimnnum]; + domntmp /= archptr->c[dimnnum]; + } + + if (domntmp > 0) /* If residual is not zero, terminal domain number is invalid since too high */ + return (1); + + return (0); +} + +/* This function returns the number of +** elements in the cubic domain. +*/ + +Anum +archMeshXDomSize ( +const ArchMeshX * const archptr, +const ArchMeshXDom * const domnptr) +{ + Anum dimnnum; + Anum domnsiz; + + for (dimnnum = 0, domnsiz = 1; dimnnum < archptr->dimnnbr; dimnnum ++) + domnsiz *= domnptr->c[dimnnum][1] - domnptr->c[dimnnum][0] + 1; + + return (domnsiz); +} + +/* This function returns the average distance +** between two cubic domains (in fact the +** distance between the centers of the domains). +*/ + +Anum +archMeshXDomDist ( +const ArchMeshX * const archptr, +const ArchMeshXDom * const dom0ptr, +const ArchMeshXDom * const dom1ptr) +{ + Anum dimnnum; + Anum distval; + Anum disttmp; + + for (dimnnum = 0, distval = 0; dimnnum < archptr->dimnnbr; dimnnum ++) { + disttmp = abs (dom0ptr->c[dimnnum][0] + dom0ptr->c[dimnnum][1] - + dom1ptr->c[dimnnum][0] - dom1ptr->c[dimnnum][1]); + distval += (disttmp > archptr->c[dimnnum]) ? (2 * archptr->c[dimnnum] - disttmp) : disttmp; + } + + return (distval >> 1); +} + +/* This function sets the biggest +** domain available for this +** architecture. +** It returns: +** - 0 : on success. +** - !0 : on error. +*/ + +int +archMeshXDomFrst ( +const ArchMeshX * const archptr, +ArchMeshXDom * restrict const domptr) +{ + Anum dimnnum; + + for (dimnnum = 0; dimnnum < archptr->dimnnbr; dimnnum ++) { + domptr->c[dimnnum][0] = 0; + domptr->c[dimnnum][1] = archptr->c[dimnnum] - 1; + } + + return (0); +} + +/* This routine reads domain information +** from the given stream. +** It returns: +** - 0 : on success. +** - !0 : on error. +*/ + +int +archMeshXDomLoad ( +const ArchMeshX * const archptr, +ArchMeshXDom * restrict const domptr, +FILE * restrict const stream) +{ + Anum dimnnum; + + for (dimnnum = 0; dimnnum < archptr->dimnnbr; dimnnum ++) { + if ((intLoad (stream, &domptr->c[dimnnum][0]) != 1) || + (intLoad (stream, &domptr->c[dimnnum][1]) != 1) || + (domptr->c[dimnnum][0] > domptr->c[dimnnum][1]) || + (domptr->c[dimnnum][0] < 0)) { + errorPrint ("archMeshXDomLoad: bad input"); + return (1); + } + } + + return (0); +} + +/* This routine saves domain information +** to the given stream. +** It returns: +** - 0 : on success. +** - !0 : on error. +*/ + +int +archMeshXDomSave ( +const ArchMeshX * const archptr, +const ArchMeshXDom * const domptr, +FILE * restrict const stream) +{ + Anum dimnnum; + + for (dimnnum = 0; dimnnum < archptr->dimnnbr; dimnnum ++) { + if (fprintf (stream, ANUMSTRING " " ANUMSTRING " ", + (Anum) domptr->c[dimnnum][0], + (Anum) domptr->c[dimnnum][1]) == EOF) { + errorPrint ("archMeshXDomSave: bad output"); + return (1); + } + } + + return (0); +} + +/* This function tries to split a cubic +** domain into two subdomains. +** It returns: +** - 0 : if bipartitioning succeeded. +** - 1 : if bipartitioning could not be performed. +** - 2 : on error. +*/ + +int +archMeshXDomBipart ( +const ArchMeshX * const archptr, +const ArchMeshXDom * const domptr, +ArchMeshXDom * restrict const dom0ptr, +ArchMeshXDom * restrict const dom1ptr) +{ + Anum archdimsizmax; /* Maximum span on largest architecture dimension */ + Anum domndimsizmax; /* Maximum span on largest domain dimension */ + Anum domndimval; /* Dimension to be split */ + Anum domndimflg; /* Flag set if subdomain can be bipartitioned */ + Anum domndimtmp; + Anum dimnnum; + + for (dimnnum = domndimval = archptr->dimnnbr - 1, archdimsizmax = domndimflg = 0, domndimsizmax = -1; + dimnnum >= 0; dimnnum --) { + Anum archdimsiz; + Anum domndimsiz; + Anum domndim0; + Anum domndim1; + + dom0ptr->c[dimnnum][0] = /* Set up subdomain data as copy of original domain data */ + dom1ptr->c[dimnnum][0] = domndim0 = domptr->c[dimnnum][0]; + dom0ptr->c[dimnnum][1] = + dom1ptr->c[dimnnum][1] = domndim1 = domptr->c[dimnnum][1]; + + domndimsiz = domndim1 - domndim0; /* Span on current dimension */ + domndimflg |= domndimsiz; /* Flag set if at least one is not zero */ + + if (domndimsiz < domndimsizmax) /* If dimension is too small, skip it */ + continue; + archdimsiz = archptr->c[dimnnum]; + if ((domndimsiz == domndimsizmax) && /* If dimension to split is not priviledged, skip it */ + (archdimsiz <= archdimsizmax)) + continue; + + archdimsizmax = archdimsiz; /* Record dimension to split */ + domndimsizmax = domndimsiz; + domndimval = dimnnum; + } + + if (domndimflg == 0) /* Return if cannot bipartition more */ + return (1); + + domndimtmp = (domptr->c[domndimval][0] + domptr->c[domndimval][1]) / 2; + dom0ptr->c[domndimval][1] = domndimtmp; + dom1ptr->c[domndimval][0] = domndimtmp + 1; + + return (0); +} + +/* This function checks if dom1 is +** included in dom0. +** It returns: +** - 0 : if dom1 is not included in dom0. +** - 1 : if dom1 is included in dom0. +** - 2 : on error. +*/ + +int +archMeshXDomIncl ( +const ArchMeshX * const archptr, +const ArchMeshXDom * const dom0ptr, +const ArchMeshXDom * const dom1ptr) +{ + Anum dimnnum; + + for (dimnnum = 0; dimnnum < archptr->dimnnbr; dimnnum ++) { + if ((dom1ptr->c[dimnnum][0] < dom0ptr->c[dimnnum][0]) || + (dom1ptr->c[dimnnum][1] > dom0ptr->c[dimnnum][1])) + return (0); + } + + return (1); +} + +/* This function creates the MPI_Datatype for +** xD torus domains. +** It returns: +** - 0 : if type could be created. +** - 1 : on error. +*/ + +#ifdef SCOTCH_PTSCOTCH +int +archMeshXDomMpiType ( +const ArchMeshX * const archptr, +MPI_Datatype * const typeptr) +{ + MPI_Type_contiguous (2 * archptr->dimnnbr, ANUM_MPI, typeptr); + + return (0); +} #endif /* SCOTCH_PTSCOTCH */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_mesh.h scotch-6.0.6/src/libscotch/arch_mesh.h --- scotch-6.0.4.dfsg1/src/libscotch/arch_mesh.h 2014-07-01 13:19:42.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_mesh.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2011,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -62,8 +62,8 @@ /** to 09 jan 2004 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 21 jan 2008 **/ -/** # Version 6.0 : from : 14 fev 2011 **/ -/** to 01 jul 2014 **/ +/** # Version 6.0 : from : 14 feb 2011 **/ +/** to 28 may 2018 **/ /** **/ /************************************************************/ @@ -74,25 +74,40 @@ #ifndef ARCH_MESH_H_STRUCT #define ARCH_MESH_H_STRUCT +/*+ Maximum dimension. +*/ + +#define ARCHMESHDIMNMAX 5 /* Maximum dimension (at least 3) */ + +/*+ The xD-mesh definitions. +*/ + +typedef struct ArchMeshX_ { + Anum dimnnbr; /*+ Number of mesh dimensions +*/ + Anum c[ARCHMESHDIMNMAX]; /*+ Mesh dimensions +*/ +} ArchMeshX; + +typedef struct ArchMeshXDom_ { + Anum c[ARCHMESHDIMNMAX][2]; /*+ Inclusive X and Y coordinates +*/ +} ArchMeshXDom; + +typedef struct ArchMeshXMatch_ { + ArchCoarsenMulti * multtab; /*+ Multinode array for all coarsenings +*/ + Anum dimnnbr; /*+ Number of mesh dimensions +*/ + Anum dimnnum; /*+ Current dimension to coarsen +*/ + Anum dimntab[ARCHMESHDIMNMAX]; /*+ Mesh dimensions +*/ + int passtab[ARCHMESHDIMNMAX]; /*+ Flags for coarsening along dimensions +*/ +} ArchMeshXMatch; + /*+ The 2D-mesh definitions. +*/ -typedef struct ArchMesh2_ { - Anum c[2]; /*+ Mesh dimensions +*/ -} ArchMesh2; - -typedef struct ArchMesh2Dom_ { - Anum c[2][2]; /*+ Inclusive X and Y coordinates +*/ -} ArchMesh2Dom; +#define ArchMesh2 ArchMeshX +#define ArchMesh2Dom ArchMeshXDom +#define ArchMesh2Match ArchMeshXMatch /*+ The 3D-mesh definitions. +*/ -typedef struct ArchMesh3_ { - Anum c[3]; /*+ Mesh dimensions +*/ -} ArchMesh3; - -typedef struct ArchMesh3Dom_ { - Anum c[3][2]; /*+ Inclusive X, Y, and Z coordinates +*/ -} ArchMesh3Dom; +#define ArchMesh3 ArchMeshX +#define ArchMesh3Dom ArchMeshXDom +#define ArchMesh3Match ArchMeshXMatch #endif /* ARCH_MESH_H_STRUCT */ @@ -104,21 +119,22 @@ #ifndef ARCH_MESH_H_PROTO #define ARCH_MESH_H_PROTO -#ifndef ARCH_MESH -#define static -#endif - int archMesh2ArchLoad (ArchMesh2 * restrict const, FILE * restrict const); int archMesh2ArchSave (const ArchMesh2 * const, FILE * restrict const); #define archMesh2ArchFree NULL + +#define archMesh2MatchInit archMeshXMatchInit +#define archMesh2MatchExit archMeshXMatchExit +#define archMesh2MatchMate archMeshXMatchMate + ArchDomNum archMesh2DomNum (const ArchMesh2 * const, const ArchMesh2Dom * const); int archMesh2DomTerm (const ArchMesh2 * const, ArchMesh2Dom * restrict const, const ArchDomNum); Anum archMesh2DomSize (const ArchMesh2 * const, const ArchMesh2Dom * const); #define archMesh2DomWght archMesh2DomSize Anum archMesh2DomDist (const ArchMesh2 * const, const ArchMesh2Dom * const, const ArchMesh2Dom * const); -int archMesh2DomFrst (const ArchMesh2 * const, ArchMesh2Dom * const); -int archMesh2DomLoad (const ArchMesh2 * const, ArchMesh2Dom * const, FILE * restrict const); -int archMesh2DomSave (const ArchMesh2 * const, const ArchMesh2Dom * const, FILE * restrict const); +#define archMesh2DomFrst archMeshXDomFrst +#define archMesh2DomLoad archMeshXDomLoad +#define archMesh2DomSave archMeshXDomSave int archMesh2DomBipart (const ArchMesh2 * const, const ArchMesh2Dom * const, ArchMesh2Dom * restrict const, ArchMesh2Dom * restrict const); int archMesh2DomBipartO (const ArchMesh2 * const, const ArchMesh2Dom * const, ArchMesh2Dom * restrict const, ArchMesh2Dom * restrict const); int archMesh2DomBipartU (const ArchMesh2 * const, const ArchMesh2Dom * const, ArchMesh2Dom * restrict const, ArchMesh2Dom * restrict const); @@ -130,21 +146,47 @@ int archMesh3ArchLoad (ArchMesh3 * restrict const, FILE * restrict const); int archMesh3ArchSave (const ArchMesh3 * const, FILE * restrict const); #define archMesh3ArchFree NULL + +#define archMesh3MatchInit archMeshXMatchInit +#define archMesh3MatchExit archMeshXMatchExit +#define archMesh3MatchMate archMeshXMatchMate + ArchDomNum archMesh3DomNum (const ArchMesh3 * const, const ArchMesh3Dom * const); int archMesh3DomTerm (const ArchMesh3 * const, ArchMesh3Dom * restrict const, const ArchDomNum); Anum archMesh3DomSize (const ArchMesh3 * const, const ArchMesh3Dom * const); #define archMesh3DomWght archMesh3DomSize Anum archMesh3DomDist (const ArchMesh3 * const, const ArchMesh3Dom * const, const ArchMesh3Dom * const); -int archMesh3DomFrst (const ArchMesh3 * const, ArchMesh3Dom * const); -int archMesh3DomLoad (const ArchMesh3 * const, ArchMesh3Dom * const, FILE * restrict const); -int archMesh3DomSave (const ArchMesh3 * const, const ArchMesh3Dom * const, FILE * restrict const); +#define archMesh3DomFrst archMeshXDomFrst +#define archMesh3DomLoad archMeshXDomLoad +#define archMesh3DomSave archMeshXDomSave int archMesh3DomBipart (const ArchMesh3 * const, const ArchMesh3Dom * const, ArchMesh3Dom * restrict const, ArchMesh3Dom * restrict const); int archMesh3DomIncl (const ArchMesh3 * const, const ArchMesh3Dom * const, const ArchMesh3Dom * const); #ifdef SCOTCH_PTSCOTCH int archMesh3DomMpiType (const ArchMesh3 * const, MPI_Datatype * const); #endif /* SCOTCH_PTSCOTCH */ -#undef static +int archMeshXArchLoad (ArchMeshX * restrict const, FILE * restrict const); +int archMeshXArchSave (const ArchMeshX * const, FILE * restrict const); +#define archMeshXArchFree NULL + +int archMeshXMatchInit (ArchMeshXMatch * restrict const, const ArchMeshX * restrict const); +int archMeshXMatchInit2 (ArchMeshXMatch * restrict const, const Anum, const Anum * restrict const); +void archMeshXMatchExit (ArchMeshXMatch * restrict const); +Anum archMeshXMatchMate (ArchMeshXMatch * restrict const, ArchCoarsenMulti ** restrict const); + +ArchDomNum archMeshXDomNum (const ArchMeshX * const, const ArchMeshXDom * const); +int archMeshXDomTerm (const ArchMeshX * const, ArchMeshXDom * restrict const, const ArchDomNum); +Anum archMeshXDomSize (const ArchMeshX * const, const ArchMeshXDom * const); +#define archMeshXDomWght archMeshXDomSize +Anum archMeshXDomDist (const ArchMeshX * const, const ArchMeshXDom * const, const ArchMeshXDom * const); +int archMeshXDomFrst (const ArchMeshX * const, ArchMeshXDom * const); +int archMeshXDomLoad (const ArchMeshX * const, ArchMeshXDom * const, FILE * restrict const); +int archMeshXDomSave (const ArchMeshX * const, const ArchMeshXDom * const, FILE * restrict const); +int archMeshXDomBipart (const ArchMeshX * const, const ArchMeshXDom * const, ArchMeshXDom * restrict const, ArchMeshXDom * restrict const); +int archMeshXDomIncl (const ArchMeshX * const, const ArchMeshXDom * const, const ArchMeshXDom * const); +#ifdef SCOTCH_PTSCOTCH +int archMeshXDomMpiType (const ArchMeshX * const, MPI_Datatype * const); +#endif /* SCOTCH_PTSCOTCH */ #endif /* ARCH_MESH_H_PROTO */ #endif /* ARCH_NOPROTO */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_sub.c scotch-6.0.6/src/libscotch/arch_sub.c --- scotch-6.0.4.dfsg1/src/libscotch/arch_sub.c 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_sub.c 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,860 @@ +/* Copyright 2015,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : arch_sub.c **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : This module handles the sub- **/ +/** architecture meta-architecture **/ +/** functions. **/ +/** **/ +/** DATES : # Version 6.0 : from : 13 mar 2015 **/ +/** to : 15 may 2018 **/ +/** **/ +/************************************************************/ + +/* +** The defines and includes. +*/ + +#define ARCH_SUB + +#include "module.h" +#include "common.h" +#include "arch.h" +#include "arch_sub.h" + +/**********************************/ +/* */ +/* These are the sub-architecture */ +/* meta-architecture routines. */ +/* */ +/**********************************/ + +/* This routine loads the distance +** graph architecture. +** It returns: +** - 0 : if the architecture has been successfully read. +** - !0 : on error. +*/ + +int +archSubArchLoad ( +ArchSub * restrict const subarchptr, +FILE * restrict const stream) +{ + Arch * orgarchptr; + Anum termnbr; + Anum termnum; + Anum * restrict termtab; + int o; + +#ifdef SCOTCH_DEBUG_ARCH1 + if ((sizeof (ArchSub) > sizeof (ArchDummy)) || + (sizeof (ArchSubDom) > sizeof (ArchDomDummy))) { + errorPrint ("archSubArchLoad: invalid type specification"); + return (1); + } +#endif /* SCOTCH_DEBUG_ARCH1 */ + + if (intLoad (stream, &termnbr) != 1) { + errorPrint ("archSubArchLoad: bad input (1)"); + return (1); + } + + if ((termtab = memAlloc (termnbr * sizeof (Anum))) == NULL) { + errorPrint ("archSubArchLoad: out of memory (1)"); + return (1); + } + + for (termnum = 0; termnum < termnbr; termnum ++) { + if (intLoad (stream, &termtab[termnum]) != 1) { + errorPrint ("archSubArchLoad: bad input (2)"); + memFree (termtab); + return (1); + } + } + + if ((orgarchptr = memAlloc (sizeof (Arch))) == NULL) { + errorPrint ("archSubArchLoad: out of memory (2)"); + memFree (termtab); + return (1); + } + + o = archLoad (orgarchptr, stream); + if (o == 0) + o = archSubArchBuild (subarchptr, orgarchptr, termnbr, termtab); + if (o != 0) { + archExit (orgarchptr); + memFree (orgarchptr); + } + + memFree (termtab); + + return (o); +} + +/* This routine saves the +** distance graph architecture. +** It returns: +** - 0 : if the architecture has been successfully written. +** - !0 : on error. +*/ + +int +archSubArchSave ( +const ArchSub * const archptr, +FILE * restrict const stream) +{ + Anum termnbr; + Anum termnum; + const ArchSubTerm * restrict termtab; + +#ifdef SCOTCH_DEBUG_ARCH1 + if (sizeof (ArchSub) > sizeof (ArchDummy)) { + errorPrint ("archSubArchSave: invalid type specification"); + return (1); + } +#endif /* SCOTCH_DEBUG_ARCH1 */ + + termnbr = archptr->termnbr; + if (fprintf (stream, ANUMSTRING, + (Anum) termnbr) == EOF) { + errorPrint ("archSubArchSave: bad output (1)"); + return (1); + } + + for (termnum = 0, termtab = archptr->termtab; + termnum < termnbr; termnum ++) { + if (fprintf (stream, " " ANUMSTRING, + (Anum) termtab[termnum].termnum) == EOF) { + errorPrint ("archSubArchSave: bad output (2)"); + return (1); + } + } + + if (fprintf (stream, "\n") == EOF) { + errorPrint ("archSubArchSave: bad output (3)"); + return (1); + } + + return (archSave (archptr->archptr, stream)); +} + +/* This routine frees the sub-architecture structures. +** It returns: +** - 0 : if the architecture has been successfully freed. +** - !0 : on error. +*/ + +int +archSubArchFree ( +ArchSub * const archptr) +{ +#ifdef SCOTCH_DEBUG_ARCH1 + if ((sizeof (ArchSub) > sizeof (ArchDummy)) || + (sizeof (ArchSubDom) > sizeof (ArchDomDummy))) { + errorPrint ("archSubArchFree: invalid type specification"); + return (1); + } +#endif /* SCOTCH_DEBUG_ARCH1 */ + + if ((archArch (archptr)->flagval & ARCHFREE) != 0) { /* If sub-architecture needs to be freed too */ + archFree (archptr->archptr); + memFree (archptr->archptr); + } + + memFree (archptr->termtab); /* Free group leader */ + + return (0); +} + +/* This routine builds the recursive coarsening +** tree of an architecture. The coarsening is +** performed by applying a variable function that +** operates on a specific set of data. +** It returns: +** - !NULL : root of the recursive coarsening tree. +** - NULL : on error. +*/ + +ArchSubTree * +archSubArchBuild2 ( +void * dataptr, +Anum funcptr (void *, ArchCoarsenMulti * restrict *), +ArchSubTree * const finetreetab, +const Anum finevertnbr) +{ + ArchCoarsenMulti * restrict coarmulttab; + ArchSubTree * restrict coartreetab; + Anum coarvertnbr; + Anum coarvertnum; + ArchSubTree * rootptr; + + if (finevertnbr <= 1) { /* If recursion achieved, start building architecture */ + finetreetab[-1].sonstab[0] = NULL; /* TRICK: no other block to link with */ + return (finetreetab); /* Return root of subdomain tree */ + } + + if ((coarvertnbr = funcptr (dataptr, &coarmulttab)) < 0) { /* Perform matching */ + errorPrint ("archSubArchBuild2: cannot create matching"); + return (NULL); + } + + if ((coartreetab = memAlloc ((coarvertnbr + 1) * sizeof (ArchSubTree))) == NULL) { /* TRICK: One more slot to link to coarser array */ + errorPrint ("archSubArchBuild2: out of memory"); + return (NULL); + } + + finetreetab[-1].sonstab[0] = coartreetab; /* TRICK: Link to coarse array */ + coartreetab ++; /* Hide first slot */ + + for (coarvertnum = 0; coarvertnum < coarvertnbr; coarvertnum ++) { /* Un-based coarse vertex indices */ + Anum finevertnum0; + Anum finevertnum1; + Anum coardomnsiz; + Anum coardomnsiz1; + Anum coardomnwgt; + Anum coartermnum; + ArchSubTree * son0ptr; + ArchSubTree * son1ptr; + + finevertnum0 = coarmulttab[coarvertnum].vertnum[0]; /* Fine vertices must be un-based else mischief may occur */ + finevertnum1 = coarmulttab[coarvertnum].vertnum[1]; + + coardomnsiz = finetreetab[finevertnum0].domnsiz; + coardomnwgt = finetreetab[finevertnum0].domnwgt; + coartermnum = finetreetab[finevertnum0].termnum; + son0ptr = (coardomnsiz > 0) ? &finetreetab[finevertnum0] : NULL; + son1ptr = NULL; + + if (finevertnum1 != finevertnum0) { /* If multinode comprises two fine nodes */ + Anum finetermnum1; + + coardomnsiz1 = finetreetab[finevertnum1].domnsiz; /* Add contributions from second node */ + coardomnsiz += coardomnsiz1; + coardomnwgt += finetreetab[finevertnum1].domnwgt; + finetermnum1 = finetreetab[finevertnum1].termnum; + if (finetermnum1 < coartermnum) /* If smaller terminal number found */ + coartermnum = finetermnum1; /* Keep it */ + if (coardomnsiz1 > 0) + son1ptr = &finetreetab[finevertnum1]; + } + + coartreetab[coarvertnum].domnsiz = coardomnsiz; + coartreetab[coarvertnum].domnwgt = coardomnwgt; + coartreetab[coarvertnum].termnum = coartermnum; + coartreetab[coarvertnum].vertnum = coarvertnum; /* Un-based multinode number */ + coartreetab[coarvertnum].sonstab[0] = son0ptr; /* Create links to son slot(s) */ + coartreetab[coarvertnum].sonstab[1] = son1ptr; + } + + rootptr = archSubArchBuild2 (dataptr, funcptr, coartreetab, coarvertnbr); + if (rootptr == NULL) /* On error, do not keep tree arrays */ + memFree (coartreetab - 1); + + return (rootptr); +} + +/* This routine collapses the recursive coarsening tree +** into a decomposition-defined tree, by removing single +** vertices that have not been collapsed. +** It returns: +** - the first free index in the domain array. +*/ + +static +Anum +archSubArchBuild3 ( +ArchSubData * restrict const domntab, /*+ Domain array to fill [domnnbr] +*/ +ArchSubTerm * restrict const termtab, /*+ Terminal domain array to fill [termnbr] +*/ +const ArchSubTree * restrict const treeptr, /*+ Pointer to current node being traversed +*/ +const Anum domnnum, /*+ Domain number of current node +*/ +const Anum domnidx) /*+ Current first free slot in domain array +*/ +{ + Anum termnum; + Anum didxtmp; + const ArchSubTree * son0ptr; + const ArchSubTree * son1ptr; + const ArchSubTree * sonsptr; + + son0ptr = treeptr->sonstab[0]; + son1ptr = treeptr->sonstab[1]; + sonsptr = NULL; + + if (son0ptr != NULL) /* If node is a single node, traverse it without any processing */ + sonsptr = son0ptr; + if (son1ptr != NULL) + sonsptr = (sonsptr != NULL) ? NULL : son1ptr; + if (sonsptr != NULL) + return (archSubArchBuild3 (domntab, termtab, sonsptr, domnnum, domnidx)); + + domntab[domnidx].domnnum = domnnum; + domntab[domnidx].domnsiz = treeptr->domnsiz; + domntab[domnidx].domnwgt = treeptr->domnwgt; + termnum = + domntab[domnidx].termnum = treeptr->termnum; + + didxtmp = domnidx + 1; + if (son0ptr != NULL) { /* If node is a branch node */ + Anum domntmp; + + domntmp = domnnum * 2; /* Domain number of first son */ + domntab[didxtmp].dfatidx = domnidx; + domntab[domnidx].dsubidx[0] = didxtmp; + didxtmp = archSubArchBuild3 (domntab, termtab, son0ptr, domntmp, didxtmp); + domntab[didxtmp].dfatidx = domnidx; + domntab[domnidx].dsubidx[1] = didxtmp; + didxtmp = archSubArchBuild3 (domntab, termtab, son1ptr, domntmp + 1, didxtmp); + } + else { + domntab[domnidx].dsubidx[0] = + domntab[domnidx].dsubidx[1] = -1; + + termtab[termnum].domnidx = domnidx; + } + + return (didxtmp); +} + +/* This routine builds the sub-architecture of an +** original architecture. +** It returns: +** - 0 : if the sub-architecture has been successfully built. +** - 1 : if the +** - 2 : on error. +*/ + +int +archSubArchBuild ( +ArchSub * const subarchptr, +Arch * const orgarchptr, +const Anum vnumnbr, /* Number of terminal domains in sub-architecture */ +const Anum * const vnumtab) /* Ordered list of remaining terminal numbers */ +{ + Anum orgtermnbr; /* Number of terminals in original graph */ + Anum orgtermnum; + ArchDom orgdomndat; /* Domain in original architecture */ + ArchMatch matcdat; /* Data for successive matchings */ + ArchSubTree * rootptr; + ArchSubTree * restrict treetab; + ArchSubTree * restrict treetmp; + ArchSubTerm * restrict termtab; + ArchSubData * restrict domntab; + Anum domnnbr; /* Number of domains */ + Anum vnumnum; +#ifdef SCOTCH_DEBUG_ARCH1 + const char * messptr; /* Pointer to error message */ +#endif /* SCOTCH_DEBUG_ARCH1 */ + + if ((orgarchptr->class->flagval & ARCHVAR) != 0) { + errorPrint ("archSubArchBuild: variable-sized architectures not supported"); + return (1); + } + if (orgarchptr->class->matchInit == NULL) { + errorPrint ("archSubArchBuild: architecture not supported"); + return (1); + } + + archDomFrst (orgarchptr, &orgdomndat); /* Get number of terminal domains in original architecture */ + orgtermnbr = archDomSize (orgarchptr, &orgdomndat); + +#ifdef SCOTCH_DEBUG_ARCH1 + if ((vnumnbr < 0) || (vnumnbr > orgtermnbr)) { + errorPrint ("archSubArchBuild: invalid number of terminal domains"); + return (2); + } + messptr = NULL; +#endif /* SCOTCH_DEBUG_ARCH1 */ + + domnnbr = 2 * vnumnbr - 1; + if (memAllocGroup ((void **) (void *) + &termtab, (size_t) (vnumnbr * sizeof (ArchSubTerm)), + &domntab, (size_t) (domnnbr * sizeof (ArchSubData)), NULL) == NULL) { + errorPrint ("archSubArchBuild: out of memory (1)"); + return (2); + } + if ((treetab = memAlloc ((orgtermnbr + 1) * sizeof (ArchSubTree))) == NULL) { /* TRICK: One more slot to link to coarser array */ + errorPrint ("archSubArchBuild: out of memory (2)"); + memFree (termtab); + return (2); + } + + intRandInit (); /* Initialize random generator for coarsening */ + + if (orgarchptr->class->matchInit (&matcdat, &orgarchptr->data) != 0) { /* Initialize matching structure with original architecture data */ + errorPrint ("archSubArchBuild: cannot initialize matching structure"); + memFree (treetab); + memFree (termtab); + return (2); + } + + treetab ++; /* TRICK: Hide first slot */ + + subarchptr->archptr = orgarchptr; + subarchptr->termnbr = vnumnbr; + subarchptr->termtab = termtab; + subarchptr->domnnbr = domnnbr; + subarchptr->domntab = domntab; + + for (orgtermnum = 0; orgtermnum < orgtermnbr; orgtermnum ++) { /* Initialize values for all vertices of original architecture */ + treetab[orgtermnum].domnsiz = + treetab[orgtermnum].domnwgt = 0; + treetab[orgtermnum].termnum = + treetab[orgtermnum].vertnum = ANUMMAX; + treetab[orgtermnum].sonstab[0] = + treetab[orgtermnum].sonstab[1] = NULL; + } + + for (vnumnum = 0; vnumnum < vnumnbr; vnumnum ++) { /* For all kept terminal numbers */ + Anum orgtermnum; /* Terminal number in original architecture */ +#ifdef SCOTCH_DEBUG_ARCH2 + int o; +#endif /* SCOTCH_DEBUG_ARCH2 */ + + orgtermnum = vnumtab[vnumnum]; +#ifdef SCOTCH_DEBUG_ARCH1 + if ((orgtermnum < 0) || (orgtermnum >= orgtermnbr)) + messptr = "archSubArchBuild: invalid vertex number in vertex list"; + else if (treetab[orgtermnum].domnsiz != 0) + messptr = "archSubArchBuild: duplicate vertex number in vertex list"; + if (messptr != NULL) { + errorPrint (messptr); + orgarchptr->class->matchExit (&matcdat); /* Free matching structure */ + memFree (treetab - 1); + memFree (termtab); + return (2); + } +#endif /* SCOTCH_DEBUG_ARCH1 */ +#ifdef SCOTCH_DEBUG_ARCH2 + o = +#endif /* SCOTCH_DEBUG_ARCH2 */ + archDomTerm (orgarchptr, &orgdomndat, orgtermnum); +#ifdef SCOTCH_DEBUG_ARCH2 + if (o != 0) { + errorPrint ("archSubArchBuild: internal error (1)"); + return (2); + } +#endif /* SCOTCH_DEBUG_ARCH2 */ + termtab[vnumnum].termnum = vnumtab[vnumnum]; /* Record number of original terminal number */ + + treetab[orgtermnum].domnsiz = 1; /* Here lies one terminal vertex */ + treetab[orgtermnum].domnwgt = archDomWght (orgarchptr, &orgdomndat); + treetab[orgtermnum].termnum = vnumnum; /* Sub-architecture terminal number in original architecture */ + treetab[orgtermnum].vertnum = orgtermnum; /* Vertex number in original architecture */ + } + + rootptr = archSubArchBuild2 (&matcdat, orgarchptr->class->matchMate, treetab, vnumnbr); + + orgarchptr->class->matchExit (&matcdat); /* Free matching structure */ + + if (rootptr == NULL) { + errorPrint ("archSubArchBuild: cannot create sub-architecture (1)"); + memFree (treetab - 1); + return (2); + } +#ifdef SCOTCH_DEBUG_ARCH2 + if (rootptr->domnsiz != vnumnbr) { + errorPrint ("archSubArchBuild: internal error (2)"); + return (2); + } +#endif /* SCOTCH_DEBUG_ARCH2 */ + + if (archSubArchBuild3 (domntab, termtab, rootptr, 1, 0) != domnnbr) { + errorPrint ("archSubArchBuild: cannot create sub-architecture (2)"); + memFree (treetab - 1); + return (2); + } + domntab[0].dfatidx = -1; /* Set index of root father as -1 */ + + for (treetab --; treetab != NULL; treetab = treetmp) { /* Free all tree blocks */ + treetmp = treetab[0].sonstab[0]; /* Get pointer to next tree block */ + memFree (treetab); + } + + return (0); +} + +/* This routine initializes the matching +** data structure according to the number +** of vertices to be managed. +** It returns: +** - 0 : if the data structure has been +** successfully initialized. +** - !0 : on error. +*/ + +int +archSubMatchInit ( +ArchSubMatch * restrict const matcptr, +const ArchSub * restrict const archptr) +{ + Anum termnbr; + Anum termnum; + Anum domnmax; + Anum levlnbr; + Anum multnbr; + + const ArchSubTerm * restrict const termtab = archptr->termtab; + const ArchSubData * restrict const domntab = archptr->domntab; + + for (termnum = 0, termnbr = archptr->termnbr, domnmax = 0; /* Get maximum domain number */ + termnum < termnbr; termnum ++) { + Anum domnval; + + domnval = domntab[termtab[termnum].domnidx].domnnum; + if (domnval > domnmax) + domnmax = domnval; + } + + for (levlnbr = 1; domnmax > 0; levlnbr ++, domnmax >>= 1) ; /* Compute maximum recursion level in bipartitioning tree */ + + multnbr = 1 << levlnbr; /* Maximum number of multinodes is the size of last level */ + if ((matcptr->multtab = memAlloc (multnbr * sizeof (ArchCoarsenMulti))) == NULL) { + errorPrint ("archSubMatchInit: out of memory"); + return (1); + } + + matcptr->domntab = archptr->domntab; /* Keep pointer to sub-architecture domain array */ + matcptr->levlnum = + matcptr->levlmax = levlnbr - 1; + + return (0); +} + +/* This routine frees the matching data +** structure. +** It returns: +** - void : in all cases. +*/ + +void +archSubMatchExit ( +ArchSubMatch * restrict const matcptr) +{ + memFree (matcptr->multtab); +} + +/* This routine computes a matching from +** the current state of the matching structure. +** It returns: +** - >=0 : size of matching. +** - <0 : on error. +*/ + +static +void +archSubMatchMate2 ( +ArchSubMatch * restrict const matcptr, +const ArchSubData * restrict const domnptr, +const Anum levlnum) +{ + const ArchSubData * restrict domntab; + Anum levlcur; + + levlcur = matcptr->levlnum; + + if (domnptr->dsubidx[0] == -1) { /* If node is terminal */ + Anum vertnum; + Anum multnum; + + ArchCoarsenMulti * restrict const multtab = matcptr->multtab; + + vertnum = (levlcur == matcptr->levlmax) ? domnptr->termnum : matcptr->vertnum ++; /* If last level, provide terminal number, else vertex number */ + multnum = matcptr->multnum ++; /* One more multinode created */ + multtab[multnum].vertnum[0] = /* In fact, it is a single node */ + multtab[multnum].vertnum[1] = vertnum; + + return; + } + + domntab = matcptr->domntab; + + if (levlnum == levlcur) { /* If recursion achieved proper level */ + Anum vertnum0; + Anum vertnum1; + Anum multnum; + + ArchCoarsenMulti * restrict const multtab = matcptr->multtab; + + if (levlcur == matcptr->levlmax) { /* If last level, get terminal numbers */ + vertnum0 = domntab[domnptr->dsubidx[0]].termnum; + vertnum1 = domntab[domnptr->dsubidx[1]].termnum; + } + else { /* Else compute vertex numbers from previous level */ + vertnum0 = matcptr->vertnum; + vertnum1 = vertnum0 + 1; + matcptr->vertnum = vertnum0 + 2; + } + + multnum = matcptr->multnum ++; /* Create multinode */ + multtab[multnum].vertnum[0] = vertnum0; + multtab[multnum].vertnum[1] = vertnum1; + } + else { /* Else perform recursion */ + archSubMatchMate2 (matcptr, &domntab[domnptr->dsubidx[0]], levlnum + 1); + archSubMatchMate2 (matcptr, &domntab[domnptr->dsubidx[1]], levlnum + 1); + } +} + +Anum +archSubMatchMate ( +ArchSubMatch * restrict const matcptr, +ArchCoarsenMulti ** restrict const multptr) +{ + + if (matcptr->levlnum < 0) /* If already reached root of tree, abort */ + return (-1); + + matcptr->multnum = /* Reset counters for current level */ + matcptr->vertnum = 0; + archSubMatchMate2 (matcptr, &matcptr->domntab[0], 0); /* Build multinodes for current level */ + + matcptr->levlnum --; /* Prepare to perform previous level */ + + *multptr = matcptr->multtab; /* Always provide same mating array */ + + return (matcptr->multnum); /* Return number of multinodes computed at this level */ +} + +/* This function returns the representative +** terminal domain number for the given domain. +*/ + +ArchDomNum +archSubDomNum ( +const ArchSub * const archptr, +const ArchSubDom * const domnptr) +{ + return (archptr->domntab[domnptr->domnidx].termnum); +} + +/* This function returns the terminal domain associated +** with the given terminal number in the architecture. +** It returns: +** - 0 : if label is valid and domain has been updated. +** - 1 : if label is invalid. +** - 2 : on error. +*/ + +int +archSubDomTerm ( +const ArchSub * const archptr, +ArchSubDom * const domnptr, +const ArchDomNum termnum) +{ + if (termnum >= archptr->termnbr) + return (1); + + domnptr->domnidx = archptr->termtab[termnum].domnidx; + + return (0); +} + +/* This function returns the number of +** elements in the domain. +*/ + +Anum +archSubDomSize ( +const ArchSub * const archptr, +const ArchSubDom * const domnptr) +{ + return (archptr->domntab[domnptr->domnidx].domnsiz); +} + +/* This function returns the weight of +** the given distance domain. +*/ + +Anum +archSubDomWght ( +const ArchSub * const archptr, +const ArchSubDom * const domnptr) +{ + return (archptr->domntab[domnptr->domnidx].domnwgt); +} + +/* This function returns the average +** distance between two distance +** subdomains. +*/ + +Anum +archSubDomDist ( +const ArchSub * const archptr, +const ArchSubDom * const dom0ptr, +const ArchSubDom * const dom1ptr) +{ + ArchDom dom0dat; /* Domains of underlying architecture */ + ArchDom dom1dat; + + archDomTerm (archptr->archptr, &dom0dat, archptr->termtab[archptr->domntab[dom0ptr->domnidx].termnum].termnum); /* Build corresponding subdomains in underlying architecture */ + archDomTerm (archptr->archptr, &dom1dat, archptr->termtab[archptr->domntab[dom1ptr->domnidx].termnum].termnum); + + return (archDomDist (archptr->archptr, &dom0dat, &dom1dat)); +} + +/* This function sets the biggest +** domain available for this +** architecture. +** It returns: +** - 0 : on success. +** - !0 : on error. +*/ + +int +archSubDomFrst ( +const ArchSub * const archptr, +ArchSubDom * restrict const domnptr) +{ + domnptr->domnidx = 0; /* First domain index is slot 0 */ + + return (0); +} + +/* This routine reads domain information +** from the given stream. +** It returns: +** - 0 : on success. +** - !0 : on error. +*/ + +int +archSubDomLoad ( +const ArchSub * const archptr, +ArchSubDom * restrict const domnptr, +FILE * const stream) +{ + if ((intLoad (stream, &domnptr->domnidx) != 1) || + (domnptr->domnidx < 0) || + (domnptr->domnidx >= archptr->domnnbr)) { + errorPrint ("archSubDomLoad: bad input"); + return (1); + } + + return (0); +} + +/* This routine saves domain information +** to the given stream. +** It returns: +** - 0 : on success. +** - !0 : on error. +*/ + +int +archSubDomSave ( +const ArchSub * const archptr, +const ArchSubDom * const domnptr, +FILE * const stream) +{ + if (fprintf (stream, ANUMSTRING " ", + (Anum) domnptr->domnidx) == EOF) { + errorPrint ("archSubDomSave: bad output"); + return (1); + } + + return (0); +} + +/* This function tries to split a distance +** graph domain into two subdomains. +** It returns: +** - 0 : if bipartitioning succeeded. +** - 1 : if bipartitioning could not be performed. +** - 2 : on error. +*/ + +int +archSubDomBipart ( +const ArchSub * const archptr, +const ArchSubDom * const domnptr, +ArchSubDom * restrict const dom0ptr, +ArchSubDom * restrict const dom1ptr) +{ + Anum dom0idx; + + dom0idx = archptr->domntab[domnptr->domnidx].dsubidx[0]; + if (dom0idx < 0) /* If domain is terminal */ + return (1); + + dom0ptr->domnidx = dom0idx; + dom1ptr->domnidx = archptr->domntab[domnptr->domnidx].dsubidx[1]; + + return (0); +} + +/* This function checks if dom1 is +** included in dom0. +** It returns: +** - 0 : if dom1 is not included in dom0. +** - 1 : if dom1 is included in dom0. +** - 2 : on error. +*/ + +int +archSubDomIncl ( +const ArchSub * const archptr, +const ArchSubDom * const dom0ptr, +const ArchSubDom * const dom1ptr) +{ + Anum dom0num; + Anum dom1num; + + for (dom1num = archptr->domntab[dom1ptr->domnidx].domnnum, dom0num = archptr->domntab[dom0ptr->domnidx].domnnum; dom1num != 0; dom1num >>= 1) + if (dom1num == dom0num) + return (1); + + return (0); +} + +/* This function creates the MPI_Datatype for +** distance graph domains. +** It returns: +** - 0 : if type could be created. +** - 1 : on error. +*/ + +#ifdef SCOTCH_PTSCOTCH +int +archSubDomMpiType ( +const ArchSub * const archptr, +MPI_Datatype * const typeptr) +{ + *typeptr = ANUM_MPI; + + return (0); +} +#endif /* SCOTCH_PTSCOTCH */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_sub.h scotch-6.0.6/src/libscotch/arch_sub.h --- scotch-6.0.4.dfsg1/src/libscotch/arch_sub.h 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_sub.h 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,131 @@ +/* Copyright 2015,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : arch_sub.h **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : These lines are the data declaration **/ +/** for the sub-architecture meta- **/ +/** architecture functions. **/ +/** **/ +/** DATES : # Version 6.0 : from : 13 mar 2015 **/ +/** to : 31 may 2018 **/ +/** **/ +/************************************************************/ + +/* +** The type and structure definitions. +*/ + +#ifndef ARCH_SUB_H_STRUCT +#define ARCH_SUB_H_STRUCT + +/*+ The sub-architecture definitions. +*/ + +typedef struct ArchSubTerm_ { + Anum domnidx; /*+ Domain index corresponding to local terminal number +*/ + Anum termnum; /*+ Corresponding un-based terminal number in original architecture +*/ +} ArchSubTerm; + +typedef struct ArchSubData_ { + Anum domnnum; /*+ Domain number, for dichotomy part. Starts at 1 +*/ + Anum domnsiz; /*+ Size of domain, in terms of internal vertices +*/ + Anum domnwgt; /*+ Weight of internal vertices within domain +*/ + Anum termnum; /*+ Smallest original un-based terminal domain number in domain +*/ + Anum dfatidx; /*+ Index of father subdomain; -1 if root +*/ + Anum dsubidx[2]; /*+ Indices of son subdomains; -1 if terminal +*/ +} ArchSubData; + +typedef struct ArchSub_ { + struct Arch_ * archptr; /*+ Pointer to original architecture +*/ + Anum termnbr; /*+ Number of terminals in sub-architecture +*/ + ArchSubTerm * termtab; /*+ Terminal domain array +*/ + Anum domnnbr; /*+ Number of domains in domain array +*/ + ArchSubData * domntab; /*+ Domain array +*/ +} ArchSub; + +typedef struct ArchSubTree_ { + Anum domnsiz; /*+ Size of domain +*/ + Anum domnwgt; /*+ Weight of internal vertices within domain +*/ + Anum termnum; /*+ Number of first subdomain; -1 if terminal +*/ + Anum vertnum; /*+ Number of vertex at this level +*/ + struct ArchSubTree_ * sonstab[2]; /*+ Pointer to son cells +*/ +} ArchSubTree; + +typedef struct ArchSubDom_ { + Anum domnidx; /*+ Domain index in domain array +*/ +} ArchSubDom; + +typedef struct ArchSubMatch_ { + const ArchSubData * domntab; /*+ Pointer to sub-architecture domain array +*/ + ArchCoarsenMulti * multtab; /*+ Multinode array for all coarsenings +*/ + Anum multnum; /*+ Current number of multinode at current level +*/ + Anum vertnum; /*+ Current fine vertex number at current level +*/ + Anum levlnum; /*+ Current level +*/ + Anum levlmax; /*+ Maximum level to be considered +*/ +} ArchSubMatch; + +#endif /* ARCH_SUB_H_STRUCT */ + +/* +** The function prototypes. +*/ + +#ifndef ARCH_NOPROTO + +int archSubArchLoad (ArchSub * restrict const, FILE * restrict const); +int archSubArchSave (const ArchSub * const, FILE * restrict const); +int archSubArchFree (ArchSub * const); + +int archSubMatchInit (ArchSubMatch * restrict const, const ArchSub * restrict const); +void archSubMatchExit (ArchSubMatch * restrict const); +Anum archSubMatchMate (ArchSubMatch * restrict const, ArchCoarsenMulti ** restrict const); + +int archSubArchBuild (ArchSub * const, Arch * const, const Anum, const Anum * const); +ArchSubTree * archSubArchBuild2 (void *, Anum (*) (void *, ArchCoarsenMulti * restrict *), ArchSubTree * restrict const, const Anum); +ArchDomNum archSubDomNum (const ArchSub * const, const ArchSubDom * const); +int archSubDomTerm (const ArchSub * const, ArchSubDom * restrict const, const ArchDomNum); +Anum archSubDomSize (const ArchSub * const, const ArchSubDom * const); +Anum archSubDomWght (const ArchSub * const, const ArchSubDom * const); +Anum archSubDomDist (const ArchSub * const, const ArchSubDom * const, const ArchSubDom * const); +int archSubDomFrst (const ArchSub * const, ArchSubDom * const); +int archSubDomLoad (const ArchSub * const, ArchSubDom * const, FILE * const); +int archSubDomSave (const ArchSub * const, const ArchSubDom * const, FILE * const); +int archSubDomBipart (const ArchSub * const, const ArchSubDom * const, ArchSubDom * restrict const, ArchSubDom * restrict const); +int archSubDomIncl (const ArchSub * const, const ArchSubDom * const, const ArchSubDom * const); +#ifdef SCOTCH_PTSCOTCH +int archSubDomMpiType (const ArchSub * const, MPI_Datatype * const); +#endif /* SCOTCH_PTSCOTCH */ + +#endif /* ARCH_NOPROTO */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_tleaf.c scotch-6.0.6/src/libscotch/arch_tleaf.c --- scotch-6.0.4.dfsg1/src/libscotch/arch_tleaf.c 2012-07-01 13:40:39.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_tleaf.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -63,8 +63,8 @@ /** to 10 mar 2005 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 11 aug 2010 **/ -/** # Version 6.0 : from : 14 fev 2011 **/ -/** to 01 jul 2012 **/ +/** # Version 6.0 : from : 14 feb 2011 **/ +/** to 31 may 2018 **/ /** **/ /** NOTES : # The ltleaf architecture was proposed **/ /** by Emmanuel Jeannot and Francois **/ @@ -209,9 +209,154 @@ } } + if (fprintf (stream, "\n") == EOF) { + errorPrint ("archTleafArchSave: bad output (3)"); + return (1); + } + + return (0); +} + +/* This routine initializes the matching +** data structure according to the number +** of vertices to be managed. +** It returns: +** - 0 : if the data structure has been +** successfully initialized. +** - !0 : on error. +*/ + +int +archTleafMatchInit ( +ArchTleafMatch * restrict const matcptr, +const ArchTleaf * restrict const archptr) +{ + Anum multnbr; /* Maximum number of multinodes */ + Anum vertnbr; /* Number of vertices in architecture */ + Anum levlnnd; + Anum levlnum; + + const Anum * restrict const sizetab = archptr->sizetab; + + for (levlnum = 0, levlnnd = archptr->levlnbr - 1, vertnbr = 1; /* Compute size of blocks save for last level */ + levlnum < levlnnd; levlnum ++) + vertnbr *= sizetab[levlnum]; + multnbr = vertnbr * ((sizetab[levlnum] + 1) >> 1); /* Number of multinodes will account for half the number of vertices in last level */ + vertnbr *= sizetab[levlnum]; + + if ((matcptr->multtab = memAlloc (multnbr * sizeof (ArchCoarsenMulti))) == NULL) { + errorPrint ("archTleafMatchInit: out of memory"); + return (1); + } + + matcptr->archptr = archptr; + matcptr->passnum = 0; + matcptr->levlnum = levlnnd; + matcptr->levlsiz = sizetab[levlnnd]; + matcptr->vertnbr = vertnbr; + return (0); } +/* This routine frees the matching data +** structure. +** It returns: +** - void : in all cases. +*/ + +void +archTleafMatchExit ( +ArchTleafMatch * restrict const matcptr) +{ + memFree (matcptr->multtab); +} + +/* This routine computes a matching from +** the current state of the matching structure. +** It returns: +** - >=0 : size of matching. +** - <0 : on error. +*/ + +Anum +archTleafMatchMate ( +ArchTleafMatch * restrict const matcptr, +ArchCoarsenMulti ** restrict const multptr) +{ + ArchCoarsenMulti * restrict coarmulttab; + Anum finevertnbr; + Anum finevertnum; + Anum coarvertnum; + Anum levlsiz; /* Number of fine vertices in each block */ + Anum bloksiz; /* Number of multinodes in each block */ + Anum bloknbr; /* Number of blocks */ + Anum passnum; + + levlsiz = matcptr->levlsiz; + while (levlsiz == 1) { /* If has to change level */ + Anum levlnum; + + levlnum = matcptr->levlnum - 1; + if (levlnum < 0) /* If upper level exceeded */ + return (-1); /* Return an error */ + + matcptr->passnum = 0; /* Reset pass at next level */ + matcptr->levlnum = levlnum; + levlsiz = matcptr->archptr->sizetab[levlnum]; + } + + finevertnbr = matcptr->vertnbr; +#ifdef SCOTCH_DEBUG_ARCH2 + if (finevertnbr % levlsiz != 0) { + errorPrint ("archTleafMatchMate: internal error (1)"); + return (-1); + } +#endif /* SCOTCH_DEBUG_ARCH2 */ + bloknbr = finevertnbr / levlsiz; + + if ((levlsiz & 1) != 0) + passnum = matcptr->passnum ^= 1; + else + passnum = -1; + + bloksiz = levlsiz >> 1; /* Number of multinodes in each block */ + levlsiz = (levlsiz + 1) >> 1; /* Number of coarse vertices in each block */ + matcptr->levlsiz = levlsiz; + matcptr->vertnbr = levlsiz * bloknbr; + + coarmulttab = matcptr->multtab; + for (finevertnum = coarvertnum = 0; + bloknbr > 0; bloknbr --) { + Anum bloktmp; + + if (passnum == 0) { /* If block starts with a single node */ + coarmulttab[coarvertnum].vertnum[0] = /* Create single node */ + coarmulttab[coarvertnum].vertnum[1] = finevertnum ++; + coarvertnum ++; + } + for (bloktmp = bloksiz; bloktmp > 0; bloktmp --) { /* For all pairs of fine vertices within blocks */ + coarmulttab[coarvertnum].vertnum[0] = finevertnum ++; /* Create multinode */ + coarmulttab[coarvertnum].vertnum[1] = finevertnum ++; + coarvertnum ++; + } + if (passnum == 1) { /* If block ends with a single node */ + coarmulttab[coarvertnum].vertnum[0] = /* Create single node */ + coarmulttab[coarvertnum].vertnum[1] = finevertnum ++; + coarvertnum ++; + } + } +#ifdef SCOTCH_DEBUG_ARCH2 + if (finevertnum != finevertnbr) { + errorPrint ("archTleafMatchMate: internal error (2)"); + return (-1); + } +#endif /* SCOTCH_DEBUG_ARCH2 */ + + *multptr = coarmulttab; /* Always provide same mating array */ + + return (coarvertnum); +} + /* This function returns the smallest number ** of terminal domain included in the given ** domain. @@ -529,8 +674,6 @@ ArchTleaf * restrict const archptr, FILE * restrict const stream) { - Anum sizeval; - Anum levlnum; Anum permnum; if (archTleafArchLoad (archptr, stream) != 0) /* Read tree part */ @@ -544,6 +687,9 @@ #ifdef SCOTCH_DEBUG_ARCH2 if (archptr->permnbr != 1) { /* Valid empty permutation is of size 1 */ + Anum levlnum; + Anum sizeval; + for (levlnum = archptr->levlnbr - 1, sizeval = archptr->sizetab[levlnum]; sizeval != archptr->permnbr; levlnum --, sizeval *= archptr->sizetab[levlnum]) { if (levlnum < 0) { @@ -618,6 +764,11 @@ } } + if (fprintf (stream, "\n") == EOF) { + errorPrint ("archLtleafArchSave: bad output (3)"); + return (1); + } + return (0); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_tleaf.h scotch-6.0.6/src/libscotch/arch_tleaf.h --- scotch-6.0.4.dfsg1/src/libscotch/arch_tleaf.h 2014-07-01 13:23:18.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_tleaf.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -62,8 +62,8 @@ /** to 10 dec 2003 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 24 jun 2010 **/ -/** # Version 6.0 : from : 14 fev 2011 **/ -/** to 03 jul 2014 **/ +/** # Version 6.0 : from : 14 feb 2011 **/ +/** to 28 may 2018 **/ /** **/ /************************************************************/ @@ -92,8 +92,23 @@ Anum indxnbr; /*+ Number of indices in domain +*/ } ArchTleafDom; +typedef struct ArchTleafMatch_ { + const ArchTleaf * archptr; /*+ Pointer to architecture +*/ + ArchCoarsenMulti * multtab; /*+ Multinode array for all coarsenings +*/ + Anum passnum; /*+ Pass number +*/ + Anum levlnum; /*+ Current block level +*/ + Anum levlsiz; /*+ Size of current level +*/ + Anum vertnbr; /*+ Number of vertices at current stage +*/ +} ArchTleafMatch; + #endif /* ARCH_TLEAF_H_STRUCT */ +/** The Ltree-Leaf architecture definitions. **/ + +#define ArchLtleaf ArchTleaf +#define ArchLtleafDom ArchTleafDom +#define ArchLtleafMatch ArchTleafMatch + /* ** The function prototypes. */ @@ -102,13 +117,14 @@ #ifndef ARCH_TLEAF_H_PROTO #define ARCH_TLEAF_H_PROTO -#ifndef ARCH_TLEAF -#define static -#endif - int archTleafArchLoad (ArchTleaf * restrict const, FILE * restrict const); -int archTleafArchFree (ArchTleaf * restrict const); int archTleafArchSave (const ArchTleaf * const, FILE * restrict const); +int archTleafArchFree (ArchTleaf * restrict const); + +int archTleafMatchInit (ArchTleafMatch * restrict const, const ArchTleaf * restrict const); +void archTleafMatchExit (ArchTleafMatch * restrict const); +Anum archTleafMatchMate (ArchTleafMatch * restrict const, ArchCoarsenMulti ** restrict const); + ArchDomNum archTleafDomNum (const ArchTleaf * const, const ArchTleafDom * const); int archTleafDomTerm (const ArchTleaf * const, ArchTleafDom * restrict const, const ArchDomNum); Anum archTleafDomSize (const ArchTleaf * const, const ArchTleafDom * const); @@ -125,28 +141,25 @@ int archLtleafArchLoad (ArchTleaf * restrict const, FILE * restrict const); int archLtleafArchSave (const ArchTleaf * const, FILE * restrict const); -ArchDomNum archLtleafDomNum (const ArchTleaf * const, const ArchTleafDom * const); -int archLtleafDomTerm (const ArchTleaf * const, ArchTleafDom * restrict const, const ArchDomNum); -#define archLtleafDomWght archLtleafDomSize - -#undef static - -/* -** The macro definitions. -*/ +#define archLtleafArchFree archTleafArchFree -#define ArchLtleaf ArchTleaf -#define ArchLtleafDom ArchTleafDom +#define archLtleafMatchInit archTleafMatchInit +#define archLtleafMatchExit archTleafMatchExit +#define archLtleafMatchMate archTleafMatchMate -#define archLtleafArchFree archTleafArchFree +ArchDomNum archLtleafDomNum (const ArchTleaf * const, const ArchTleafDom * const); +int archLtleafDomTerm (const ArchTleaf * const, ArchTleafDom * restrict const, const ArchDomNum); #define archLtleafDomSize archTleafDomSize +#define archLtleafDomWght archTleafDomWght #define archLtleafDomDist archTleafDomDist #define archLtleafDomFrst archTleafDomFrst #define archLtleafDomLoad archTleafDomLoad #define archLtleafDomSave archTleafDomSave #define archLtleafDomBipart archTleafDomBipart #define archLtleafDomIncl archTleafDomIncl +#ifdef SCOTCH_PTSCOTCH #define archLtleafDomMpiType archTleafDomMpiType +#endif /* SCOTCH_PTSCOTCH */ #endif /* ARCH_TLEAF_H_PROTO */ #endif /* ARCH_NOPROTO */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_torus.c scotch-6.0.6/src/libscotch/arch_torus.c --- scotch-6.0.4.dfsg1/src/libscotch/arch_torus.c 2013-11-30 16:09:08.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_torus.c 2018-07-14 15:24:49.000000000 +0000 @@ -61,8 +61,8 @@ /** to 10 mar 2005 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 11 aug 2010 **/ -/** # Version 6.0 : from : 14 fev 2011 **/ -/** to 30 nov 2013 **/ +/** # Version 6.0 : from : 14 feb 2011 **/ +/** to 27 mar 2015 **/ /** **/ /************************************************************/ @@ -75,6 +75,7 @@ #include "module.h" #include "common.h" #include "arch.h" +#include "arch_mesh.h" #include "arch_torus.h" /***********************************************/ @@ -83,122 +84,6 @@ /* */ /***********************************************/ -/* This routine loads the -** bidimensional torus architecture. -** It returns: -** - 0 : if the architecture has been successfully read. -** - !0 : on error. -*/ - -int -archTorus2ArchLoad ( -ArchTorusX * restrict const archptr, -FILE * restrict const stream) -{ -#ifdef SCOTCH_DEBUG_ARCH1 - if ((ARCHTORUSDIMMAX < 2) || - (sizeof (ArchTorusX) > sizeof (ArchDummy)) || - (sizeof (ArchTorusXDom) > sizeof (ArchDomDummy))) { - errorPrint ("archTorus2ArchLoad: invalid type specification"); - return (1); - } -#endif /* SCOTCH_DEBUG_ARCH1 */ - - if ((intLoad (stream, &archptr->c[0]) != 1) || - (intLoad (stream, &archptr->c[1]) != 1) || - (archptr->c[0] < 1) || (archptr->c[1] < 1)) { - errorPrint ("archTorus2ArchLoad: bad input"); - return (1); - } - - archptr->dimmax = 2; - - return (0); -} - -/* This routine saves the -** bidimensional torus architecture. -** It returns: -** - 0 : if the architecture has been successfully written. -** - !0 : on error. -*/ - -int -archTorus2ArchSave ( -const ArchTorusX * const archptr, -FILE * restrict const stream) -{ -#ifdef SCOTCH_DEBUG_ARCH1 - if ((ARCHTORUSDIMMAX < 2) || - (sizeof (ArchTorusX) > sizeof (ArchDummy)) || - (sizeof (ArchTorusXDom) > sizeof (ArchDomDummy))) { - errorPrint ("archTorus2ArchSave: invalid type specification"); - return (1); - } -#endif /* SCOTCH_DEBUG_ARCH1 */ - - if (fprintf (stream, ANUMSTRING " " ANUMSTRING " ", - (Anum) archptr->c[0], - (Anum) archptr->c[1]) == EOF) { - errorPrint ("archTorus2ArchSave: bad output"); - return (1); - } - - return (0); -} - -/* This function returns the smallest number -** of terminal domain included in the given -** domain. -*/ - -ArchDomNum -archTorus2DomNum ( -const ArchTorusX * const archptr, -const ArchTorusXDom * const domptr) -{ - return ((domptr->c[1][0] * archptr->c[0]) + domptr->c[0][0]); /* Return vertex number */ -} - -/* This function returns the terminal domain associated -** with the given terminal number in the architecture. -** It returns: -** - 0 : if label is valid and domain has been updated. -** - 1 : if label is invalid. -** - 2 : on error. -*/ - -int -archTorus2DomTerm ( -const ArchTorusX * const archptr, -ArchTorusXDom * const domptr, -const ArchDomNum domnum) -{ - if (domnum < (archptr->c[0] * archptr->c[1])) { /* If valid label */ - domptr->c[0][0] = /* Set the domain */ - domptr->c[0][1] = domnum % archptr->c[0]; - domptr->c[1][0] = - domptr->c[1][1] = domnum / archptr->c[0]; - - return (0); - } - - return (1); /* Cannot set domain */ -} - -/* This function returns the number of -** elements in the rectangular domain. -*/ - -Anum -archTorus2DomSize ( -const ArchTorusX * const archptr, -const ArchTorusXDom * const domptr) -{ - return ((domptr->c[0][1] - domptr->c[0][0] + 1) * - (domptr->c[1][1] - domptr->c[1][0] + 1)); -} - /* This function returns the average ** distance between two rectangular ** domains (in fact the distance between @@ -207,9 +92,9 @@ Anum archTorus2DomDist ( -const ArchTorusX * const archptr, -const ArchTorusXDom * const dom0ptr, -const ArchTorusXDom * const dom1ptr) +const ArchTorus2 * const archptr, +const ArchTorus2Dom * const dom0ptr, +const ArchTorus2Dom * const dom1ptr) { Anum dc0, dc1; Anum ds0, ds1; @@ -225,205 +110,12 @@ return ((ds0 + ds1) >> 1); } -/* This function tries to split a rectangular -** domain into two subdomains. -** It returns: -** - 0 : if bipartitioning succeeded. -** - 1 : if bipartitioning could not be performed. -** - 2 : on error. -*/ - -int -archTorus2DomBipart ( -const ArchTorusX * const archptr, -const ArchTorusXDom * const domptr, -ArchTorusXDom * restrict const dom0ptr, -ArchTorusXDom * restrict const dom1ptr) -{ - Anum dimsiz0; - Anum dimsiz1; - int dimnum; /* Dimension along which to split */ - - dimsiz0 = domptr->c[0][1] - domptr->c[0][0]; - dimsiz1 = domptr->c[1][1] - domptr->c[1][0]; - - if ((dimsiz0 | dimsiz1) == 0) /* Return if cannot bipartition more */ - return (1); - - dimnum = 1; - if ((dimsiz0 > dimsiz1) || /* Split domain in two along largest dimension */ - ((dimsiz0 == dimsiz1) && (archptr->c[0] > archptr->c[1]))) - dimnum = 0; - - dom0ptr->c[0][0] = domptr->c[0][0]; - dom1ptr->c[1][1] = domptr->c[1][1]; - if (dimnum == 0) { /* Split across the X dimension */ - dom0ptr->c[0][1] = (domptr->c[0][0] + domptr->c[0][1]) / 2; - dom1ptr->c[0][0] = dom0ptr->c[0][1] + 1; - dom1ptr->c[0][1] = domptr->c[0][1]; - dom0ptr->c[1][0] = dom1ptr->c[1][0] = domptr->c[1][0]; - dom0ptr->c[1][1] = domptr->c[1][1]; - } - else { /* Split across the Y dimension */ - dom1ptr->c[0][0] = domptr->c[0][0]; - dom0ptr->c[0][1] = dom1ptr->c[0][1] = domptr->c[0][1]; - dom0ptr->c[1][0] = domptr->c[1][0]; - dom0ptr->c[1][1] = (domptr->c[1][0] + domptr->c[1][1]) / 2; - dom1ptr->c[1][0] = dom0ptr->c[1][1] + 1; - } - - return (0); -} - -/* This function checks if dom1 is -** included in dom0. -** It returns: -** - 0 : if dom1 is not included in dom0. -** - 1 : if dom1 is included in dom0. -** - 2 : on error. -*/ - -int -archTorus2DomIncl ( -const ArchTorusX * const archptr, -const ArchTorusXDom * const dom0ptr, -const ArchTorusXDom * const dom1ptr) -{ - if ((dom0ptr->c[0][0] <= dom1ptr->c[0][0]) && - (dom0ptr->c[0][1] >= dom1ptr->c[0][1]) && - (dom0ptr->c[1][0] <= dom1ptr->c[1][0]) && - (dom0ptr->c[1][1] >= dom1ptr->c[1][1])) - return (1); - - return (0); -} - /***********************************************/ /* */ /* These are the 3-dimensional torus routines. */ /* */ /***********************************************/ -/* This routine loads the -** tridimensional torus architecture. -** It returns: -** - 0 : if the architecture has been successfully read. -** - !0 : on error. -*/ - -int -archTorus3ArchLoad ( -ArchTorusX * restrict const archptr, -FILE * restrict const stream) -{ -#ifdef SCOTCH_DEBUG_ARCH1 - if ((ARCHTORUSDIMMAX < 3) || - (sizeof (ArchTorusX) > sizeof (ArchDummy)) || - (sizeof (ArchTorusXDom) > sizeof (ArchDomDummy))) { - errorPrint ("archTorus3ArchLoad: invalid type specification"); - return (1); - } -#endif /* SCOTCH_DEBUG_ARCH1 */ - - if ((intLoad (stream, &archptr->c[0]) != 1) || - (intLoad (stream, &archptr->c[1]) != 1) || - (intLoad (stream, &archptr->c[2]) != 1) || - (archptr->c[0] < 1) || (archptr->c[1] < 1) || (archptr->c[2] < 1)) { - errorPrint ("archTorus3ArchLoad: bad input"); - return (1); - } - - archptr->dimmax = 3; - - return (0); -} - -/* This routine saves the -** tridimensional torus architecture. -** It returns: -** - 0 : if the architecture has been successfully written. -** - !0 : on error. -*/ - -int -archTorus3ArchSave ( -const ArchTorusX * const archptr, -FILE * restrict const stream) -{ -#ifdef SCOTCH_DEBUG_ARCH1 - if ((sizeof (ArchTorusX) > sizeof (ArchDummy)) || - (sizeof (ArchTorusXDom) > sizeof (ArchDomDummy))) { - errorPrint ("archTorus3ArchSave: invalid type specification"); - return (1); - } -#endif /* SCOTCH_DEBUG_ARCH1 */ - - if (fprintf (stream, ANUMSTRING " " ANUMSTRING " " ANUMSTRING " ", - (Anum) archptr->c[0], (Anum) archptr->c[1], (Anum) archptr->c[2]) == EOF) { - errorPrint ("archTorus3ArchSave: bad output"); - return (1); - } - - return (0); -} - -/* This function returns the smallest number -** of terminal domain included in the given -** domain. -*/ - -ArchDomNum -archTorus3DomNum ( -const ArchTorusX * const archptr, -const ArchTorusXDom * const domptr) -{ - return ((((domptr->c[2][0] * archptr->c[1]) + /* Return vertex number */ - domptr->c[1][0]) * archptr->c[0]) + - domptr->c[0][0]); -} - -/* This function returns the terminal domain associated -** with the given terminal number in the architecture. -** It returns: -** - 0 : if label is valid and domain has been updated. -** - 1 : if label is invalid. -** - 2 : on error. -*/ - -int -archTorus3DomTerm ( -const ArchTorusX * const archptr, -ArchTorusXDom * const domptr, -const ArchDomNum domnum) -{ - if (domnum < (archptr->c[0] * archptr->c[1] * archptr->c[2])) { /* If valid label */ - domptr->c[0][0] = /* Set the domain */ - domptr->c[0][1] = domnum % archptr->c[0]; - domptr->c[1][0] = - domptr->c[1][1] = (domnum / archptr->c[0]) % archptr->c[1]; - domptr->c[2][0] = - domptr->c[2][1] = domnum / (archptr->c[0] * archptr->c[1]); - - return (0); - } - - return (1); /* Cannot set domain */ -} - -/* This function returns the number of -** elements in the cubic domain. -*/ - -Anum -archTorus3DomSize ( -const ArchTorusX * const archptr, -const ArchTorusXDom * const domptr) -{ - return ((domptr->c[0][1] - domptr->c[0][0] + 1) * - (domptr->c[1][1] - domptr->c[1][0] + 1) * - (domptr->c[2][1] - domptr->c[2][0] + 1)); -} - /* This function returns the average distance ** between two cubic domains (in fact the ** distance between the centers of the domains). @@ -431,9 +123,9 @@ Anum archTorus3DomDist ( -const ArchTorusX * const archptr, -const ArchTorusXDom * const dom0ptr, -const ArchTorusXDom * const dom1ptr) +const ArchTorus3 * const archptr, +const ArchTorus3Dom * const dom0ptr, +const ArchTorus3Dom * const dom1ptr) { Anum dc0, dc1, dc2; Anum ds0, ds1, ds2; @@ -453,257 +145,16 @@ return ((ds0 + ds1 + ds2) >> 1); } -/* This function tries to split a cubic -** domain into two subdomains. -** It returns: -** - 0 : if bipartitioning succeeded. -** - 1 : if bipartitioning could not be performed. -** - 2 : on error. -*/ - -int -archTorus3DomBipart ( -const ArchTorusX * const archptr, -const ArchTorusXDom * const domptr, -ArchTorusXDom * restrict const dom0ptr, -ArchTorusXDom * restrict const dom1ptr) -{ - Anum dimsiz[3]; - int dimnum; - - dimsiz[0] = domptr->c[0][1] - domptr->c[0][0]; - dimsiz[1] = domptr->c[1][1] - domptr->c[1][0]; - dimsiz[2] = domptr->c[2][1] - domptr->c[2][0]; - - if ((dimsiz[0] | dimsiz[1] | dimsiz[2]) == 0) /* Return if cannot bipartition more */ - return (1); - - dimnum = ((dimsiz[1] > dimsiz[2]) || /* Find largest or priviledged subdomain dimension */ - ((dimsiz[1] == dimsiz[2]) && - (archptr->c[1] > archptr->c[2]))) ? 1 : 2; - if ((dimsiz[0] > dimsiz[dimnum]) || - ((dimsiz[0] == dimsiz[dimnum]) && - (archptr->c[0] > archptr->c[dimnum]))) - dimnum = 0; - - dom0ptr->c[0][0] = domptr->c[0][0]; - dom1ptr->c[2][1] = domptr->c[2][1]; - if (dimnum == 0) { /* Split domain in two along largest dimension */ - dom0ptr->c[0][1] = (domptr->c[0][0] + domptr->c[0][1]) / 2; - dom1ptr->c[0][0] = dom0ptr->c[0][1] + 1; - dom1ptr->c[0][1] = domptr->c[0][1]; - - dom0ptr->c[1][0] = dom1ptr->c[1][0] = domptr->c[1][0]; - dom0ptr->c[1][1] = dom1ptr->c[1][1] = domptr->c[1][1]; - - dom0ptr->c[2][0] = dom1ptr->c[2][0] = domptr->c[2][0]; - dom0ptr->c[2][1] = domptr->c[2][1]; - } - else if (dimnum == 1) { - dom1ptr->c[0][0] = domptr->c[0][0]; - dom0ptr->c[0][1] = dom1ptr->c[0][1] = domptr->c[0][1]; - - dom0ptr->c[1][0] = domptr->c[1][0]; - dom0ptr->c[1][1] = (domptr->c[1][0] + domptr->c[1][1]) / 2; - dom1ptr->c[1][0] = dom0ptr->c[1][1] + 1; - dom1ptr->c[1][1] = domptr->c[1][1]; - - dom0ptr->c[2][0] = dom1ptr->c[2][0] = domptr->c[2][0]; - dom0ptr->c[2][1] = domptr->c[2][1]; - } - else { - dom1ptr->c[0][0] = domptr->c[0][0]; - dom0ptr->c[0][1] = dom1ptr->c[0][1] = domptr->c[0][1]; - - dom0ptr->c[1][0] = dom1ptr->c[1][0] = domptr->c[1][0]; - dom0ptr->c[1][1] = dom1ptr->c[1][1] = domptr->c[1][1]; - - dom0ptr->c[2][0] = domptr->c[2][0]; - dom0ptr->c[2][1] = (domptr->c[2][0] + domptr->c[2][1]) / 2; - dom1ptr->c[2][0] = dom0ptr->c[2][1] + 1; - } - - return (0); -} - -/* This function checks if dom1 is -** included in dom0. -** It returns: -** - 0 : if dom1 is not included in dom0. -** - 1 : if dom1 is included in dom0. -** - 2 : on error. -*/ - -int -archTorus3DomIncl ( -const ArchTorusX * const archptr, -const ArchTorusXDom * const dom0ptr, -const ArchTorusXDom * const dom1ptr) -{ - if ((dom0ptr->c[0][0] <= dom1ptr->c[0][0]) && - (dom0ptr->c[0][1] >= dom1ptr->c[0][1]) && - (dom0ptr->c[1][0] <= dom1ptr->c[1][0]) && - (dom0ptr->c[1][1] >= dom1ptr->c[1][1]) && - (dom0ptr->c[2][0] <= dom1ptr->c[2][0]) && - (dom0ptr->c[2][1] >= dom1ptr->c[2][1])) - return (1); - - return (0); -} - /***********************************************/ /* */ /* These are the x-dimensional torus routines. */ /* */ /***********************************************/ -/* This routine loads the -** tridimensional torus architecture. -** It returns: -** - 0 : if the architecture has been successfully read. -** - !0 : on error. -*/ - -int -archTorusXArchLoad ( -ArchTorusX * restrict const archptr, -FILE * restrict const stream) -{ - Anum dimnum; - -#ifdef SCOTCH_DEBUG_ARCH1 - if ((sizeof (ArchTorusX) > sizeof (ArchDummy)) || - (sizeof (ArchTorusXDom) > sizeof (ArchDomDummy))) { - errorPrint ("archTorusXArchLoad: invalid type specification"); - return (1); - } -#endif /* SCOTCH_DEBUG_ARCH1 */ - - if ((intLoad (stream, &archptr->dimmax) != 1) || - (archptr->dimmax > ARCHTORUSDIMMAX)) { - errorPrint ("archTorusXArchLoad: bad input (1)"); - return (1); - } - - for (dimnum = 0; dimnum < archptr->dimmax; dimnum ++) { - if ((intLoad (stream, &archptr->c[dimnum]) != 1) || - (archptr->c[dimnum] < 1)) { - errorPrint ("archTorusXArchLoad: bad input (2)"); - return (1); - } - } - - return (0); -} - -/* This routine saves the -** tridimensional torus architecture. -** It returns: -** - 0 : if the architecture has been successfully written. -** - !0 : on error. -*/ - -int -archTorusXArchSave ( -const ArchTorusX * const archptr, -FILE * restrict const stream) -{ - Anum dimnum; - -#ifdef SCOTCH_DEBUG_ARCH1 - if ((sizeof (ArchTorusX) > sizeof (ArchDummy)) || - (sizeof (ArchTorusXDom) > sizeof (ArchDomDummy))) { - errorPrint ("archTorusXArchSave: invalid type specification"); - return (1); - } -#endif /* SCOTCH_DEBUG_ARCH1 */ - - if (fprintf (stream, ANUMSTRING " ", - (Anum) archptr->dimmax) == EOF) { - errorPrint ("archTorusXArchSave: bad output (1)"); - return (1); - } - - for (dimnum = 0; dimnum < archptr->dimmax; dimnum ++) { - if (fprintf (stream, ANUMSTRING " ", - (Anum) archptr->c[dimnum]) == EOF) { - errorPrint ("archTorusXArchSave: bad output (2)"); - return (1); - } - } - - return (0); -} - -/* This function returns the smallest number -** of terminal domain included in the given -** domain. -*/ - -ArchDomNum -archTorusXDomNum ( -const ArchTorusX * const archptr, -const ArchTorusXDom * const domptr) -{ - Anum dimnum; - Anum domnum; - - for (dimnum = archptr->dimmax - 2, domnum = domptr->c[archptr->dimmax - 1][0]; dimnum >= 0; dimnum --) - domnum = (domnum * archptr->c[dimnum]) + domptr->c[dimnum][0]; - - return (domnum); /* Return vertex number */ -} - -/* This function returns the terminal domain associated -** with the given terminal number in the architecture. -** It returns: -** - 0 : if label is valid and domain has been updated. -** - 1 : if label is invalid. -** - 2 : on error. -*/ - -int -archTorusXDomTerm ( -const ArchTorusX * const archptr, -ArchTorusXDom * const domptr, -const ArchDomNum domnum) -{ - Anum dimnum; - Anum domtmp; - - for (dimnum = 0, domtmp = domnum; dimnum < archptr->dimmax; dimnum ++) { /* Set the domain */ - domptr->c[dimnum][0] = - domptr->c[dimnum][1] = domtmp % archptr->c[dimnum]; - domtmp /= archptr->c[dimnum]; - } - - if (domtmp > 0) /* If residual is not zero, terminal domain number is invalid since too high */ - return (1); - - return (0); -} - -/* This function returns the number of -** elements in the cubic domain. -*/ - -Anum -archTorusXDomSize ( -const ArchTorusX * const archptr, -const ArchTorusXDom * const domptr) -{ - Anum dimnum; - Anum domsiz; - - for (dimnum = 0, domsiz = 1; dimnum < archptr->dimmax; dimnum ++) - domsiz *= domptr->c[dimnum][1] - domptr->c[dimnum][0] + 1; - - return (domsiz); -} - /* This function returns the average distance -** between two cubic domains (in fact the -** distance between the centers of the domains). +** between two X-dimensional domains (that is, +** the Manhattan distance between the centers +** of the domains). */ Anum @@ -712,179 +163,18 @@ const ArchTorusXDom * const dom0ptr, const ArchTorusXDom * const dom1ptr) { - Anum dimnum; + Anum dimnnum; Anum distval; - Anum disttmp; - for (dimnum = 0, distval = 0; dimnum < archptr->dimmax; dimnum ++) { - disttmp = abs (dom0ptr->c[dimnum][0] + dom0ptr->c[dimnum][1] - - dom1ptr->c[dimnum][0] - dom1ptr->c[dimnum][1]); - distval += (disttmp > archptr->c[dimnum]) ? (2 * archptr->c[dimnum] - disttmp) : disttmp; - } - - return (distval >> 1); -} + for (dimnnum = 0, distval = 0; dimnnum < archptr->dimnnbr; dimnnum ++) { + Anum disttmp; -/* This function sets the biggest -** domain available for this -** architecture. -** It returns: -** - 0 : on success. -** - !0 : on error. -*/ - -int -archTorusXDomFrst ( -const ArchTorusX * const archptr, -ArchTorusXDom * restrict const domptr) -{ - Anum dimnum; - - for (dimnum = 0; dimnum < archptr->dimmax; dimnum ++) { - domptr->c[dimnum][0] = 0; - domptr->c[dimnum][1] = archptr->c[dimnum] - 1; - } - - return (0); -} - -/* This routine reads domain information -** from the given stream. -** It returns: -** - 0 : on success. -** - !0 : on error. -*/ - -int -archTorusXDomLoad ( -const ArchTorusX * const archptr, -ArchTorusXDom * restrict const domptr, -FILE * restrict const stream) -{ - Anum dimnum; - - for (dimnum = 0; dimnum < archptr->dimmax; dimnum ++) { - if ((intLoad (stream, &domptr->c[dimnum][0]) != 1) || - (intLoad (stream, &domptr->c[dimnum][1]) != 1) || - (domptr->c[dimnum][0] > domptr->c[dimnum][1]) || - (domptr->c[dimnum][0] < 0)) { - errorPrint ("archTorusXDomLoad: bad input"); - return (1); - } + disttmp = abs (dom0ptr->c[dimnnum][0] + dom0ptr->c[dimnnum][1] - + dom1ptr->c[dimnnum][0] - dom1ptr->c[dimnnum][1]); + distval += (disttmp > archptr->c[dimnnum]) ? (2 * archptr->c[dimnnum] - disttmp) : disttmp; } - return (0); -} - -/* This routine saves domain information -** to the given stream. -** It returns: -** - 0 : on success. -** - !0 : on error. -*/ - -int -archTorusXDomSave ( -const ArchTorusX * const archptr, -const ArchTorusXDom * const domptr, -FILE * restrict const stream) -{ - Anum dimnum; - - for (dimnum = 0; dimnum < archptr->dimmax; dimnum ++) { - if (fprintf (stream, ANUMSTRING " " ANUMSTRING " ", - (Anum) domptr->c[dimnum][0], - (Anum) domptr->c[dimnum][1]) == EOF) { - errorPrint ("archTorusXDomSave: bad output"); - return (1); - } - } - - return (0); -} - -/* This function tries to split a cubic -** domain into two subdomains. -** It returns: -** - 0 : if bipartitioning succeeded. -** - 1 : if bipartitioning could not be performed. -** - 2 : on error. -*/ - -int -archTorusXDomBipart ( -const ArchTorusX * const archptr, -const ArchTorusXDom * const domptr, -ArchTorusXDom * restrict const dom0ptr, -ArchTorusXDom * restrict const dom1ptr) -{ - Anum archdimsizmax; /* Maximum span on largest architecture dimension */ - Anum domndimsizmax; /* Maximum span on largest domain dimension */ - Anum domndimval; /* Dimension to be split */ - Anum domndimflg; /* Flag set if subdomain can be bipartitioned */ - Anum domndimtmp; - Anum dimnum; - - for (dimnum = domndimval = archptr->dimmax - 1, archdimsizmax = domndimflg = 0, domndimsizmax = -1; - dimnum >= 0; dimnum --) { - Anum archdimsiz; - Anum domndimsiz; - Anum domndim0; - Anum domndim1; - - dom0ptr->c[dimnum][0] = /* Set up subdomain data as copy of original domain data */ - dom1ptr->c[dimnum][0] = domndim0 = domptr->c[dimnum][0]; - dom0ptr->c[dimnum][1] = - dom1ptr->c[dimnum][1] = domndim1 = domptr->c[dimnum][1]; - - domndimsiz = domndim1 - domndim0; /* Span on current dimension */ - domndimflg |= domndimsiz; /* Flag set if at least one is not zero */ - - if (domndimsiz < domndimsizmax) /* If dimension is too small, skip it */ - continue; - archdimsiz = archptr->c[dimnum]; - if ((domndimsiz == domndimsizmax) && /* If dimension to split is not priviledged, skip it */ - (archdimsiz <= archdimsizmax)) - continue; - - archdimsizmax = archdimsiz; /* Record dimension to split */ - domndimsizmax = domndimsiz; - domndimval = dimnum; - } - - if (domndimflg == 0) /* Return if cannot bipartition more */ - return (1); - - domndimtmp = (domptr->c[domndimval][0] + domptr->c[domndimval][1]) / 2; - dom0ptr->c[domndimval][1] = domndimtmp; - dom1ptr->c[domndimval][0] = domndimtmp + 1; - - return (0); -} - -/* This function checks if dom1 is -** included in dom0. -** It returns: -** - 0 : if dom1 is not included in dom0. -** - 1 : if dom1 is included in dom0. -** - 2 : on error. -*/ - -int -archTorusXDomIncl ( -const ArchTorusX * const archptr, -const ArchTorusXDom * const dom0ptr, -const ArchTorusXDom * const dom1ptr) -{ - Anum dimnum; - - for (dimnum = 0; dimnum < archptr->dimmax; dimnum ++) { - if ((dom1ptr->c[dimnum][0] < dom0ptr->c[dimnum][0]) || - (dom1ptr->c[dimnum][1] > dom1ptr->c[dimnum][1])) - return (0); - } - - return (1); + return (distval >> 1); } /* This function creates the MPI_Datatype for diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_torus.h scotch-6.0.6/src/libscotch/arch_torus.h --- scotch-6.0.4.dfsg1/src/libscotch/arch_torus.h 2014-07-01 13:28:10.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_torus.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2011,2013,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2011,2013,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -62,8 +62,8 @@ /** to 05 nov 2003 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 21 jan 2008 **/ -/** # Version 6.0 : from : 14 fev 2011 **/ -/** to 01 jul 2014 **/ +/** # Version 6.0 : from : 14 feb 2011 **/ +/** to 28 may 2018 **/ /** **/ /************************************************************/ @@ -74,31 +74,20 @@ #ifndef ARCH_TORUS_H_STRUCT #define ARCH_TORUS_H_STRUCT -/*+ Maximum dimension. +*/ - -#define ARCHTORUSDIMMAX 5 /* Maximum dimension (at least 3) */ - -/*+ Data structure equivalence for target architecture array. +*/ - -#ifdef ARCH -#define ArchTorus2Dom ArchTorusXDom -#define ArchTorus3Dom ArchTorusXDom -#endif /* ARCH */ - /* ** The type and structure definitions. */ -/*+ The xD-torus definitions. +*/ +/*+ The torus definitions. +*/ -typedef struct ArchTorusX_ { - Anum dimmax; /*+ Number of torus dimensions +*/ - Anum c[ARCHTORUSDIMMAX]; /*+ Mesh dimensions +*/ -} ArchTorusX; - -typedef struct ArchTorusXDom_ { - Anum c[ARCHTORUSDIMMAX][2]; /*+ Inclusive X and Y coordinates +*/ -} ArchTorusXDom; +#define ArchTorus2 ArchMesh2 +#define ArchTorus2Dom ArchMesh2Dom + +#define ArchTorus3 ArchMesh3 +#define ArchTorus3Dom ArchMesh3Dom + +#define ArchTorusX ArchMeshX +#define ArchTorusXDom ArchMeshXDom #endif /* ARCH_TORUS_H_STRUCT */ @@ -110,65 +99,64 @@ #ifndef ARCH_TORUS_H_PROTO #define ARCH_TORUS_H_PROTO -#ifndef ARCH_TORUS -#define static -#endif - -int archTorus2ArchLoad (ArchTorusX * restrict const, FILE * restrict const); -int archTorus2ArchSave (const ArchTorusX * const, FILE * restrict const); -#define archTorus2ArchFree NULL -ArchDomNum archTorus2DomNum (const ArchTorusX * const, const ArchTorusXDom * const); -int archTorus2DomTerm (const ArchTorusX * const, ArchTorusXDom * restrict const, const ArchDomNum); -Anum archTorus2DomSize (const ArchTorusX * const, const ArchTorusXDom * const); -#define archTorus2DomWght archTorus2DomSize -Anum archTorus2DomDist (const ArchTorusX * const, const ArchTorusXDom * const, const ArchTorusXDom * const); -#define archTorus2DomFrst archTorusXDomFrst -#define archTorus2DomLoad archTorusXDomLoad -#define archTorus2DomSave archTorusXDomSave -int archTorus2DomBipart (const ArchTorusX * const, const ArchTorusXDom * const, ArchTorusXDom * restrict const, ArchTorusXDom * restrict const); -int archTorus2DomBipartO (const ArchTorusX * const, const ArchTorusXDom * const, ArchTorusXDom * restrict const, ArchTorusXDom * restrict const); -int archTorus2DomBipartU (const ArchTorusX * const, const ArchTorusXDom * const, ArchTorusXDom * restrict const, ArchTorusXDom * restrict const); -int archTorus2DomIncl (const ArchTorusX * const, const ArchTorusXDom * const, const ArchTorusXDom * const); -#ifdef SCOTCH_PTSCOTCH -#define archTorus2DomMpiType archTorusXDomMpiType -#endif /* SCOTCH_PTSCOTCH */ - -int archTorus3ArchLoad (ArchTorusX * restrict const, FILE * restrict const); -int archTorus3ArchSave (const ArchTorusX * const, FILE * restrict const); -#define archTorus3ArchFree NULL -ArchDomNum archTorus3DomNum (const ArchTorusX * const, const ArchTorusXDom * const); -int archTorus3DomTerm (const ArchTorusX * const, ArchTorusXDom * restrict const, const ArchDomNum); -Anum archTorus3DomSize (const ArchTorusX * const, const ArchTorusXDom * const); -#define archTorus3DomWght archTorus3DomSize -Anum archTorus3DomDist (const ArchTorusX * const, const ArchTorusXDom * const, const ArchTorusXDom * const); -#define archTorus3DomFrst archTorusXDomFrst -#define archTorus3DomLoad archTorusXDomLoad -#define archTorus3DomSave archTorusXDomSave -int archTorus3DomBipart (const ArchTorusX * const, const ArchTorusXDom * const, ArchTorusXDom * restrict const, ArchTorusXDom * restrict const); -int archTorus3DomIncl (const ArchTorusX * const, const ArchTorusXDom * const, const ArchTorusXDom * const); -#ifdef SCOTCH_PTSCOTCH -#define archTorus3DomMpiType archTorusXDomMpiType -#endif /* SCOTCH_PTSCOTCH */ - -int archTorusXArchLoad (ArchTorusX * restrict const, FILE * restrict const); -int archTorusXArchSave (const ArchTorusX * const, FILE * restrict const); -#define archTorusXArchFree NULL -ArchDomNum archTorusXDomNum (const ArchTorusX * const, const ArchTorusXDom * const); -int archTorusXDomTerm (const ArchTorusX * const, ArchTorusXDom * restrict const, const ArchDomNum); -Anum archTorusXDomSize (const ArchTorusX * const, const ArchTorusXDom * const); -#define archTorusXDomWght archTorusXDomSize +#define archTorus2ArchLoad archMesh2ArchLoad +#define archTorus2ArchSave archMesh2ArchSave +#define archTorus2ArchFree archMesh2ArchFree + +#define archTorus2MatchInit archMesh2MatchInit +#define archTorus2MatchExit archMesh2MatchExit +#define archTorus2MatchMate archMesh2MatchMate + +#define archTorus2DomNum archMesh2DomNum +#define archTorus2DomTerm archMesh2DomTerm +#define archTorus2DomSize archMesh2DomSize +#define archTorus2DomWght archMesh2DomSize +Anum archTorus2DomDist (const ArchTorus2 * const, const ArchTorus2Dom * const, const ArchTorus2Dom * const); +#define archTorus2DomFrst archMesh2DomFrst +#define archTorus2DomLoad archMesh2DomLoad +#define archTorus2DomSave archMesh2DomSave +#define archTorus2DomBipart archMesh2DomBipart +#define archTorus2DomBipartO archMesh2DomBipartO +#define archTorus2DomBipartU archMesh2DomBipartU +#define archTorus2DomIncl archMesh2DomIncl + +#define archTorus3ArchLoad archMesh3ArchLoad +#define archTorus3ArchSave archMesh3ArchSave +#define archTorus3ArchFree archMesh3ArchFree + +#define archTorus3MatchInit archMesh3MatchInit +#define archTorus3MatchExit archMesh3MatchExit +#define archTorus3MatchMate archMesh3MatchMate + +#define archTorus3DomNum archMesh3DomNum +#define archTorus3DomTerm archMesh3DomTerm +#define archTorus3DomSize archMesh3DomSize +#define archTorus3DomWght archMesh3DomSize +Anum archTorus3DomDist (const ArchTorus3 * const, const ArchTorus3Dom * const, const ArchTorus3Dom * const); +#define archTorus3DomFrst archMesh3DomFrst +#define archTorus3DomLoad archMesh3DomLoad +#define archTorus3DomSave archMesh3DomSave +#define archTorus3DomBipart archMesh3DomBipart +#define archTorus3DomIncl archMesh3DomIncl + +#define archTorusXArchLoad archMeshXArchLoad +#define archTorusXArchSave archMeshXArchSave +#define archTorusXArchFree archMeshXArchFree + +#define archTorusXMatchInit archMeshXMatchInit +#define archTorusXMatchExit archMeshXMatchExit +#define archTorusXMatchMate archMeshXMatchMate + +#define archTorusXDomNum archMeshXDomNum +#define archTorusXDomTerm archMeshXDomTerm +#define archTorusXDomSize archMeshXDomSize +#define archTorusXDomWght archMeshXDomSize Anum archTorusXDomDist (const ArchTorusX * const, const ArchTorusXDom * const, const ArchTorusXDom * const); -int archTorusXDomFrst (const ArchTorusX * const, ArchTorusXDom * const); -int archTorusXDomLoad (const ArchTorusX * const, ArchTorusXDom * const, FILE * restrict const); -int archTorusXDomSave (const ArchTorusX * const, const ArchTorusXDom * const, FILE * restrict const); -int archTorusXDomBipart (const ArchTorusX * const, const ArchTorusXDom * const, ArchTorusXDom * restrict const, ArchTorusXDom * restrict const); -int archTorusXDomIncl (const ArchTorusX * const, const ArchTorusXDom * const, const ArchTorusXDom * const); -#ifdef SCOTCH_PTSCOTCH -int archTorusXDomMpiType (const ArchTorusX * const, MPI_Datatype * const); -#endif /* SCOTCH_PTSCOTCH */ - -#undef static +#define archTorusXDomFrst archMeshXDomFrst +#define archTorusXDomLoad archMeshXDomLoad +#define archTorusXDomSave archMeshXDomSave +#define archTorusXDomBipart archMeshXDomBipart +#define archTorusXDomIncl archMeshXDomIncl #endif /* ARCH_TORUS_H_PROTO */ #endif /* ARCH_NOPROTO */ - diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_vcmplt.c scotch-6.0.6/src/libscotch/arch_vcmplt.c --- scotch-6.0.4.dfsg1/src/libscotch/arch_vcmplt.c 2014-08-26 11:47:04.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_vcmplt.c 2018-07-14 15:24:49.000000000 +0000 @@ -63,7 +63,7 @@ /** to 05 nov 2003 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 11 aug 2010 **/ -/** # Version 6.0 : from : 14 fev 2011 **/ +/** # Version 6.0 : from : 14 feb 2011 **/ /** to 26 aug 2014 **/ /** **/ /************************************************************/ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_vcmplt.h scotch-6.0.6/src/libscotch/arch_vcmplt.h --- scotch-6.0.4.dfsg1/src/libscotch/arch_vcmplt.h 2014-08-26 11:43:54.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_vcmplt.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2011,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -53,8 +53,8 @@ /** to 05 nov 2003 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 21 jan 2008 **/ -/** # Version 6.0 : from : 14 fev 2011 **/ -/** to 26 aug 2014 **/ +/** # Version 6.0 : from : 14 feb 2011 **/ +/** to 28 may 2018 **/ /** **/ /************************************************************/ @@ -86,13 +86,14 @@ #ifndef ARCH_VCMPLT_H_PROTO #define ARCH_VCMPLT_H_PROTO -#ifndef ARCH_VCMPLT -#define static -#endif - #define archVcmpltArchLoad NULL #define archVcmpltArchSave NULL #define archVcmpltArchFree NULL + +#define archVcmpltMatchInit NULL +#define archVcmpltMatchExit NULL +#define archVcmpltMatchMate NULL + ArchDomNum archVcmpltDomNum (const ArchVcmplt * const, const ArchVcmpltDom * const); int archVcmpltDomTerm (const ArchVcmplt * const, ArchVcmpltDom * restrict const, const ArchDomNum); Anum archVcmpltDomSize (const ArchVcmplt * const, const ArchVcmpltDom * const); @@ -107,7 +108,5 @@ int archVcmpltDomMpiType (const ArchVcmplt * const, MPI_Datatype * const); #endif /* SCOTCH_PTSCOTCH */ -#undef static - #endif /* ARCH_VCMPLT_H_PROTO */ #endif /* ARCH_NOPROTO */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_vhcub.c scotch-6.0.6/src/libscotch/arch_vhcub.c --- scotch-6.0.4.dfsg1/src/libscotch/arch_vhcub.c 2014-08-26 11:36:45.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_vhcub.c 2018-07-14 15:24:49.000000000 +0000 @@ -45,7 +45,7 @@ /** to 04 nov 2003 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 27 feb 2008 **/ -/** # Version 6.0 : from : 14 fev 2011 **/ +/** # Version 6.0 : from : 14 feb 2011 **/ /** to 26 aug 2014 **/ /** **/ /************************************************************/ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/arch_vhcub.h scotch-6.0.6/src/libscotch/arch_vhcub.h --- scotch-6.0.4.dfsg1/src/libscotch/arch_vhcub.h 2014-07-01 13:31:57.000000000 +0000 +++ scotch-6.0.6/src/libscotch/arch_vhcub.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2011,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -46,8 +46,8 @@ /** to 04 nov 2003 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 21 jan 2008 **/ -/** # Version 6.0 : from : 14 fev 2011 **/ -/** to 01 jul 2014 **/ +/** # Version 6.0 : from : 14 feb 2011 **/ +/** to 28 may 2018 **/ /** **/ /************************************************************/ @@ -79,13 +79,14 @@ #ifndef ARCH_VHCUB_H_PROTO #define ARCH_VHCUB_H_PROTO -#ifndef ARCH_VHCUB -#define static -#endif - #define archVhcubArchLoad NULL #define archVhcubArchSave NULL #define archVhcubArchFree NULL + +#define archVhcubMatchInit NULL +#define archVhcubMatchExit NULL +#define archVhcubMatchMate NULL + ArchDomNum archVhcubDomNum (const ArchVhcub * const, const ArchVhcubDom * const); int archVhcubDomTerm (const ArchVhcub * const, ArchVhcubDom * restrict const, const ArchDomNum); Anum archVhcubDomSize (const ArchVhcub * const, const ArchVhcubDom * const); @@ -100,7 +101,5 @@ int archVhcubDomMpiType (const ArchVhcub * const, MPI_Datatype * const); #endif /* SCOTCH_PTSCOTCH */ -#undef static - #endif /* ARCH_VHCUB_H_PROTO */ #endif /* ARCH_NOPROTO */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bdgraph_bipart_bd.c scotch-6.0.6/src/libscotch/bdgraph_bipart_bd.c --- scotch-6.0.4.dfsg1/src/libscotch/bdgraph_bipart_bd.c 2014-08-31 19:08:53.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bdgraph_bipart_bd.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2008,2010,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2008,2010,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -46,7 +46,7 @@ /** DATES : # Version 5.1 : from : 11 nov 2007 **/ /** to : 14 apr 2011 **/ /** # Version 6.0 : from : 11 sep 2011 **/ -/** to : 31 aug 2014 **/ +/** to : 15 may 2018 **/ /** **/ /** NOTES : # Since only edges from local vertices **/ /** to local anchors are created in **/ @@ -253,8 +253,10 @@ } if (dgraphGhst (&bndgrafdat.s) != 0) { /* Compute ghost edge array if not already present */ - errorPrint ("bdgraphBipartBd: cannot compute ghost edge array"); - return (1); + errorPrint ("bdgraphBipartBd: cannot compute ghost edge array"); + memFree (orgflagloctab); + bdgraphExit (&bndgrafdat); + return (1); } if (reduglbtab[0] == orggrafptr->s.procglbnbr) { /* If all anchors swapped parts, swap all parts of original vertices */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bdgraph_bipart_bd.h scotch-6.0.6/src/libscotch/bdgraph_bipart_bd.h --- scotch-6.0.4.dfsg1/src/libscotch/bdgraph_bipart_bd.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bdgraph_bipart_bd.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007 ENSEIRB, INRIA & CNRS +/* Copyright 2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 5.1 : from : 11 nov 2007 **/ /** to : 15 jul 2010 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -60,10 +62,4 @@ ** The function prototypes. */ -#ifndef BDGRAPH_BIPART_BD -#define static -#endif - int bdgraphBipartBd (Bdgraph * const, const BdgraphBipartBdParam * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bdgraph_bipart_df.h scotch-6.0.6/src/libscotch/bdgraph_bipart_df.h --- scotch-6.0.4.dfsg1/src/libscotch/bdgraph_bipart_df.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bdgraph_bipart_df.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2009,2011 ENSEIRB, INRIA & CNRS +/* Copyright 2007,2009,2011,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 5.1 : from : 16 nov 2007 **/ /** to : 14 apr 2011 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -80,10 +82,4 @@ ** The function prototypes. */ -#ifndef BDGRAPH_BIPART_DF -#define static -#endif - int bdgraphBipartDf (Bdgraph * const, const BdgraphBipartDfParam * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bdgraph_bipart_ex.h scotch-6.0.6/src/libscotch/bdgraph_bipart_ex.h --- scotch-6.0.4.dfsg1/src/libscotch/bdgraph_bipart_ex.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bdgraph_bipart_ex.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2010 ENSEIRB, INRIA & CNRS +/* Copyright 2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,6 +42,8 @@ /** **/ /** DATES : # Version 5.1 : from : 14 jul 2010 **/ /** to : 14 aug 2010 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -76,10 +78,4 @@ ** The function prototypes. */ -#ifndef BDGRAPH_BIPART_EX -#define static -#endif - int bdgraphBipartEx (Bdgraph * restrict const, const BdgraphBipartExParam * restrict const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bdgraph_bipart_ml.c scotch-6.0.6/src/libscotch/bdgraph_bipart_ml.c --- scotch-6.0.4.dfsg1/src/libscotch/bdgraph_bipart_ml.c 2014-09-28 16:41:08.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bdgraph_bipart_ml.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007-2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007-2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 5.1 : from : 30 oct 2007 **/ /** to : 14 apr 2011 **/ /** : # Version 6.0 : from : 11 sep 2011 **/ -/** to : 28 sep 2014 **/ +/** to : 07 jun 2018 **/ /** **/ /************************************************************/ @@ -234,7 +234,6 @@ Gnum finefronlocnum; Gnum fineedlolocval; Gnum finevertlocadj; /* Global vertex adjustment */ - Gnum finevertlocnum; Gnum finevertlocnnd; /* Index for frontier array fronloctab */ Gnum finecomplocsize1; Gnum finecomplocload1; @@ -262,6 +261,9 @@ GraphPart * restrict coarpartgsttax; GraphPart * restrict finepartgsttax; Gnum * restrict finefronloctab; +#ifdef SCOTCH_DEBUG_BDGRAPH2 + Gnum finevertlocnum; +#endif /* SCOTCH_DEBUG_BDGRAPH2 */ const int fineprocglbnbr = finegrafptr->s.procglbnbr; const Gnum * restrict const fineprocvrttab = finegrafptr->s.procvrttab; @@ -488,7 +490,7 @@ } if (MPI_Alltoall (vsndcnttab, 1, MPI_INT, vrcvcnttab, 1, MPI_INT, finegrafptr->s.proccomm) != MPI_SUCCESS) { - errorPrint ("bdgraphBipartMlUncoarsen: communication error (3)"); + errorPrint ("bdgraphBipartMlUncoarsen: communication error (6)"); return (1); } @@ -508,7 +510,7 @@ } #ifdef SCOTCH_DEBUG_BDGRAPH1 /* Communication cannot be overlapped by a useful one */ if (MPI_Allreduce (&reduloctab[5], &reduglbtab[5], 1, GNUM_MPI, MPI_SUM, finegrafptr->s.proccomm) != MPI_SUCCESS) { - errorPrint ("bdgraphBipartMlUncoarsen: communication error (4)"); + errorPrint ("bdgraphBipartMlUncoarsen: communication error (7)"); return (1); } #else /* SCOTCH_DEBUG_BDGRAPH1 */ @@ -568,7 +570,7 @@ #ifdef SCOTCH_DEBUG_BDGRAPH2 if (((partval < 3) && (vsndidxtab[4 * procngbnum + partval] >= vsndidxtab[4 * procngbnum + partval + 1])) || (vsndidxtab[4 * procngbnum + partval] >= (vsnddsptab[procngbnum] + vsndcnttab[procngbnum]))) { - errorPrint ("bdgraphBipartMlUncoarsen: internal error (3)"); + errorPrint ("bdgraphBipartMlUncoarsen: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ @@ -577,7 +579,7 @@ if (MPI_Alltoallv (vsnddattab, vsndcnttab, vsnddsptab, GNUM_MPI, vrcvdattab, vrcvcnttab, vrcvdsptab, GNUM_MPI, finegrafptr->s.proccomm) != MPI_SUCCESS) { - errorPrint ("bdgraphBipartMlUncoarsen: communication error (5)"); + errorPrint ("bdgraphBipartMlUncoarsen: communication error (8)"); return (1); } @@ -597,7 +599,7 @@ finevertlocnum = vrcvdattab[vrcvidxnum] - finevertlocadj; #ifdef SCOTCH_DEBUG_BDGRAPH2 if ((finevertlocnum < baseval) || (finevertlocnum >= finevertlocnnd)) { - errorPrint ("bdgraphBipartMlUncoarsen: internal error (4)"); + errorPrint ("bdgraphBipartMlUncoarsen: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ @@ -611,7 +613,7 @@ finevertlocnum = vrcvdattab[vrcvidxnum] - finevertlocadj; #ifdef SCOTCH_DEBUG_BDGRAPH2 if ((finevertlocnum < baseval) || (finevertlocnum >= finevertlocnnd)) { - errorPrint ("bdgraphBipartMlUncoarsen: internal error (5)"); + errorPrint ("bdgraphBipartMlUncoarsen: internal error (4)"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ @@ -634,7 +636,7 @@ finevertlocnum = vrcvdattab[vrcvidxnum] - finevertlocadj; #ifdef SCOTCH_DEBUG_BDGRAPH2 if ((finevertlocnum < baseval) || (finevertlocnum >= finevertlocnnd)) { - errorPrint ("bdgraphBipartMlUncoarsen: internal error (6)"); + errorPrint ("bdgraphBipartMlUncoarsen: internal error (5)"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ @@ -649,7 +651,7 @@ finevertlocnum = vrcvdattab[vrcvidxnum] - finevertlocadj; #ifdef SCOTCH_DEBUG_BDGRAPH2 if ((finevertlocnum < baseval) || (finevertlocnum >= finevertlocnnd)) { - errorPrint ("bdgraphBipartMlUncoarsen: internal error (7)"); + errorPrint ("bdgraphBipartMlUncoarsen: internal error (6)"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ @@ -670,7 +672,7 @@ #ifdef SCOTCH_DEBUG_BDGRAPH2 for (finevertlocnum = baseval; finevertlocnum < finevertlocnnd; finevertlocnum ++) { if (finepartgsttax[finevertlocnum] == ((GraphPart) ~0)) { - errorPrint ("bdgraphBipartMlUncoarsen: internal error (8)"); + errorPrint ("bdgraphBipartMlUncoarsen: internal error (7)"); return (1); } } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bdgraph_bipart_ml.h scotch-6.0.6/src/libscotch/bdgraph_bipart_ml.h --- scotch-6.0.4.dfsg1/src/libscotch/bdgraph_bipart_ml.h 2014-09-28 16:41:08.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bdgraph_bipart_ml.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007-2009,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007-2009,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,7 +43,7 @@ /** DATES : # Version 5.1 : from : 30 oct 2007 **/ /** to : 29 oct 2009 **/ /** # Version 6.0 : from : 28 sep 2014 **/ -/** to 28 sep 2014 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -73,14 +73,11 @@ ** The function prototypes. */ -#ifndef BDGRAPH_BIPART_ML -#define static -#endif - +#ifdef BDGRAPH_BIPART_ML static int bdgraphBipartMlCoarsen (Bdgraph * const, Bdgraph * const, DgraphCoarsenMulti * restrict * const, const BdgraphBipartMlParam * const); static int bdgraphBipartMlUncoarsen (Bdgraph *, const Bdgraph * const, const DgraphCoarsenMulti * restrict const); static void bdgraphBipartMlOpBest (const Gnum * const, Gnum * const, const int * const, const MPI_Datatype * const); -int bdgraphBipartMl (Bdgraph * const, const BdgraphBipartMlParam * const); static int bdgraphBipartMl2 (Bdgraph * const, const BdgraphBipartMlParam * const); +#endif /* BDGRAPH_BIPART_ML */ -#undef static +int bdgraphBipartMl (Bdgraph * const, const BdgraphBipartMlParam * const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bdgraph_bipart_sq.h scotch-6.0.6/src/libscotch/bdgraph_bipart_sq.h --- scotch-6.0.4.dfsg1/src/libscotch/bdgraph_bipart_sq.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bdgraph_bipart_sq.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007 ENSEIRB, INRIA & CNRS +/* Copyright 2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -35,12 +35,14 @@ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** **/ -/** FUNCTION : These lines are the data declaration **/ +/** FUNCTION : These lines are the data declarations **/ /** for the sequential bipartitioning **/ /** routine for distributed graphs. **/ /** **/ /** DATES : # Version 5.1 : from : 19 nov 2007 **/ /** to : 20 nov 2007 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -58,12 +60,8 @@ ** The function prototypes. */ -#ifndef BDGRAPH_BIPART_SQ -#define static -#endif - -int bdgraphBipartSq (Bdgraph * const, const BdgraphBipartSqParam * const); - +#ifdef BDGRAPH_BIPART_SQ static void bdgraphBipartSqOpBest (const Gnum * const, Gnum * const, const int * const, const MPI_Datatype * const); +#endif /* BDGRAPH_BIPART_SQ */ -#undef static +int bdgraphBipartSq (Bdgraph * const, const BdgraphBipartSqParam * const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bdgraph_bipart_st.h scotch-6.0.6/src/libscotch/bdgraph_bipart_st.h --- scotch-6.0.4.dfsg1/src/libscotch/bdgraph_bipart_st.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bdgraph_bipart_st.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,6 +44,8 @@ /** **/ /** DATES : # Version 5.1 : from : 10 sep 2007 **/ /** to 16 jul 2010 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -73,10 +75,4 @@ ** The function prototypes. */ -#ifndef BDGRAPH_BIPART_ST -#define static -#endif - int bdgraphBipartSt (Bdgraph * const, const Strat * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bdgraph_bipart_zr.h scotch-6.0.6/src/libscotch/bdgraph_bipart_zr.h --- scotch-6.0.4.dfsg1/src/libscotch/bdgraph_bipart_zr.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bdgraph_bipart_zr.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007 ENSEIRB, INRIA & CNRS +/* Copyright 2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,6 +42,8 @@ /** **/ /** DATES : # Version 5.1 : from : 10 sep 2007 **/ /** to 26 oct 2007 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -49,10 +51,4 @@ ** The function prototypes. */ -#ifndef BDGRAPH_BIPART_ZR -#define static -#endif - int bdgraphBipartZr (Bdgraph * restrict const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bdgraph_gather_all.c scotch-6.0.6/src/libscotch/bdgraph_gather_all.c --- scotch-6.0.4.dfsg1/src/libscotch/bdgraph_gather_all.c 2014-08-31 19:35:12.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bdgraph_gather_all.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2008,2010,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2008,2010,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** DATES : # Version 5.1 : from : 21 dec 2007 **/ /** to 14 apr 2011 **/ /** # Version 6.0 : from : 29 aug 2014 **/ -/** to 31 aug 2014 **/ +/** to 07 jun 2018 **/ /** **/ /** NOTES : # The definitions of MPI_Gather and **/ /** MPI_Gatherv indicate that elements in **/ @@ -87,14 +87,14 @@ int * restrict froncnttab; /* Count array for gather operations */ int * restrict fronvrttab; /* Displacement array for gather operations */ int fronlocnbr; /* Also int to enforce MPI standard */ - int cheklocval; #ifdef SCOTCH_DEBUG_BDGRAPH1 + int cheklocval; int chekglbval; #endif /* SCOTCH_DEBUG_BDGRAPH1 */ int procnum; - cheklocval = 0; #ifdef SCOTCH_DEBUG_BDGRAPH1 + cheklocval = 0; if (cgrfptr == NULL) /* Centralized graphs should be provided by all */ cheklocval = 1; if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, dgrfptr->s.proccomm) != MPI_SUCCESS) { @@ -239,7 +239,7 @@ memFree (froncnttab); /* Free group leader */ for (procnum = 0; procnum < dgrfptr->s.proclocnum; procnum ++) /* Desynchronize random generators across processes */ - cheklocval = intRandVal (2); + intRandVal (2); intPerm (cgrfptr->frontab, dgrfptr->fronglbnbr); /* Compute permutation of frontier array to have different solutions on every process */ cgrfptr->compload0 = dgrfptr->compglbload0; /* Update other fields */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bdgraph.h scotch-6.0.6/src/libscotch/bdgraph.h --- scotch-6.0.4.dfsg1/src/libscotch/bdgraph.h 2014-08-31 19:05:09.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bdgraph.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2008,2010,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2008,2010,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,7 +43,7 @@ /** DATES : # Version 5.1 : from : 10 sep 2007 **/ /** to : 14 apr 2011 **/ /** # Version 6.0 : from : 11 sep 2011 **/ -/** to : 31 aug 2014 **/ +/** to : 07 jun 2018 **/ /** **/ /************************************************************/ @@ -104,10 +104,6 @@ ** The function prototypes. */ -#ifndef BDGRAPH -#define static -#endif - #ifdef DMAPPING_H int bdgraphInit (Bdgraph * const, const Dgraph * const, const Dgraph * const, const Arch * const, const ArchDom[]); #endif /* DMAPPING_H */ @@ -127,5 +123,3 @@ void bdgraphStoreExit (BdgraphStore * const); void bdgraphStoreSave (const Bdgraph * const , BdgraphStore * const); void bdgraphStoreUpdt (Bdgraph * const, const BdgraphStore * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_bd.c scotch-6.0.6/src/libscotch/bgraph_bipart_bd.c --- scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_bd.c 2014-08-08 14:15:40.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bgraph_bipart_bd.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010,2011,2014,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,7 +45,7 @@ /** # Version 5.1 : from : 09 nov 2008 **/ /** to : 26 mar 2011 **/ /** # Version 6.0 : from : 07 nov 2011 **/ -/** to : 08 aug 2014 **/ +/** to : 15 may 2018 **/ /** **/ /************************************************************/ @@ -146,11 +146,8 @@ queutailval = 0; bndvlvlnum = 0; /* Assume first layer is last layer */ while (distmax -- > 0) { /* For all passes except the last one */ - Gnum orgvertnum; - Gnum orgdistval; - - bndvlvlnum = queuheadval; /* Record start of last layer */ - while (queutailval < bndvlvlnum) { /* For all vertices in queue */ + bndvlvlnum = queuheadval; /* Record start of last layer */ + while (queutailval < bndvlvlnum) { /* For all vertices in queue */ Gnum orgvertnum; Gnum orgedgenum; Gnum orgpartval; @@ -382,11 +379,8 @@ } #endif /* SCOTCH_DEBUG_BGRAPH2 */ bndgrafdat.s.edgenbr = bndedgetmp - orggrafptr->s.baseval; - bndgrafdat.s.verttax[bndvertnnd + 2] = bndedgetmp; /* Mark end of edge array with anchor vertices */ - for (bndvertnum = bndvlvlnum; bndvertnum < bndvertnnd; bndvertnum ++) { /* Fill anchor edge arrays */ - Gnum orgvertnum; - - orgvertnum = bndvnumtax[bndvertnum]; + bndgrafdat.s.verttax[bndvertnnd + 2] = bndedgetmp; /* Mark end of edge array with anchor vertices */ + for (bndvertnum = bndvlvlnum; bndvertnum < bndvertnnd; bndvertnum ++) { /* Fill anchor edge arrays */ if (bndgrafdat.s.verttax[bndvertnum + 1] > bndgrafdat.s.verttax[bndvertnum]) { /* If vertex is not isolated */ Gnum bndedgelst; /* Number of last edge */ Gnum bndvertend; @@ -445,9 +439,7 @@ Gnum bndfronnnd; Gnum bndvertnum; Gnum bndedgenum; - Gnum bndedloval; - bndedloval = 1; /* Assume unity edge weights */ bndcommloadintn = 0; for (bndvertnum = orggrafptr->s.baseval, bndfronnnd = bndvertnum + orggrafptr->fronnbr; /* Compute communication load at frontier */ bndvertnum < bndfronnnd; bndvertnum ++) { @@ -461,8 +453,7 @@ Gnum bndpartend; bndpartend = (Gnum) bndgrafdat.parttax[bndedgetax[bndedgenum]]; - bndedloval = bndedlotax[bndedgenum]; - bndcommloadintn += bndedloval * bndpartend; + bndcommloadintn += bndedlotax[bndedgenum] * bndpartend; } } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_df.h scotch-6.0.6/src/libscotch/bgraph_bipart_df.h --- scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_df.h 2012-11-30 14:17:17.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bgraph_bipart_df.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2011,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2011,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** # Version 5.1 : from : 29 oct 2007 **/ /** to 28 mar 2011 **/ /** # Version 6.0 : from : 08 nov 2011 **/ -/** to 20 nov 2012 **/ +/** to 05 apr 2018 **/ /** **/ /************************************************************/ @@ -117,10 +117,4 @@ ** The function prototypes. */ -#ifndef BGRAPH_BIPART_DF -#define static -#endif - int bgraphBipartDf (Bgraph * restrict const, const BgraphBipartDfParam * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_df_loop.c scotch-6.0.6/src/libscotch/bgraph_bipart_df_loop.c --- scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_df_loop.c 2014-08-08 14:16:38.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bgraph_bipart_df_loop.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2011-2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2011-2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -51,7 +51,7 @@ /** # Version 5.1 : from : 29 oct 2007 **/ /** to 27 mar 2011 **/ /** # Version 6.0 : from : 07 nov 2011 **/ -/** to : 08 aug 2014 **/ +/** to : 03 jun 2018 **/ /** **/ /************************************************************/ @@ -79,13 +79,11 @@ float * restrict difntax; /* New diffusion value array */ Gnum vertnum; Gnum fronnum; - Gnum compload0; Gnum compload1; Gnum compsize1; Gnum commloadintn; Gnum commloadextn; Gnum commgainextn; - Gnum veexnbr; Gnum veexval; Gnum veexval1; /* Negative external gain to part 1 */ Gnum veexsum; @@ -314,7 +312,9 @@ } #endif /* BGRAPHBIPARTDFLOOPTHREAD */ } +#ifndef BGRAPHBIPARTDFLOOPTHREAD abort : ; +#endif /* BGRAPHBIPARTDFLOOPTHREAD */ for (vertnum = vertbas; vertnum < vertnnd; vertnum ++) /* Update part according to diffusion state */ parttax[vertnum] = (difotax[vertnum] <= 0.0F) ? 0 : 1; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_ex.c scotch-6.0.6/src/libscotch/bgraph_bipart_ex.c --- scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_ex.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bgraph_bipart_ex.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -55,6 +55,8 @@ /** to 11 dec 2003 **/ /** # Version 5.1 : from : 30 nov 2007 **/ /** to 30 nov 2007 **/ +/** # Version 6.0 : from : 14 aug 2016 **/ +/** to 21 may 2018 **/ /** **/ /************************************************************/ @@ -98,11 +100,12 @@ parafmdat.movenbr = grafptr->s.vertnbr; parafmdat.passnbr = ~0; parafmdat.deltval = 0.0L; /* Exact balance required */ + parafmdat.typeval = BGRAPHBIPARTFMTYPEALL; /* All vertices involved */ if (bgraphBipartFm (grafptr, ¶fmdat) != 0) /* Return if error */ return (1); if ((grafptr->s.vertnbr > 1) && /* If graph has several vertices but is completely imbalanced */ - ((grafptr->compload0 == 0) || (grafptr->compload0 == grafptr->s.velosum))) { + ((grafptr->compsize0 == 0) || (grafptr->compsize0 == grafptr->s.vertnbr))) { BgraphBipartGgParam paraggdat; /* Parameter area for the Greedy Graph Growing algorithm */ paraggdat.passnbr = 4; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_ex.h scotch-6.0.6/src/libscotch/bgraph_bipart_ex.h --- scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_ex.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bgraph_bipart_ex.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -51,6 +51,8 @@ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 11 dec 2003 **/ /** to 11 dec 2003 **/ +/** # Version 6.0 : from : 05 apr 2018 **/ +/** to 05 apr 2018 **/ /** **/ /************************************************************/ @@ -70,10 +72,4 @@ ** The function prototypes. */ -#ifndef BGRAPH_BIPART_EX -#define static -#endif - int bgraphBipartEx (Bgraph * restrict const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_fm.c scotch-6.0.6/src/libscotch/bgraph_bipart_fm.c --- scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_fm.c 2014-08-29 10:39:16.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bgraph_bipart_fm.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2011,2014,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -64,8 +64,8 @@ /** to : 22 may 2008 **/ /** # Version 5.1 : from : 30 oct 2008 **/ /** to : 14 apr 2011 **/ -/** # Version 6.0 : from : 23 fev 2011 **/ -/** to 09 aug 2014 **/ +/** # Version 6.0 : from : 23 feb 2011 **/ +/** to 27 aug 2016 **/ /** **/ /************************************************************/ @@ -189,7 +189,7 @@ deltbest = deltmax; remoptr = NULL; - while ((linkptr = fiboTreeMin (tablptr)) != NULL) { /* Select candidate vertices */ + while ((linkptr = fiboHeapMin (tablptr)) != NULL) { /* Select candidate vertices */ Gnum deltnew; Gnum gainval; /* Separator gain of current link */ @@ -198,7 +198,7 @@ if (gainval > gainbest) /* If no more interesting vertices, stop searching */ break; - fiboTreeDel (tablptr, linkptr); /* Remove vertex link from table */ + fiboHeapDel (tablptr, linkptr); /* Remove vertex link from table */ linkptr->linkdat.prevptr = remoptr; /* Node has been removed but is not kept */ remoptr = linkptr; /* It will be chained back afterwards */ @@ -219,7 +219,7 @@ tempptr = remoptr; /* Get pointer to node */ remoptr = remoptr->linkdat.prevptr; /* Find next node */ - fiboTreeAdd (tablptr, tempptr); /* Re-link node */ + fiboHeapAdd (tablptr, tempptr); /* Re-link node */ } return (vertbest); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_fm.h scotch-6.0.6/src/libscotch/bgraph_bipart_fm.h --- scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_fm.h 2011-11-15 16:04:58.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bgraph_bipart_fm.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2011 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2011,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -58,8 +58,8 @@ /** to 12 mar 1999 **/ /** # Version 4.0 : from : 27 aug 2004 **/ /** to 27 aug 2004 **/ -/** # Version 6.0 : from : 23 fev 2011 **/ -/** to 05 sep 2011 **/ +/** # Version 6.0 : from : 23 feb 2011 **/ +/** to 27 aug 2016 **/ /** **/ /************************************************************/ @@ -104,7 +104,7 @@ #else /* SCOTCH_TABLE_GAIN */ -typedef FiboTree BgraphBipartFmTabl; +typedef FiboHeap BgraphBipartFmTabl; typedef FiboNode BgraphBipartFmLink; #endif /* SCOTCH_TABLE_GAIN */ @@ -195,11 +195,11 @@ /*+ Service routines. +*/ -#define bgraphBipartFmTablInit(t) (fiboTreeInit ((t), bgraphBipartFmCmpFunc)) -#define bgraphBipartFmTablFree(t) fiboTreeFree (t) -#define bgraphBipartFmTablExit(t) fiboTreeExit (t) -#define bgraphBipartFmTablAdd(t,v) fiboTreeAdd ((t), &(v)->gainlink) -#define bgraphBipartFmTablDel(t,v) fiboTreeDel ((t), &(v)->gainlink) +#define bgraphBipartFmTablInit(t) (fiboHeapInit ((t), bgraphBipartFmCmpFunc)) +#define bgraphBipartFmTablFree(t) fiboHeapFree (t) +#define bgraphBipartFmTablExit(t) fiboHeapExit (t) +#define bgraphBipartFmTablAdd(t,v) fiboHeapAdd ((t), &(v)->gainlink) +#define bgraphBipartFmTablDel(t,v) fiboHeapDel ((t), &(v)->gainlink) #define bgraphBipartFmIsFree(v) ((v)->gainlink.linkdat.nextptr == BGRAPHBIPARTFMSTATEFREE) #define bgraphBipartFmIsTabl(v) ((v)->gainlink.linkdat.nextptr >= BGRAPHBIPARTFMSTATELINK) #define bgraphBipartFmIsUsed(v) ((v)->gainlink.linkdat.nextptr == BGRAPHBIPARTFMSTATEUSED) diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_gg.c scotch-6.0.6/src/libscotch/bgraph_bipart_gg.c --- scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_gg.c 2014-08-25 10:53:40.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bgraph_bipart_gg.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2009,2011,2013,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2009,2011,2013,2014,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -55,8 +55,8 @@ /** to 04 feb 2007 **/ /** # Version 5.1 : from : 21 nov 2007 **/ /** to 22 feb 2011 **/ -/** # Version 6.0 : from : 23 fev 2011 **/ -/** to 08 aug 2014 **/ +/** # Version 6.0 : from : 23 feb 2011 **/ +/** to 01 may 2016 **/ /** **/ /************************************************************/ @@ -81,8 +81,7 @@ ** The static variables. */ -static const Gnum bgraphbipartggloadone = 1; -static const Gnum bgraphbipartggloadzero = 0; +static const Gnum bgraphbipartggloadone = 1; /*****************************/ /* */ @@ -129,13 +128,10 @@ BgraphBipartGgTabl tabldat; /* Gain table */ BgraphBipartGgVertex * vexxtax; /* Extended vertex array [norestrict] */ BgraphBipartGgVertex * vexxptr; /* Pointer to current vertex to swap */ - const Gnum * restrict veexptr; /* Pointer to external gain of current vertex */ Gnum * restrict permtab; /* Permutation table for finding new roots */ Gnum permnum; /* Current permutation index */ const Gnum * restrict velobax; /* Data for handling of optional arrays */ Gnum velomsk; - const byte * restrict veexbab; /* Un-based array for external gains */ - int veexsiz; const Gnum * edlobax; /* Pointer to array or dummy value [norestrict] */ Gnum edlomsk; byte * restrict flagtax; @@ -204,14 +200,6 @@ velobax = grafptr->s.velotax; velomsk = ~((Gnum) 0); } - if (veextax == NULL) { - veexbab = (byte *) &bgraphbipartggloadzero; - veexsiz = 0; - } - else { - veexbab = (byte *) (veextax + grafptr->s.baseval); - veexsiz = sizeof (Gnum); - } for (passnum = 0; passnum < paraptr->passnbr; passnum ++) { /* For all passes */ Gnum vertnum; @@ -253,7 +241,8 @@ vertnum = vexxptr - vexxtax; /* Get number of selected vertex */ veloval = velobax[vertnum & velomsk]; - if (abs (compload0dlt - veloval) >= abs (compload0dlt)) { /* If swapping would cause imbalance */ + if ((abs (compload0dlt - veloval) >= abs (compload0dlt)) && /* If swapping would cause imbalance */ + (veloval > 0)) { /* And not a zero weight vertex */ #ifndef SCOTCH_TABLE_GAIN bgraphBipartGgNext (vexxptr) = BGRAPHBIPARTGGSTATELINK; /* Vertex belongs to frontier of part 0 */ #endif /* SCOTCH_TABLE_GAIN */ @@ -317,8 +306,8 @@ flagtax = (byte *) (vexxtax + grafptr->s.baseval) - grafptr->s.baseval; /* Re-use extended vertex array for flag array */ memSet (flagtax + grafptr->s.baseval, ~0, grafptr->s.vertnbr * sizeof (byte)); - for (vertnum = grafptr->s.baseval, veexptr = (Gnum *) veexbab, fronnum = 0, compsize1 = 0, commgainextn = grafptr->commgainextn0; - vertnum < grafptr->s.vertnnd; vertnum ++, veexptr = (Gnum *) ((byte *) veexptr + veexsiz)) { + for (vertnum = grafptr->s.baseval, fronnum = 0, compsize1 = 0, commgainextn = grafptr->commgainextn0; + vertnum < grafptr->s.vertnnd; vertnum ++) { int partval; partval = grafptr->parttax[vertnum]; @@ -343,9 +332,10 @@ } fronnum -= frontmp; /* Remove vertex from frontier if it was useless */ } - partval &= 1; - compsize1 += partval; - commgainextn -= partval * 2 * *veexptr; + partval &= 1; + compsize1 += partval; + if (veextax != NULL) + commgainextn -= partval * 2 * veextax[vertnum]; } grafptr->fronnbr = fronnum; grafptr->compload0 = grafptr->compload0avg + grafptr->compload0dlt; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_gg.h scotch-6.0.6/src/libscotch/bgraph_bipart_gg.h --- scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_gg.h 2013-09-03 08:01:47.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bgraph_bipart_gg.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2011 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2011,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -49,8 +49,8 @@ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 09 jan 2004 **/ /** to 09 jan 2004 **/ -/** # Version 6.0 : from : 23 fev 2011 **/ -/** to 09 nov 2011 **/ +/** # Version 6.0 : from : 23 feb 2011 **/ +/** to 05 apr 2018 **/ /** **/ /************************************************************/ @@ -77,7 +77,7 @@ #else /* SCOTCH_TABLE_GAIN */ -typedef FiboTree BgraphBipartGgTabl; +typedef FiboHeap BgraphBipartGgTabl; typedef FiboNode BgraphBipartGgLink; #endif /* SCOTCH_TABLE_GAIN */ @@ -94,14 +94,8 @@ ** The function prototypes. */ -#ifndef BGRAPH_BIPART_GG -#define static -#endif - int bgraphBipartGg (Bgraph * restrict const, const BgraphBipartGgParam * const); -#undef static - /* ** The macro definitions. */ @@ -146,12 +140,12 @@ /*+ Service routines. +*/ -#define bgraphBipartGgTablInit(t) (fiboTreeInit ((t), bgraphBipartGgCmpFunc)) -#define bgraphBipartGgTablFree(t) fiboTreeFree (t) -#define bgraphBipartGgTablExit(t) fiboTreeExit (t) -#define bgraphBipartGgTablAdd(t,v) fiboTreeAdd ((t), &(v)->gainlink) -#define bgraphBipartGgTablDel(t,v) fiboTreeDel ((t), &(v)->gainlink) -#define bgraphBipartGgTablFrst(t) fiboTreeMin ((t)) +#define bgraphBipartGgTablInit(t) (fiboHeapInit ((t), bgraphBipartGgCmpFunc)) +#define bgraphBipartGgTablFree(t) fiboHeapFree (t) +#define bgraphBipartGgTablExit(t) fiboHeapExit (t) +#define bgraphBipartGgTablAdd(t,v) fiboHeapAdd ((t), &(v)->gainlink) +#define bgraphBipartGgTablDel(t,v) fiboHeapDel ((t), &(v)->gainlink) +#define bgraphBipartGgTablFrst(t) fiboHeapMin ((t)) #define bgraphBipartGgIsFree(v) ((v)->gainlink.linkdat.nextptr == BGRAPHBIPARTGGSTATEFREE) #define bgraphBipartGgIsTabl(v) ((v)->gainlink.linkdat.nextptr >= BGRAPHBIPARTGGSTATELINK) #define bgraphBipartGgIsUsed(v) ((v)->gainlink.linkdat.nextptr == BGRAPHBIPARTGGSTATEUSED) diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_gp.c scotch-6.0.6/src/libscotch/bgraph_bipart_gp.c --- scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_gp.c 2014-08-25 09:18:44.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bgraph_bipart_gp.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2011,2014,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -54,7 +54,7 @@ /** # Version 5.0 : from : 10 sep 2007 **/ /** to 22 feb 2011 **/ /** # Version 6.0 : from : 08 aug 2014 **/ -/** to 08 aug 2014 **/ +/** to 14 aug 2016 **/ /** **/ /************************************************************/ @@ -94,7 +94,6 @@ Gnum compsize0; Gnum commloadintn; Gnum commloadextn; - Gnum commgainextn; Gnum rootnum; /* Index of potential next root */ const Gnum * restrict const verttax = grafptr->s.verttax; /* Fast accesses */ @@ -104,7 +103,7 @@ const Gnum * restrict const edlotax = grafptr->s.edlotax; const Gnum * restrict const veextax = grafptr->veextax; - if (grafptr->compload0 != grafptr->s.velosum) /* If not all vertices already in part 0 */ + if (grafptr->compsize0 != grafptr->s.vertnbr) /* If not all vertices already in part 0 */ bgraphZero (grafptr); /* Move all graph vertices to part 0 */ if (memAllocGroup ((void **) (void *) @@ -120,8 +119,7 @@ compsize0 = grafptr->s.vertnbr; /* All vertices in part zero */ compload0dlt = grafptr->s.velosum - grafptr->compload0avg; commloadintn = 0; - commloadextn = grafptr->commloadextn0; - commgainextn = grafptr->commgainextn0; + commloadextn = 0; for (rootnum = grafptr->s.baseval; /* Loop on connected components */ (rootnum < grafptr->s.vertnnd) && (compload0dlt > 0); rootnum ++) { Gnum passnum; /* Pass number */ @@ -178,19 +176,15 @@ do { /* Loop on vertices in queue */ Gnum vertnum; - Gnum veloval; - Gnum veexval; Gnum distval; Gnum edgenum; - vertnum = bgraphBipartGpQueueGet (&queudat); /* Get vertex from queue */ - veloval = (velotax != NULL) ? velotax[vertnum] : 1; - veexval = (veextax != NULL) ? veextax[vertnum] : 0; + vertnum = bgraphBipartGpQueueGet (&queudat); /* Get vertex from queue */ grafptr->parttax[vertnum] = 1; /* Move selected vertex to part 1 */ compsize0 --; - compload0dlt -= veloval; - commloadextn += veexval; - commgainextn -= veexval * 2; + compload0dlt -= (velotax != NULL) ? velotax[vertnum] : 1; + if (veextax != NULL) + commloadextn += veextax[vertnum]; distval = vexxtax[vertnum].distval + 1; for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { @@ -247,8 +241,8 @@ grafptr->compload0 = grafptr->compload0avg + compload0dlt; grafptr->compload0dlt = compload0dlt; grafptr->compsize0 = compsize0; - grafptr->commload = commloadintn * grafptr->domndist + commloadextn; - grafptr->commgainextn = commgainextn; + grafptr->commload = grafptr->commloadextn0 + commloadextn + commloadintn * grafptr->domndist; + grafptr->commgainextn = grafptr->commgainextn0 - commloadextn * 2; grafptr->bbalval = (double) ((grafptr->compload0dlt < 0) ? (- grafptr->compload0dlt) : grafptr->compload0dlt) / (double) grafptr->compload0avg; memFree (queudat.queutab); /* Free group leader */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_gp.h scotch-6.0.6/src/libscotch/bgraph_bipart_gp.h --- scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_gp.h 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bgraph_bipart_gp.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -49,6 +49,8 @@ /** to 20 aug 2004 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to 04 nov 2010 **/ +/** # Version 6.0 : from : 05 apr 2018 **/ +/** to 05 apr 2018 **/ /** **/ /************************************************************/ @@ -81,14 +83,8 @@ ** The function prototypes. */ -#ifndef BGRAPH_BIPART_GP -#define static -#endif - int bgraphBipartGp (Bgraph * restrict const, const BgraphBipartGpParam * const); -#undef static - /* ** The macro definitions. */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_ml.c scotch-6.0.6/src/libscotch/bgraph_bipart_ml.c --- scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_ml.c 2015-03-01 09:14:02.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bgraph_bipart_ml.c 2018-07-14 15:24:49.000000000 +0000 @@ -53,7 +53,7 @@ /** # Version 5.1 : from : 28 sep 2008 **/ /** to 27 mar 2011 **/ /** # Version 6.0 : from : 09 mar 2011 **/ -/** to 27 feb 2015 **/ +/** to 16 aug 2015 **/ /** **/ /************************************************************/ @@ -101,8 +101,9 @@ Gnum comploadtmp; /* Increase of imbalance range for coarse graph */ *coarmultptr = NULL; /* Allocate multloctab along with coarse graph */ - if (graphCoarsen (&finegrafptr->s, &coargrafptr->s, coarmultptr, - paraptr->coarnbr, paraptr->coarrat, NULL, NULL, 0, NULL) != 0) + if (graphCoarsen (&finegrafptr->s, &coargrafptr->s, NULL, coarmultptr, + paraptr->coarnbr, paraptr->coarrat, GRAPHCOARSENNONE, + NULL, NULL, 0, NULL) != 0) return (1); /* Return if coarsening failed */ if (finegrafptr->veextax != NULL) { /* Merge external gains for coarsened vertices */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_ml.h scotch-6.0.6/src/libscotch/bgraph_bipart_ml.h --- scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_ml.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bgraph_bipart_ml.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010,2011 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2011,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -51,7 +51,7 @@ /** # Version 5.1 : from : 13 jul 2010 **/ /** to 13 jul 2010 **/ /** # Version 6.0 : from : 16 apr 2011 **/ -/** to 03 sep 2011 **/ +/** to 05 apr 2018 **/ /** **/ /************************************************************/ @@ -72,14 +72,12 @@ ** The function prototypes. */ -#ifndef BGRAPH_BIPART_ML -#define static -#endif +#ifdef BGRAPH_BIPART_ML static int bgraphBipartMlCoarsen (const Bgraph * const, Bgraph * restrict const, GraphCoarsenMulti * restrict * const, const BgraphBipartMlParam * const); static int bgraphBipartMlUncoarsen (Bgraph * restrict const, const Bgraph * restrict const, const GraphCoarsenMulti * const); - -int bgraphBipartMl (Bgraph * restrict const, const BgraphBipartMlParam * const); static int bgraphBipartMl2 (Bgraph * restrict const, const BgraphBipartMlParam * const); -#undef static +#endif /* BGRAPH_BIPART_ML */ + +int bgraphBipartMl (Bgraph * restrict const, const BgraphBipartMlParam * const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_st.c scotch-6.0.6/src/libscotch/bgraph_bipart_st.c --- scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_st.c 2012-11-19 08:59:52.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bgraph_bipart_st.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2009-2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2009-2012,2016,2017 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -52,8 +52,8 @@ /** to 29 may 2007 **/ /** # Version 5.1 : from : 26 oct 2009 **/ /** to 15 apr 2011 **/ -/** # Version 6.0 : from : 23 fev 2011 **/ -/** to 19 nov 2012 **/ +/** # Version 6.0 : from : 23 feb 2011 **/ +/** to 02 jan 2017 **/ /** **/ /************************************************************/ @@ -171,6 +171,10 @@ (byte *) &bgraphbipartstdefaultgg.param, (byte *) &bgraphbipartstdefaultgg.param.passnbr, NULL }, + { BGRAPHBIPARTSTMETHGP, STRATPARAMINT, "pass", + (byte *) &bgraphbipartstdefaultgp.param, + (byte *) &bgraphbipartstdefaultgp.param.passnbr, + NULL }, { BGRAPHBIPARTSTMETHML, STRATPARAMSTRAT, "asc", (byte *) &bgraphbipartstdefaultml.param, (byte *) &bgraphbipartstdefaultml.param.stratasc, @@ -324,7 +328,7 @@ compload0 = grafptr->compload0avg + savetab[0].compload0dlt; b0 = ((compload0 < grafptr->compload0min) || (compload0 > grafptr->compload0max)) ? 1 : o; - compload0 = grafptr->compload0avg + savetab[1].compload0dlt; + compload0 = grafptr->compload0avg + grafptr->compload0dlt; b1 = ((compload0 < grafptr->compload0min) || (compload0 > grafptr->compload0max)) ? 1 : o2; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_st.h scotch-6.0.6/src/libscotch/bgraph_bipart_st.h --- scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_st.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bgraph_bipart_st.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -46,6 +46,8 @@ /** to 15 jan 2002 **/ /** # Version 5.0 : from : 27 nov 2006 **/ /** to 13 jan 2007 **/ +/** # Version 6.0 : from : 05 apr 2018 **/ +/** to 05 apr 2018 **/ /** **/ /************************************************************/ @@ -77,10 +79,4 @@ ** The function prototypes. */ -#ifndef BGRAPH_BIPART_ST -#define static -#endif - int bgraphBipartSt (Bgraph * restrict const, const Strat * restrict const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_zr.h scotch-6.0.6/src/libscotch/bgraph_bipart_zr.h --- scotch-6.0.4.dfsg1/src/libscotch/bgraph_bipart_zr.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bgraph_bipart_zr.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -46,6 +46,8 @@ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 01 nov 2003 **/ /** to 01 nov 2003 **/ +/** # Version 6.0 : from : 05 apr 2018 **/ +/** to 05 apr 2018 **/ /** **/ /************************************************************/ @@ -53,10 +55,4 @@ ** The function prototypes. */ -#ifndef BGRAPH_BIPART_ZR -#define static -#endif - int bgraphBipartZr (Bgraph * restrict const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bgraph.c scotch-6.0.6/src/libscotch/bgraph.c --- scotch-6.0.4.dfsg1/src/libscotch/bgraph.c 2014-08-25 09:26:07.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bgraph.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -63,7 +63,7 @@ /** # Version 5.1 : from : 08 oct 2008 **/ /** to 18 mar 2011 **/ /** # Version 6.0 : from : 03 mar 2011 **/ -/** to 25 aug 2014 **/ +/** to 15 may 2018 **/ /** **/ /************************************************************/ @@ -130,6 +130,7 @@ #ifdef SCOTCH_DEBUG_BGRAPH2 if (bgraphCheck (actgrafptr) != 0) { errorPrint ("bgraphInit: inconsistent graph data"); + bgraphExit (actgrafptr); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/bgraph.h scotch-6.0.6/src/libscotch/bgraph.h --- scotch-6.0.4.dfsg1/src/libscotch/bgraph.h 2014-08-08 12:34:35.000000000 +0000 +++ scotch-6.0.6/src/libscotch/bgraph.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2010,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -63,7 +63,7 @@ /** # Version 5.1 : from : 08 jan 2008 **/ /** to 18 mar 2011 **/ /** # Version 6.0 : from : 03 mar 2011 **/ -/** to 08 aug 2014 **/ +/** to 05 apr 2018 **/ /** **/ /************************************************************/ @@ -120,10 +120,6 @@ ** The function prototypes. */ -#ifndef BGRAPH -#define static -#endif - int bgraphInit (Bgraph * restrict const, const Graph * restrict const, const Arch * restrict const, const ArchDom * restrict const, const Gnum * restrict const); void bgraphInit2 (Bgraph * restrict const, const Anum, const Anum, const Anum, const Gnum, const Gnum); void bgraphExit (Bgraph * restrict const); @@ -135,5 +131,3 @@ void bgraphStoreExit (BgraphStore * const); void bgraphStoreSave (const Bgraph * const, BgraphStore * const); void bgraphStoreUpdt (Bgraph * const, const BgraphStore * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/comm.h scotch-6.0.6/src/libscotch/comm.h --- scotch-6.0.4.dfsg1/src/libscotch/comm.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/comm.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2010 ENSEIRB, INRIA & CNRS +/* Copyright 2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,6 +40,8 @@ /** **/ /** DATES : # Version 5.1 : from : 30 jul 2010 **/ /** to 11 aug 2010 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -60,16 +62,10 @@ ** The function prototypes. */ -#ifndef COMM -#define static -#endif - int commAllgatherv (void * const, const Gnum, MPI_Datatype, void * const, const Gnum * const, const Gnum * const, MPI_Datatype, MPI_Comm); int commGatherv (void * const, const Gnum, MPI_Datatype, void * const, const Gnum * const, const Gnum * const, MPI_Datatype, const int, MPI_Comm); int commScatterv (void * const, const Gnum * const, const Gnum * const, MPI_Datatype, void * const, const Gnum, MPI_Datatype, const int, MPI_Comm); -#undef static - /* ** The macro definitions. */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/common_file.c scotch-6.0.6/src/libscotch/common_file.c --- scotch-6.0.4.dfsg1/src/libscotch/common_file.c 2015-02-24 18:14:47.000000000 +0000 +++ scotch-6.0.6/src/libscotch/common_file.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2008,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2007,2008,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,7 +43,7 @@ /** # Version 5.1 : from : 27 jun 2010 **/ /** to 27 jun 2010 **/ /** # Version 6.0 : from : 10 nov 2014 **/ -/** to 12 nov 2014 **/ +/** to 14 jul 2018 **/ /** **/ /************************************************************/ @@ -66,19 +66,18 @@ /*********************************/ /* This routine expands distributed filenames -** according to process numbers and the root -** process number. +** according to process numbers. ** It returns: -** - 0 : on success. -** - !0 : on error. +** - NULL : on error. +** - nameptr : no expansion took place. +** - !NULL : expanded string. */ -int +char * fileNameDistExpand ( -char ** const nameptr, /*+ Pointer to name string pointer +*/ +char * const nameptr, /*+ Pointer to name string pointer +*/ const int procnbr, /*+ Number of processes +*/ -const int procnum, /*+ Number of current process +*/ -const int protnum) /*+ Root process number +*/ +const int procnum) /*+ Number of current process +*/ { int namemax; int namenum; @@ -87,18 +86,18 @@ int naexnum; int flagval; /* Flag set if expansion took place */ - namemax = strlen (*nameptr); + namemax = strlen (nameptr); naexmax = namemax + FILENAMEDISTEXPANDNBR * 2; if ((naexptr = memAlloc ((naexmax + 1) * sizeof (char))) == NULL) /* "+ 1" for terminating character */ - return (1); + return (NULL); #ifdef COMMON_DEBUG sprintf (naexptr, FILENAMEDISTEXPANDSTR, procnbr); /* TRICK: Test if FILENAMEDISTEXPANDNBR is a size large enough */ if (atoi (naexptr) != procnbr) { errorPrint ("fileNameDistExpand: undersized integer string size"); memFree (naexptr); - return (1); + return (NULL); } #endif /* COMMON_DEBUG */ @@ -107,12 +106,12 @@ int dataval = 0; int datasiz; - charval = (*nameptr)[namenum ++]; /* Get current characted */ + charval = nameptr[namenum ++]; /* Get current character */ datasiz = 1; /* Assume individual expanded character */ if (charval == '%') { char chnxval; /* Value of next char */ - switch (chnxval = (*nameptr)[namenum ++]) { + switch (chnxval = nameptr[namenum ++]) { case 'p' : /* "%p" translates into number of processes */ flagval = 1; datasiz = FILENAMEDISTEXPANDNBR; @@ -140,7 +139,7 @@ naexmax += datasiz + FILENAMEDISTEXPANDNBR; if ((nanwptr = memRealloc (naexptr, (naexmax + 1) * sizeof (char))) == NULL) { /* "+ 1" for terminating character */ memFree (naexptr); - return (1); + return (NULL); } naexptr = nanwptr; } @@ -155,14 +154,11 @@ } naexptr[naexnum] = '\0'; /* Set terminating character as there is always room for it */ - if ((flagval != 0) || (procnum == protnum)) /* If file name is a distributed one or we are the root process */ - *nameptr = naexptr; /* Replace new string by old one */ - else { + if (flagval == 0) { /* If no expansion took place */ memFree (naexptr); /* No need for the expanded string */ - *nameptr = NULL; + naexptr = nameptr; } - - return (0); + return (naexptr); } /* This routine initializes a block of @@ -180,8 +176,8 @@ for (i = 0; i < filenbr; i ++) { /* For all file names */ filetab[i].nameptr = "-"; /* Assume standard stream */ - filetab[i].fileptr = (filetab[i].modeptr[0] == 'r') ? stdin : stdout; - filetab[i].dataptr = NULL; /* Assume nothing to free */ + filetab[i].fileptr = ((filetab[i].flagval & FILEMODE) == FILEMODER) ? stdin : stdout; + filetab[i].compptr = NULL; /* No (un)compression yet */ } } @@ -189,7 +185,8 @@ ** descriptor structures. ** It returns: ** - 0 : on success. -** - !0 : on error. +** - 1 : if could not open a stream. +** - 2 : if (un)compression method not implemented. */ int @@ -204,8 +201,8 @@ continue; for (j = 0; j < i; j ++) { - if ((filetab[i].modeptr[0] == filetab[j].modeptr[0]) && /* If very same name with same opening mode */ - (filetab[j].nameptr != NULL) && + if ((((filetab[i].flagval ^ filetab[j].flagval) & FILEMODE) == 0) && /* If very same name with same opening mode */ + (filetab[j].nameptr != NULL) && (strcmp (filetab[i].nameptr, filetab[j].nameptr) == 0)) { filetab[i].fileptr = filetab[j].fileptr; /* Share pointer to already processed stream */ filetab[i].nameptr = NULL; /* Do not close this stream multiple times */ @@ -213,26 +210,23 @@ } } if (j == i) { /* If original stream */ - int compval; /* Compression type */ - FILE * compptr; /* Processed ((un)compressed) stream */ + int compval; /* Compression type */ if (filetab[i].nameptr[0] != '-') { /* If not standard stream, open it */ - if ((filetab[i].fileptr = fopen (filetab[i].nameptr, filetab[i].modeptr)) == NULL) { /* Open the file */ + if ((filetab[i].fileptr = fopen (filetab[i].nameptr, ((filetab[i].flagval & FILEMODE) == FILEMODER) ? "r" : "w")) == NULL) { /* Open the file */ errorPrint ("fileBlockOpen: cannot open file (%d)", i); return (1); } } - compval = (filetab[i].modeptr[0] == 'r') ? fileUncompressType (filetab[i].nameptr) : fileCompressType (filetab[i].nameptr); + compval = (((filetab[i].flagval & FILEMODE) == FILEMODER) ? fileDecompressType : fileCompressType) (filetab[i].nameptr); if (compval < 0) { - errorPrint ("fileBlockOpen: (un)compression type not implemented"); - return (1); + errorPrint ("fileBlockOpen: (un)compression method not implemented"); + return (2); } - compptr = (filetab[i].modeptr[0] == 'r') ? fileUncompress (filetab[i].fileptr, compval) : fileCompress (filetab[i].fileptr, compval); - if (compptr == NULL) { + if ((((filetab[i].flagval & FILEMODE) == FILEMODER) ? fileDecompress : fileCompress) (&filetab[i], compval) != 0) { errorPrint ("fileBlockOpen: cannot create (un)compression subprocess"); return (1); } - filetab[i].fileptr = compptr; /* Use processed stream instead of original stream */ } } @@ -254,58 +248,32 @@ const int proclocnum, const int protglbnum) { - int i, j; + int i; - for (i = 0; i < filenbr; i ++) { /* For all file names */ - if (filetab[i].fileptr == NULL) { /* If unwanted stream, do nothing */ - filetab[i].nameptr = NULL; /* Do nothing on closing, too */ + for (i = 0; i < filenbr; i ++) { /* For all file names */ + char * naexptr; + + if (filetab[i].fileptr == NULL) /* If unwanted stream, do nothing */ continue; - } - if (fileNameDistExpand (&filetab[i].nameptr, procglbnbr, proclocnum, protglbnum) != 0) { /* If cannot allocate new name */ + if ((naexptr = fileNameDistExpand (filetab[i].nameptr, procglbnbr, proclocnum)) == NULL) { errorPrint ("fileBlockOpenDist: cannot create file name (%d)", i); return (1); } - if (filetab[i].nameptr == NULL) { /* If inexisting stream because not root process and centralized stream */ - filetab[i].fileptr = NULL; - continue; - } - filetab[i].dataptr = filetab[i].nameptr; /* From now on, we will have to free it anyway */ - - for (j = 0; j < i; j ++) { - if ((filetab[i].modeptr[0] == filetab[j].modeptr[0]) && /* If very same name with same opening mode */ - (filetab[j].nameptr != NULL) && - (strcmp (filetab[i].nameptr, filetab[j].nameptr) == 0)) { - filetab[i].fileptr = filetab[j].fileptr; /* Share pointer to already processed stream */ - filetab[i].nameptr = NULL; /* Do not close this stream multiple times */ - break; + if (naexptr == filetab[i].nameptr) { /* If centralized stream */ + if (proclocnum != protglbnum) { /* If not root process */ + filetab[i].nameptr = NULL; /* Remove stream */ + filetab[i].fileptr = NULL; + continue; } } - if (j == i) { /* If original stream */ - int compval; /* Compression type */ - FILE * compptr; /* Processed ((un)compressed) stream */ - - if (filetab[i].nameptr[0] != '-') { /* If not standard stream, open it */ - if ((filetab[i].fileptr = fopen (filetab[i].nameptr, filetab[i].modeptr)) == NULL) { /* Open the file */ - errorPrint ("fileBlockOpenDist: cannot open file (%d)", i); - return (1); - } - } - compval = (filetab[i].modeptr[0] == 'r') ? fileUncompressType (filetab[i].nameptr) : fileCompressType (filetab[i].nameptr); - if (compval < 0) { - errorPrint ("fileBlockOpenDist: (un)compression type not implemented"); - return (1); - } - compptr = (filetab[i].modeptr[0] == 'r') ? fileUncompress (filetab[i].fileptr, compval) : fileCompress (filetab[i].fileptr, compval); - if (compptr == NULL) { - errorPrint ("fileBlockOpenDist: cannot create (un)compression subprocess"); - return (1); - } - filetab[i].fileptr = compptr; /* Use processed stream instead of original stream */ + else { /* Else keep expanded distributed file name */ + filetab[i].flagval |= FILEFREENAME; + filetab[i].nameptr = naexptr; } } - return (0); + return (fileBlockOpen (filetab, filenbr)); /* Open remaining files */ } /* This routine opens a block of file @@ -325,10 +293,12 @@ for (i = 0; i < filenbr; i ++) { /* For all file names */ if ((filetab[i].fileptr != NULL) && /* If stream exists */ (filetab[i].nameptr != NULL) && /* And it has a name */ - (filetab[i].nameptr[0] != '-')) /* Which is not default */ + (filetab[i].nameptr[0] != '-')) { /* Which is not default */ fclose (filetab[i].fileptr); /* Close the stream */ + if (filetab[i].flagval & FILEFREENAME) + memFree (filetab[i].nameptr); + } - if (filetab[i].dataptr != NULL) /* If file name data to free */ - memFree (filetab[i].dataptr); + fileCompressExit (&filetab[i]); /* After stream closed, if there is (un)compression data to free */ } } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/common_file_compress.c scotch-6.0.6/src/libscotch/common_file_compress.c --- scotch-6.0.4.dfsg1/src/libscotch/common_file_compress.c 2014-01-05 22:21:58.000000000 +0000 +++ scotch-6.0.6/src/libscotch/common_file_compress.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2008,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2008,2010,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,6 +42,8 @@ /** to : 15 may 2008 **/ /** # Version 5.1 : from : 27 jun 2010 **/ /** to 27 jun 2010 **/ +/** # Version 6.0 : from : 27 apr 2015 **/ +/** to 10 jul 2018 **/ /** **/ /************************************************************/ @@ -64,6 +66,9 @@ #ifdef COMMON_FILE_COMPRESS_GZ #include "zlib.h" #endif /* COMMON_FILE_COMPRESS_GZ */ +#ifdef COMMON_FILE_COMPRESS_LZMA +#include "lzma.h" +#endif /* COMMON_FILE_COMPRESS_LZMA */ /* ** The static definitions. @@ -80,11 +85,13 @@ #else /* COMMON_FILE_COMPRESS_GZ */ { ".gz", FILECOMPRESSTYPENOTIMPL }, #endif /* COMMON_FILE_COMPRESS_GZ */ -/* #ifdef COMMON_FILE_COMPRESS_LZMA */ /* TODO: Current lzmadec library does not offer compression to date */ -/* { ".lzma", FILECOMPRESSTYPELZMA }, */ -/* #else COMMON_FILE_COMPRESS_LZMA */ +#ifdef COMMON_FILE_COMPRESS_LZMA + { ".lzma", FILECOMPRESSTYPELZMA }, + { ".xz", FILECOMPRESSTYPELZMA }, +#else /* COMMON_FILE_COMPRESS_LZMA */ { ".lzma", FILECOMPRESSTYPENOTIMPL }, -/* #endif /\* COMMON_FILE_COMPRESS_LZMA *\/ */ + { ".xz", FILECOMPRESSTYPENOTIMPL }, +#endif /* COMMON_FILE_COMPRESS_LZMA */ { NULL, FILECOMPRESSTYPENOTIMPL } }; /*********************************/ @@ -102,6 +109,34 @@ ** - FILECOMPRESSTYPExxxx : implemented compression algorithm. */ +void +fileCompressExit ( +File * const fileptr) +{ + FileCompress * compptr; + + if (fileptr->compptr == NULL) /* If nothing to do */ + return; + + compptr = (FileCompress *) fileptr->compptr; +#ifdef COMMON_PTHREAD_FILE + pthread_join (compptr->thrdval, NULL); /* Wait for (un)compression thread to terminate */ +#else /* COMMON_PTHREAD_FILE */ + waitpid (compptr->procval, NULL, 0); +#endif /* COMMON_PTHREAD_FILE */ + + memFree (fileptr->compptr); /* Free compression structure */ +} + +/* This routine searches the given file name +** for relevant extensions and returns the +** corresponding code if it is the case. +** It returns: +** - FILECOMPRESSTYPENONE : no recognized file extension. +** - FILECOMPRESSTYPENOTIMPL : compression algorithm not implemented. +** - FILECOMPRESSTYPExxxx : implemented compression algorithm. +*/ + int fileCompressType ( const char * const nameptr) /*+ Name string +*/ @@ -136,171 +171,250 @@ static void * /* (void *) to comply to the Posix pthread API */ fileCompress2 ( -FileCompressData * const dataptr) +FileCompress * const compptr) { - switch (dataptr->typeval) { + switch (compptr->typeval) { #ifdef COMMON_FILE_COMPRESS_BZ2 case FILECOMPRESSTYPEBZ2 : - fileCompressBz2 (dataptr); + fileCompressBz2 (compptr); break; #endif /* COMMON_FILE_COMPRESS_BZ2 */ #ifdef COMMON_FILE_COMPRESS_GZ case FILECOMPRESSTYPEGZ : - fileCompressGz (dataptr); + fileCompressGz (compptr); break; #endif /* COMMON_FILE_COMPRESS_GZ */ -/* #ifdef COMMON_FILE_COMPRESS_LZMA /\* TODO: Current lzmadec library does not offer compression to date *\/ */ -/* case FILECOMPRESSTYPELZMA : */ -/* fileCompressLzma (dataptr); */ -/* break; */ -/* #endif /\* COMMON_FILE_COMPRESS_LZMA *\/ */ +#ifdef COMMON_FILE_COMPRESS_LZMA + case FILECOMPRESSTYPELZMA : + fileCompressLzma (compptr); + break; +#endif /* COMMON_FILE_COMPRESS_LZMA */ default : errorPrint ("fileCompress2: method not implemented"); } - close (dataptr->innerfd); /* Close writer's end */ - memFree (dataptr); /* Free buffers */ + close (compptr->infdnum); /* Close writer's end */ + memFree (compptr->bufftab); /* Free data buffer */ +#ifdef COMMON_DEBUG + compptr->bufftab = NULL; +#endif /* COMMON_DEBUG */ - return ((void *) 0); /* Don't care anyway */ + return (NULL); /* Don't care anyway */ } -FILE * +int fileCompress ( -FILE * const stream, /*+ Uncompressed stream +*/ -const int typeval) /*+ (Un)compression algorithm +*/ +File * const fileptr, /*+ Uncompressed stream +*/ +const int typeval) /*+ Compression algorithm +*/ { int filetab[2]; FILE * writptr; - FileCompressData * dataptr; -#ifdef COMMON_PTHREAD - pthread_t thrdval; -#endif /* COMMON_PTHREAD */ + FileCompress * compptr; - if (typeval <= FILECOMPRESSTYPENONE) /* If uncompressed stream, return original stream pointer */ - return (stream); + if (typeval <= FILECOMPRESSTYPENONE) /* If nothing to do */ + return (0); if (pipe (filetab) != 0) { errorPrint ("fileCompress: cannot create pipe"); - return (NULL); + return (1); } - if ((writptr = fdopen (filetab[1], "w")) == NULL) { + if ((writptr = fdopen (filetab[1], "w")) == NULL) { /* New stream master will write to */ errorPrint ("fileCompress: cannot create stream"); close (filetab[0]); close (filetab[1]); - return (NULL); + return (1); } - if ((dataptr = memAlloc (sizeof (FileCompressData) + FILECOMPRESSDATASIZE)) == NULL) { + if (((compptr = memAlloc (sizeof (FileCompress))) == NULL) || /* Compression structure to be freed by master */ + ((compptr->bufftab = memAlloc (FILECOMPRESSDATASIZE)) == NULL)) { errorPrint ("fileCompress: out of memory"); + if (compptr != NULL) + memFree (compptr); close (filetab[0]); fclose (writptr); - return (NULL); + return (1); } - dataptr->typeval = typeval; /* Fill structure to be passed to compression thread/process */ - dataptr->innerfd = filetab[0]; - dataptr->outerstream = stream; /* Stream to write to */ + compptr->typeval = typeval; /* Fill structure to be passed to compression thread/process */ + compptr->infdnum = filetab[0]; + compptr->oustptr = fileptr->fileptr; /* Compressed stream to write to */ -#ifdef COMMON_PTHREAD - if (pthread_create (&thrdval, NULL, (void * (*) (void *)) fileCompress2, (void *) dataptr) != 0) { /* If could not create thread */ +#ifdef COMMON_PTHREAD_FILE + if (pthread_create (&compptr->thrdval, NULL, (void * (*) (void *)) fileCompress2, (void *) compptr) != 0) { /* If could not create thread */ errorPrint ("fileCompress: cannot create thread"); - memFree (dataptr); + memFree (compptr->bufftab); + memFree (compptr); close (filetab[0]); fclose (writptr); - return (NULL); + return (1); } -#else /* COMMON_PTHREAD */ - switch (fork ()) { +#else /* COMMON_PTHREAD_FILE */ + switch (compptr->procval = fork ()) { case -1 : /* Error */ errorPrint ("fileCompress: cannot create child process"); - memFree (dataptr); + memFree (compptr->bufftab); + memFree (compptr); close (filetab[0]); fclose (writptr); - return (NULL); + return (1); case 0 : /* We are the son process */ fclose (writptr); /* Close writer pipe stream */ - fileCompress2 (dataptr); /* Perform compression */ - exit (0); /* Exit gracefully */ + fileCompress2 (compptr); /* Perform compression */ + exit (EXIT_SUCCESS); /* Exit gracefully */ default : /* We are the father process */ close (filetab[0]); /* Close the reader pipe end */ } -#endif /* COMMON_PTHREAD */ +#endif /* COMMON_PTHREAD_FILE */ + + fileptr->fileptr = writptr; /* Master can write to pipe */ + fileptr->compptr = compptr; - return (writptr); + return (0); } -/* This routine compresses a stream compressed in the -** gzip format. +/* This routine compresses a stream in the +** bz2 format. ** It returns: -** - void : in all cases. Compression stops immediately -** in case of error. +** - void : in all cases. Compression stops +** immediately in case of error. */ #ifdef COMMON_FILE_COMPRESS_BZ2 static void fileCompressBz2 ( -FileCompressData * const dataptr) +FileCompress * const compptr) { - BZFILE * bzfile; - int bzsize; - int bzerror; + BZFILE * encoptr; + int bytenbr; + int flagval; - if ((bzfile = BZ2_bzWriteOpen (&bzerror, dataptr->outerstream, 9, 0, 0)) == NULL) { + if ((encoptr = BZ2_bzWriteOpen (&flagval, compptr->oustptr, 9, 0, 0)) == NULL) { errorPrint ("fileCompressBz2: cannot start compression"); - BZ2_bzWriteClose (&bzerror, bzfile, 1, NULL, NULL); + BZ2_bzWriteClose (&flagval, encoptr, 1, NULL, NULL); return; } - while ((bzsize = read (dataptr->innerfd, &dataptr->datatab, FILECOMPRESSDATASIZE)) > 0) { /* Read from pipe */ - BZ2_bzWrite (&bzerror, bzfile, &dataptr->datatab, bzsize); - if (bzerror != BZ_OK) { + while ((bytenbr = read (compptr->infdnum, compptr->bufftab, FILECOMPRESSDATASIZE)) > 0) { /* Read from pipe */ + BZ2_bzWrite (&flagval, encoptr, compptr->bufftab, bytenbr); + if (flagval != BZ_OK) { errorPrint ("fileCompressBz2: cannot write"); break; } } - if (bzsize < 0) { + if (bytenbr < 0) { errorPrint ("fileCompressBz2: cannot read"); - bzerror = BZ_STREAM_END; /* Will set abandon flag to 1 in BZ2_bzWriteClose */ + flagval = BZ_STREAM_END; /* Will set abandon flag to 1 in BZ2_bzWriteClose */ } - BZ2_bzWriteClose (&bzerror, bzfile, (bzerror != BZ_OK) ? 1 : 0, NULL, NULL); - fclose (dataptr->outerstream); /* Do as zlib does */ + BZ2_bzWriteClose (&flagval, encoptr, (flagval != BZ_OK) ? 1 : 0, NULL, NULL); + fclose (compptr->oustptr); /* Do as zlib does */ } #endif /* COMMON_FILE_COMPRESS_BZ2 */ -/* This routine compresses a stream compressed in the +/* This routine compresses a stream in the ** gzip format. ** It returns: -** - void : in all cases. Compression stops immediately -** in case of error. +** - void : in all cases. Compression stops +** immediately in case of error. */ #ifdef COMMON_FILE_COMPRESS_GZ static void fileCompressGz ( -FileCompressData * const dataptr) +FileCompress * const compptr) { - gzFile gzfile; - int gzsize; + gzFile encoptr; + int bytenbr; - if ((gzfile = gzdopen (fileno (dataptr->outerstream), "wb")) == NULL) { + if ((encoptr = gzdopen (fileno (compptr->oustptr), "wb")) == NULL) { errorPrint ("fileCompressGz: cannot start compression"); return; } - gzsetparams (gzfile, 9, Z_DEFAULT_STRATEGY); /* Maximum compression */ + gzsetparams (encoptr, 9, Z_DEFAULT_STRATEGY); /* Maximum compression */ - while ((gzsize = read (dataptr->innerfd, &dataptr->datatab, FILECOMPRESSDATASIZE)) > 0) { /* Read from pipe */ - if (gzwrite (gzfile, &dataptr->datatab, gzsize) != gzsize) { + while ((bytenbr = read (compptr->infdnum, compptr->bufftab, FILECOMPRESSDATASIZE)) > 0) { /* Read from pipe */ + if (gzwrite (encoptr, compptr->bufftab, bytenbr) != bytenbr) { errorPrint ("fileCompressGz: cannot write"); break; } } - if (gzsize < 0) + if (bytenbr < 0) errorPrint ("fileCompressGz: cannot read"); - gzclose (gzfile); + gzclose (encoptr); /* Closes oustptr */ } #endif /* COMMON_FILE_COMPRESS_GZ */ + +/* This routine compresses a stream in the +** LZMA format. +** It returns: +** - void : in all cases. Compression stops +** immediately in case of error. +*/ + +#ifdef COMMON_FILE_COMPRESS_LZMA +static +void +fileCompressLzma ( +FileCompress * const compptr) +{ + lzma_stream encodat = LZMA_STREAM_INIT; /* Encoder data */ + lzma_action enacval; /* Encoder action value */ + lzma_ret enreval; /* Encoder return value */ + byte * obuftab; /* Encoder output buffer */ + + if ((obuftab = memAlloc (FILECOMPRESSDATASIZE)) == NULL) { + errorPrint ("fileCompressLzma: out of memory"); + return; + } + + if (lzma_easy_encoder (&encodat, LZMA_PRESET_EXTREME, LZMA_CHECK_CRC64) != LZMA_OK) { + errorPrint ("fileCompressLzma: cannot start compression"); + memFree (obuftab); + return; + } + + enacval = LZMA_RUN; + enreval = LZMA_OK; + encodat.avail_in = 0; + encodat.next_out = obuftab; + encodat.avail_out = FILECOMPRESSDATASIZE; + do { + if ((encodat.avail_in == 0) && (enacval == LZMA_RUN)) { + ssize_t bytenbr; + + bytenbr = read (compptr->infdnum, compptr->bufftab, FILECOMPRESSDATASIZE); /* Read from pipe */ + if (bytenbr < 0) { + errorPrint ("fileCompressLzma: cannot read"); + break; + } + if (bytenbr == 0) + enacval = LZMA_FINISH; /* If end of stream, request completion of encoding */ + encodat.next_in = (byte *) compptr->bufftab; + encodat.avail_in = bytenbr; + } + + enreval = lzma_code (&encodat, enacval); + + if ((encodat.avail_out == 0) || (enreval == LZMA_STREAM_END)) { /* Write when output buffer full or end of encoding */ + size_t obufnbr; + + obufnbr = FILECOMPRESSDATASIZE - encodat.avail_out; /* Compute number of bytes to write */ + if (fwrite (obuftab, 1, obufnbr, compptr->oustptr) != obufnbr) { + errorPrint ("fileCompressLzma: cannot write"); + break; + } + encodat.next_out = obuftab; + encodat.avail_out = FILECOMPRESSDATASIZE; + } + } while (enreval == LZMA_OK); + + lzma_end (&encodat); + memFree (obuftab); + + fclose (compptr->oustptr); /* Do as zlib does */ +} +#endif /* COMMON_FILE_COMPRESS_LZMA */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/common_file_compress.h scotch-6.0.6/src/libscotch/common_file_compress.h --- scotch-6.0.4.dfsg1/src/libscotch/common_file_compress.h 2014-01-05 22:21:58.000000000 +0000 +++ scotch-6.0.6/src/libscotch/common_file_compress.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2008 ENSEIRB, INRIA & CNRS +/* Copyright 2008,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,6 +40,8 @@ /** **/ /** DATES : # Version 5.0 : from : 12 mar 2008 **/ /** to 17 mar 2008 **/ +/** # Version 6.0 : from : 08 jul 2018 **/ +/** to 14 jul 2018 **/ /** **/ /************************************************************/ @@ -55,7 +57,7 @@ typedef enum FileCompressType_ { FILECOMPRESSTYPENOTIMPL = -1, /* Error code */ - FILECOMPRESSTYPENONE, /* No compression */ + FILECOMPRESSTYPENONE = 0, /* No compression */ FILECOMPRESSTYPEBZ2, FILECOMPRESSTYPEGZ, FILECOMPRESSTYPELZMA @@ -72,12 +74,17 @@ ** The type and structure definitions. */ -typedef struct FileCompressData_ { - int typeval; /*+ Type of (un)compression +*/ - int innerfd; /*+ Inner file handle (pipe end) +*/ - FILE * outerstream; /*+ Outer stream +*/ - double datatab; /*+ Start of data buffer +*/ -} FileCompressData; +typedef struct FileCompress_ { + FileCompressType typeval; /*+ Type of (un)compression +*/ + int infdnum; /*+ Inner file handle (pipe end) +*/ + FILE * oustptr; /*+ Outer stream +*/ + byte * bufftab; /*+ Data buffer +*/ +#ifdef COMMON_PTHREAD_FILE + pthread_t thrdval; /*+ Spawned thread ID +*/ +#else /* COMMON_PTHREAD_FILE */ + int procval; /*+ Forked process ID +*/ +#endif /* COMMON_PTHREAD_FILE */ +} FileCompress; /* ** The function prototypes. @@ -85,25 +92,25 @@ #ifdef COMMON_FILE_COMPRESS_BZ2 #ifdef COMMON_FILE_COMPRESS -static void fileCompressBz2 (FileCompressData * const dataptr); +static void fileCompressBz2 (FileCompress * const dataptr); #endif /* COMMON_FILE_COMPRESS */ -#ifdef COMMON_FILE_UNCOMPRESS -static void fileUncompressBz2 (FileCompressData * const dataptr); -#endif /* COMMON_FILE_UNCOMPRESS */ +#ifdef COMMON_FILE_DECOMPRESS +static void fileDecompressBz2 (FileCompress * const dataptr); +#endif /* COMMON_FILE_DECOMPRESS */ #endif /* COMMON_FILE_COMPRESS_Bz2 */ #ifdef COMMON_FILE_COMPRESS_GZ #ifdef COMMON_FILE_COMPRESS -static void fileCompressGz (FileCompressData * const dataptr); +static void fileCompressGz (FileCompress * const dataptr); #endif /* COMMON_FILE_COMPRESS */ -#ifdef COMMON_FILE_UNCOMPRESS -static void fileUncompressGz (FileCompressData * const dataptr); -#endif /* COMMON_FILE_UNCOMPRESS */ +#ifdef COMMON_FILE_DECOMPRESS +static void fileDecompressGz (FileCompress * const dataptr); +#endif /* COMMON_FILE_DECOMPRESS */ #endif /* COMMON_FILE_COMPRESS_GZ */ #ifdef COMMON_FILE_COMPRESS_LZMA -/* #ifdef COMMON_FILE_COMPRESS */ -/* static void fileCompressLzma (FileCompressData * const dataptr); */ -/* #endif /\* COMMON_FILE_COMPRESS *\/ */ -#ifdef COMMON_FILE_UNCOMPRESS -static void fileUncompressLzma (FileCompressData * const dataptr); -#endif /* COMMON_FILE_UNCOMPRESS */ +#ifdef COMMON_FILE_COMPRESS +static void fileCompressLzma (FileCompress * const dataptr); +#endif /* COMMON_FILE_COMPRESS */ +#ifdef COMMON_FILE_DECOMPRESS +static void fileDecompressLzma (FileCompress * const dataptr); +#endif /* COMMON_FILE_DECOMPRESS */ #endif /* COMMON_FILE_COMPRESS_LZMA */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/common_file_decompress.c scotch-6.0.6/src/libscotch/common_file_decompress.c --- scotch-6.0.4.dfsg1/src/libscotch/common_file_decompress.c 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/libscotch/common_file_decompress.c 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,410 @@ +/* Copyright 2008,2010,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : common_file_decompress.c **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : This module handles compressed streams **/ +/** for decompression. **/ +/** **/ +/** DATES : # Version 5.0 : from : 11 mar 2008 **/ +/** to : 15 may 2008 **/ +/** # Version 5.1 : from : 27 jun 2010 **/ +/** to 27 jun 2010 **/ +/** # Version 6.0 : from : 27 apr 2015 **/ +/** to 14 jul 2018 **/ +/** **/ +/************************************************************/ + +/* +** The defines and includes. +*/ + +#define COMMON_FILE +#define COMMON_FILE_DECOMPRESS + +#ifndef COMMON_NOMODULE +#include "module.h" +#endif /* COMMON_NOMODULE */ +#include "common.h" +#include "common_file.h" +#include "common_file_compress.h" +#ifdef COMMON_FILE_COMPRESS_BZ2 +#include "bzlib.h" +#endif /* COMMON_FILE_COMPRESS_BZ2 */ +#ifdef COMMON_FILE_COMPRESS_GZ +#include "zlib.h" +#endif /* COMMON_FILE_COMPRESS_GZ */ +#ifdef COMMON_FILE_COMPRESS_LZMA +#include "lzma.h" +#endif /* COMMON_FILE_COMPRESS_LZMA */ + +/* +** The static definitions. +*/ + +static FileCompressTab filetab[] = { +#ifdef COMMON_FILE_COMPRESS_BZ2 + { ".bz2", FILECOMPRESSTYPEBZ2, }, +#else /* COMMON_FILE_COMPRESS_BZ2 */ + { ".bz2", FILECOMPRESSTYPENOTIMPL }, +#endif /* COMMON_FILE_COMPRESS_BZ */ +#ifdef COMMON_FILE_COMPRESS_GZ + { ".gz", FILECOMPRESSTYPEGZ, }, +#else /* COMMON_FILE_COMPRESS_GZ */ + { ".gz", FILECOMPRESSTYPENOTIMPL }, +#endif /* COMMON_FILE_COMPRESS_GZ */ +#ifdef COMMON_FILE_COMPRESS_LZMA + { ".lzma", FILECOMPRESSTYPELZMA }, + { ".xz", FILECOMPRESSTYPELZMA }, +#else /* COMMON_FILE_COMPRESS_LZMA */ + { ".lzma", FILECOMPRESSTYPENOTIMPL }, + { ".xz", FILECOMPRESSTYPENOTIMPL }, +#endif /* COMMON_FILE_COMPRESS_LZMA */ + { NULL, FILECOMPRESSTYPENOTIMPL } }; + +/*********************************/ +/* */ +/* Basic routines for filenames. */ +/* */ +/*********************************/ + +/* This routine searches the given file name +** for relevant extensions and returns the +** corresponding code if it is the case. +** It returns: +** - FILECOMPRESSTYPENONE : no recognized file extension. +** - FILECOMPRESSTYPENOTIMPL : compression algorithm not implemented. +** - FILECOMPRESSTYPExxxx : implemented compression algorithm. +*/ + +int +fileDecompressType ( +const char * const nameptr) /*+ Name string +*/ +{ + int namelen; + int i; + + namelen = strlen (nameptr); + for (i = 0; filetab[i].name != NULL; i ++) { + int extnlen; /* Name of extension string */ + + extnlen = strlen (filetab[i].name); + if ((namelen >= extnlen) && (strncmp (filetab[i].name, nameptr + (namelen - extnlen), extnlen) == 0)) + return (filetab[i].type); + } + + return (FILECOMPRESSTYPENONE); +} + +/* This routine creates a thread to decompress the +** given stream according to the given (un)compression +** algorithm. +** If threads are available, decompression will be +** performed by an auxiliary thread. Else, a child process +** will be fork()'ed, and after completion this process +** will remain a zombie until the main process terminates. +** It returns: +** - !NULL : stream holding decompressed data. +** - NULL : on error. +*/ + +static +void * /* (void *) to comply to the Posix pthread API */ +fileDecompress2 ( +FileCompress * const compptr) +{ + switch (compptr->typeval) { +#ifdef COMMON_FILE_COMPRESS_BZ2 + case FILECOMPRESSTYPEBZ2 : + fileDecompressBz2 (compptr); + break; +#endif /* COMMON_FILE_COMPRESS_BZ2 */ +#ifdef COMMON_FILE_COMPRESS_GZ + case FILECOMPRESSTYPEGZ : + fileDecompressGz (compptr); + break; +#endif /* COMMON_FILE_COMPRESS_GZ */ +#ifdef COMMON_FILE_COMPRESS_LZMA + case FILECOMPRESSTYPELZMA : + fileDecompressLzma (compptr); + break; +#endif /* COMMON_FILE_COMPRESS_LZMA */ + default : + errorPrint ("fileDecompress2: method not implemented"); + } + + close (compptr->infdnum); /* Close writer's end */ + memFree (compptr->bufftab); /* Free data buffer */ +#ifdef COMMON_DEBUG + compptr->bufftab = NULL; +#endif /* COMMON_DEBUG */ + + return (NULL); /* Don't care anyway */ +} + +int +fileDecompress ( +File * const fileptr, /*+ Compressed input stream +*/ +const int typeval) /*+ (Un)compression algorithm +*/ +{ + int filetab[2]; + FILE * readptr; + FileCompress * compptr; + + if (typeval <= FILECOMPRESSTYPENONE) /* If nothing to do */ + return (0); + + if (pipe (filetab) != 0) { + errorPrint ("fileDecompress: cannot create pipe"); + return (1); + } + + if ((readptr = fdopen (filetab[0], "r")) == NULL) { /* New stream master will read from */ + errorPrint ("fileDecompress: cannot create stream"); + close (filetab[0]); + close (filetab[1]); + return (1); + } + + if (((compptr = memAlloc (sizeof (FileCompress))) == NULL) || /* Compression structure to be freed by master */ + ((compptr->bufftab = memAlloc (FILECOMPRESSDATASIZE)) == NULL)) { + errorPrint ("fileDecompress: out of memory"); + if (compptr != NULL) + memFree (compptr); + fclose (readptr); + close (filetab[1]); + return (1); + } + + compptr->typeval = typeval; /* Fill structure to be passed to decompression thread/process */ + compptr->infdnum = filetab[1]; + compptr->oustptr = fileptr->fileptr; /* Compressed stream to read from */ + +#ifdef COMMON_PTHREAD_FILE + if (pthread_create (&compptr->thrdval, NULL, (void * (*) (void *)) fileDecompress2, (void *) compptr) != 0) { /* If could not create thread */ + errorPrint ("fileDecompress: cannot create thread"); + memFree (compptr->bufftab); + memFree (compptr); + fclose (readptr); + close (filetab[1]); + return (1); + } +#else /* COMMON_PTHREAD_FILE */ + switch (compptr->procval = fork ()) { + case -1 : /* Error */ + errorPrint ("fileDecompress: cannot create child process"); + memFree (compptr->bufftab); + memFree (compptr); + fclose (readptr); + close (filetab[1]); + return (1); + case 0 : /* We are the son process */ + fclose (readptr); /* Close reader pipe stream */ + fileDecompress2 (compptr); /* Perform decompression */ + exit (EXIT_SUCCESS); /* Exit gracefully */ + default : /* We are the father process */ + close (filetab[1]); /* Close the writer pipe end */ + } +#endif /* COMMON_PTHREAD_FILE */ + + fileptr->fileptr = readptr; /* Master can read from pipe */ + fileptr->compptr = compptr; + + return (0); +} + +/* This routine decompresses a stream compressed +** in the bzip2 format. +** It returns: +** - void : in all cases. Decompression stops +** immediately in case of error. +*/ + +#ifdef COMMON_FILE_COMPRESS_BZ2 +static +void +fileDecompressBz2 ( +FileCompress * const compptr) +{ + BZFILE * decoptr; + int bytenbr; + int flagval; + + if (FILECOMPRESSDATASIZE < (BZ_MAX_UNUSED)) { + errorPrint ("fileDecompressBz2: cannot start decompression (1)"); + return; + } + if ((decoptr = BZ2_bzReadOpen (&flagval, compptr->oustptr, 0, 0, NULL, 0)) == NULL) { + errorPrint ("fileDecompressBz2: cannot start decompression (2)"); + BZ2_bzReadClose (&flagval, decoptr); + return; + } + + while ((bytenbr = BZ2_bzRead (&flagval, decoptr, compptr->bufftab, FILECOMPRESSDATASIZE), flagval) >= BZ_OK) { /* If BZ_OK or BZ_STREAM_END */ + if (write (compptr->infdnum, compptr->bufftab, bytenbr) != bytenbr) { + errorPrint ("fileDecompressBz2: cannot write"); + flagval = BZ_STREAM_END; /* Avoid other error message */ + break; + } + if (flagval == BZ_STREAM_END) { /* If end of compressed stream */ + void * byunptr; + int byunnbr; + + BZ2_bzReadGetUnused (&flagval, decoptr, &byunptr, &byunnbr); /* Get remaining chars in stream */ + if ((byunnbr == 0) && (feof (compptr->oustptr) != 0)) { /* If end of decompressed stream too */ + flagval = BZ_STREAM_END; + break; + } + memMov (compptr->bufftab, byunptr, byunnbr); + BZ2_bzReadClose (&flagval, decoptr); + if ((decoptr = BZ2_bzReadOpen (&flagval, compptr->oustptr, 0, 0, compptr->bufftab, byunnbr)) == NULL) { + errorPrint ("fileDecompressBz2: cannot start decompression (3)"); + flagval = BZ_STREAM_END; + break; + } + } + } + if (flagval != BZ_STREAM_END) + errorPrint ("fileDecompressBz2: cannot read"); + + BZ2_bzReadClose (&flagval, decoptr); + fclose (compptr->oustptr); /* Do as zlib does */ +} +#endif /* COMMON_FILE_COMPRESS_BZ2 */ + +/* This routine decompresses a stream compressed +** in the gzip format. +** It returns: +** - void : in all cases. Decompression stops +** immediately in case of error. +*/ + +#ifdef COMMON_FILE_COMPRESS_GZ +static +void +fileDecompressGz ( +FileCompress * const compptr) +{ + gzFile decoptr; + int bytenbr; + + if ((decoptr = gzdopen (fileno (compptr->oustptr), "rb")) == NULL) { + errorPrint ("fileDecompressGz: cannot start decompression"); + return; + } + + while ((bytenbr = gzread (decoptr, compptr->bufftab, FILECOMPRESSDATASIZE)) > 0) { + if (write (compptr->infdnum, compptr->bufftab, bytenbr) != bytenbr) { + errorPrint ("fileDecompressGz: cannot write"); + break; + } + } + if (bytenbr < 0) + errorPrint ("fileDecompressGz: cannot read"); + + gzclose (decoptr); +} +#endif /* COMMON_FILE_COMPRESS_GZ */ + +/* This routine decompresses a stream compressed +** in the lzma format. +** It returns: +** - void : in all cases. Decompression stops +** immediately in case of error. +*/ + +#ifdef COMMON_FILE_COMPRESS_LZMA +static +void +fileDecompressLzma ( +FileCompress * const compptr) +{ + lzma_stream decodat = LZMA_STREAM_INIT; /* Decoder data */ + lzma_action deacval; /* Decoder action value */ + lzma_ret dereval; /* Decoder return value */ + byte * obuftab; /* Decoder output buffer */ + + if ((obuftab = memAlloc (FILECOMPRESSDATASIZE)) == NULL) { + errorPrint ("fileDecompressLzma: out of memory"); + return; + } + + if (lzma_stream_decoder (&decodat, UINT64_MAX, LZMA_CONCATENATED) != LZMA_OK) { + errorPrint ("fileDecompressLzma: cannot start decompression"); + memFree (obuftab); + return; + } + + deacval = LZMA_RUN; + dereval = LZMA_OK; + decodat.avail_in = 0; + decodat.next_out = obuftab; + decodat.avail_out = FILECOMPRESSDATASIZE; + do { + if ((decodat.avail_in == 0) && (deacval == LZMA_RUN)) { + ssize_t bytenbr; + + bytenbr = fread (compptr->bufftab, 1, FILECOMPRESSDATASIZE, compptr->oustptr); /* Read from pipe */ + if (bytenbr < 0) { + errorPrint ("fileDecompressLzma: cannot read"); + break; + } + if (bytenbr == 0) + deacval = LZMA_FINISH; /* If end of stream, request completion of encoding */ + decodat.next_in = compptr->bufftab; + decodat.avail_in = bytenbr; + } + + dereval = lzma_code (&decodat, deacval); + + if ((decodat.avail_out == 0) || (dereval == LZMA_STREAM_END)) { /* Write when output buffer full or end of encoding */ + size_t obufnbr; + + obufnbr = FILECOMPRESSDATASIZE - decodat.avail_out; /* Compute number of bytes to write */ + if (write (compptr->infdnum, obuftab, obufnbr) != obufnbr) { + errorPrint ("fileDecompressLzma: cannot write"); + break; + } + decodat.next_out = obuftab; + decodat.avail_out = FILECOMPRESSDATASIZE; + } + } while (dereval == LZMA_OK); + + lzma_end (&decodat); + memFree (obuftab); + + fclose (compptr->oustptr); /* Do as zlib does */ +} +#endif /* COMMON_FILE_COMPRESS_LZMA */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/common_file_uncompress.c scotch-6.0.6/src/libscotch/common_file_uncompress.c --- scotch-6.0.4.dfsg1/src/libscotch/common_file_uncompress.c 2014-01-05 22:21:58.000000000 +0000 +++ scotch-6.0.6/src/libscotch/common_file_uncompress.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,362 +0,0 @@ -/* Copyright 2008,2010 ENSEIRB, INRIA & CNRS -** -** This file is part of the Scotch software package for static mapping, -** graph partitioning and sparse matrix ordering. -** -** This software is governed by the CeCILL-C license under French law -** and abiding by the rules of distribution of free software. You can -** use, modify and/or redistribute the software under the terms of the -** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following -** URL: "http://www.cecill.info". -** -** As a counterpart to the access to the source code and rights to copy, -** modify and redistribute granted by the license, users are provided -** only with a limited warranty and the software's author, the holder of -** the economic rights, and the successive licensors have only limited -** liability. -** -** In this respect, the user's attention is drawn to the risks associated -** with loading, using, modifying and/or developing or reproducing the -** software by the user in light of its specific status of free software, -** that may mean that it is complicated to manipulate, and that also -** therefore means that it is reserved for developers and experienced -** professionals having in-depth computer knowledge. Users are therefore -** encouraged to load and test the software's suitability as regards -** their requirements in conditions enabling the security of their -** systems and/or data to be ensured and, more generally, to use and -** operate it in the same conditions as regards security. -** -** The fact that you are presently reading this means that you have had -** knowledge of the CeCILL-C license and that you accept its terms. -*/ -/************************************************************/ -/** **/ -/** NAME : common_file_uncompress.c **/ -/** **/ -/** AUTHOR : Francois PELLEGRINI **/ -/** **/ -/** FUNCTION : This module handles compressed streams **/ -/** for uncompression. **/ -/** **/ -/** DATES : # Version 5.0 : from : 11 mar 2008 **/ -/** to : 15 may 2008 **/ -/** # Version 5.1 : from : 27 jun 2010 **/ -/** to 27 jun 2010 **/ -/** **/ -/************************************************************/ - -/* -** The defines and includes. -*/ - -#define COMMON_FILE -#define COMMON_FILE_UNCOMPRESS - -#ifndef COMMON_NOMODULE -#include "module.h" -#endif /* COMMON_NOMODULE */ -#include "common.h" -#include "common_file.h" -#include "common_file_compress.h" -#ifdef COMMON_FILE_COMPRESS_BZ2 -#include "bzlib.h" -#endif /* COMMON_FILE_COMPRESS_BZ2 */ -#ifdef COMMON_FILE_COMPRESS_GZ -#include "zlib.h" -#endif /* COMMON_FILE_COMPRESS_GZ */ -#ifdef COMMON_FILE_COMPRESS_LZMA -#include "lzmadec.h" /* TODO: Temporary interface */ -#endif /* COMMON_FILE_COMPRESS_LZMA */ - -/* -** The static definitions. -*/ - -static FileCompressTab filetab[] = { -#ifdef COMMON_FILE_COMPRESS_BZ2 - { ".bz2", FILECOMPRESSTYPEBZ2, }, -#else /* COMMON_FILE_COMPRESS_BZ2 */ - { ".bz2", FILECOMPRESSTYPENOTIMPL }, -#endif /* COMMON_FILE_COMPRESS_BZ */ -#ifdef COMMON_FILE_COMPRESS_GZ - { ".gz", FILECOMPRESSTYPEGZ, }, -#else /* COMMON_FILE_COMPRESS_GZ */ - { ".gz", FILECOMPRESSTYPENOTIMPL }, -#endif /* COMMON_FILE_COMPRESS_GZ */ -#ifdef COMMON_FILE_COMPRESS_LZMA - { ".lzma", FILECOMPRESSTYPELZMA }, -#else /* COMMON_FILE_COMPRESS_LZMA */ - { ".lzma", FILECOMPRESSTYPENOTIMPL }, -#endif /* COMMON_FILE_COMPRESS_LZMA */ - { NULL, FILECOMPRESSTYPENOTIMPL } }; - -/*********************************/ -/* */ -/* Basic routines for filenames. */ -/* */ -/*********************************/ - -/* This routine searches the given file name -** for relevant extensions and returns the -** corresponding code if it is the case. -** It returns: -** - FILECOMPRESSTYPENONE : no recognized file extension. -** - FILECOMPRESSTYPENOTIMPL : compression algorithm not implemented. -** - FILECOMPRESSTYPExxxx : implemented compression algorithm. -*/ - -int -fileUncompressType ( -const char * const nameptr) /*+ Name string +*/ -{ - int namelen; - int i; - - namelen = strlen (nameptr); - for (i = 0; filetab[i].name != NULL; i ++) { - int extnlen; /* Name of extension string */ - - extnlen = strlen (filetab[i].name); - if ((namelen >= extnlen) && (strncmp (filetab[i].name, nameptr + (namelen - extnlen), extnlen) == 0)) - return (filetab[i].type); - } - - return (FILECOMPRESSTYPENONE); -} - -/* This routine creates a thread to uncompress the -** given stream according to the given (un)compression -** algorithm. -** If threads are available, uncompression will be -** performed by an auxiliary thread. Else, a child process -** will be fork()'ed, and after completion this process -** will remain a zombie until the main process terminates. -** It returns: -** - !NULL : stream holding uncompressed data. -** - NULL : on error. -*/ - -static -void * /* (void *) to comply to the Posix pthread API */ -fileUncompress2 ( -FileCompressData * const dataptr) -{ - switch (dataptr->typeval) { -#ifdef COMMON_FILE_COMPRESS_BZ2 - case FILECOMPRESSTYPEBZ2 : - fileUncompressBz2 (dataptr); - break; -#endif /* COMMON_FILE_COMPRESS_BZ2 */ -#ifdef COMMON_FILE_COMPRESS_GZ - case FILECOMPRESSTYPEGZ : - fileUncompressGz (dataptr); - break; -#endif /* COMMON_FILE_COMPRESS_GZ */ -#ifdef COMMON_FILE_COMPRESS_LZMA - case FILECOMPRESSTYPELZMA : - fileUncompressLzma (dataptr); - break; -#endif /* COMMON_FILE_COMPRESS_LZMA */ - default : - errorPrint ("fileUncompress2: method not implemented"); - } - - close (dataptr->innerfd); /* Close writer's end */ - memFree (dataptr); /* Free buffers */ - - return ((void *) 0); /* Don't care anyway */ -} - -FILE * -fileUncompress ( -FILE * const stream, /*+ Compressed stream +*/ -const int typeval) /*+ (Un)compression algorithm +*/ -{ - int filetab[2]; - FILE * readptr; - FileCompressData * dataptr; -#ifdef COMMON_PTHREAD - pthread_t thrdval; -#endif /* COMMON_PTHREAD */ - - if (typeval <= FILECOMPRESSTYPENONE) /* If uncompressed stream, return original stream pointer */ - return (stream); - - if (pipe (filetab) != 0) { - errorPrint ("fileUncompress: cannot create pipe"); - return (NULL); - } - - if ((readptr = fdopen (filetab[0], "r")) == NULL) { - errorPrint ("fileUncompress: cannot create stream"); - close (filetab[0]); - close (filetab[1]); - return (NULL); - } - - if ((dataptr = memAlloc (sizeof (FileCompressData) + FILECOMPRESSDATASIZE)) == NULL) { - errorPrint ("fileUncompress: out of memory"); - fclose (readptr); - close (filetab[1]); - return (NULL); - } - - dataptr->typeval = typeval; /* Fill structure to be passed to uncompression thread/process */ - dataptr->innerfd = filetab[1]; - dataptr->outerstream = stream; - -#ifdef COMMON_PTHREAD - if (pthread_create (&thrdval, NULL, (void * (*) (void *)) fileUncompress2, (void *) dataptr) != 0) { /* If could not create thread */ - errorPrint ("fileUncompress: cannot create thread"); - memFree (dataptr); - fclose (readptr); - close (filetab[1]); - return (NULL); - } - pthread_detach (thrdval); /* Detach thread so that it will end up gracefully by itself */ -#else /* COMMON_PTHREAD */ - switch (fork ()) { - case -1 : /* Error */ - errorPrint ("fileUncompress: cannot create child process"); - memFree (dataptr); - fclose (readptr); - close (filetab[1]); - return (NULL); - case 0 : /* We are the son process */ - fclose (readptr); /* Close reader pipe stream */ - fileUncompress2 (dataptr); /* Perform uncompression */ - exit (0); /* Exit gracefully */ - default : /* We are the father process */ - close (filetab[1]); /* Close the writer pipe end */ - } -#endif /* COMMON_PTHREAD */ - - return (readptr); -} - -/* This routine uncompresses a stream compressed in the -** bzip2 format. -** It returns: -** - void : in all cases. Uncompression stops immediately -** in case of error. -*/ - -#ifdef COMMON_FILE_COMPRESS_BZ2 -static -void -fileUncompressBz2 ( -FileCompressData * const dataptr) -{ - BZFILE * bzfile; - int bzsize; - int bzerror; - - if (FILECOMPRESSDATASIZE < (BZ_MAX_UNUSED)) { - errorPrint ("fileUncompressBz2: cannot start decompression (1)"); - return; - } - if ((bzfile = BZ2_bzReadOpen (&bzerror, dataptr->outerstream, 0, 0, NULL, 0)) == NULL) { - errorPrint ("fileUncompressBz2: cannot start decompression (2)"); - BZ2_bzReadClose (&bzerror, bzfile); - return; - } - - while ((bzsize = BZ2_bzRead (&bzerror, bzfile, &dataptr->datatab, FILECOMPRESSDATASIZE), bzerror) >= BZ_OK) { /* If BZ_OK or BZ_STREAM_END */ - if (write (dataptr->innerfd, &dataptr->datatab, bzsize) != bzsize) { - errorPrint ("fileUncompressBz2: cannot write"); - bzerror = BZ_STREAM_END; /* Avoid other error message */ - break; - } - if (bzerror == BZ_STREAM_END) { /* If end of compressed stream */ - void * bzunusptr; - int bzunusnbr; - - BZ2_bzReadGetUnused (&bzerror, bzfile, &bzunusptr, &bzunusnbr); /* Get remaining chars in stream */ - if ((bzunusnbr == 0) && (feof (dataptr->outerstream) != 0)) { /* If end of uncompressed stream too */ - bzerror = BZ_STREAM_END; - break; - } - memMov (&dataptr->datatab, bzunusptr, bzunusnbr); - BZ2_bzReadClose (&bzerror, bzfile); - if ((bzfile = BZ2_bzReadOpen (&bzerror, dataptr->outerstream, 0, 0, &dataptr->datatab, bzunusnbr)) == NULL) { - errorPrint ("fileUncompressBz2: cannot start decompression (3)"); - bzerror = BZ_STREAM_END; - break; - } - } - } - if (bzerror != BZ_STREAM_END) - errorPrint ("fileUncompressBz2: cannot read"); - - BZ2_bzReadClose (&bzerror, bzfile); - fclose (dataptr->outerstream); /* Do as zlib does */ -} -#endif /* COMMON_FILE_COMPRESS_BZ2 */ - -/* This routine uncompresses a stream compressed in the -** gzip format. -** It returns: -** - void : in all cases. Uncompression stops immediately -** in case of error. -*/ - -#ifdef COMMON_FILE_COMPRESS_GZ -static -void -fileUncompressGz ( -FileCompressData * const dataptr) -{ - gzFile gzfile; - int gzsize; - - if ((gzfile = gzdopen (fileno (dataptr->outerstream), "rb")) == NULL) { - errorPrint ("fileUncompressGz: cannot start decompression"); - return; - } - - while ((gzsize = gzread (gzfile, &dataptr->datatab, FILECOMPRESSDATASIZE)) > 0) { - if (write (dataptr->innerfd, &dataptr->datatab, gzsize) != gzsize) { - errorPrint ("fileUncompressGz: cannot write"); - break; - } - } - if (gzsize < 0) - errorPrint ("fileUncompressGz: cannot read"); - - gzclose (gzfile); -} -#endif /* COMMON_FILE_COMPRESS_GZ */ - -/* This routine uncompresses a stream compressed in the -** lzma format. -** It returns: -** - void : in all cases. Uncompression stops immediately -** in case of error. -*/ - -#ifdef COMMON_FILE_COMPRESS_LZMA -static -void -fileUncompressLzma ( -FileCompressData * const dataptr) -{ - lzmadec_FILE * lzmafile; - ssize_t lzmasize; - - if ((lzmafile = lzmadec_dopen (fileno (dataptr->outerstream))) == NULL) { - errorPrint ("fileUncompressLzma: cannot start decompression"); - return; - } - - while ((lzmasize = lzmadec_read (lzmafile, (void *) &dataptr->datatab, FILECOMPRESSDATASIZE)) > 0) { - if (write (dataptr->innerfd, &dataptr->datatab, lzmasize) != lzmasize) { - errorPrint ("fileUncompressLzma: cannot write"); - break; - } - } - if (lzmasize < 0) - errorPrint ("fileUncompressLzma: cannot read"); - - lzmadec_close (lzmafile); -} -#endif /* COMMON_FILE_COMPRESS_LZMA */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/common.h scotch-6.0.6/src/libscotch/common.h --- scotch-6.0.4.dfsg1/src/libscotch/common.h 2015-03-01 09:14:02.000000000 +0000 +++ scotch-6.0.6/src/libscotch/common.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007-2015 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007-2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -53,7 +53,7 @@ /** # Version 5.1 : from : 09 nov 2008 **/ /** to : 23 nov 2010 **/ /** # Version 6.0 : from : 03 mar 2011 **/ -/** to 01 mar 2015 **/ +/** to 14 jul 2018 **/ /** **/ /************************************************************/ @@ -104,13 +104,15 @@ #include #endif /* ((! defined COMMON_WINDOWS) && (! defined HAVE_NOT_UNISTD_H)) */ -#ifdef SCOTCH_PTSCOTCH +#ifdef COMMON_MPI #include -#endif /* SCOTCH_PTSCOTCH */ +#endif /* COMMON_MPI */ -#if ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) +#ifdef COMMON_PTHREAD #include -#endif /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */ +#else /* COMMON_PTHREAD */ +#include +#endif /* COMMON_PTHREAD */ /* ** Working definitions. @@ -119,11 +121,11 @@ #ifdef COMMON_MEMORY_TRACE #define memAlloc(size) memAllocRecord ((size) | 8) #define memRealloc(ptr,size) memReallocRecord ((ptr), ((size) | 8)) -#define memFree(ptr) (memFreeRecord ((void *) (ptr)), 0) +#define memFree(ptr) memFreeRecord ((void *) (ptr)) #else /* COMMON_MEMORY_TRACE */ #define memAlloc(size) malloc ((size) | 8) /* For platforms which return NULL for malloc(0) */ #define memRealloc(ptr,size) realloc ((ptr),((size) | 8)) -#define memFree(ptr) (free ((char *) (ptr)), 0) +#define memFree(ptr) free ((char *) (ptr)) #endif /* COMMON_MEMORY_TRACE */ #define memSet(ptr,val,siz) memset ((void *) (ptr), (val), (siz)) @@ -151,6 +153,7 @@ #define UINT UINT32 #define COMM_INT MPI_INTEGER4 #define INTSTRING "%d" +#define UINTSTRING "%u" #else /* INTSIZE32 */ #ifdef INTSIZE64 #define INT int64_t @@ -161,17 +164,20 @@ #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_UINT_T)) */ #define COMM_INT MPI_LONG_LONG #define INTSTRING "%lld" +#define UINTSTRING "%llu" #else /* INTSIZE64 */ #ifdef LONG /* Better not use it */ #define INT long /* Long integer type */ #define UINT unsigned long #define COMM_INT MPI_LONG #define INTSTRING "%ld" +#define UINTSTRING "%lu" #else /* LONG */ #define INT int /* Default integer type */ #define UINT unsigned int #define COMM_INT MPI_INT /* Generic MPI integer type */ #define INTSTRING "%d" +#define UINTSTRING "%u" #endif /* LONG */ #endif /* INTSIZE64 */ #endif /* INTSIZE32 */ @@ -299,54 +305,44 @@ /** The thread group header block. **/ typedef struct ThreadGroupHeader_ { -#if ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) +#ifdef COMMON_PTHREAD int flagval; /*+ Thread block flags +*/ size_t datasiz; /*+ Size of data array cell +*/ int thrdnbr; /*+ Number of threads +*/ ThreadLaunchStartFunc stafptr; /*+ Pointer to start routine +*/ ThreadLaunchJoinFunc joifptr; /*+ Pointer to join routine +*/ ThreadBarrier barrdat; /*+ Barrier data structure +*/ -#endif /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */ +#endif /* COMMON_PTHREAD */ } ThreadGroupHeader; /** The thread header block. **/ typedef struct ThreadHeader_ { void * grouptr; /*+ Pointer to thread group +*/ -#if ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) +#ifdef COMMON_PTHREAD pthread_t thidval; /*+ Thread ID +*/ int thrdnum; /*+ Thread instance number +*/ -#endif /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */ +#endif /* COMMON_PTHREAD */ } ThreadHeader; -/** The number of threads **/ - -#ifdef SCOTCH_PTHREAD - -#ifndef SCOTCH_PTHREAD_NUMBER -#define SCOTCH_PTHREAD_NUMBER 1 -#endif /* SCOTCH_PTHREAD_NUMBER */ - -#else /* SCOTCH_PTHREAD */ - -#ifdef SCOTCH_PTHREAD_NUMBER -#undef SCOTCH_PTHREAD_NUMBER -#endif /* SCOTCH_PTHREAD_NUMBER */ -#define SCOTCH_PTHREAD_NUMBER 1 - -#endif /* SCOTCH_PTHREAD */ - /* ** Handling of files. */ +/** The file flags **/ + +#define FILEMODE 0x0001 +#define FILEMODER 0x0000 +#define FILEMODEW 0x0001 +#define FILEFREENAME 0x0002 + /** The file structure. **/ typedef struct File_ { - char * modeptr; /*+ Opening mode +*/ - char * nameptr; /*+ File name +*/ - FILE * fileptr; /*+ File pointer +*/ - char * dataptr; /*+ Array to free +*/ + int flagval; /*+ File mode +*/ + char * nameptr; /*+ File name +*/ + FILE * fileptr; /*+ File pointer +*/ + void * compptr; /*+ (Un)compression data +*/ } File; /* @@ -370,11 +366,12 @@ int fileBlockOpen (File * const, const int); int fileBlockOpenDist (File * const, const int, const int, const int, const int); void fileBlockClose (File * const, const int); -FILE * fileCompress (FILE * const, const int); +int fileCompress (File * const, const int); +void fileCompressExit (File * const); int fileCompressType (const char * const); -FILE * fileUncompress (FILE * const, const int); -int fileUncompressType (const char * const); -int fileNameDistExpand (char ** const, const int, const int, const int); +int fileDecompress (File * const, const int); +int fileDecompressType (const char * const); +char * fileNameDistExpand (char * const, const int, const int); void errorProg (const char * const); void errorPrint (const char * const, ...); @@ -385,11 +382,13 @@ void intAscn (INT * const, const INT, const INT); void intPerm (INT * const, const INT); void intRandInit (void); +int intRandLoad (FILE * const); void intRandProc (int); void intRandReset (void); +int intRandSave (FILE * const); void intRandSeed (INT); #ifndef COMMON_RANDOM_SYSTEM -INT intRandVal (INT); +UINT intRandVal (UINT); #endif /* COMMON_RANDOM_SYSTEM */ void intSort1asc1 (void * const, const INT); void intSort2asc1 (void * const, const INT); @@ -428,9 +427,9 @@ #ifdef COMMON_RANDOM_SYSTEM #ifdef COMMON_RANDOM_RAND -#define intRandVal(ival) ((INT) (((UINT) rand ()) % ((UINT) (ival)))) +#define intRandVal(ival) ((UINT) (((UINT) rand ()) % ((UINT) (ival)))) #else /* COMMON_RANDOM_RAND */ -#define intRandVal(ival) ((INT) (((UINT) random ()) % ((UINT) (ival)))) +#define intRandVal(ival) ((UINT) (((UINT) random ()) % ((UINT) (ival)))) #endif /* COMMON_RANDOM_RAND */ #endif /* COMMON_RANDOM_SYSTEM */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/common_integer.c scotch-6.0.6/src/libscotch/common_integer.c --- scotch-6.0.4.dfsg1/src/libscotch/common_integer.c 2014-10-13 12:29:52.000000000 +0000 +++ scotch-6.0.6/src/libscotch/common_integer.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007-2012,2014-2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -50,7 +50,7 @@ /** # Version 5.1 : from : 09 nov 2008 **/ /** to : 16 jul 2010 **/ /** # Version 6.0 : from : 03 mar 2011 **/ -/** to 13 oct 2014 **/ +/** to 03 jun 2018 **/ /** **/ /************************************************************/ @@ -174,11 +174,11 @@ const INT permnbr) /*+ Number of entries in array +*/ { INT * permptr; - INT permrmn; + UINT permrmn; - for (permptr = permtab, permrmn = permnbr; /* Perform random permutation */ + for (permptr = permtab, permrmn = (UINT) permnbr; /* Perform random permutation */ permrmn > 0; permptr ++, permrmn --) { - INT permnum; + UINT permnum; INT permtmp; permnum = intRandVal (permrmn); /* Select index to swap */ @@ -239,7 +239,7 @@ randtmp = (UINT32) randval; randtab[0] = randtmp; /* Reset array contents */ for (i = 1; i < 623; i ++) { - randtmp = 0x6c078965 * randtmp ^ (randtmp >> 30) + i; + randtmp = (0x6c078965 * randtmp) ^ ((randtmp >> 30) + i); randtab[i] = randtmp; } randptr->randnum = 0; /* Reset array index */ @@ -293,9 +293,9 @@ if (intrandflag == 0) { /* Non thread-safe check */ intrandflag = 1; /* Generator has been initialized */ -#if ! ((defined COMMON_DEBUG) || (defined COMMON_RANDOM_FIXED_SEED) || (defined SCOTCH_DETERMINISTIC)) +#if ! ((defined COMMON_DEBUG) || (defined COMMON_RANDOM_FIXED_SEED)) intrandseed = (UINT32) time (NULL); /* Set random seed if needed */ -#endif /* ((defined COMMON_DEBUG) || (defined COMMON_RANDOM_FIXED_SEED) || (defined SCOTCH_DETERMINISTIC)) */ +#endif /* ((defined COMMON_DEBUG) || (defined COMMON_RANDOM_FIXED_SEED)) */ intRandSeed2 (intrandseed); /* Initialize state vector from seed */ } } @@ -316,6 +316,120 @@ intRandSeed2 (intrandseed); } +/* This routine loads the random state. +** It returns: +** - 0 : on success. +** - 1 : state cannot be loaded. +** - 2 : on error. +*/ + +#ifndef COMMON_RANDOM_SYSTEM + +static +int +intRandLoad2 ( +IntRandState * restrict const randptr, /*+ Random state to load +*/ +FILE * restrict const stream) /*+ Stream to read from +*/ +{ + INT versval; + INT randnum; + int i; + + if (intLoad (stream, &versval) != 1) { /* Read version number */ + errorPrint ("intRandLoad2: bad input (1)"); + return (2); + } + if (versval != 0) { /* If version not zero */ + errorPrint ("intRandLoad2: invalid version number"); + return (2); + } + + for (i = 0; i < 624; i ++) { + INT randval; + + if (intLoad (stream, &randval) != 1) { /* Read state vector */ + errorPrint ("intRandLoad2: bad input (2)"); + return (2); + } + randptr->randtab[i] = (UINT32) randval; + } + + if (intLoad (stream, &randnum) != 1) { /* Read state index */ + errorPrint ("intRandLoad2: bad input (3)"); + return (2); + } + if ((randnum < 0) || (randnum >= 624)) { + errorPrint ("intRandLoad2: invalid array index"); + return (2); + } + randptr->randnum = randnum; + + return (0); +} + +#endif /* COMMON_RANDOM_SYSTEM */ + +int +intRandLoad ( +FILE * restrict const stream) /*+ Stream to read from +*/ +{ +#ifndef COMMON_RANDOM_SYSTEM + return (intRandLoad2 (&intrandstat, stream)); +#else /* COMMON_RANDOM_SYSTEM */ + return (1); +#endif /* COMMON_RANDOM_SYSTEM */ +} + +/* This routine saves the random state. +** It returns: +** - 0 : on success. +** - 1 : state cannot be saved. +** - 2 : on error. +*/ + +#ifndef COMMON_RANDOM_SYSTEM + +static +int +intRandSave2 ( +IntRandState * restrict const randptr, /*+ Random state to load +*/ +FILE * restrict const stream) /*+ Stream to read from +*/ +{ + int i; + + if (fprintf (stream, "0\n") == EOF) { + errorPrint ("intRandSave2: bad output (1)"); + return (2); + } + + for (i = 0; i < 624; i ++) { + if (fprintf (stream, UINTSTRING "\n", (UINT) randptr->randtab[i]) == EOF) { + errorPrint ("intRandLoad2: bad output (2)"); + return (2); + } + } + + if (fprintf (stream, INTSTRING "\n", (INT) randptr->randnum) == EOF) { + errorPrint ("intRandLoad2: bad output (3)"); + return (2); + } + + return (0); +} + +#endif /* COMMON_RANDOM_SYSTEM */ + +int +intRandSave ( +FILE * restrict const stream) /*+ Stream to read from +*/ +{ +#ifndef COMMON_RANDOM_SYSTEM + return (intRandSave2 (&intrandstat, stream)); +#else /* COMMON_RANDOM_SYSTEM */ + return (1); +#endif /* COMMON_RANDOM_SYSTEM */ +} + /* This routine computes a new pseudo-random ** 32bit value from the state that is passed ** to it. @@ -385,9 +499,9 @@ */ #ifndef COMMON_RANDOM_SYSTEM -INT +UINT intRandVal ( -INT randmax) +UINT randmax) { return (((UINT) intRandVal2 (&intrandstat)) % randmax); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/common_memory.c scotch-6.0.6/src/libscotch/common_memory.c --- scotch-6.0.4.dfsg1/src/libscotch/common_memory.c 2012-10-10 14:49:02.000000000 +0000 +++ scotch-6.0.6/src/libscotch/common_memory.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010,2012,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -47,7 +47,7 @@ /** # Version 5.1 : from : 22 nov 2008 **/ /** to : 27 jun 2010 **/ /** # Version 6.0 : from : 11 jun 2012 **/ -/** to : 10 oct 2012 **/ +/** to : 15 may 2018 **/ /** **/ /************************************************************/ @@ -263,13 +263,13 @@ #define COMMON_MEMORY_OVHD COMMON_MEMORY_SKEW #endif /* COMMON_MEMORY_SKEW */ -static intptr_t memorysiz = 0; /*+ Number of allocated bytes +*/ -static intptr_t memorymax = 0; /*+ Maximum amount of allocated data +*/ +static intptr_t memorysiz = 0; /*+ Number of allocated bytes +*/ +static intptr_t memorymax = 0; /*+ Maximum amount of allocated data +*/ -#if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) -static int muteflag = 1; /*+ Flag for mutex initialization +*/ -static pthread_mutex_t mutelocdat; /*+ Local mutex for updates +*/ -#endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */ +#ifdef COMMON_PTHREAD_MEMORY +static int muteflag = 1; /*+ Flag for mutex initialization +*/ +static pthread_mutex_t mutelocdat; /*+ Local mutex for updates +*/ +#endif /* COMMON_PTHREAD_MEMORY */ /* This routine allocates and records ** a memory block. @@ -284,13 +284,13 @@ { byte * newptr; -#if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) - if (muteflag != 0) { /* Unsafe code with respect to race conditions but should work as first allocs are sequential */ +#ifdef COMMON_PTHREAD_MEMORY + if (muteflag != 0) { /* Unsafe code with respect to race conditions but should work as first allocs are sequential; portable TSL needed */ muteflag = 0; pthread_mutex_init (&mutelocdat, NULL); /* Initialize local mutex */ } pthread_mutex_lock (&mutelocdat); /* Lock local mutex */ -#endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */ +#endif /* COMMON_PTHREAD_MEMORY */ if ((newptr = malloc (newsiz + COMMON_MEMORY_OVHD)) != NULL) { /* Non-zero size will guarantee non-NULL pointers */ memorysiz += (intptr_t) newsiz; @@ -305,9 +305,9 @@ newptr += COMMON_MEMORY_SKEW; /* Skew pointer while enforcing alignment */ } -#if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) +#ifdef COMMON_PTHREAD_MEMORY pthread_mutex_unlock (&mutelocdat); /* Unlock local mutex */ -#endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */ +#endif /* COMMON_PTHREAD_MEMORY */ return ((void *) newptr); /* Return skewed pointer or NULL */ } @@ -331,9 +331,9 @@ tmpptr = ((byte *) oldptr) - COMMON_MEMORY_SKEW; oldsiz = *((size_t *) tmpptr); -#if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) +#ifdef COMMON_PTHREAD_MEMORY pthread_mutex_lock (&mutelocdat); /* Lock local mutex */ -#endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */ +#endif /* COMMON_PTHREAD_MEMORY */ #ifdef COMMON_MEMORY_CHECK memCheckDelist (tmpptr); @@ -353,9 +353,9 @@ newptr += COMMON_MEMORY_SKEW; /* Skew pointer while enforcing alignment */ } -#if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) +#ifdef COMMON_PTHREAD_MEMORY pthread_mutex_unlock (&mutelocdat); /* Unlock local mutex */ -#endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */ +#endif /* COMMON_PTHREAD_MEMORY */ return ((void *) newptr); /* Return skewed pointer or NULL */ } @@ -376,9 +376,9 @@ tmpptr = ((byte *) oldptr) - COMMON_MEMORY_SKEW; oldsiz = *((size_t *) tmpptr); -#if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) +#ifdef COMMON_PTHREAD_MEMORY pthread_mutex_lock (&mutelocdat); /* Lock local mutex */ -#endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */ +#endif /* COMMON_PTHREAD_MEMORY */ #ifdef COMMON_MEMORY_CHECK memCheckDelist (tmpptr); @@ -387,9 +387,9 @@ free (tmpptr); memorysiz -= oldsiz; -#if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) +#ifdef COMMON_PTHREAD_MEMORY pthread_mutex_unlock (&mutelocdat); /* Unlock local mutex */ -#endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */ +#endif /* COMMON_PTHREAD_MEMORY */ } /* This routine returns the memory @@ -404,15 +404,15 @@ { intptr_t memotmp; -#if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) +#ifdef COMMON_PTHREAD_MEMORY pthread_mutex_lock (&mutelocdat); /* Lock local mutex */ -#endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */ +#endif /* COMMON_PTHREAD_MEMORY */ memotmp = memorysiz; -#if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) +#ifdef COMMON_PTHREAD_MEMORY pthread_mutex_unlock (&mutelocdat); /* Unlock local mutex */ -#endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */ +#endif /* COMMON_PTHREAD_MEMORY */ return ((IDX) memotmp); } @@ -429,15 +429,15 @@ { intptr_t memotmp; -#if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) +#ifdef COMMON_PTHREAD_MEMORY pthread_mutex_lock (&mutelocdat); /* Lock local mutex */ -#endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */ +#endif /* COMMON_PTHREAD_MEMORY */ memotmp = memorymax; -#if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) +#ifdef COMMON_PTHREAD_MEMORY pthread_mutex_unlock (&mutelocdat); /* Unlock local mutex */ -#endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */ +#endif /* COMMON_PTHREAD_MEMORY */ return ((IDX) memotmp); } @@ -491,6 +491,7 @@ memoff += va_arg (memlist, size_t); memloc = va_arg (memlist, byte **); } + va_end (memlist); if ((blkptr = (byte *) memAlloc (memoff)) == NULL) { /* If cannot allocate */ *memptr = NULL; /* Set first pointer to NULL */ @@ -506,6 +507,7 @@ memoff += va_arg (memlist, size_t); /* Accumulate padded sizes */ memloc = va_arg (memlist, void *); /* Get next argument pointer */ } + va_end (memlist); return ((void *) blkptr); } @@ -533,12 +535,12 @@ byte * blkptr; /* Pointer to memory chunk */ memoff = 0; - va_start (memlist, oldptr); /* Start argument parsing */ - + va_start (memlist, oldptr); /* Start argument parsing */ while ((memloc = va_arg (memlist, byte **)) != NULL) { /* As long as not NULL pointer */ memoff = (memoff + (sizeof (double) - 1)) & (~ (sizeof (double) - 1)); /* Pad */ memoff += va_arg (memlist, size_t); /* Accumulate padded sizes */ } + va_end (memlist); if ((blkptr = (byte *) memRealloc (oldptr, memoff)) == NULL) /* If cannot allocate block */ return (NULL); @@ -550,6 +552,7 @@ *memloc = blkptr + memoff; /* Set argument address */ memoff += va_arg (memlist, size_t); /* Accumulate padded sizes */ } + va_end (memlist); return ((void *) blkptr); } @@ -575,13 +578,13 @@ size_t memoff; /* Offset value of argument */ memoff = 0; - va_start (memlist, memptr); /* Start argument parsing */ - + va_start (memlist, memptr); /* Start argument parsing */ while ((memloc = va_arg (memlist, byte **)) != NULL) { /* As long as not NULL pointer */ memoff = (memoff + (sizeof (double) - 1)) & (~ (sizeof (double) - 1)); *memloc = (byte *) memptr + memoff; /* Set argument address */ memoff += va_arg (memlist, size_t); /* Accumulate padded sizes */ } + va_end (memlist); return ((void *) ((byte *) memptr + memoff)); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/common_thread.c scotch-6.0.6/src/libscotch/common_thread.c --- scotch-6.0.4.dfsg1/src/libscotch/common_thread.c 2014-10-02 15:31:57.000000000 +0000 +++ scotch-6.0.6/src/libscotch/common_thread.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2012-2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2012-2015 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -39,7 +39,7 @@ /** the use of Posix threads. **/ /** **/ /** DATES : # Version 6.0 : from : 04 jul 2012 **/ -/** to 02 oct 2014 **/ +/** to 27 apr 2015 **/ /** **/ /************************************************************/ @@ -47,10 +47,10 @@ ** The defines and includes. */ -#ifdef SCOTCH_PTHREAD_AFFINITY_LINUX +#ifdef COMMON_PTHREAD_AFFINITY_LINUX #define _GNU_SOURCE #include -#endif /* SCOTCH_PTHREAD_AFFINITY_LINUX */ +#endif /* COMMON_PTHREAD_AFFINITY_LINUX */ #define COMMON_THREAD @@ -65,7 +65,7 @@ /* */ /*****************************/ -#if ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) +#ifdef COMMON_PTHREAD /* These routines implement the classical barrier ** operations for systems that do not provide them. @@ -249,15 +249,15 @@ const int thrdnum = thrdptr->thrdnum; int thrdmsk; int o; -#ifdef SCOTCH_PTHREAD_AFFINITY_LINUX +#ifdef COMMON_PTHREAD_AFFINITY_LINUX cpu_set_t cpuset; -#endif /* SCOTCH_PTHREAD_AFFINITY_LINUX */ +#endif /* COMMON_PTHREAD_AFFINITY_LINUX */ -#ifdef SCOTCH_PTHREAD_AFFINITY_LINUX +#ifdef COMMON_PTHREAD_AFFINITY_LINUX CPU_ZERO (&cpuset); CPU_SET (thrdnum, &cpuset); /* Thread sets its own affinity */ pthread_setaffinity_np (thrdptr->thidval, sizeof (cpu_set_t), &cpuset); -#endif /* SCOTCH_PTHREAD_AFFINITY_LINUX */ +#endif /* COMMON_PTHREAD_AFFINITY_LINUX */ o = grouptr->stafptr (dataptr); /* Call start routine */ @@ -375,7 +375,7 @@ return ((int) (intptr_t) o); } -#else /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */ +#else /* COMMON_PTHREAD */ /**********************************/ /* */ @@ -390,7 +390,7 @@ ThreadReduceFunc const redfptr, /* Pointer to reduction routine */ int rootnum) /* Root of reduction */ { - errorPrint ("threadReduce: Scotch not compiled with either COMMON_PTHREAD or SCOTCH_PTHREAD"); + errorPrint ("threadReduce: Not compiled with COMMON_PTHREAD"); } void @@ -399,7 +399,7 @@ void * const contptr, /* Pointer to thread contents */ ThreadScanFunc const scafptr) /* Scan function */ { - errorPrint ("threadScan: Scotch not compiled with either COMMON_PTHREAD or SCOTCH_PTHREAD"); + errorPrint ("threadScan: Not compiled with COMMON_PTHREAD"); } int @@ -412,8 +412,8 @@ const int thrdnbr, /* Number of threads to run (including current) */ const int flagval) /* Flag for thread operation data structures */ { - errorPrint ("threadLaunch: Scotch not compiled with either COMMON_PTHREAD or SCOTCH_PTHREAD"); + errorPrint ("threadLaunch: Not compiled with COMMON_PTHREAD"); return (1); } -#endif /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */ +#endif /* COMMON_PTHREAD */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/dgraph_band.c scotch-6.0.6/src/libscotch/dgraph_band.c --- scotch-6.0.4.dfsg1/src/libscotch/dgraph_band.c 2012-09-26 10:21:58.000000000 +0000 +++ scotch-6.0.6/src/libscotch/dgraph_band.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007-2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007-2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,7 +41,7 @@ /** DATES : # Version 5.1 : from : 11 nov 2007 **/ /** to : 20 feb 2011 **/ /** # Version 6.0 : from : 03 apr 2012 **/ -/** to : 26 sep 2012 **/ +/** to : 22 may 2018 **/ /** **/ /** NOTES : # This code derives from the code of **/ /** vdgraph_separate_bd.c in version 5.0. **/ @@ -64,15 +64,18 @@ /* */ /**********************************/ -#define DGRAPHBANDGROWNAME dgraphBand +#define DGRAPHBANDGROWNAME dgraphBand2 #define DGRAPHBANDGROWEDGE(n) bandedgelocnbr += vendloctax[n] - vertloctax[n] -#define DGRAPHBANDGROWENQ1 for (queulocnum = 0; queulocnum < queulocnbr; queulocnum ++) { \ - Gnum vertlocnum; \ - \ - vertlocnum = queuloctab[queulocnum]; \ - vnumgsttax[vertlocnum] = bandvertlocnnd ++; \ - DGRAPHBANDGROWEDGE (vertlocnum); \ - } +#define DGRAPHBANDGROWENQ1 do { \ + Gnum queulocnum; \ + for (queulocnum = 0; queulocnum < queulocnbr; queulocnum ++) { \ + Gnum vertlocnum; \ + \ + vertlocnum = queuloctab[queulocnum]; \ + vnumgsttax[vertlocnum] = bandvertlocnnd ++; \ + DGRAPHBANDGROWEDGE (vertlocnum); \ + } \ + } while (0) #define DGRAPHBANDGROWENQ2 bandvertlocnnd ++ #define DGRAPHBANDGROWENQ3 /* Nothing more to send */ #define DGRAPHBANDGROWENQ4 bandvertlocnnd ++ @@ -139,7 +142,6 @@ const Gnum * restrict edgegsttax; Gnum fronlocnum; int cheklocval; - int chekglbval; int procngbnum; if (dgraphGhst (grafptr) != 0) { /* Compute ghost edge array if not already present */ @@ -149,27 +151,19 @@ cheklocval = 0; bandvnumgstsiz = MAX ((grafptr->vertgstnbr * sizeof (Gnum)), (grafptr->procglbnbr * sizeof (int))); /* TRICK: re-use array for further error collective communications */ - if ((bandvnumgsttax = memAlloc (bandvnumgstsiz)) == NULL) { + if ((bandvnumgsttax = memAlloc (bandvnumgstsiz)) == NULL) /* Error will be propagated by dgraphBand2*() */ errorPrint ("dgraphBand: out of memory (1)"); - cheklocval = 1; + else { + memSet (bandvnumgsttax, ~0, grafptr->vertgstnbr * sizeof (Gnum)); /* Reset part array */ + bandvnumgsttax -= grafptr->baseval; } -#ifdef SCOTCH_DEBUG_DGRAPH1 /* This communication cannot be covered by a useful one */ - if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, grafptr->proccomm) != MPI_SUCCESS) { - errorPrint ("dgraphBand: communication error (1)"); - return (1); - } -#else /* SCOTCH_DEBUG_DGRAPH1 */ - chekglbval = cheklocval; -#endif /* SCOTCH_DEBUG_DGRAPH1 */ - if (chekglbval != 0) - return (1); - memSet (bandvnumgsttax, ~0, grafptr->vertgstnbr * sizeof (Gnum)); /* Reset part array */ - bandvnumgsttax -= grafptr->baseval; - - if ((((grafptr->flagval & DGRAPHCOMMPTOP) != 0) ? dgraphBandPtop : dgraphBandColl) - (grafptr, fronlocnbr, fronloctab, distmax, bandvnumgsttax, &bandvertlvlnum, &bandvertlocnbr, &bandedgelocnbr) != 0) + if ((((grafptr->flagval & DGRAPHCOMMPTOP) != 0) ? dgraphBand2Ptop : dgraphBand2Coll) + (grafptr, fronlocnbr, fronloctab, distmax, bandvnumgsttax, &bandvertlvlnum, &bandvertlocnbr, &bandedgelocnbr) != 0) { + if (bandvnumgsttax != NULL) + memFree (bandvnumgsttax + grafptr->baseval); return (1); + } if (bandvertlvlptr != NULL) *bandvertlvlptr = bandvertlvlnum; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/dgraph_band_grow.c scotch-6.0.6/src/libscotch/dgraph_band_grow.c --- scotch-6.0.4.dfsg1/src/libscotch/dgraph_band_grow.c 2012-09-26 22:34:58.000000000 +0000 +++ scotch-6.0.6/src/libscotch/dgraph_band_grow.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007-2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007-2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -38,12 +38,13 @@ /** FUNCTION : This module flags vertices according **/ /** to a breadth-first search traversal of **/ /** the distributed graph. It is used both **/ -/** by dgraphBand() and dgraphGrow(). **/ +/** by dgraphBand() and **/ +/** SCOTCH_dgraphGrow(). **/ /** **/ /** DATES : # Version 5.1 : from : 11 nov 2007 **/ /** to : 20 feb 2011 **/ /** # Version 6.0 : from : 03 apr 2012 **/ -/** to : 26 sep 2012 **/ +/** to : 21 may 2018 **/ /** **/ /** NOTES : # This code derives from the code of **/ /** vdgraph_separate_bd.c in version **/ @@ -85,9 +86,7 @@ Gnum * restrict const bandvertlocptr, /*+ Pointer to bandvertlocnnd +*/ Gnum * restrict const bandedgelocptr) /*+ Pointer to bandedgelocnbr +*/ { - Gnum queulocnum; Gnum vertlocnnd; - Gnum vnumgstsiz; /* Size of vnumgsttax; TRICK: re-use */ Gnum vrcvdatsiz; /* Sizes of data send and receive arrays */ Gnum vsnddatsiz; Gnum * vrcvdattab; /* Data arrays [norestrict:async] */ @@ -122,19 +121,21 @@ procngbnbr = grafptr->procngbnbr; - reduglbtab[0] = 0; /* Assume everything is all right */ + reduglbtab[0] = 0; /* Assume everything is all right */ vrcvdatsiz = DGRAPHBANDGROWSMUL (grafptr->procsndnbr); /* Senders and receivers inverted because we send local, not halo vertices */ vsnddatsiz = DGRAPHBANDGROWSMUL (grafptr->vertgstnbr - grafptr->vertlocnbr); - if (memAllocGroup ((void **) (void *) - &procvgbtab, (size_t) ((procngbnbr + 1) * sizeof (Gnum)), - &nsndidxtab, (size_t) (procngbnbr * sizeof (int)), - &vrcvcnttab, (size_t) (grafptr->procglbnbr * sizeof (int)), - &vsndcnttab, (size_t) (grafptr->procglbnbr * sizeof (int)), /* TRICK: vsndcnttab, vrcvdsptab, vrcvdattab, vrcvdattab joined */ - &vrcvdsptab, (size_t) (grafptr->procglbnbr * sizeof (int)), - &vsnddsptab, (size_t) (grafptr->procglbnbr * sizeof (int)), - &vrcvdattab, (size_t) (vrcvdatsiz * sizeof (Gnum)), - &vsnddattab, (size_t) (vsnddatsiz * sizeof (Gnum)), NULL) == NULL) { + procvgbtab = NULL; /* In case of error */ + if ((vnumgsttax == NULL) || + (memAllocGroup ((void **) (void *) + &procvgbtab, (size_t) ((procngbnbr + 1) * sizeof (Gnum)), + &nsndidxtab, (size_t) (procngbnbr * sizeof (int)), + &vrcvcnttab, (size_t) (grafptr->procglbnbr * sizeof (int)), + &vsndcnttab, (size_t) (grafptr->procglbnbr * sizeof (int)), /* TRICK: vsndcnttab, vrcvdsptab, vrcvdattab, vrcvdattab joined */ + &vrcvdsptab, (size_t) (grafptr->procglbnbr * sizeof (int)), + &vsnddsptab, (size_t) (grafptr->procglbnbr * sizeof (int)), + &vrcvdattab, (size_t) (vrcvdatsiz * sizeof (Gnum)), + &vsnddattab, (size_t) (vsnddatsiz * sizeof (Gnum)), NULL) == NULL)) { errorPrint (DGRAPHBANDGROWNSTR "Coll: out of memory (1)"); reduglbtab[0] = 1; } @@ -152,11 +153,8 @@ } #endif /* SCOTCH_DEBUG_DGRAPH1 */ if (reduglbtab[0] != 0) { - if (vnumgsttax != NULL) { - if (procvgbtab != NULL) - memFree (procvgbtab); /* Free group leader */ - memFree (vnumgsttax); - } + if (procvgbtab != NULL) + memFree (procvgbtab); /* Free group leader */ return (1); } @@ -323,9 +321,7 @@ Gnum * restrict const bandvertlocptr, /*+ Pointer to bandvertlocnnd +*/ Gnum * restrict const bandedgelocptr) /*+ Pointer to bandedgelocnbr +*/ { - Gnum queulocnum; Gnum vertlocnnd; - Gnum vnumgstsiz; /* Size of vnumgsttax; TRICK: re-use */ Gnum vrcvdatsiz; /* Sizes of data send and receive arrays */ Gnum vsnddatsiz; Gnum * vrcvdattab; /* Data arrays [norestrict:async] */ @@ -509,10 +505,6 @@ procngbnum = procngbnxt; /* Send all buffers to neighbors */ if (procngbnbr != 0) { do { - int procglbnum; - - procglbnum = grafptr->procngbtab[procngbnum]; - if (MPI_Isend (vsnddattab + nsnddsptab[procngbnum], nsndidxtab[procngbnum] - nsnddsptab[procngbnum], GNUM_MPI, grafptr->procngbtab[procngbnum], TAGBAND, grafptr->proccomm, nsndreqtab + procngbnum) != MPI_SUCCESS) { diff -Nru scotch-6.0.4.dfsg1/src/libscotch/dgraph_band_grow.h scotch-6.0.6/src/libscotch/dgraph_band_grow.h --- scotch-6.0.4.dfsg1/src/libscotch/dgraph_band_grow.h 2012-09-26 10:12:57.000000000 +0000 +++ scotch-6.0.6/src/libscotch/dgraph_band_grow.h 2018-07-14 15:24:49.000000000 +0000 @@ -48,10 +48,10 @@ ** The defines. */ -#define DGRAPHBANDGROWNAMECOLL DGRAPHBANDGROWNAMECOLL2 (REPLACE (DGRAPHBANDGROWNAME)) +#define DGRAPHBANDGROWNAMECOLL REPLACE (DGRAPHBANDGROWNAMECOLL2 (REPLACE (DGRAPHBANDGROWNAME))) #define DGRAPHBANDGROWNAMECOLL2(s) GLUE (s,Coll) -#define DGRAPHBANDGROWNAMEPTOP DGRAPHBANDGROWNAMEPTOP2 (REPLACE (DGRAPHBANDGROWNAME)) +#define DGRAPHBANDGROWNAMEPTOP REPLACE (DGRAPHBANDGROWNAMEPTOP2 (REPLACE (DGRAPHBANDGROWNAME))) #define DGRAPHBANDGROWNAMEPTOP2(s) GLUE (s,Ptop) /* diff -Nru scotch-6.0.4.dfsg1/src/libscotch/dgraph_build.c scotch-6.0.6/src/libscotch/dgraph_build.c --- scotch-6.0.4.dfsg1/src/libscotch/dgraph_build.c 2014-06-05 08:04:41.000000000 +0000 +++ scotch-6.0.6/src/libscotch/dgraph_build.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2010,2013,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2010,2013,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -52,7 +52,7 @@ /** # Version 5.1 : from : 30 jul 2010 **/ /** to : 03 nov 2010 **/ /** # Version 6.0 : from : 23 dec 2013 **/ -/** to : 05 jun 2014 **/ +/** to : 03 jun 2018 **/ /** **/ /************************************************************/ @@ -163,7 +163,6 @@ { Gnum procnum; int reduloctab[2]; - int cheklocval; /* Local consistency flag */ #ifdef SCOTCH_DEBUG_DGRAPH2 if ((vertlocmax < vertlocnbr) || @@ -173,7 +172,6 @@ } #endif /* SCOTCH_DEBUG_DGRAPH2 */ - cheklocval = 0; if (grafptr->procdsptab == NULL) { /* If private data not yet allocated */ int procglbnbr; @@ -222,8 +220,8 @@ grafptr->procvrttab[procnum + 1] = grafptr->procvrttab[procnum] + (Gnum) grafptr->procngbtab[2 * procnum + 1]; grafptr->proccnttab[procnum] = grafptr->procdsptab[procnum + 1] - grafptr->procdsptab[procnum]; } - grafptr->flagval |= DGRAPHFREEPRIV; + return (dgraphBuild3 (grafptr, baseval, vertlocnbr, vertloctax, vendloctax, veloloctax, velolocsum, vnumloctax, vlblloctax, edgelocnbr, edgelocsiz, edgeloctax, edgegsttax, edloloctax, degrlocmax)); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/dgraph_build_grid3d.h scotch-6.0.6/src/libscotch/dgraph_build_grid3d.h --- scotch-6.0.4.dfsg1/src/libscotch/dgraph_build_grid3d.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/dgraph_build_grid3d.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2010 ENSEIRB, INRIA & CNRS +/* Copyright 2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 5.1 : from : 06 jun 2010 **/ /** to : 04 nov 2010 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -74,16 +76,12 @@ ** The function prototypes. */ -#ifndef DGRAPH_BUILD_GRID3D -#define static -#endif - +#ifdef DGRAPH_BUILD_GRID3D static Gnum dgraphBuildGrid3Dvertex26M (const DgraphBuildGrid3DData * restrict const, const Gnum, Gnum, const Gnum, const Gnum, const Gnum); static Gnum dgraphBuildGrid3Dvertex26T (const DgraphBuildGrid3DData * restrict const, const Gnum, Gnum, const Gnum, const Gnum, const Gnum); static Gnum dgraphBuildGrid3Dvertex6M (const DgraphBuildGrid3DData * restrict const, const Gnum, Gnum, const Gnum, const Gnum, const Gnum); static Gnum dgraphBuildGrid3Dvertex6T (const DgraphBuildGrid3DData * restrict const, const Gnum, Gnum, const Gnum, const Gnum, const Gnum); - -#undef static +#endif /* DGRAPH_BUILD_GRID3D */ /* ** The macro definitions. @@ -98,4 +96,3 @@ if ((d)->edloloctax != NULL) \ (d)->edloloctax[edgeloctmp] = ((vertglbend + (v)) % 16) + 1; \ } - diff -Nru scotch-6.0.4.dfsg1/src/libscotch/dgraph_build_hcub.c scotch-6.0.6/src/libscotch/dgraph_build_hcub.c --- scotch-6.0.4.dfsg1/src/libscotch/dgraph_build_hcub.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/dgraph_build_hcub.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2008 ENSEIRB, INRIA & CNRS +/* Copyright 2007,2008,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -48,6 +48,8 @@ /** to : 10 sep 2007 **/ /** # Version 5.1 : from : 12 nov 2008 **/ /** to : 12 nov 2008 **/ +/** # Version 6.0 : from : 15 may 2018 **/ +/** to : 15 may 2018 **/ /** **/ /************************************************************/ @@ -119,7 +121,7 @@ #ifdef SCOTCH_DEBUG_DGRAPH3 &vlblloctax, (size_t) (vertlocnbr * sizeof (Gnum)), #endif /* SCOTCH_DEBUG_DGRAPH3 */ - &veloloctax, (size_t) (vertlocnbr * sizeof (Gnum)), NULL) == NULL) { + &veloloctax, (size_t) (velolocnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("dgraphBuildHcub: out of memory (1)"); cheklocval = 1; } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/dgraph_coarsen.c scotch-6.0.6/src/libscotch/dgraph_coarsen.c --- scotch-6.0.4.dfsg1/src/libscotch/dgraph_coarsen.c 2014-10-13 09:44:14.000000000 +0000 +++ scotch-6.0.6/src/libscotch/dgraph_coarsen.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -47,7 +47,7 @@ /** # Version 5.1 : from : 23 jun 2008 **/ /** to : 20 feb 2011 **/ /** # Version 6.0 : from : 11 sep 2012 **/ -/** to : 28 sep 2014 **/ +/** to : 07 jun 2018 **/ /** **/ /************************************************************/ @@ -399,7 +399,6 @@ dgraphCoarsenBuild ( DgraphCoarsenData * restrict const coarptr) { - Gnum vertlocnum; Gnum vertlocadj; Gnum edgelocnbr; Gnum edlolocval; @@ -437,6 +436,7 @@ int cheklocval; int chekglbval; #ifdef SCOTCH_DEBUG_DGRAPH2 + Gnum vertlocnum; int * restrict ercvdbgtab; #endif /* SCOTCH_DEBUG_DGRAPH2 */ @@ -1049,12 +1049,11 @@ } else { /* Do a duplicant-folding */ int loopval; - int dumyval; o = dgraphFoldDup (&coargrafdat, coargrafptr, (void *) matedat.c.multloctab, (void **) (void *) &coarmultptr, coarmultype); loopval = intRandVal (finegrafptr->proclocnum + intRandVal (finegrafptr->proclocnum * 2 + 1) + 1); while (loopval --) /* Desynchronize pseudo-random generator across processes */ - dumyval = intRandVal (2); + intRandVal (2); } dgraphExit (&coargrafdat); /* Free unfolded graph */ MPI_Type_free (&coarmultype); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/dgraph_coarsen.h scotch-6.0.6/src/libscotch/dgraph_coarsen.h --- scotch-6.0.4.dfsg1/src/libscotch/dgraph_coarsen.h 2014-09-28 16:41:08.000000000 +0000 +++ scotch-6.0.6/src/libscotch/dgraph_coarsen.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007-2009,2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007-2009,2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** # Version 5.1 : from : 11 nov 2008 **/ /** to : 26 may 2009 **/ /** # Version 6.0 : from : 18 sep 2012 **/ -/** to : 28 sep 2014 **/ +/** to : 07 jun 2018 **/ /** **/ /************************************************************/ @@ -139,14 +139,10 @@ ** The function prototypes. */ -#ifndef DGRAPH_COARSEN -#define static -#endif - +#ifdef DGRAPH_COARSEN static int dgraphCoarsenInit (DgraphCoarsenData * restrict const, Dgraph * restrict const, Dgraph * restrict const); static void dgraphCoarsenExit (DgraphCoarsenData * restrict const); static int dgraphCoarsenBuild (DgraphCoarsenData * restrict const); +#endif /* DGRAPH_COARSEN */ int dgraphCoarsen (Dgraph * restrict const, Dgraph * restrict const, DgraphCoarsenMulti * restrict * const, const Gnum, const Gnum, const double, const int); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/dgraph_fold_dup.h scotch-6.0.6/src/libscotch/dgraph_fold_dup.h --- scotch-6.0.4.dfsg1/src/libscotch/dgraph_fold_dup.h 2014-09-28 16:41:08.000000000 +0000 +++ scotch-6.0.6/src/libscotch/dgraph_fold_dup.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2010,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2010,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** # Version 5.1 : from : 04 nov 2010 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 28 sep 2014 **/ -/** to : 28 sep 2014 **/ +/** to : 07 jun 2018 **/ /** **/ /************************************************************/ @@ -68,12 +68,8 @@ ** The function prototypes. */ -#ifndef DGRAPH_FOLD_DUP -#define static -#endif - +#ifdef DGRAPH_FOLD_DUP #ifdef SCOTCH_PTHREAD static void * dgraphFoldDup2 (void *); #endif /* SCOTCH_PTHREAD */ - -#undef static +#endif /* DGRAPH_FOLD_DUP */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/dgraph_gather_all.c scotch-6.0.6/src/libscotch/dgraph_gather_all.c --- scotch-6.0.4.dfsg1/src/libscotch/dgraph_gather_all.c 2012-11-26 23:28:37.000000000 +0000 +++ scotch-6.0.6/src/libscotch/dgraph_gather_all.c 2018-07-14 15:24:49.000000000 +0000 @@ -319,7 +319,7 @@ if (dgraphGatherAll3 (dgrfptr->veloloctax + baseval, dgrfptr->vertlocnbr, velotax, /* Based array since procdsptab holds based values */ dgrfptr->proccnttab, dgrfptr->procdsptab, protnum, dgrfptr->proccomm) != MPI_SUCCESS) { - errorPrint ("dgraphGatherAll2: communication error (6)"); + errorPrint ("dgraphGatherAll2: communication error (5)"); return (1); } } @@ -327,7 +327,7 @@ if (dgraphGatherAll3 (dgrfptr->vnumloctax + baseval, dgrfptr->vertlocnbr, vnumtax, /* Based array since procdsptab holds based values */ dgrfptr->proccnttab, dgrfptr->procdsptab, protnum, dgrfptr->proccomm) != MPI_SUCCESS) { - errorPrint ("dgraphGatherAll2: communication error (5)"); + errorPrint ("dgraphGatherAll2: communication error (6)"); return (1); } } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/dgraph.h scotch-6.0.6/src/libscotch/dgraph.h --- scotch-6.0.4.dfsg1/src/libscotch/dgraph.h 2012-09-26 06:00:24.000000000 +0000 +++ scotch-6.0.6/src/libscotch/dgraph.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007-2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007-2010,2012,2015 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -57,7 +57,7 @@ /** # Version 5.1 : from : 11 nov 2007 **/ /** to : 20 feb 2011 **/ /** # Version 6.0 : from : 30 aug 2012 **/ -/** to : 26 sep 2012 **/ +/** to : 28 dec 2015 **/ /** **/ /************************************************************/ @@ -102,10 +102,11 @@ /* The graph basic types, which must be signed. */ -#ifndef GNUMMAX /* If graph.h not included */ -typedef INT Gnum; /* Vertex or edge number */ -#define GNUMMAX (INTVALMAX) /* Maximum Gnum value */ -#define GNUMSTRING INTSTRING /* String to printf a Gnum */ +#ifndef GNUMMAX /* If graph.h not included */ +typedef INT Gnum; /* Vertex or edge number */ +#define GNUMMAX (INTVALMAX) /* Maximum Gnum value */ +#define GNUMMIN (-GNUMMAX - 1) /* Minimum signed Gnum value */ +#define GNUMSTRING INTSTRING /* String to printf a Gnum */ #endif /* GNUMMAX */ #define GNUM_MPI COMM_INT /* MPI type for Gnum is MPI type for INT */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/dgraph_halo.h scotch-6.0.6/src/libscotch/dgraph_halo.h --- scotch-6.0.4.dfsg1/src/libscotch/dgraph_halo.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/dgraph_halo.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2008,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2007,2008,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to : 05 feb 2008 **/ /** # Version 5.1 : from : 28 aug 2008 **/ /** to : 04 nov 2010 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -79,16 +81,12 @@ ** The function prototypes. */ -#ifndef DGRAPH_HALO -#define static -#endif - +#ifdef DGRAPH_HALO #ifdef SCOTCH_PTHREAD static void * dgraphHaloAsync2 (DgraphHaloRequest * restrict); #endif /* SCOTCH_PTHREAD */ +#endif /* DGRAPH_HALO */ void dgraphHaloAsync (Dgraph * restrict const, void * restrict const, const MPI_Datatype, DgraphHaloRequest * restrict); int dgraphHaloWait (DgraphHaloRequest * restrict); int dgraphHaloCheck (const Dgraph * restrict const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/dgraph_induce.c scotch-6.0.6/src/libscotch/dgraph_induce.c --- scotch-6.0.4.dfsg1/src/libscotch/dgraph_induce.c 2012-09-13 13:28:44.000000000 +0000 +++ scotch-6.0.6/src/libscotch/dgraph_induce.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007-2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007-2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** # Version 5.1 : from : 31 mar 2008 **/ /** to : 30 jul 2010 **/ /** # Version 6.0 : from : 29 aug 2012 **/ -/** to : 13 sep 2012 **/ +/** to : 25 apr 2018 **/ /** **/ /************************************************************/ @@ -74,23 +74,21 @@ Gnum * indvnumloctmp, /* Pointer to temporary index array; TRICK: [alias] */ Dgraph * restrict const indgrafptr) { - Gnum * restrict orgindxgsttax; /* Based access to vertex translation array */ - Gnum indvertlocnnd; /* Based index of end of local vertex array */ - Gnum indvertlocnum; /* Number of current vertex in induced graph */ - Gnum indvertglbnum; /* Number of current vertex in global ordering */ - Gnum indvelolocnbr; /* Size of local vertex load array */ - Gnum indvelolocsum; /* Sum of vertex loads */ - Gnum * indvnumloctax; /* TRICK: maybe alias of indvnumloctmp */ - Gnum indvlbllocnbr; /* Size of local vertex label array */ - Gnum indedgelocmax; /* (Approximate) number of edges in induced graph */ - Gnum indedgelocnbr; /* Real number of edges in induced graph */ - Gnum indedgelocnum; - Gnum * restrict indedloloctax; - Gnum inddegrlocmax; /* Local maximum degree */ - const Gnum * restrict indlisttax; - Gnum baseval; - int cheklocval; - int chekglbval; + Gnum * restrict orgindxgsttax; /* Based access to vertex translation array */ + Gnum indvertlocnnd; /* Based index of end of local vertex array */ + Gnum indvertlocnum; /* Number of current vertex in induced graph */ + Gnum indvelolocnbr; /* Size of local vertex load array */ + Gnum indvelolocsum; /* Sum of vertex loads */ + Gnum * indvnumloctax; /* TRICK: maybe alias of indvnumloctmp */ + Gnum indvlbllocnbr; /* Size of local vertex label array */ + Gnum indedgelocmax; /* (Approximate) number of edges in induced graph */ + Gnum indedgelocnbr; /* Real number of edges in induced graph */ + Gnum indedgelocnum; + Gnum * restrict indedloloctax; + Gnum inddegrlocmax; /* Local maximum degree */ + Gnum baseval; + int cheklocval; + int chekglbval; const Gnum * restrict const orgvertloctax = orggrafptr->vertloctax; const Gnum * restrict const orgvendloctax = orggrafptr->vendloctax; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/dgraph_io_load.h scotch-6.0.6/src/libscotch/dgraph_io_load.h --- scotch-6.0.4.dfsg1/src/libscotch/dgraph_io_load.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/dgraph_io_load.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007 ENSEIRB, INRIA & CNRS +/* Copyright 2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 5.0 : from : 12 may 2007 **/ /** to 13 may 2007 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -48,12 +50,8 @@ ** The function prototypes. */ -#ifndef DGRAPH_IO_LOAD -#define static -#endif - +#ifdef DGRAPH_IO_LOAD static int dgraphLoadCent (Dgraph * restrict const, FILE * const, Gnum, const GraphFlag, const int); static int dgraphLoadDist (Dgraph * restrict const, FILE * const, Gnum, const GraphFlag); static int dgraphLoadMulti (Dgraph * restrict const, FILE * const, Gnum, const GraphFlag); - -#undef static +#endif /* DGRAPH_IO_LOAD */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/dgraph_io_save.c scotch-6.0.6/src/libscotch/dgraph_io_save.c --- scotch-6.0.4.dfsg1/src/libscotch/dgraph_io_save.c 2013-09-19 06:52:00.000000000 +0000 +++ scotch-6.0.6/src/libscotch/dgraph_io_save.c 2018-07-14 15:24:49.000000000 +0000 @@ -31,7 +31,7 @@ */ /************************************************************/ /** **/ -/** NAME : dgraph_io.c **/ +/** NAME : dgraph_io_save.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Cedric CHEVALIER **/ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/dgraph_match_check.c scotch-6.0.6/src/libscotch/dgraph_match_check.c --- scotch-6.0.4.dfsg1/src/libscotch/dgraph_match_check.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/dgraph_match_check.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2008,2009 ENSEIRB, INRIA & CNRS +/* Copyright 2008,2009,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 5.1 : from : 25 dec 2008 **/ /** to : 08 apr 2009 **/ +/** # Version 6.0 : from : 15 may 2018 **/ +/** to : 15 may 2018 **/ /** **/ /************************************************************/ @@ -79,7 +81,6 @@ int procngbnum; Gnum multlocnbr; Gnum multlocnum; - Gnum vertglbnnd; Gnum vertlocnbr; Gnum vertlocnnd; Gnum vertlocnum; @@ -139,7 +140,6 @@ memSet (flaggsttax, ~0, grafptr->vertgstnbr * sizeof (Gnum)); flaggsttax -= baseval; - vertglbnnd = grafptr->vertglbnbr + baseval; vertlocnnd = grafptr->vertlocnnd; vertlocadj = grafptr->procvrttab[grafptr->proclocnum] - baseval; for (multlocnum = 0; multlocnum < multlocnbr; multlocnum ++) { diff -Nru scotch-6.0.4.dfsg1/src/libscotch/dgraph_redist.h scotch-6.0.6/src/libscotch/dgraph_redist.h --- scotch-6.0.4.dfsg1/src/libscotch/dgraph_redist.h 2012-09-11 15:02:15.000000000 +0000 +++ scotch-6.0.6/src/libscotch/dgraph_redist.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,7 +40,7 @@ /** routine. **/ /** **/ /** DATES : # Version 6.0 : from : 10 may 2010 **/ -/** to : 11 sep 2012 **/ +/** to : 07 jun 2018 **/ /** **/ /************************************************************/ @@ -48,12 +48,8 @@ ** The function prototypes. */ -#ifndef DGRAPH_REDIST -#define static -#endif - -int dgraphRedist (Dgraph * restrict const, const Gnum * restrict const, const Gnum * restrict const, const Gnum, const Gnum, Dgraph * restrict const); - +#ifdef DGRAPH_REDIST static int dgraphRedist2 (Dgraph * restrict const, const Gnum * restrict const, const Gnum * restrict const, const Gnum * const, const Gnum * const, const Gnum, const Gnum, Dgraph * restrict const); +#endif /* DGRAPH_REDIST */ -#undef static +int dgraphRedist (Dgraph * restrict const, const Gnum * restrict const, const Gnum * restrict const, const Gnum, const Gnum, Dgraph * restrict const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/dmapping.h scotch-6.0.6/src/libscotch/dmapping.h --- scotch-6.0.4.dfsg1/src/libscotch/dmapping.h 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/dmapping.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2008,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2008,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 5.1 : from : 31 mar 2008 **/ /** to 04 nov 2010 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -89,14 +91,8 @@ ** The function prototypes. */ -#ifndef DMAPPING -#define static -#endif - int dmapInit (Dmapping * restrict const, const Arch * restrict const); void dmapExit (Dmapping * const); void dmapAdd (Dmapping * restrict const, DmappingFrag * restrict const); int dmapSave (const Dmapping * restrict const, const Dgraph * restrict const, FILE * restrict const); int dmapTerm (const Dmapping * restrict const, const Dgraph * restrict const, Gnum * restrict const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/dorder.h scotch-6.0.6/src/libscotch/dorder.h --- scotch-6.0.4.dfsg1/src/libscotch/dorder.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/dorder.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2008,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to 14 oct 2007 **/ /** # Version 5.1 : from : 28 nov 2007 **/ /** to 04 nov 2010 **/ +/** # Version 6.0 : from : 08 may 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -61,7 +63,7 @@ #define DORDERCBLKNONE 0x0000 /*+ Not yet assigned +*/ #define DORDERCBLKNEDI 0x0001 /*+ Nested dissection separator node +*/ -#define DORDERCBLKLEAF 0x0002 /*+ Distributed leaf +*/ +#define DORDERCBLKLEAF 0x0004 /*+ Distributed leaf +*/ /* ** The type and structure definitions. @@ -158,10 +160,6 @@ ** The function prototypes. */ -#ifndef DORDER -#define static -#endif - int dorderInit (Dorder * const, const Gnum, const Gnum, MPI_Comm); void dorderExit (Dorder * const); void dorderFree (Dorder * const); @@ -187,5 +185,3 @@ DorderCblk * dorderNewSequ (DorderCblk * const); Gnum dorderNewSequIndex (DorderCblk * const, const Gnum); void dorderDispose (DorderCblk * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/dummysizes.c scotch-6.0.6/src/libscotch/dummysizes.c --- scotch-6.0.4.dfsg1/src/libscotch/dummysizes.c 2015-02-24 18:16:51.000000000 +0000 +++ scotch-6.0.6/src/libscotch/dummysizes.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007-2010,2012,2014 Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007-2010,2012,2014,2018 Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -52,7 +52,7 @@ /** # Version 5.1 : from : 16 jun 2008 **/ /** to : 15 aug 2010 **/ /** # Version 6.0 : from : 01 dec 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -64,7 +64,7 @@ #define CHARMAX 2048 /* Maximum line size */ -#define SUBSMAX 48 /* Maximum number of substitutions */ +#define SUBSMAX 256 /* Maximum number of substitutions */ #define C_FILENBR 2 /* Number of files in list */ #define C_FILEARGNBR 2 /* Number of files which can be arguments */ @@ -78,6 +78,14 @@ #define EXPAND(s) EXPANDTWO(s) #define EXPANDTWO(s) #s +#define subsFill(a,b) { \ + substab[subsnbr][0] = (a); \ + substab[subsnbr][1] = (b); \ + subsnbr ++; \ + } +#define subsSuffix(a) subsFill (a, subsSuffix2 (a, suffptr)) + +#include #include "module.h" #include "common.h" #include "parser.h" @@ -103,8 +111,8 @@ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ - { "r" }, - { "w" } }; + { FILEMODER }, + { FILEMODEW } }; /******************************/ /* */ @@ -112,19 +120,29 @@ /* */ /******************************/ -void -subsFill ( -char * substab[2], -char * origptr, +char * +subsSize ( int subsval) { char * subsptr; - subsptr = malloc (32 * sizeof (char)); + subsptr = malloc (16 * sizeof (char)); sprintf (subsptr, "%d", (int) ((subsval + sizeof (double) - 1) / sizeof (double))); - substab[0] = origptr; - substab[1] = subsptr; + return (subsptr); +} + +char * +subsSuffix2 ( +char * nameptr, +char * suffptr) +{ + char * subsptr; + + subsptr = malloc (128 * sizeof (char)); + sprintf (subsptr, "%s%s", nameptr, suffptr); + + return (subsptr); } /******************************/ @@ -138,9 +156,12 @@ int argc, char * argv[]) { + regex_t regedat; /* Regular expression for function names */ + regmatch_t matcdat; /* Matching structure */ char chartab[CHARMAX]; char chartmp[CHARMAX]; - char * substab[SUBSMAX][2]; /* Substitution array */ + char * substab[SUBSMAX][2]; /* Substitution array */ + char * suffptr; /* Pointer to suffix array */ int subsnbr; int i; @@ -149,8 +170,10 @@ return (((argv[1][0] == '?') && argv[1][1] == '\0') ? 0 : 1); } + suffptr = ""; /* No suffix */ + for (i = 0; i < C_FILENBR; i ++) /* Set default stream pointers */ - C_fileTab[i].fileptr = (C_fileTab[i].modeptr[0] == 'r') ? stdin : stdout; + C_fileTab[i].fileptr = ((C_fileTab[i].flagval & FILEMODE) == FILEMODER) ? stdin : stdout; for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '+') && /* If found a file name */ ((argv[i][0] != '-') || (argv[i][1] == '\0'))) { @@ -167,9 +190,13 @@ case 'h' : printf ("Usage is:\ndummysizes [ []]\n"); exit (0); + case 'S' : + case 's' : + suffptr = &argv[i][2]; + break; case 'V' : fprintf (stderr, "dummysizes, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007-2010 ENSEIRB, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2004,2007-2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -182,59 +209,92 @@ for (i = 0; i < C_FILENBR; i ++) { /* For all file names */ if ((C_fileTab[i].nameptr[0] != '-') || /* If not standard stream */ (C_fileTab[i].nameptr[1] != '\0')) { - if ((C_fileTab[i].fileptr = fopen (C_fileTab[i].nameptr, C_fileTab[i].modeptr)) == NULL) { /* Open the file */ + if ((C_fileTab[i].fileptr = fopen (C_fileTab[i].nameptr, ((C_fileTab[i].flagval & FILEMODE) == FILEMODER) ? "r" : "w")) == NULL) { /* Open the file */ fprintf (stderr, "dummysizes: ERROR: main: cannot open file (%d)", i); exit (1); } } } + subsnbr = 0; +#ifdef SCOTCH_PTSCOTCH + subsFill ("library_pt.h", "ptscotch.h "); + subsFill ("library_pt_f.h", "ptscotchf.h "); + subsSuffix ("PTSCOTCH_H"); +#else /* SCOTCH_PTSCOTCH */ + subsFill ("library.h", "scotch.h "); + subsFill ("library_f.h", "scotchf.h "); + subsSuffix ("SCOTCH_H"); +#endif /* SCOTCH_PTSCOTCH */ + subsFill ("DUMMYIDX", EXPAND (IDX)); + subsFill ("DUMMYINT", EXPAND (INT)); + subsFill ("DUMMYMAXINT", EXPAND (INTVALMAX)); + subsFill ("DUMMYNUMSTRING", "\"" GNUMSTRING "\""); + subsFill ("DUMMYVERSION", EXPAND (SCOTCH_VERSION_NUM)); + subsFill ("DUMMYRELEASE", EXPAND (SCOTCH_RELEASE_NUM)); + subsFill ("DUMMYPATCHLEVEL", EXPAND (SCOTCH_PATCHLEVEL_NUM)); + subsFill ("DUMMYSIZEARCH", subsSize (sizeof (Arch))); + subsFill ("DUMMYSIZEGEOM", subsSize (sizeof (Geom))); + subsFill ("DUMMYSIZEGRAPH", subsSize (sizeof (Graph))); + subsFill ("DUMMYSIZEMESH", subsSize (sizeof (Mesh))); + subsFill ("DUMMYSIZEMAP", subsSize (sizeof (LibMapping))); + subsFill ("DUMMYSIZEORDER", subsSize (sizeof (LibOrder))); + subsFill ("DUMMYSIZESTRAT", subsSize (sizeof (Strat *))); #ifdef SCOTCH_PTSCOTCH - substab[0][0] = "library_pt.h"; - substab[0][1] = "ptscotch.h "; - substab[1][0] = "library_pt_f.h"; - substab[1][1] = "ptscotchf.h "; + subsFill ("DUMMYSIZEDGRAPHHALOREQ", subsSize (sizeof (DgraphHaloRequest))); /* TRICK: before DUMMYSIZEDGRAPH */ + subsFill ("DUMMYSIZEDGRAPH", subsSize (sizeof (Dgraph))); + subsFill ("DUMMYSIZEDMAP", subsSize (sizeof (LibDmapping))); + subsFill ("DUMMYSIZEDORDER", subsSize (sizeof (Dorder))); #else /* SCOTCH_PTSCOTCH */ - substab[0][0] = "library.h"; - substab[0][1] = "scotch.h "; - substab[1][0] = "library_f.h"; - substab[1][1] = "scotchf.h "; + subsFill ("DUMMYSIZEDGRAPHHALOREQ", "1"); /* TRICK: before DUMMYSIZEDGRAPH */ + subsFill ("DUMMYSIZEDGRAPH", "1"); + subsFill ("DUMMYSIZEDMAP", "1"); + subsFill ("DUMMYSIZEDORDER", "1"); #endif /* SCOTCH_PTSCOTCH */ - substab[2][0] = "DUMMYIDX"; - substab[2][1] = EXPAND (IDX); - substab[3][0] = "DUMMYINT"; - substab[3][1] = EXPAND (INT); - substab[4][0] = "DUMMYMAXINT"; - substab[4][1] = EXPAND (INTVALMAX); - substab[5][0] = "DUMMYNUMSTRING"; - substab[5][1] = "\"" GNUMSTRING "\""; - substab[6][0] = "DUMMYVERSION"; - substab[6][1] = EXPAND (SCOTCH_VERSION); - substab[7][0] = "DUMMYRELEASE"; - substab[7][1] = EXPAND (SCOTCH_RELEASE); - substab[8][0] = "DUMMYPATCHLEVEL"; - substab[8][1] = EXPAND (SCOTCH_PATCHLEVEL); - subsnbr = 9; - subsFill (substab[subsnbr ++], "DUMMYSIZEARCH", sizeof (Arch)); - subsFill (substab[subsnbr ++], "DUMMYSIZEGEOM", sizeof (Geom)); - subsFill (substab[subsnbr ++], "DUMMYSIZEGRAPH", sizeof (Graph)); - subsFill (substab[subsnbr ++], "DUMMYSIZEMESH", sizeof (Mesh)); - subsFill (substab[subsnbr ++], "DUMMYSIZEMAP", sizeof (LibMapping)); - subsFill (substab[subsnbr ++], "DUMMYSIZEORDER", sizeof (LibOrder)); - subsFill (substab[subsnbr ++], "DUMMYSIZESTRAT", sizeof (Strat *)); + subsFill ("##SCOTCH_NAME_SUFFIX", suffptr); + if (suffptr[0] != '\0') { /* If suffix provided */ +#ifdef SCOTCH_RENAME_ALL + subsSuffix ("SCOTCH_VERSION"); + subsSuffix ("SCOTCH_RELEASE"); + subsSuffix ("SCOTCH_PATCHLEVEL"); + subsSuffix ("SCOTCH_COARSENNONE"); + subsSuffix ("SCOTCH_COARSENFOLD"); + subsSuffix ("SCOTCH_COARSENFOLDDUP"); + subsSuffix ("SCOTCH_COARSENNOMERGE"); + subsSuffix ("SCOTCH_STRATDEFAULT"); + subsSuffix ("SCOTCH_STRATQUALITY"); + subsSuffix ("SCOTCH_STRATSPEED"); + subsSuffix ("SCOTCH_STRATBALANCE"); + subsSuffix ("SCOTCH_STRATSAFETY"); + subsSuffix ("SCOTCH_STRATSCALABILITY"); + subsSuffix ("SCOTCH_STRATRECURSIVE"); + subsSuffix ("SCOTCH_STRATREMAP"); + subsSuffix ("SCOTCH_STRATLEVELMAX"); + subsSuffix ("SCOTCH_STRATLEVELMIN"); + subsSuffix ("SCOTCH_STRATLEAFSIMPLE"); + subsSuffix ("SCOTCH_STRATSEPASIMPLE"); +#endif /* SCOTCH_RENAME_ALL */ #ifdef SCOTCH_PTSCOTCH - subsFill (substab[subsnbr ++], "DUMMYSIZEDGRAPHHALOREQ", sizeof (DgraphHaloRequest)); /* TRICK: before DUMMYSIZEDGRAPH */ - subsFill (substab[subsnbr ++], "DUMMYSIZEDGRAPH", sizeof (Dgraph)); - subsFill (substab[subsnbr ++], "DUMMYSIZEDMAP", sizeof (LibDmapping)); - subsFill (substab[subsnbr ++], "DUMMYSIZEDORDER", sizeof (Dorder)); #else /* SCOTCH_PTSCOTCH */ - subsFill (substab[subsnbr ++], "DUMMYSIZEDGRAPHHALOREQ", 1); /* TRICK: before DUMMYSIZEDGRAPH */ - subsFill (substab[subsnbr ++], "DUMMYSIZEDGRAPH", 1); - subsFill (substab[subsnbr ++], "DUMMYSIZEDMAP", 1); - subsFill (substab[subsnbr ++], "DUMMYSIZEDORDER", 1); + subsSuffix ("SCOTCH_Idx"); + subsSuffix ("SCOTCH_Num"); + subsSuffix ("SCOTCH_NUMMAX"); + subsSuffix ("SCOTCH_NUMSTRING"); + subsSuffix ("SCOTCH_Arch"); + subsSuffix ("SCOTCH_Geom"); + subsSuffix ("SCOTCH_Graph"); + subsSuffix ("SCOTCH_Mesh"); + subsSuffix ("SCOTCH_Mapping"); + subsSuffix ("SCOTCH_Ordering"); + subsSuffix ("SCOTCH_Strat"); #endif /* SCOTCH_PTSCOTCH */ + if (regcomp (®edat, " SCOTCH_[a-z][0-9a-zA-Z_]*", 0) != 0) { + fprintf (stderr, "dummysizes: ERROR: cannot compile regular expression\n"); + exit (1); + } + } - while (fgets (chartab, CHARMAX, C_filepntrhedinp) != NULL) { /* Infinite loop on file lines */ + while (fgets (chartab, CHARMAX, C_filepntrhedinp) != NULL) { /* Loop on file lines */ int charnbr; int subsnum; @@ -247,22 +307,34 @@ for (subsnum = 0; subsnum < subsnbr; subsnum ++) { /* Perform substitutions */ char * charptr; /* Place where token found */ - while ((charptr = strstr (chartab, substab[subsnum][0])) != NULL) { /* As long as substitution can be performed */ - int charnbr; - int charnum; - - charnum = charptr - chartab; /* Position where token found */ - charnbr = strlen (substab[subsnum][0]); /* Length of token */ - - strcpy (chartmp, charptr + charnbr); /* Save end of line */ - - sprintf (charptr, "%s%s", substab[subsnum][1], chartmp); /* Replace end of line with substituted token */ + charptr = chartab; /* Start from beginning of string */ + while ((charptr = strstr (charptr, substab[subsnum][0])) != NULL) { /* As long as a matching found */ + int subslen; + + subslen = strlen (substab[subsnum][0]); + if (isalnum (charptr[subslen]) || (charptr[subslen] == '_')) { /* If next character is part of a longer identifier */ + charptr += subslen + 1; /* Skip substitution */ + continue; + } + + strcpy (chartmp, charptr + subslen); /* Save remaining of line */ + sprintf (charptr, "%s%s", substab[subsnum][1], chartmp); /* Replace remaining of line with substituted token */ + charptr += strlen (substab[subsnum][1]); /* Restart search from end of substituted token */ + } + } + if (suffptr[0] != '\0') { /* If suffix provided */ + if (regexec (®edat, chartab, 1, &matcdat, 0) == 0) { /* If matched a function name */ + strcpy (chartmp, chartab + matcdat.rm_eo); /* Save remaining of line */ + sprintf (chartab + matcdat.rm_eo, "%s%s", suffptr, chartmp); /* Add suffix to name */ } } fputs (chartab, C_filepntrhedout); /* Output possibly updated line */ } + if (suffptr[0] != '\0') /* If suffix provided */ + regfree (®edat); /* Free regular expression */ + #ifdef SCOTCH_DEBUG_MAIN1 for (i = 0; i < C_FILENBR; i ++) { /* For all file names */ if ((C_fileTab[i].name[0] != '-') || /* If not standard stream */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/fibo.c scotch-6.0.6/src/libscotch/fibo.c --- scotch-6.0.4.dfsg1/src/libscotch/fibo.c 2011-10-22 23:28:32.000000000 +0000 +++ scotch-6.0.6/src/libscotch/fibo.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2010,2011 ENSEIRB, INRIA & CNRS +/* Copyright 2010,2011,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -35,12 +35,21 @@ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ -/** FUNCTION : This module handles Fibonacci trees. **/ +/** FUNCTION : This module handles Fibonacci heaps. **/ /** **/ /** DATES : # Version 5.1 : from : 01 may 2010 **/ /** to 12 may 2010 **/ /** # Version 6.0 : from : 22 oct 2011 **/ -/** to 22 oct 2011 **/ +/** to 25 aug 2016 **/ +/** **/ +/** NOTES : # A very pedagogic explanation of **/ +/** Fibonacci heaps is available in **/ +/** Chapter 21 of : **/ +/** "Introduction to Algorithms" **/ +/** Thomas H. Cormen, Charles E. **/ +/** Leiserson, and Ronald L. Rivest **/ +/** http://staff.ustc.edu.cn/~csli/ **/ +/** graduate/algorithms/book6/chap21.htm **/ /** **/ /************************************************************/ @@ -56,26 +65,26 @@ /*********************************************/ /* */ -/* These routines deal with Fibonacci trees. */ +/* These routines deal with Fibonacci heaps. */ /* */ /*********************************************/ /* This routine initializes a Fibonacci -** tree structure. +** heap structure. ** It returns: ** - 0 : in case of success. ** - !0 : on error. */ int -fiboTreeInit ( -FiboTree * const treeptr, +fiboHeapInit ( +FiboHeap * const treeptr, int (* cmpfptr) (const FiboNode * const, const FiboNode * const)) { - if ((treeptr->degrtab = (FiboNode **) memAlloc ((sizeof (INT) << 3) * sizeof (FiboNode *))) == NULL) /* As many cells as there are bits in an INT */ + if ((treeptr->degrtab = (FiboNode **) memAlloc (FIBO_DEGRMAX * sizeof (FiboNode *))) == NULL) /* By default, as many cells as there are bits in an int type */ return (1); - memSet (treeptr->degrtab, 0, (sizeof (INT) << 3) * sizeof (FiboNode *)); /* Make degree array ready for consolidation: all cells set to NULL */ + memSet (treeptr->degrtab, 0, FIBO_DEGRMAX * sizeof (FiboNode *)); /* Make degree array ready for consolidation: all cells set to NULL */ treeptr->rootdat.linkdat.prevptr = /* Link root node to itself */ treeptr->rootdat.linkdat.nextptr = &treeptr->rootdat; @@ -85,28 +94,28 @@ } /* This routine flushes the contents of -** the given Fibonacci tree. +** the given Fibonacci heap. ** It returns: ** - VOID : in all cases. */ void -fiboTreeExit ( -FiboTree * const treeptr) +fiboHeapExit ( +FiboHeap * const treeptr) { if (treeptr->degrtab != NULL) memFree (treeptr->degrtab); } /* This routine flushes the contents of -** the given Fibonacci tree. +** the given Fibonacci heap. ** It returns: ** - VOID : in all cases. */ void -fiboTreeFree ( -FiboTree * const treeptr) +fiboHeapFree ( +FiboHeap * const treeptr) { treeptr->rootdat.linkdat.prevptr = /* Link root node to itself */ treeptr->rootdat.linkdat.nextptr = &treeptr->rootdat; @@ -118,12 +127,12 @@ ** recorded in the data structure itself. ** It returns: ** - !NULL : pointer to best element found. -** - NULL : Fibonacci tree is empty. +** - NULL : Fibonacci heap is empty. */ FiboNode * -fiboTreeConsolidate ( -FiboTree * const treeptr) +fiboHeapConsolidate ( +FiboHeap * const treeptr) { FiboNode ** restrict degrtab; int degrmax; @@ -138,8 +147,10 @@ rootptr != &treeptr->rootdat; ) { degrval = rootptr->deflval >> 1; /* Get degree, getting rid of flag part */ #ifdef SCOTCH_DEBUG_FIBO2 - if (degrval >= (sizeof (INT) << 3)) - errorPrint ("fiboTreeConsolidate: invalid node degree"); + if (degrval >= FIBO_DEGRMAX) { + errorPrint ("fiboHeapConsolidate: invalid node degree"); + return (NULL); + } #endif /* SCOTCH_DEBUG_FIBO2 */ if (degrtab[degrval] == NULL) { /* If no tree with same degree already found */ if (degrval > degrmax) /* Record highest degree found */ @@ -160,14 +171,14 @@ } degrtab[degrval] = NULL; /* Remaining root changes degree so leaves this cell */ - fiboTreeUnlink (oldrptr); /* Old root is no longer a root */ + fiboHeapUnlink (oldrptr); /* Old root is no longer a root */ oldrptr->deflval &= ~1; /* Whatever old root flag was, it is reset to 0 */ oldrptr->pareptr = rootptr; /* Remaining root is now father of old root */ chldptr = rootptr->chldptr; /* Get first child of remaining root */ if (chldptr != NULL) { /* If remaining root had already some children, link old root with them */ rootptr->deflval += 2; /* Increase degree by 1, that is, by 2 with left shift in deflval */ - fiboTreeLinkAfter (chldptr, oldrptr); + fiboHeapLinkAfter (chldptr, oldrptr); } else { /* Old root becomes first child of remaining root */ rootptr->deflval = 2; /* Real degree set to 1, and flag set to 0 */ @@ -195,78 +206,113 @@ } } +#ifdef SCOTCH_DEBUG_FIBO2 + for (degrval = 0; degrval < FIBO_DEGRMAX; degrval ++) { + if (degrtab[degrval] != NULL) { + errorPrint ("fiboHeapConsolidate: invalid node degree"); + return (NULL); + } + } +#endif /* SCOTCH_DEBUG_FIBO2 */ + return (bestptr); } /* This routine returns the node of minimum -** key in the given tree. The node is searched +** key in the given heap. The node is searched ** for each time this routine is called, so this ** information should be recorded if needed. ** This is the non-macro version, for testing ** and setting up breakpoints. ** It returns: ** - !NULL : pointer to best element found. -** - NULL : Fibonacci tree is empty. +** - NULL : Fibonacci heap is empty. */ -#ifndef fiboTreeMinIsMacro +#ifndef fiboHeapMinIsMacro FiboNode * -fiboTreeMin ( -FiboTree * const treeptr) +fiboHeapMin ( +FiboHeap * const treeptr) { FiboNode * bestptr; - bestptr = fiboTreeMinMacro (treeptr); + bestptr = fiboHeapMinMacro (treeptr); #ifdef SCOTCH_DEBUG_FIBO3 - fiboTreeCheck (treeptr); + fiboHeapCheck (treeptr); #endif /* SCOTCH_DEBUG_FIBO3 */ return (bestptr); } -#endif /* fiboTreeMinIsMacro */ +#endif /* fiboHeapMinIsMacro */ /* This routine adds the given node to the -** given tree. This is the non-macro version, +** given heap. This is the non-macro version, ** for testing and setting up breakpoints. ** It returns: ** - void : in all cases. */ -#ifndef fiboTreeAddIsMacro +#ifndef fiboHeapAddIsMacro void -fiboTreeAdd ( -FiboTree * const treeptr, +fiboHeapAdd ( +FiboHeap * const treeptr, FiboNode * const nodeptr) { - fiboTreeAddMacro (treeptr, nodeptr); + fiboHeapAddMacro (treeptr, nodeptr); #ifdef SCOTCH_DEBUG_FIBO3 - fiboTreeCheck (treeptr); + fiboHeapCheck (treeptr); #endif /* SCOTCH_DEBUG_FIBO3 */ } -#endif /* fiboTreeAddIsMacro */ +#endif /* fiboHeapAddIsMacro */ + +/* This routine reorders the heap according to +** the new, decreased key of the given node. +** If the key has increased instead, the behavior +** of the algorithm is undetermined. +** This is the non-macro version, for testing and +** setting up breakpoints. +** It returns: +** - void : in all cases. +*/ + +#ifndef fiboHeapDecreaseIsMacro + +void +fiboHeapDecrease ( +FiboHeap * const treeptr, +FiboNode * const nodeptr) +{ + fiboHeapDecreaseMacro (treeptr, nodeptr); + +#ifdef SCOTCH_DEBUG_FIBO3 + fiboHeapCheck (treeptr); +#endif /* SCOTCH_DEBUG_FIBO3 */ +} + +#endif /* fiboHeapDecreaseIsMacro */ /* This routine deletes the given node from -** the given tree, whatever ths node is (root +** the given heap, whatever this node is (root ** or non root). This is the non-macro version, ** for testing and setting up breakpoints. ** It returns: ** - void : in all cases. */ -#ifndef fiboTreeDelIsMacro +#ifndef fiboHeapDelIsMacro void -fiboTreeDel ( -FiboTree * const treeptr, +fiboHeapDel ( +FiboHeap * const treeptr, FiboNode * const nodeptr) { - fiboTreeDelMacro (treeptr, nodeptr); + fiboHeapDelMacro (treeptr, nodeptr); #ifdef SCOTCH_DEBUG_FIBO3 nodeptr->pareptr = @@ -274,24 +320,24 @@ nodeptr->linkdat.prevptr = nodeptr->linkdat.nextptr = NULL; - fiboTreeCheck (treeptr); + fiboHeapCheck (treeptr); #endif /* SCOTCH_DEBUG_FIBO3 */ } -#endif /* fiboTreeDelIsMacro */ +#endif /* fiboHeapDelIsMacro */ /* This routine checks the consistency of the -** given linked list. +** given fibonacci heap. ** It returns: -** - !NULL : pointer to the vertex. -** - NULL : if no such vertex available. +** - 0 : if heap data is consistent. +** - !0 : on error. */ #ifdef SCOTCH_DEBUG_FIBO3 static int -fiboTreeCheck2 ( +fiboHeapCheck2 ( const FiboNode * const nodeptr) { FiboNode * chldptr; @@ -302,16 +348,16 @@ if (chldptr != NULL) { do { if (chldptr->linkdat.nextptr->linkdat.prevptr != chldptr) { - errorPrint ("fiboTreeCheck: bad child linked list"); + errorPrint ("fiboHeapCheck: bad child linked list"); return (1); } if (chldptr->pareptr != nodeptr) { - errorPrint ("fiboTreeCheck: bad child parent"); + errorPrint ("fiboHeapCheck: bad child parent"); return (1); } - if (fiboTreeCheck2 (chldptr) != 0) + if (fiboHeapCheck2 (chldptr) != 0) return (1); degrval ++; @@ -320,7 +366,7 @@ } if (degrval != (nodeptr->deflval >> 1)) { /* Real node degree is obtained by discarding lowest bit */ - errorPrint ("fiboTreeCheck2: invalid child information"); + errorPrint ("fiboHeapCheck2: invalid child information"); return (1); } @@ -328,24 +374,24 @@ } int -fiboTreeCheck ( -const FiboTree * const treeptr) +fiboHeapCheck ( +const FiboHeap * const treeptr) { FiboNode * nodeptr; for (nodeptr = treeptr->rootdat.linkdat.nextptr; nodeptr != &treeptr->rootdat; nodeptr = nodeptr->linkdat.nextptr) { if (nodeptr->linkdat.nextptr->linkdat.prevptr != nodeptr) { - errorPrint ("fiboTreeCheck: bad root linked list"); + errorPrint ("fiboHeapCheck: bad root linked list"); return (1); } if (nodeptr->pareptr != NULL) { - errorPrint ("fiboTreeCheck: bad root parent"); + errorPrint ("fiboHeapCheck: bad root parent"); return (1); } - if (fiboTreeCheck2 (nodeptr) != 0) + if (fiboHeapCheck2 (nodeptr) != 0) return (1); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/fibo.h scotch-6.0.6/src/libscotch/fibo.h --- scotch-6.0.4.dfsg1/src/libscotch/fibo.h 2011-10-22 23:31:10.000000000 +0000 +++ scotch-6.0.6/src/libscotch/fibo.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2010,2011 ENSEIRB, INRIA & CNRS +/* Copyright 2010,2011,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,7 +41,7 @@ /** DATES : # Version 5.1 : from : 01 may 2010 **/ /** to 12 may 2010 **/ /** # Version 6.0 : from : 22 oct 2011 **/ -/** to 22 oct 2011 **/ +/** to 07 jun 2018 **/ /** **/ /** NOTES : # Since this module is to be used as **/ /** the gain keeping data structure for **/ @@ -58,6 +58,16 @@ /************************************************************/ /* +** The defines. +*/ + +/*+ Degree range. +*/ + +#ifndef FIBO_DEGRMAX +#define FIBO_DEGRMAX (sizeof (INT) << 3) /* Assume maximum degree derives from an integer range */ +#endif /* FIBO_DEGRMAX */ + +/* ** The type and structure definitions. */ @@ -88,18 +98,18 @@ This is important as many insertions have to be performed. */ -typedef struct FiboTree_ { +typedef struct FiboHeap_ { FiboNode rootdat; /*+ Dummy node for fast root insertion +*/ FiboNode ** restrict degrtab; /*+ Consolidation array of size "bitsizeof (INT)" +*/ int (* cmpfptr) (const FiboNode * const, const FiboNode * const); /*+ Comparison routine +*/ -} FiboTree; +} FiboHeap; /* ** The marco definitions. */ -#define fiboTreeLinkAfter(o,n) do { \ - FiboNode * nextptr; \ +#define fiboHeapLinkAfter(o,n) do { \ + FiboNode * nextptr; \ nextptr = (o)->linkdat.nextptr; \ (n)->linkdat.nextptr = nextptr; \ (n)->linkdat.prevptr = (o); \ @@ -107,48 +117,81 @@ (o)->linkdat.nextptr = (n); \ } while (0) -#define fiboTreeUnlink(n) do { \ +#define fiboHeapUnlink(n) do { \ (n)->linkdat.prevptr->linkdat.nextptr = (n)->linkdat.nextptr; \ (n)->linkdat.nextptr->linkdat.prevptr = (n)->linkdat.prevptr; \ } while (0) -#define fiboTreeAddMacro(t,n) do { \ +#define fiboHeapAddMacro(t,n) do { \ (n)->pareptr = NULL; \ (n)->chldptr = NULL; \ (n)->deflval = 0; \ - fiboTreeLinkAfter (&((t)->rootdat), (n)); \ + fiboHeapLinkAfter (&((t)->rootdat), (n)); \ } while (0) -#define fiboTreeMinMacro(t) (fiboTreeConsolidate (t)) +#define fiboHeapMinMacro(t) (fiboHeapConsolidate (t)) -#define fiboTreeCutChildren(t,n) do { \ - FiboNode * chldptr; \ +#define fiboHeapMoveToRoot(t,n,p) do { \ + FiboNode * rghtptr; \ + int deflval; \ + rghtptr = (n)->linkdat.nextptr; \ + fiboHeapUnlink (n); \ + (n)->pareptr = NULL; \ + (n)->deflval &= ~1; \ + deflval = (p)->deflval - 2; \ + (p)->deflval = deflval; \ + (p)->chldptr = (deflval <= 1) ? NULL : rghtptr; \ + fiboHeapLinkAfter (&((t)->rootdat), (n)); \ + } while (0) + +#define fiboHeapDecreaseMacro(t,n) do { \ + FiboNode * pareptr; \ + pareptr = (n)->pareptr; \ + if ((pareptr != NULL) && \ + (treeptr->cmpfptr (nodeptr, pareptr) < 0)) { \ + FiboNode * gdpaptr; \ + fiboHeapMoveToRoot (treeptr, nodeptr, pareptr); \ + gdpaptr = pareptr->pareptr; \ + while (gdpaptr != NULL) { \ + if ((pareptr->deflval & 1) == 0) { \ + pareptr->deflval |= 1; \ + break; \ + } \ + fiboHeapMoveToRoot (treeptr, pareptr, gdpaptr); \ + pareptr = gdpaptr; \ + gdpaptr = gdpaptr->pareptr; \ + } \ + } \ + } while (0) + +#define fiboHeapCutChildren(t,n) do { \ + FiboNode * chldptr; \ chldptr = (n)->chldptr; \ if (chldptr != NULL) { \ - FiboNode * cendptr; \ + FiboNode * cendptr; \ cendptr = chldptr; \ do { \ - FiboNode * nextptr; \ + FiboNode * nextptr; \ nextptr = chldptr->linkdat.nextptr; \ chldptr->pareptr = NULL; \ - fiboTreeLinkAfter (&((t)->rootdat), chldptr); \ + fiboHeapLinkAfter (&((t)->rootdat), chldptr); \ chldptr = nextptr; \ } while (chldptr != cendptr); \ } \ } while (0) -#define fiboTreeDelMacro(t,n) do { \ - FiboNode * pareptr; \ - FiboNode * rghtptr; \ +#define fiboHeapDelMacro(t,n) do { \ + FiboNode * pareptr; \ + FiboNode * rghtptr; \ pareptr = (n)->pareptr; \ - fiboTreeUnlink (n); \ - fiboTreeCutChildren ((t), (n)); \ + fiboHeapUnlink (n); \ + fiboHeapCutChildren ((t), (n)); \ if (pareptr == NULL) \ break; \ rghtptr = (n)->linkdat.nextptr; \ while (1) { \ - FiboNode * gdpaptr; \ - int deflval; \ + FiboNode * gdpaptr; \ + int deflval; \ deflval = pareptr->deflval - 2; \ pareptr->deflval = deflval | 1; \ gdpaptr = pareptr->pareptr; \ @@ -156,9 +199,9 @@ if (((deflval & 1) == 0) || (gdpaptr == NULL)) \ break; \ rghtptr = pareptr->linkdat.nextptr; \ - fiboTreeUnlink (pareptr); \ + fiboHeapUnlink (pareptr); \ pareptr->pareptr = NULL; \ - fiboTreeLinkAfter (&((t)->rootdat), pareptr); \ + fiboHeapLinkAfter (&((t)->rootdat), pareptr); \ pareptr = gdpaptr; \ } \ } while (0) @@ -167,31 +210,36 @@ ** The function prototypes. */ -#define fiboTreeAddIsMacro -#define fiboTreeAdd fiboTreeAddMacro -/* #define fiboTreeDel fiboTreeDelMacro */ -/* #define fiboTreeMin fiboTreeMinMacro */ - -#ifndef FIBO -#define static -#endif - -int fiboTreeInit (FiboTree * const, int (*) (const FiboNode * const, const FiboNode * const)); -void fiboTreeExit (FiboTree * const); -void fiboTreeFree (FiboTree * const); -FiboNode * fiboTreeConsolidate (FiboTree * const); -#ifndef fiboTreeAddIsMacro -void fiboTreeAdd (FiboTree * const, FiboNode * const); -#endif /* fiboTreeAddIsMacro */ -#ifndef fiboTreeDelIsMacro -void fiboTreeDel (FiboTree * const, FiboNode * const); -#endif /* fiboTreeDelIsMacro */ -#ifndef fiboTreeMinIsMacro -FiboNode * fiboTreeMin (FiboTree * const); -#endif /* fiboTreeMinIsMacro */ +#define fiboHeapAddIsMacro +#define fiboHeapMinIsMacro + +int fiboHeapInit (FiboHeap * const, int (*) (const FiboNode * const, const FiboNode * const)); +void fiboHeapExit (FiboHeap * const); +void fiboHeapFree (FiboHeap * const); +FiboNode * fiboHeapConsolidate (FiboHeap * const); +#ifndef fiboHeapAddIsMacro +void fiboHeapAdd (FiboHeap * const, FiboNode * const); +#else /* fiboHeapAddIsMacro */ +#define fiboHeapAdd fiboHeapAddMacro +#endif /* fiboHeapAddIsMacro */ +#ifndef fiboHeapDecreaseIsMacro +void fiboHeapDecrease (FiboHeap * const, FiboNode * const); +#else /* fiboHeapDecreaseIsMacro */ +#define fiboHeapDecrease fiboHeapDecreaseMacro +#endif /* fiboHeapDecreaseIsMacro */ +#ifndef fiboHeapDelIsMacro +void fiboHeapDel (FiboHeap * const, FiboNode * const); +#else /* fiboHeapDelIsMacro */ +#define fiboHeapDel fiboHeapDelMacro +#endif /* fiboHeapDelIsMacro */ +#ifndef fiboHeapMinIsMacro +FiboNode * fiboHeapMin (FiboHeap * const); +#else /* fiboHeapMinIsMacro */ +#define fiboHeapMin fiboHeapMinMacro +#endif /* fiboHeapMinIsMacro */ #ifdef SCOTCH_DEBUG_FIBO3 -int fiboTreeCheck (const FiboTree * const); -static int fiboTreeCheck2 (const FiboNode * const); +#ifdef FIBO +static int fiboHeapCheck2 (const FiboNode * const); +#endif /* FIBO */ +int fiboHeapCheck (const FiboHeap * const); #endif /* SCOTCH_DEBUG_FIBO3 */ - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/gain.h scotch-6.0.6/src/libscotch/gain.h --- scotch-6.0.4.dfsg1/src/libscotch/gain.h 2011-11-15 15:55:37.000000000 +0000 +++ scotch-6.0.6/src/libscotch/gain.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2008,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,6 +44,8 @@ /** to 18 mar 2005 **/ /** # Version 5.0 : from : 24 mar 2008 **/ /** to 01 jun 2008 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /** NOTES : # Most of the contents of this module **/ /** comes from "map_b_fm" of the SCOTCH **/ @@ -99,10 +101,6 @@ ** The function prototypes. */ -#ifndef GAIN -#define static -#endif - GainTabl * gainTablInit (const INT, const INT); void gainTablExit (GainTabl * const); void gainTablFree (GainTabl * const); @@ -112,12 +110,12 @@ GainLink * gainTablFrst (GainTabl * const); GainLink * gainTablNext (GainTabl * const, const GainLink * const); #ifdef SCOTCH_DEBUG_GAIN3 -int gainTablCheck (GainEntr * const); +#ifdef GAIN static int gainTablCheck2 (GainEntr * const, GainLink * const); +#endif /* GAIN */ +int gainTablCheck (GainEntr * const); #endif /* SCOTCH_DEBUG_GAIN3 */ -#undef static - /* ** The marco definitions. */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/geom.h scotch-6.0.6/src/libscotch/geom.h --- scotch-6.0.4.dfsg1/src/libscotch/geom.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/geom.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -47,6 +47,8 @@ /** to 18 jan 2004 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to 04 nov 2010 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -67,11 +69,5 @@ ** The function prototypes. */ -#ifndef GEOM -#define static -#endif - int geomInit (Geom * restrict const); void geomExit (Geom * restrict const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/graph_check.c scotch-6.0.6/src/libscotch/graph_check.c --- scotch-6.0.4.dfsg1/src/libscotch/graph_check.c 2012-02-14 00:17:07.000000000 +0000 +++ scotch-6.0.6/src/libscotch/graph_check.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2011,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2011,2012,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -57,7 +57,7 @@ /** # Version 5.0 : from : 13 dec 2006 **/ /** to 02 oct 2007 **/ /** # Version 6.0 : from : 27 jun 2011 **/ -/** to 14 feb 2012 **/ +/** to 23 feb 2018 **/ /** **/ /************************************************************/ @@ -88,42 +88,52 @@ graphCheck ( const Graph * const grafptr) { - Gnum vertnum; /* Number of current vertex */ - Gnum velosum; /* Sum of vertex loads */ - Gnum edlosum; /* Sum of edge loads */ - Gnum edgenbr; /* Number of edges (arcs) */ - Gnum edgenum; /* Number of current edge */ - Gnum degrmax; /* Maximum degree */ + Gnum vertnum; /* Number of current vertex */ + Gnum velosum; /* Sum of vertex loads */ + Gnum edlosum; /* Sum of edge loads */ + Gnum edgenbr; /* Number of edges (arcs) */ + Gnum edgenum; /* Number of current edge */ + Gnum degrmax; /* Maximum degree */ + + const Gnum baseval = grafptr->baseval; /* Fast accesses */ + const Gnum * restrict const verttax = grafptr->verttax; + const Gnum * restrict const vendtax = grafptr->vendtax; + const Gnum * restrict const velotax = grafptr->velotax; + const Gnum * restrict const edgetax = grafptr->edgetax; + const Gnum * restrict const edlotax = grafptr->edlotax; - if (grafptr->vertnbr != (grafptr->vertnnd - grafptr->baseval)) { + if (grafptr->vertnbr != (grafptr->vertnnd - baseval)) { errorPrint ("graphCheck: invalid vertex numbers"); return (1); } degrmax = edgenbr = 0; - velosum = (grafptr->velotax == NULL) ? grafptr->vertnbr : 0; - edlosum = (grafptr->edlotax == NULL) ? grafptr->edgenbr : 0; - for (vertnum = grafptr->baseval; vertnum < grafptr->vertnnd; vertnum ++) { - if ((grafptr->verttax[vertnum] < grafptr->baseval) || - (grafptr->vendtax[vertnum] < grafptr->verttax[vertnum])) { + velosum = (velotax == NULL) ? grafptr->vertnbr : 0; + edlosum = (edlotax == NULL) ? grafptr->edgenbr : 0; + for (vertnum = baseval; vertnum < grafptr->vertnnd; vertnum ++) { + Gnum degrval; + + if ((verttax[vertnum] < baseval) || + (vendtax[vertnum] < verttax[vertnum])) { errorPrint ("graphCheck: invalid vertex arrays"); return (1); } - if ((grafptr->vendtax[vertnum] - grafptr->verttax[vertnum]) > degrmax) - degrmax = grafptr->vendtax[vertnum] - grafptr->verttax[vertnum]; + degrval = vendtax[vertnum] - verttax[vertnum]; + if (degrval > degrmax) + degrmax = degrval; + edgenbr += degrval; - edgenbr += grafptr->vendtax[vertnum] - grafptr->verttax[vertnum]; - for (edgenum = grafptr->verttax[vertnum]; edgenum < grafptr->vendtax[vertnum]; edgenum ++) { + for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; /* Number of end vertex */ Gnum edgeend; /* Number of end vertex edge */ - vertend = grafptr->edgetax[edgenum]; - if (grafptr->edlotax != NULL) { + vertend = edgetax[edgenum]; + if (edlotax != NULL) { Gnum edlotmp; - edlotmp = edlosum + grafptr->edlotax[edgenum]; + edlotmp = edlosum + edlotax[edgenum]; if (edlotmp < edlosum) { /* If overflow */ errorPrint ("graphCheck: edge load sum overflow"); return (1); @@ -131,7 +141,7 @@ edlosum = edlotmp; } - if ((vertend < grafptr->baseval) || (vertend >= grafptr->vertnnd)) { /* If invalid edge end */ + if ((vertend < baseval) || (vertend >= grafptr->vertnnd)) { /* If invalid edge end */ errorPrint ("graphCheck: invalid edge array"); return (1); } @@ -139,30 +149,30 @@ errorPrint ("graphCheck: loops not allowed"); return (1); } - for (edgeend = grafptr->verttax[vertend]; /* Search for matching arc */ - (edgeend < grafptr->vendtax[vertend]) && (grafptr->edgetax[edgeend] != vertnum); + for (edgeend = verttax[vertend]; /* Search for matching arc */ + (edgeend < vendtax[vertend]) && (edgetax[edgeend] != vertnum); edgeend ++) ; - if ((edgeend >= grafptr->vendtax[vertend]) || - ((grafptr->edlotax != NULL) && (grafptr->edlotax[edgenum] != grafptr->edlotax[edgeend]))) { + if ((edgeend >= vendtax[vertend]) || + ((edlotax != NULL) && (edlotax[edgenum] != edlotax[edgeend]))) { errorPrint ("graphCheck: arc data do not match"); return (1); } for (edgeend ++; /* Search for duplicate arcs */ - (edgeend < grafptr->vendtax[vertend]) && (grafptr->edgetax[edgeend] != vertnum); + (edgeend < vendtax[vertend]) && (edgetax[edgeend] != vertnum); edgeend ++) ; - if (edgeend < grafptr->vendtax[vertend]) { + if (edgeend < vendtax[vertend]) { errorPrint ("graphCheck: duplicate arc"); return (1); } } - if (grafptr->velotax != NULL) { + if (velotax != NULL) { Gnum velotmp; - if (grafptr->velotax[vertnum] < 0) { /* If non positive loads */ + if (velotax[vertnum] < 0) { /* If non positive loads */ errorPrint ("graphCheck: invalid vertex load array"); return (1); } - velotmp = velosum + grafptr->velotax[vertnum]; + velotmp = velosum + velotax[vertnum]; if (velotmp < velosum) { /* If overflow */ errorPrint ("graphCheck: vertex load sum overflow"); return (1); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/graph_clone.c scotch-6.0.6/src/libscotch/graph_clone.c --- scotch-6.0.4.dfsg1/src/libscotch/graph_clone.c 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/libscotch/graph_clone.c 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,195 @@ +/* Copyright 2016 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : graph_clone.c **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : This module handles the source graph **/ +/** cloning function. **/ +/** **/ +/** DATES : # Version 6.0 : from : 22 feb 2016 **/ +/** to 22 feb 2018 **/ +/** **/ +/************************************************************/ + +/* +** The defines and includes. +*/ + +#define GRAPH +#define GRAPH_CLONE + +#include "module.h" +#include "common.h" +#include "graph.h" + +/****************************************/ +/* */ +/* These routines handle source graphs. */ +/* */ +/****************************************/ + +/* This routine builds a clone of the given +** graph. +** It returns: +** - 0 : on success. +** - !0 : on error. +*/ + +int +graphClone ( +const Graph * restrict const orggrafptr, +Graph * restrict const clngrafptr) +{ + Gnum * datatab; + Gnum baseval; + Gnum vertnbr; + Gnum vertnnd; + Gnum datasiz; + Gnum edgesiz; + + baseval = orggrafptr->baseval; + vertnbr = orggrafptr->vertnbr; + + datasiz = vertnbr; /* Account for verttab */ + datasiz += (orggrafptr->vendtax != (orggrafptr->verttax + 1)) ? vertnbr : 1; /* Account for vendtab or compact array */ + if (orggrafptr->velotax != NULL) + datasiz += vertnbr; /* Account for velotab */ + if (orggrafptr->vnumtax != NULL) + datasiz += vertnbr; /* Account for vnumtab */ + if (orggrafptr->vlbltax != NULL) + datasiz += vertnbr; /* Account for vlbltab */ + + if ((datatab = memAlloc (datasiz * sizeof (Gnum))) == NULL) { + errorPrint ("graphClone: out of memory (1)"); + return (1); + } + + clngrafptr->flagval = GRAPHFREETABS | GRAPHVERTGROUP | GRAPHEDGEGROUP; /* Cloned graph has its own arrays */ + clngrafptr->baseval = baseval; + clngrafptr->vertnbr = vertnbr; + clngrafptr->vertnnd = vertnnd = vertnbr + baseval; + + clngrafptr->verttax = datatab - baseval; /* Manage verttab */ + memCpy (datatab, orggrafptr->verttax + baseval, vertnbr * sizeof (Gnum)); + datatab += vertnbr; + + if (orggrafptr->vendtax == (orggrafptr->verttax + 1)) { /* If compact array */ + clngrafptr->vendtax = clngrafptr->verttax + 1; /* Set compact array */ + edgesiz = orggrafptr->verttax[vertnnd]; /* Get end of compact array */ + clngrafptr->verttax[vertnnd] = edgesiz; /* Copy end of compact array */ + datatab ++; /* Space for last index */ + } + else { + const Gnum * restrict orgvendptr; + Gnum * restrict clnvendptr; + Gnum vertnum; + + clngrafptr->vendtax = datatab - baseval; /* Set vendtab */ + clnvendptr = datatab; + orgvendptr = orggrafptr->vendtax + baseval; + for (vertnum = 0, edgesiz = 0; vertnum < vertnbr; vertnum ++) { + Gnum vendval; + + vendval = *orgvendptr ++; /* Copy vertex index */ + *clnvendptr ++ = vendval; + if (vendval > edgesiz) /* Record highest end index */ + edgesiz = vendval; + } + datatab = clnvendptr; /* Resume after end of cloned array */ + } + edgesiz -= baseval; /* Edge size is given by highest index */ + + if (orggrafptr->velotax != NULL) { /* Account for velotab */ + memCpy (datatab, orggrafptr->velotax + baseval, vertnbr * sizeof (Gnum)); + clngrafptr->velotax = datatab - baseval; + datatab += vertnbr; + } + else + clngrafptr->velotax = NULL; + + clngrafptr->velosum = orggrafptr->velosum; + + if (orggrafptr->vnumtax != NULL) { /* Account for vnumtab */ + memCpy (datatab, orggrafptr->vnumtax + baseval, vertnbr * sizeof (Gnum)); + clngrafptr->vnumtax = datatab - baseval; + datatab += vertnbr; + } + else + clngrafptr->vnumtax = NULL; + + if (orggrafptr->vlbltax != NULL) { /* Account for vlbltab */ + memCpy (datatab, orggrafptr->vlbltax + baseval, vertnbr * sizeof (Gnum)); + clngrafptr->vlbltax = datatab - baseval; + } + else + clngrafptr->vlbltax = NULL; + + datasiz = edgesiz; /* Account for edgetab */ + if (orggrafptr->edlotax != NULL) + datasiz += edgesiz; /* Account for edlotab */ + + if ((datatab = memAlloc (datasiz * sizeof (Gnum))) == NULL) { + errorPrint ("graphClone: out of memory (2)"); + memFree (clngrafptr->verttax + baseval); /* Free group leader */ + return (1); + } + + clngrafptr->edgenbr = orggrafptr->edgenbr; + + clngrafptr->edgetax = datatab - baseval; /* Manage edgetab */ + memCpy (datatab, orggrafptr->edgetax + baseval, edgesiz * sizeof (Gnum)); + + if (orggrafptr->edlotax != NULL) { /* Manage edlotab */ + datatab += edgesiz; + clngrafptr->edlotax = datatab - baseval; + memCpy (datatab, orggrafptr->edlotax + baseval, edgesiz * sizeof (Gnum)); + } + else + clngrafptr->edlotax = NULL; + + clngrafptr->edlosum = orggrafptr->edlosum; + clngrafptr->degrmax = orggrafptr->degrmax; + clngrafptr->procptr = orggrafptr->procptr; + +#ifdef SCOTCH_DEBUG_GRAPH2 + if (graphCheck (clngrafptr) != 0) { /* Check graph consistency */ + errorPrint ("graphClone: inconsistent graph data"); + graphExit (clngrafptr); + return (1); + } +#endif /* SCOTCH_DEBUG_GRAPH2 */ + + return (0); +} diff -Nru scotch-6.0.4.dfsg1/src/libscotch/graph_coarsen.c scotch-6.0.6/src/libscotch/graph_coarsen.c --- scotch-6.0.4.dfsg1/src/libscotch/graph_coarsen.c 2015-03-01 09:14:53.000000000 +0000 +++ scotch-6.0.6/src/libscotch/graph_coarsen.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2009,2011-2015 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2009,2011-2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -57,7 +57,7 @@ /** # Version 5.1 : from : 30 oct 2009 **/ /** to 30 oct 2009 **/ /** # Version 6.0 : from : 09 mar 2011 **/ -/** to 28 feb 2015 **/ +/** to 16 feb 2016 **/ /** **/ /************************************************************/ @@ -129,7 +129,7 @@ static int -graphCoarsen2 ( +graphCoarsen3 ( void * dataptr) { Gnum baseval; @@ -153,13 +153,20 @@ volatile Gnum * restrict const finecoartax = coarptr->finematetax; volatile Graph * restrict const coargrafptr = coarptr->coargrafptr; - graphMatch (thrdptr); /* Perform (threaded) matching */ + if ((coarptr->flagval & GRAPHCOARSENUSEMATE) == 0) { /* If matching data not provided */ + graphMatch (thrdptr); /* Perform (threaded) matching */ - coarvertnbr = coarptr->coarvertnbr; /* Get number of vertices actually created */ - if (coarvertnbr >= coarptr->coarvertmax) /* If matching failed or if coarsened graph too large */ - return (1); /* Do not proceed any further */ + coarvertnbr = coarptr->coarvertnbr; /* Get number of vertices actually created */ + if (coarvertnbr >= coarptr->coarvertmax) /* If matching failed or if coarsened graph too large */ + return (1); /* Do not proceed any further */ - coarmultsiz = (coarptr->coarmulttab == NULL) ? coarvertnbr : 0; /* Determine whether coarmulttab is iser-provided */ + if (coargrafptr == NULL) /* If only matching wanted */ + return (0); + } + else + coarvertnbr = coarptr->coarvertnbr; /* Get provided number of vertices */ + + coarmultsiz = ((coarptr->flagval & GRAPHCOARSENHASMULT) == 0) ? coarvertnbr : 0 ; /* If coarmulttab is not user-provided, allocate it among graph data */ baseval = finegrafptr->baseval; #ifdef GRAPHCOARSENTHREAD @@ -169,19 +176,19 @@ if (thrdnum == 0) /* Thread 0 populates the graph data structure */ #endif /* GRAPHCOARSENTHREAD */ { - memSet (coargrafptr, 0, sizeof (Graph)); /* Initialize coarse graph on thread 0 */ + memSet (coargrafptr, 0, sizeof (Graph)); /* Initialize coarse graph on thread 0 */ coargrafptr->flagval = GRAPHFREEVERT | GRAPHVERTGROUP | GRAPHEDGEGROUP; coargrafptr->baseval = baseval; coargrafptr->vertnbr = coarvertnbr; coargrafptr->vertnnd = coarvertnbr + baseval; - coargrafptr->velosum = finegrafptr->velosum; /* Keep load of finer graph */ + coargrafptr->velosum = finegrafptr->velosum; /* Keep load of finer graph */ if (memAllocGroup ((void **) (void *) &coargrafptr->verttax, (size_t) ((coarvertnbr + 1) * sizeof (Gnum)), &coargrafptr->velotax, (size_t) (coarvertnbr * sizeof (Gnum)), &coarmulttax, (size_t) (coarmultsiz * sizeof (GraphCoarsenMulti)), &coargrafptr->edgetax, (size_t) (finegrafptr->edgenbr * sizeof (Gnum)), /* Pre-allocate space for edge arrays */ &coargrafptr->edlotax, (size_t) (finegrafptr->edgenbr * sizeof (Gnum)), NULL) == NULL) { - errorPrint ("graphCoarsen2: out of memory (1)"); /* Allocate coarser graph structure */ + errorPrint ("graphCoarsen3: out of memory (1)"); /* Allocate coarser graph structure */ return (2); } if (coarmultsiz > 0) /* If array created internally, record its location */ @@ -225,8 +232,8 @@ } } - thrdptr->coarvertbas = DATASCAN (coargrafptr->vertnbr, thrdnbr, thrdnum) + baseval; /* Set bounds for coarse vertex processing */ - thrdptr->coarvertnnd = DATASIZE (coargrafptr->vertnbr, thrdnbr, thrdnum) + thrdptr->coarvertbas; + thrdptr->coarvertbas = DATASCAN (coarvertnbr, thrdnbr, thrdnum) + baseval; /* Set bounds for coarse vertex processing */ + thrdptr->coarvertnnd = DATASIZE (coarvertnbr, thrdnbr, thrdnum) + thrdptr->coarvertbas; threadBarrier (thrdptr); /* Ensure all of coarmulttax has been written */ @@ -259,7 +266,7 @@ coarhashnbr = coarptr->coarhashmsk + 1; if ((thrdptr->coarhashtab = memAlloc (coarhashnbr * sizeof (GraphCoarsenHash))) == NULL) { /* Allocate local thread memory */ - errorPrint ("graphCoarsen2: out of memory (2)"); + errorPrint ("graphCoarsen3: out of memory (2)"); return (2); } memSet (thrdptr->coarhashtab, ~0, coarhashnbr * sizeof (GraphCoarsenHash)); /* Initialize (local) hash table */ @@ -316,16 +323,16 @@ static int -graphCoarsen3 ( -GraphCoarsenData * restrict const coarptr, -GraphCoarsenMulti * restrict * const coarmultptr) /*+ Pointer to un-based multinode table to build +*/ +graphCoarsen2 ( +GraphCoarsenData * restrict const coarptr) { Gnum coarvertnbr; /* Number of coarse vertices */ Gnum coarvertnum; /* Number of current multinode vertex */ Gnum coarvfixnbr; /* Coarse number of fixed vertices */ + GraphCoarsenMulti * coarmultptr; GraphCoarsenMulti * restrict coarmulttax; /* Multinode array */ Gnum coarmultsiz; /* Size of embedded multinode array */ - Gnum * finecoartab; /* Fine vertex mating / indexing array */ + Gnum * finematetab; /* Pointer to locally allocated mate array */ Gnum finevertnum; /* Number of currently selected fine vertex */ Gnum coarhashmsk; /* Mask for access to hash table */ size_t coarmultoftval; @@ -349,25 +356,28 @@ thrdnbr = coarptr->thrddat.thrdnbr = SCOTCH_PTHREAD_NUMBER; /* Required by graphMatchInit */ #else /* GRAPHCOARSENTHREAD */ +#ifdef COMMON_PTHREAD coarptr->thrddat.thrdnbr = 1; +#endif /* COMMON_PTHREAD */ #endif /* GRAPHCOARSENTHREAD */ - if (coarptr->finematetax == NULL) { /* If no user-provided mating array */ - if (graphMatchInit (coarptr) != 0) /* Initialize global data needed for matching */ - return (1); - - if ((finecoartab = (Gnum *) memAlloc (finevertnbr * sizeof (Gnum))) == NULL) { - errorPrint ("graphCoarsen3: out of memory (1)"); /* Allocate coarse graph mating and indexing array */ + finematetab = NULL; /* Assume mating array provided */ + if (coarptr->finematetax == NULL) { /* If no user-provided mating array */ + if ((finematetab = (Gnum *) memAlloc (finevertnbr * sizeof (Gnum))) == NULL) { + errorPrint ("graphCoarsen2: out of memory (1)"); /* Allocate coarse graph mating and indexing array */ return (2); } - coarptr->finematetax = finecoartab - baseval; /* Set based access to finematetab / finecoartab */ + coarptr->finematetax = finematetab - baseval; } - else { + if ((coarptr->flagval & GRAPHCOARSENUSEMATE) != 0) /* If mating array provided */ graphMatchNone (coarptr); /* Initialize global data to avoid matching */ - finecoartab = NULL; /* No need to allocate local mating array */ + else { + if (graphMatchInit (coarptr) != 0) /* Initialize global data needed for matching */ + return (1); } - coarptr->coarmulttab = *coarmultptr; + if (coarptr->coarmulttab != NULL) /* Record that multinode array was provided */ + coarptr->flagval |= GRAPHCOARSENHASMULT; #ifdef GRAPHCOARSENTHREAD if (thrdnbr > 1) { @@ -376,9 +386,10 @@ Gnum finevertbas; if ((thrdtab = memAlloc (thrdnbr * sizeof (GraphCoarsenThread))) == NULL) { - errorPrint ("graphCoarsen3: out of memory (2)"); - memFree (finecoartab); - return (2); + errorPrint ("graphCoarsen2: out of memory (2)"); + if (finematetab != NULL) + memFree (finematetab); + return (2); } for (thrdnum = 0, finevertbas = baseval; @@ -389,7 +400,7 @@ thrdtab[thrdnum].coarvertnbr = 0; /* No coarse vertices yet */ } - o = threadLaunch (coarptr, thrdtab, sizeof (GraphCoarsenThread), (ThreadLaunchStartFunc) graphCoarsen2, (ThreadLaunchJoinFunc) NULL, + o = threadLaunch (coarptr, thrdtab, sizeof (GraphCoarsenThread), (ThreadLaunchStartFunc) graphCoarsen3, (ThreadLaunchJoinFunc) NULL, thrdnbr, THREADCANBARRIER | THREADCANREDUCE); memFree (thrdtab); /* Free group leader */ @@ -407,19 +418,22 @@ thrddat.finevertbas = baseval; thrddat.finevertnnd = baseval + finevertnbr; - o = graphCoarsen2 (&thrddat); + o = graphCoarsen3 (&thrddat); } - if (finecoartab != NULL) - memFree (finecoartab); + if ((coarptr->flagval & GRAPHCOARSENDSTMATE) == 0) /* If mating array destination not provided */ + memFree (finematetab); /* Do not keep mating data array */ if (o != 0) /* If coarsened graph is too small, abort here */ return (1); + if (coargrafptr == NULL) /* If coarse graph not wanted */ + return (0); + coargrafptr->edgenbr = coargrafptr->verttax[coargrafptr->vertnnd] - baseval; /* Set exact number of edges */ coarvertnbr = coargrafptr->vertnbr; - coarmultsiz = (*coarmultptr == NULL) ? coarvertnbr : 0; /* Tell whether we have to resize multloctab within coarse graph vertex group */ + coarmultsiz = ((coarptr->flagval & GRAPHCOARSENHASMULT) == 0) ? coarvertnbr : 0; /* Tell whether we have to resize multloctab within coarse graph vertex group */ coarvelooftval = coargrafptr->velotax - coargrafptr->verttax; coaredgeoftval = coargrafptr->edgetax - coargrafptr->verttax; coaredlooftval = coargrafptr->edlotax - coargrafptr->verttax; @@ -427,10 +441,10 @@ if (memReallocGroup ((void *) (coargrafptr->verttax + baseval), /* Re-allocate data, wiping temporary arrays */ &coargrafptr->verttax, (size_t) ((coarvertnbr + 1) * sizeof (Gnum)), &coargrafptr->velotax, (size_t) (coarvertnbr * sizeof (Gnum)), - &coarptr->coarmulttab, (size_t) (coarmultsiz * sizeof (GraphCoarsenMulti)), + &coarmultptr, (size_t) (coarmultsiz * sizeof (GraphCoarsenMulti)), &coargrafptr->edgetax, (size_t) (finegrafptr->edgenbr * sizeof (Gnum)), &coargrafptr->edlotax, (size_t) (coargrafptr->edgenbr * sizeof (Gnum)), NULL) == NULL) { - errorPrint ("graphCoarsen3: cannot reallocate memory"); /* Allocate coarser graph structure */ + errorPrint ("graphCoarsen2: cannot reallocate memory"); /* Allocate coarser graph structure */ return (2); } coargrafptr->verttax -= baseval; @@ -438,14 +452,14 @@ coargrafptr->velotax = coargrafptr->verttax + coarvelooftval; coargrafptr->edgetax = coargrafptr->verttax + coaredgeoftval; coargrafptr->edlotax = coargrafptr->verttax + coaredlooftval; - if (coarmultsiz > 0) /* If multinode array not user-provided */ - *coarmultptr = ((GraphCoarsenMulti *) (coargrafptr->verttax + coarmultoftval)); /* Return pointer to un-based multinode array */ + if ((coarptr->flagval & GRAPHCOARSENHASMULT) == 0) /* If multinode array not user-provided */ + coarptr->coarmulttab = ((GraphCoarsenMulti *) (coargrafptr->verttax + coarmultoftval)); /* Update pointer to un-based multinode array */ if (coarptr->coarvfixptr != NULL) *coarptr->coarvfixptr = coarvfixnbr = coarptr->finevfixnbr; /* TODO: compute real number ! */ #ifdef SCOTCH_DEBUG_GRAPH2 if (graphCheck (coargrafptr) != 0) { /* Check graph consistency */ - errorPrint ("graphCoarsen3: inconsistent graph data"); + errorPrint ("graphCoarsen2: inconsistent graph data"); graphFree (coargrafptr); return (2); } @@ -466,17 +480,20 @@ int graphCoarsen ( -const Graph * restrict const finegrafptr, /*+ Graph to coarsen +*/ -Graph * restrict const coargrafptr, /*+ Coarse graph to build +*/ -GraphCoarsenMulti * restrict * const coarmultptr, /*+ Pointer to un-based multinode table to build +*/ -const Gnum coarvertnbr, /*+ Minimum number of coarse vertices +*/ -const double coarval, /*+ Maximum contraction ratio +*/ -const Anum * restrict const fineparotax, -const Anum * restrict const finepfixtax, -const Gnum finevfixnbr, -Gnum * restrict const coarvfixptr) +const Graph * restrict const finegrafptr, /*+ Graph to coarsen +*/ +Graph * restrict const coargrafptr, /*+ Coarse graph to build +*/ +Gnum * restrict * restrict const finecoarptr, /*+ Pointer to un-based fine-to-coarse array to build +*/ +GraphCoarsenMulti * restrict * restrict const coarmultptr, /*+ Pointer to un-based multinode table to build +*/ +const Gnum coarvertnbr, /*+ Minimum number of coarse vertices +*/ +const double coarval, /*+ Maximum contraction ratio +*/ +const Gnum flagval, +const Anum * restrict const fineparotax, +const Anum * restrict const finepfixtax, +const Gnum finevfixnbr, +Gnum * restrict const coarvfixptr) { - GraphCoarsenData coardat; /* Graph coarsening global data */ + GraphCoarsenData coardat; /* Graph coarsening global data */ + int o; #ifdef SCOTCH_DEBUG_GRAPH1 if (coarval < 0.5L) /* If impossible coarsening ratio wanted */ @@ -487,15 +504,31 @@ if (coardat.coarvertmax < coarvertnbr) /* If there will be too few vertices in graph */ return (1); /* It is useless to go any further */ + if (finecoarptr != NULL) { /* If fine-to-coarse destination provided */ + coardat.flagval = flagval | GRAPHCOARSENDSTMATE; /* Array will be provided and/or kept */ + coardat.finematetax = (*finecoarptr == NULL) ? NULL : (*finecoarptr - finegrafptr->baseval); + } + else { + coardat.flagval = flagval; /* No mating array nor array data provided */ + coardat.finematetax = NULL; /* No user-provided mating array */ + } coardat.finegrafptr = finegrafptr; /* Fill caller part of matching data structure */ coardat.fineparotax = fineparotax; coardat.finepfixtax = finepfixtax; coardat.finevfixnbr = finevfixnbr; - coardat.finematetax = NULL; /* No user-provided mating array */ coardat.coargrafptr = coargrafptr; coardat.coarvfixptr = coarvfixptr; + coardat.coarmulttab = *coarmultptr; - return (graphCoarsen3 (&coardat, coarmultptr)); + o = graphCoarsen2 (&coardat); + if (o != 0) + return (o); + + *coarmultptr = coardat.coarmulttab; /* Give back location of multinode array */ + if (finecoarptr != NULL) /* If fine-to-coarse destination provided */ + *finecoarptr = coardat.finematetax + finegrafptr->baseval; /* Give back location of fine-to-coarse array */ + + return (0); } /* This routine coarsens the given "finegraph" into @@ -509,15 +542,69 @@ */ int +graphCoarsenMatch ( +const Graph * restrict const finegrafptr, /*+ Graph to coarsen +*/ +Gnum * restrict * restrict const finemateptr, /*+ Pointer to un-based mating array to build +*/ +Gnum * restrict const coarvertptr, /*+ Minimum number of coarse vertices +*/ +const double coarval, /*+ Maximum contraction ratio +*/ +const Gnum flagval, /*+ Flag value +*/ +const Anum * restrict const fineparotax, +const Anum * restrict const finepfixtax, +const Gnum finevfixnbr, +Gnum * restrict const coarvfixptr) +{ + GraphCoarsenData coardat; /* Graph coarsening global data */ + int o; + +#ifdef SCOTCH_DEBUG_GRAPH1 + if (coarval < 0.5L) /* If impossible coarsening ratio wanted */ + return (1); /* We will never succeed */ +#endif /* SCOTCH_DEBUG_GRAPH1 */ + + coardat.coarvertmax = (Gnum) ((double) (finegrafptr->vertnbr - finevfixnbr) * coarval) + finevfixnbr; /* Maximum number of coarse vertices */ + if (coardat.coarvertmax < *coarvertptr) /* If there will be too few vertices in graph */ + return (1); /* It is useless to go any further */ + + coardat.flagval = GRAPHCOARSENDSTMATE | (flagval & GRAPHCOARSENNOMERGE); /* Array will be provided and/or kept */ + coardat.finematetax = (*finemateptr == NULL) ? NULL : (*finemateptr - finegrafptr->baseval); + coardat.finegrafptr = finegrafptr; /* Fill caller part of matching data structure */ + coardat.fineparotax = fineparotax; + coardat.finepfixtax = finepfixtax; + coardat.finevfixnbr = finevfixnbr; + coardat.coargrafptr = NULL; + coardat.coarvfixptr = coarvfixptr; + coardat.coarmulttab = NULL; + + o = graphCoarsen2 (&coardat); + if (o != 0) + return (o); + + *coarvertptr = coardat.coarvertnbr; + *finemateptr = coardat.finematetax + finegrafptr->baseval; /* Give back location of fine-to-coarse array */ + + return (0); +} + +/* This routine builds a coarse graph from the fine +** graph topology and a user-provided mating array. +** It returns: +** - 0 : if the graph has been coarsened. +** - 1 : if the graph could not be coarsened. +** - 2 : on error. +*/ + +int graphCoarsenBuild ( -const Graph * restrict const finegrafptr, /*+ Graph to coarsen +*/ -Graph * restrict const coargrafptr, /*+ Coarse graph to build +*/ -GraphCoarsenMulti * restrict * const coarmultptr, /*+ Pointer to un-based multinode table to build +*/ -const Gnum coarvertnbr, /*+ User-provided number of coarse vertices +*/ -Gnum * restrict const finematetab) /*+ Pointer to un-based user-provided mating array +*/ +const Graph * restrict const finegrafptr, /*+ Graph to coarsen +*/ +Graph * restrict const coargrafptr, /*+ Coarse graph to build +*/ +Gnum * restrict const finematetab, /*+ Pointer to un-based user-provided mating array +*/ +GraphCoarsenMulti * restrict * restrict const coarmultptr, /*+ Pointer to un-based multinode table to build +*/ +const Gnum coarvertnbr) /*+ User-provided number of coarse vertices +*/ { - GraphCoarsenData coardat; /* Graph coarsening global data */ + GraphCoarsenData coardat; /* Graph coarsening global data */ + int o; + coardat.flagval = GRAPHCOARSENDSTMATE | GRAPHCOARSENUSEMATE; /* Mating array data provided */ coardat.finegrafptr = finegrafptr; /* Fill caller part of matching data structure */ coardat.fineparotax = NULL; /* TODO: arrays not handled yet */ coardat.finepfixtax = NULL; @@ -527,8 +614,15 @@ coardat.coarvertmax = finegrafptr->vertnbr + 1; /* Value that always succeeds */ coardat.coarvertnbr = coarvertnbr; /* Set number of coarse vertices */ coardat.coarvfixptr = NULL; /* TODO: arrays not handled yet */ + coardat.coarmulttab = *coarmultptr; - return (graphCoarsen3 (&coardat, coarmultptr)); + o = graphCoarsen2 (&coardat); + if (o != 0) + return (o); + + *coarmultptr = coardat.coarmulttab; /* Give back location of multinode array */ + + return (0); } /****************************************/ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/graph_coarsen_edge.c scotch-6.0.6/src/libscotch/graph_coarsen_edge.c --- scotch-6.0.4.dfsg1/src/libscotch/graph_coarsen_edge.c 2015-03-01 09:15:10.000000000 +0000 +++ scotch-6.0.6/src/libscotch/graph_coarsen_edge.c 2018-07-14 15:24:49.000000000 +0000 @@ -80,7 +80,6 @@ const Gnum coarhashmsk = coarptr->coarhashmsk; const GraphCoarsenMulti * restrict const coarmulttax = coarptr->coarmulttab - finegrafptr->baseval; - GRAPHCOARSENEDGEINIT; coaredloadj = 0; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/graph_coarsen.h scotch-6.0.6/src/libscotch/graph_coarsen.h --- scotch-6.0.4.dfsg1/src/libscotch/graph_coarsen.h 2015-03-01 09:14:02.000000000 +0000 +++ scotch-6.0.6/src/libscotch/graph_coarsen.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2011-2013,2015 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2011-2013,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -55,7 +55,7 @@ /** # Version 4.0 : from : 13 dec 2001 **/ /** to 05 dec 2004 **/ /** # Version 6.0 : from : 09 mar 2011 **/ -/** to 27 feb 2015 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -67,9 +67,21 @@ #define GRAPHCOARSENTHREAD #endif /* SCOTCH_PTHREAD */ -/** Prime number for hashing vertex numbers. **/ +/*+ Graph option flags. Their values must be equal + to those defined in library.h and library_f.h +*/ -#define GRAPHCOARSENHASHPRIME 1049 /* Prime number */ +#define GRAPHCOARSENNONE 0x0000 /* No options set */ + +#define GRAPHCOARSENDSTMATE 0x0001 /* Matching/fine-to-coarse array destination provided */ +#define GRAPHCOARSENDSTMULT 0x0002 /* Multinode array destination provided */ +#define GRAPHCOARSENHASMULT 0x0004 /* Multinode array provided */ +#define GRAPHCOARSENUSEMATE 0x0008 /* Matching array data provided */ + +#define GRAPHCOARSENNOMERGE 0x4000 /* Do not merge isolated vertices */ + +/*+ Prime number for hashing vertex numbers. +*/ + +#define GRAPHCOARSENHASHPRIME 1049 /*+ Prime number +*/ /* ** The type and structure definitions. @@ -91,7 +103,7 @@ vertices are set with respect to the base value of the fine graph. +*/ -typedef struct GraphCoarsenMulti_ { +typedef struct GraphCoarsenMulti_ { Gnum vertnum[2]; /*+ Numbers of the collapsed vertices of a multinode +*/ } GraphCoarsenMulti; @@ -111,6 +123,7 @@ typedef struct GraphCoarsenData_ { ThreadGroupHeader thrddat; /*+ Thread handling data +*/ + int flagval; /*+ Flags for controlling matching and coarsening +*/ const Graph * finegrafptr; /*+ Fine graph to perform matching on +*/ const Anum * fineparotax; /*+ Old part array +*/ const Anum * finepfixtax; /*+ Array of fixed vertices +*/ @@ -121,6 +134,7 @@ Gnum coarvertnbr; /*+ Global number of coarse vertices after matching +*/ Gnum * coarvfixptr; /*+ Pointer to number of coarse fixed vertices +*/ GraphCoarsenMulti * coarmulttab; /*+ Multinode array +*/ + Gnum coarmultsiz; /*+ Size of multinode array allocated in graph +*/ Gnum coarhashmsk; /*+ Hash table mask +*/ #ifdef SCOTCH_PTHREAD int * restrict finelocktax; /*+ Matching lock array (if any) +*/ @@ -153,17 +167,14 @@ ** The function prototypes. */ -#ifndef GRAPH_COARSEN -#define static -#endif - -int graphCoarsen (const Graph * restrict const, Graph * restrict const, GraphCoarsenMulti * restrict * const, const Gnum, const double, const Anum * restrict const, const Anum * restrict const, const Gnum, Gnum * restrict const); -int graphCoarsenBuild (const Graph * restrict const, Graph * restrict const, GraphCoarsenMulti * restrict * const, const Gnum, Gnum * restrict const); - +#ifdef GRAPH_COARSEN #ifdef GRAPHCOARSENTHREAD static void graphCoarsenEdgeCt (GraphCoarsenThread *); #endif /* GRAPHCOARSENTHREAD */ static void graphCoarsenEdgeLl (GraphCoarsenThread *); static void graphCoarsenEdgeLu (GraphCoarsenThread *); +#endif /* GRAPH_COARSEN */ -#undef static +int graphCoarsen (const Graph * restrict const, Graph * restrict const, Gnum * restrict * restrict const, GraphCoarsenMulti * restrict * restrict const, const Gnum, const double, const Gnum, const Anum * restrict const, const Anum * restrict const, const Gnum, Gnum * restrict const); +int graphCoarsenMatch (const Graph * restrict const, Gnum * restrict * restrict const, Gnum * restrict const, const double, const Gnum, const Anum * restrict const, const Anum * restrict const, const Gnum, Gnum * restrict const); +int graphCoarsenBuild (const Graph * restrict const, Graph * restrict const, Gnum * restrict const, GraphCoarsenMulti * restrict * restrict const, const Gnum); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/graph_diam.c scotch-6.0.6/src/libscotch/graph_diam.c --- scotch-6.0.4.dfsg1/src/libscotch/graph_diam.c 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/libscotch/graph_diam.c 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,192 @@ +/* Copyright 2017,2018 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : graph_diam.c **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : This module contains the graph **/ +/** (weighted) pseudo-diameter computation **/ +/** routines. **/ +/** **/ +/** DATES : # Version 6.0 : from : 17 jan 2017 **/ +/** to 22 feb 2018 **/ +/** **/ +/************************************************************/ + +/* +** The defines and includes. +*/ + +#define GRAPH + +#include "module.h" +#include "common.h" +#include "graph.h" +#include "fibo.h" +#include "graph_diam.h" + +/***************************************/ +/* */ +/* This routine handles source graphs. */ +/* */ +/***************************************/ + +/* Comparison routine for the Fibonacci +** heap structure. +*/ + +static +int +graphDiamCmpFunc ( +const FiboNode * nod0ptr, +const FiboNode * nod1ptr) +{ + Gnum dis0val; + Gnum dis1val; + + dis0val = ((GraphDiamVertex *) nod0ptr)->distval; + dis1val = ((GraphDiamVertex *) nod1ptr)->distval; + if (dis0val < dis1val) + return (-1); + return (1); +} + +/* This routine computes the vertex-traversal, +** edge-weighted pseudo-diameter of the given +** graph. It is equal to GNUMMAX if the graph +** is not connected. +** It returns: +** - >= 0 : weighted pseudo-diameter. +** - -1 : on error. +*/ + +Gnum +graphDiamPV ( +const Graph * const grafptr) +{ + FiboHeap fibodat; + GraphDiamVertex * restrict vexxtax; /* Extended vertex array */ + Gnum vertnum; + Gnum rootnum; + Gnum diammax; + Gnum diambst; + + const Gnum * restrict const verttax = grafptr->verttax; + const Gnum * restrict const vendtax = grafptr->vendtax; + const Gnum * restrict const velotax = grafptr->velotax; + const Gnum * restrict const edgetax = grafptr->edgetax; + const Gnum * restrict const edlotax = grafptr->edlotax; + + if ((vexxtax = (GraphDiamVertex *) memAlloc (grafptr->vertnbr * sizeof (GraphDiamVertex))) == NULL) { + errorPrint ("graphWdiam: out of memory"); + return (-1); + } + if (fiboHeapInit (&fibodat, graphDiamCmpFunc) != 0) { + errorPrint ("graphWdiam: cannot initialize Fibonacci heap"); + memFree (vexxtax); + return (-1); + } + vexxtax -= grafptr->baseval; + + rootnum = intRandVal (grafptr->vertnbr) + grafptr->baseval; + diammax = 0; /* Ensure at least one pass */ + + do { + GraphDiamVertex * vexxptr; + Gnum vertnbr; + + diambst = diammax; /* Record as starting values for this pass */ + + fiboHeapFree (&fibodat); /* Reset tree */ + for (vertnum = grafptr->baseval; vertnum < grafptr->vertnnd; vertnum ++) /* Reset work array */ + vexxtax[vertnum].distval = GNUMMAX; + + vexxptr = vexxtax + rootnum; + vexxptr->distval = 0; + fiboHeapAdd (&fibodat, (FiboNode *) vexxptr); + + vertnbr = 0; + while ((vexxptr = (GraphDiamVertex *) fiboHeapMin (&fibodat)) != NULL) { /* As long as there's a vertex to extract */ + Gnum vertnum; + Gnum distval; + Gnum edgenum; + + vertnbr ++; /* One more vertex processed */ + fiboHeapDel (&fibodat, (FiboNode *) vexxptr); /* Remove it from heap */ + distval = vexxptr->distval; /* Keep current distance value */ + vexxptr->distval = -1; /* Flag vertex as already processed */ + + vertnum = vexxptr - vexxtax; + if (diammax < distval) { + diammax = distval; + rootnum = vertnum; + } + if (velotax != NULL) /* Add node weight as it is being traversed */ + distval += velotax[vertnum]; + + for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { + GraphDiamVertex * vexxpnd; + Gnum vertend; + Gnum disttmp; + Gnum distold; + + vertend = edgetax[edgenum]; + vexxpnd = vexxtax + vertend; + disttmp = distval + ((edlotax != NULL) ? edlotax[edgenum] : 1); + distold = vexxpnd->distval; + + if (disttmp < distold) { /* Never the case for already processed vertices */ + vexxpnd->distval = disttmp; + if (distold == GNUMMAX) /* If newly touched node */ + fiboHeapAdd (&fibodat, (FiboNode *) vexxpnd); /* Add it to the heap */ + else + fiboHeapDecrease (&fibodat, (FiboNode *) vexxpnd); /* Else decrease its value in the heap */ + } + } + } + + if (vertnbr != grafptr->vertnbr) { /* If graph is not connected */ + diambst = GNUMMAX; + goto abort; + } + } while (diambst < diammax); + + diambst = diammax; + +abort: + fiboHeapExit (&fibodat); + memFree (vexxtax + grafptr->baseval); + + return (diambst); +} diff -Nru scotch-6.0.4.dfsg1/src/libscotch/graph_diam.h scotch-6.0.6/src/libscotch/graph_diam.h --- scotch-6.0.4.dfsg1/src/libscotch/graph_diam.h 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/libscotch/graph_diam.h 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,56 @@ +/* Copyright 2017 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : graph_diam.h **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : These lines are the data declarations **/ +/** for the source graph (pseudo)diameter **/ +/** computation functions. **/ +/** **/ +/** DATES : # Version 6.0 : from : 17 jan 2017 **/ +/** to 17 jan 2017 **/ +/** **/ +/************************************************************/ + +/* +** The type and structure definitions. +*/ + +/*+ Auxiliary vertex structure. +*/ + +typedef struct GraphDiamVertex_ { + FiboNode fibodat; /*+ Fibonacci heap node structure +*/ + Gnum distval; /*+ Current distance value +*/ +} GraphDiamVertex; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/graph.h scotch-6.0.6/src/libscotch/graph.h --- scotch-6.0.4.dfsg1/src/libscotch/graph.h 2014-08-09 10:14:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/graph.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014-2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -62,7 +62,7 @@ /** # Version 5.1 : from : 11 aug 2010 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 03 mar 2011 **/ -/** to 09 aug 2014 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -74,30 +74,31 @@ /*+ Graph option flags. +*/ -#define GRAPHNONE 0x0000 /* No options set */ +#define GRAPHNONE 0x0000 /*+ No options set +*/ -#define GRAPHFREEEDGE 0x0001 /* Free edgetab array */ -#define GRAPHFREEVERT 0x0002 /* Free verttab array */ -#define GRAPHFREEVNUM 0x0004 /* Free vnumtab array */ -#define GRAPHFREEOTHR 0x0008 /* Free all other arrays */ -#define GRAPHFREETABS 0x000F /* Free all graph arrays */ -#define GRAPHVERTGROUP 0x0010 /* All vertex arrays grouped */ -#define GRAPHEDGEGROUP 0x0020 /* All edge arrays grouped */ +#define GRAPHFREEEDGE 0x0001 /*+ Free edgetab array +*/ +#define GRAPHFREEVERT 0x0002 /*+ Free verttab array +*/ +#define GRAPHFREEVNUM 0x0004 /*+ Free vnumtab array +*/ +#define GRAPHFREEOTHR 0x0008 /*+ Free all other arrays +*/ +#define GRAPHFREETABS 0x000F /*+ Free all graph arrays +*/ +#define GRAPHVERTGROUP 0x0010 /*+ All vertex arrays grouped +*/ +#define GRAPHEDGEGROUP 0x0020 /*+ All edge arrays grouped +*/ -#define GRAPHBITSUSED 0x003F /* Significant bits for plain graph routines */ -#define GRAPHBITSNOTUSED 0x0040 /* Value above which bits not used by plain graph routines */ +#define GRAPHBITSUSED 0x003F /*+ Significant bits for plain graph routines +*/ +#define GRAPHBITSNOTUSED 0x0040 /*+ Value above which bits not used by plain graph routines +*/ -#define GRAPHIONOLOADVERT 1 /* Remove vertex loads on loading */ -#define GRAPHIONOLOADEDGE 2 /* Remove edge loads on loading */ +#define GRAPHIONOLOADVERT 1 /*+ Remove vertex loads on loading +*/ +#define GRAPHIONOLOADEDGE 2 /*+ Remove edge loads on loading +*/ /* ** The type and structure definitions. */ #ifndef GNUMMAX /* If dgraph.h not included */ -typedef INT Gnum; /* Vertex and edge numbers */ -typedef UINT Gunum; /* Unsigned type of same width */ -#define GNUMMAX (INTVALMAX) /* Maximum signed Gnum value */ +typedef INT Gnum; /* Vertex and edge numbers */ +typedef UINT Gunum; /* Unsigned type of same width */ +#define GNUMMAX INTVALMAX /* Maximum signed Gnum value */ +#define GNUMMIN (-GNUMMAX - 1) /* Minimum signed Gnum value */ #define GNUMSTRING INTSTRING /* String to printf a Gnum */ #endif /* GNUMMAX */ @@ -155,10 +156,6 @@ ** The function prototypes. */ -#ifndef GRAPH -#define static -#endif - int listInit (VertList *); void listExit (VertList *); int listAlloc (VertList *, Gnum); @@ -174,8 +171,11 @@ Gnum graphBase (Graph * const, const Gnum); int graphBand (const Graph * restrict const, const Gnum, Gnum * restrict const, const Gnum, Gnum * restrict * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, const Gnum * restrict const, Gnum * restrict const); int graphCheck (const Graph *); -int graphInduceList (const Graph * const, const VertList * const, Graph * const); -int graphInducePart (const Graph * const, const GraphPart *, const Gnum, const GraphPart, Graph * const); +int graphClone (const Graph *, Graph *); +Gnum graphDiamPV (const Graph * const); +Gnum graphIelo (const Graph * const, Gnum * const, Gnum * const); +int graphInduceList (const Graph * restrict const, const Gnum, const Gnum * restrict const, Graph * restrict const); +int graphInducePart (const Graph * restrict const, const GraphPart * restrict const, const Gnum, const GraphPart, Graph * restrict const); int graphLoad (Graph * const, FILE * const, const Gnum, const GraphFlag); int graphLoad2 (const Gnum, const Gnum, const Gnum * const, const Gnum * const, Gnum * restrict const, const Gnum, const Gnum * const); int graphSave (const Graph * const, FILE * const); @@ -189,5 +189,3 @@ int graphGeomLoadScot (Graph * restrict const, Geom * restrict const, FILE * const, FILE * const, const char * const); int graphGeomSaveScot (const Graph * restrict const, const Geom * restrict const, FILE * const, FILE * const, const char * const); #endif /* GEOM_H */ - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/graph_ielo.c scotch-6.0.6/src/libscotch/graph_ielo.c --- scotch-6.0.4.dfsg1/src/libscotch/graph_ielo.c 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/libscotch/graph_ielo.c 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,140 @@ +/* Copyright 2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : graph_ielo.c **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : This module handles the source graph **/ +/** functions. **/ +/** **/ +/** DATES : # Version 6.0 : from : 28 dec 2016 **/ +/** to 31 may 2018 **/ +/** **/ +/** NOTES : # This code derives from that of **/ +/** arch_build.c. **/ +/** **/ +/************************************************************/ + +/* +** The defines and includes. +*/ + +#define GRAPH + +#include "module.h" +#include "common.h" +#include "graph.h" + +/****************************************/ +/* */ +/* These routines handle source graphs. */ +/* */ +/****************************************/ + +/* This routine computes the inverse of the edge load +** array of the given graph structure. The original +** edge load array and the inverse edge load array +** might be the same. +** It returns: +** - Gnum : new edlosum of the inverse weight load structure. +** - -1 : on error. +*/ + +Gnum +graphIelo ( +const Graph * const grafptr, +Gnum * const edlotax, /* Pointer to edge load array [norestrict] */ +Gnum * const ielotax) /* Pointer to inverse edge load array to fill [norestrict] */ +{ + Gnum vertnum; + Gnum edlomin; + Gnum edlomax; + Gnum edlosum; + float prodval; + + const Gnum vertnnd = grafptr->vertnnd; + const Gnum * restrict const verttax = grafptr->verttax; + const Gnum * restrict const vendtax = grafptr->vendtax; + + edlomin = GNUMMAX; + edlomax = 0; + for (vertnum = grafptr->baseval; vertnum < vertnnd; vertnum ++) { /* Handle non-compact graphs as well as compact graphs */ + Gnum edgenum; + Gnum edgennd; + + for (edgenum = verttax[vertnum], edgennd = vendtax[vertnum]; + edgenum < edgennd; edgenum ++) { + Gnum edloval; + + edloval = edlotax[edgenum]; + if (edloval < edlomin) + edlomin = edloval; + if (edloval > edlomax) + edlomax = edloval; + } + } + + if (edlomin < 1) /* Zero-weight edges cannot be inverted */ + edlomin = 1; + prodval = (float) edlomin * (float) edlomax; + + edlosum = 0; + for (vertnum = grafptr->baseval; vertnum < vertnnd; vertnum ++) { + Gnum edgenum; + Gnum edgennd; + + for (edgenum = verttax[vertnum], edgennd = vendtax[vertnum]; + edgenum < edgennd; edgenum ++) { + Gnum edloval; + + edloval = edlotax[edgenum]; + if (edloval <= edlomin) /* "<=" for zero-weight edges */ + edloval = edlomax; + else if (edloval == edlomax) + edloval = edlomin; + else + edloval = (Gnum) (prodval / (float) edloval + 0.49F); +#ifdef SCOTCH_DEBUG_ARCH2 + if ((edloval < edlomin) || (edloval > edlomax)) { + errorPrint ("graphIelo: internal error"); + return (-1); + } +#endif /* SCOTCH_DEBUG_ARCH2 */ + edlosum += /* Accumulate edge load sum */ + ielotax[edgenum] = edloval; /* Write inversed cost in work array */ + } + } + + return (edlosum); +} diff -Nru scotch-6.0.4.dfsg1/src/libscotch/graph_induce.c scotch-6.0.6/src/libscotch/graph_induce.c --- scotch-6.0.4.dfsg1/src/libscotch/graph_induce.c 2015-03-01 09:14:02.000000000 +0000 +++ scotch-6.0.6/src/libscotch/graph_induce.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007-2009,2011,2013-2015 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007-2009,2011,2013-2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -58,7 +58,7 @@ /** # Version 5.1 : from : 01 jan 2009 **/ /** to 01 jan 2009 **/ /** # Version 6.0 : from : 29 mar 2011 **/ -/** to 28 feb 2015 **/ +/** to 05 apr 2018 **/ /** **/ /** NOTES : # Several algorithms, such as the **/ /** active graph building routine of **/ @@ -102,71 +102,32 @@ int graphInduceList ( const Graph * restrict const orggrafptr, -const VertList * restrict const indlistptr, +const Gnum indvnumnbr, +const Gnum * restrict const indvnumtab, Graph * restrict const indgrafptr) { Gnum * restrict orgindxtax; /* Based access to vertex translation array */ - Gnum indvertnbr; /* Number of vertices in induced graph */ Gnum indvertnnd; Gnum indvertnum; /* Number of current vertex in induced graph */ const Gnum * restrict indvnumtax; - Gnum * restrict indedgetab; /* Pointer to pre-allocated edge array */ Gnum indedgenbr; /* (Approximate) number of edges in induced graph */ const Gnum * restrict const orgverttax = orggrafptr->verttax; const Gnum * restrict const orgvendtax = orggrafptr->vendtax; - indvertnbr = indlistptr->vnumnbr; - - memSet (indgrafptr, 0, sizeof (Graph)); /* Initialize graph fields */ - indgrafptr->flagval = GRAPHFREETABS | GRAPHVERTGROUP | GRAPHEDGEGROUP; - indgrafptr->baseval = orggrafptr->baseval; - - if (orggrafptr->velotax != NULL) { - if (memAllocGroup ((void **) (void *) - &indgrafptr->verttax, (size_t) ((indvertnbr + 1) * sizeof (Gnum)), - &indgrafptr->vnumtax, (size_t) ( indvertnbr * sizeof (Gnum)), - &indgrafptr->velotax, (size_t) ( indvertnbr * sizeof (Gnum)), NULL) == NULL) { - errorPrint ("graphInduceList: out of memory (1)"); - return (1); /* Nothing to free because group allocation failed */ - } - indgrafptr->velotax -= indgrafptr->baseval; - } - else { - if (memAllocGroup ((void **) (void *) - &indgrafptr->verttax, (size_t) ((indvertnbr + 1) * sizeof (Gnum)), - &indgrafptr->vnumtax, (size_t) ( indvertnbr * sizeof (Gnum)), NULL) == NULL) { - errorPrint ("graphInduceList: out of memory (2)"); - return (1); - } - } - indgrafptr->verttax -= indgrafptr->baseval; /* Adjust base of arrays */ - indgrafptr->vnumtax -= indgrafptr->baseval; - indgrafptr->vertnbr = indvertnbr; - indgrafptr->vertnnd = indvertnbr + indgrafptr->baseval; - - indedgenbr = orggrafptr->edgenbr; /* Choose best upper bound on number of edges (avoid multiply overflow) */ - if ((orggrafptr->degrmax > 0) && (indvertnbr < (indedgenbr / orggrafptr->degrmax))) - indedgenbr = indvertnbr * orggrafptr->degrmax; - if (orggrafptr->edlotax != NULL) /* If graph has edge weights */ - indedgenbr *= 2; /* Account for edge weights */ - - if (memAllocGroup ((void *) - &indedgetab, (size_t) (indedgenbr * sizeof (Gnum)), /* Pre-allocate space for edgetab (and edlotab) */ - &orgindxtax, (size_t) (orggrafptr->vertnbr * sizeof (Gnum)), NULL) == NULL) { /* orgindxtab is at the end of the heap */ - errorPrint ("graphInduceList: out of memory (3)"); - graphExit (indgrafptr); + if (graphInduce2 (orggrafptr, indgrafptr, indvnumnbr) != 0) { + errorPrint ("graphInduceList: cannot create induced graph"); return (1); } - orgindxtax -= orggrafptr->baseval; memCpy (indgrafptr->vnumtax + indgrafptr->baseval, /* Copy vertex number array from list */ - indlistptr->vnumtab, indvertnbr * sizeof (Gnum)); + indvnumtab, indvnumnbr * sizeof (Gnum)); + indvnumtax = indgrafptr->vnumtax; + orgindxtax = indgrafptr->edlotax; memSet (orgindxtax + orggrafptr->baseval, ~0, orggrafptr->vertnbr * sizeof (Gnum)); /* Preset index array */ - indvnumtax = indgrafptr->vnumtax; - for (indvertnum = indgrafptr->baseval, indvertnnd = indvertnum + indvertnbr, indedgenbr = 0; /* Fill index array */ + for (indvertnum = indgrafptr->baseval, indvertnnd = indvertnum + indvnumnbr, indedgenbr = 0; /* Fill index array */ indvertnum < indvertnnd; indvertnum ++) { Gnum orgvertnum; @@ -176,7 +137,7 @@ indedgenbr += orgvendtax[orgvertnum] - orgverttax[orgvertnum]; } - return (graphInduce2 (orggrafptr, indgrafptr, indvertnbr, indedgenbr, indedgetab, orgindxtax)); + return (graphInduce3 (orggrafptr, indgrafptr, indvnumnbr, indedgenbr)); } /* This routine builds the graph induced @@ -195,46 +156,92 @@ graphInducePart ( const Graph * restrict const orggrafptr, /* Pointer to original graph */ const GraphPart * const orgparttax, /* Based array of vertex partition flags */ -const Gnum indvertnbr, /* Number of vertices in selected part */ +const Gnum indvnumnbr, /* Number of vertices in selected part */ const GraphPart indpartval, /* Partition value of vertices to keep */ Graph * restrict const indgrafptr) /* Pointer to induced subgraph */ { Gnum * restrict orgindxtax; /* Based access to vertex translation array */ + Gnum orgvertnum; Gnum indvertnum; /* Number of current vertex in induced graph */ Gnum * restrict indvnumtax; - Gnum * restrict indedgetab; /* Pointer to pre-allocated edge array */ Gnum indedgenbr; /* (Approximate) number of edges in induced graph */ - Gnum orgvertnum; const Gnum * restrict const orgverttax = orggrafptr->verttax; const Gnum * restrict const orgvendtax = orggrafptr->vendtax; + if (graphInduce2 (orggrafptr, indgrafptr, indvnumnbr) != 0) { + errorPrint ("graphInducePart: cannot create induced graph"); + return (1); + } + + orgindxtax = indgrafptr->edlotax; + indvnumtax = indgrafptr->vnumtax; + for (orgvertnum = indvertnum = orggrafptr->baseval, indedgenbr = 0; /* Fill index array */ + orgvertnum < orggrafptr->vertnnd; orgvertnum ++) { + if (orgparttax[orgvertnum] == indpartval) { /* If vertex should be kept */ + orgindxtax[orgvertnum] = indvertnum; /* Mark selected vertex */ + indvnumtax[indvertnum] = orgvertnum; + indedgenbr += orgvendtax[orgvertnum] - orgverttax[orgvertnum]; + indvertnum ++; /* One more induced vertex created */ + } + else + orgindxtax[orgvertnum] = ~0; + } +#ifdef SCOTCH_DEBUG_GRAPH2 + if ((indvertnum - indgrafptr->baseval) != indvnumnbr) { + errorPrint ("graphInducePart: inconsistent data"); + graphExit (indgrafptr); + return (1); + } +#endif /* SCOTCH_DEBUG_GRAPH2 */ + + return (graphInduce3 (orggrafptr, indgrafptr, indvnumnbr, indedgenbr)); +} + +/* This routine initializes the induced +** graph structure. +** It returns: +** - 0 : on success. +** - !0 : on error. +*/ + +static +int +graphInduce2 ( +const Graph * restrict const orggrafptr, /* Pointer to original graph */ +Graph * restrict const indgrafptr, /* Pointer to induced graph */ +const Gnum indvertnbr) /* Number of vertices in induced graph */ +{ + Gnum indedgenbr; /* (Approximate) number of edges in induced graph */ + + const Gnum baseval = orggrafptr->baseval; /* Fast accesses */ + memSet (indgrafptr, 0, sizeof (Graph)); /* Initialize graph fields */ indgrafptr->flagval = GRAPHFREETABS | GRAPHVERTGROUP | GRAPHEDGEGROUP; - indgrafptr->baseval = orggrafptr->baseval; + indgrafptr->baseval = baseval; if (orggrafptr->velotax != NULL) { if (memAllocGroup ((void **) (void *) &indgrafptr->verttax, (size_t) ((indvertnbr + 1) * sizeof (Gnum)), &indgrafptr->vnumtax, (size_t) ( indvertnbr * sizeof (Gnum)), &indgrafptr->velotax, (size_t) ( indvertnbr * sizeof (Gnum)), NULL) == NULL) { - errorPrint ("graphInducePart: out of memory (1)"); + errorPrint ("graphInduce2: out of memory (1)"); return (1); /* Nothing to free because group allocation failed */ } - indgrafptr->velotax -= indgrafptr->baseval; + indgrafptr->velotax -= baseval; } else { if (memAllocGroup ((void **) (void *) &indgrafptr->verttax, (size_t) ((indvertnbr + 1) * sizeof (Gnum)), &indgrafptr->vnumtax, (size_t) ( indvertnbr * sizeof (Gnum)), NULL) == NULL) { - errorPrint ("graphInducePart: out of memory (2)"); + errorPrint ("graphInduce2: out of memory (2)"); return (1); } } - indgrafptr->verttax -= indgrafptr->baseval; /* Adjust base of arrays */ - indgrafptr->vnumtax -= indgrafptr->baseval; + indgrafptr->verttax -= baseval; /* Adjust base of arrays */ + indgrafptr->vnumtax -= baseval; indgrafptr->vertnbr = indvertnbr; - indgrafptr->vertnnd = indvertnbr + indgrafptr->baseval; + indgrafptr->vertnnd = indvertnbr + baseval; indedgenbr = orggrafptr->edgenbr; /* Choose best upper bound on number of edges (avoid multiply overflow) */ if ((orggrafptr->degrmax > 0) && (indvertnbr < (indedgenbr / orggrafptr->degrmax))) @@ -243,36 +250,16 @@ indedgenbr *= 2; /* Account for edge weights */ if (memAllocGroup ((void *) - &indedgetab, (size_t) (indedgenbr * sizeof (Gnum)), /* Pre-allocate space for edgetab (and edlotab) */ - &orgindxtax, (size_t) (orggrafptr->vertnbr * sizeof (Gnum)), NULL) == NULL) { /* orgindxtab is at the end of the heap */ - errorPrint ("graphInducePart: out of memory (3)"); + &indgrafptr->edgetax, (size_t) (indedgenbr * sizeof (Gnum)), /* Pre-allocate space for edgetab (and edlotab) */ + &indgrafptr->edlotax, (size_t) (orggrafptr->vertnbr * sizeof (Gnum)), NULL) == NULL) { /* orgindxtab is at the end of the heap */ + errorPrint ("graphInduce2: out of memory (3)"); graphExit (indgrafptr); return (1); } - orgindxtax -= orggrafptr->baseval; + indgrafptr->edgetax -= baseval; /* TRICK: base edge array in case of premature freeing */ + indgrafptr->edlotax -= baseval; /* TRICK: use edlotax as return slot for orgindxtax */ - indvnumtax = indgrafptr->vnumtax; - for (orgvertnum = indvertnum = orggrafptr->baseval, indedgenbr = 0; /* Fill index array */ - orgvertnum < orggrafptr->vertnnd; orgvertnum ++) { - if (orgparttax[orgvertnum] == indpartval) { /* If vertex should be kept */ - orgindxtax[orgvertnum] = indvertnum; /* Mark selected vertex */ - indvnumtax[indvertnum] = orgvertnum; - indedgenbr += orgvendtax[orgvertnum] - orgverttax[orgvertnum]; - indvertnum ++; /* One more induced vertex created */ - } - else - orgindxtax[orgvertnum] = ~0; - } -#ifdef SCOTCH_DEBUG_GRAPH2 - if ((indvertnum - indgrafptr->baseval) != indvertnbr) { - errorPrint ("graphInducePart: inconsistent data"); - memFree (indedgetab); - graphExit (indgrafptr); - return (1); - } -#endif /* SCOTCH_DEBUG_GRAPH2 */ - - return (graphInduce2 (orggrafptr, indgrafptr, indvertnbr, indedgenbr, indedgetab, orgindxtax)); + return (0); } /* This routine finalizes the building @@ -284,20 +271,20 @@ static int -graphInduce2 ( +graphInduce3 ( const Graph * restrict const orggrafptr, /* Pointer to original graph */ Graph * restrict const indgrafptr, /* Pointer to induced graph */ const Gnum indvertnbr, /* Number of vertices in induced graph */ -const Gnum indedgenbr, /* (Upper bound of) number of edges in induced graph */ -Gnum * const indedgetab, /* Pointer to pre-allocated edge and edge load arrays */ -const Gnum * restrict const orgindxtax) /* Array of numbers of selected vertices */ +const Gnum indedgenbr) /* (Upper bound of) number of edges in induced graph */ { - Gnum indvertnum; /* Current induced vertex number */ - Gnum indvelosum; /* Overall induced vertex load */ - Gnum indedlosum; /* Overall induced edge load */ - Gnum indedgenum; /* Number of current induced edge */ - Gnum orgvertnum; /* Number of current vertex in original graph */ - Gnum orgedgenum; /* Number of current edge in original graph */ + Gnum orgvertnum; + Gnum orgedgenum; + Gnum indvertnum; + Gnum indvelosum; /* Overall induced vertex load */ + Gnum indedlosum; /* Overall induced edge load */ + Gnum indedgenum; /* Number of current induced edge */ + Gnum * restrict indedgetax; + Gnum * restrict indedlotax; const Gnum * restrict const orgverttax = orggrafptr->verttax; const Gnum * restrict const orgvendtax = orggrafptr->vendtax; @@ -305,21 +292,18 @@ const Gnum * restrict const orgvnumtax = orggrafptr->vnumtax; const Gnum * restrict const orgedgetax = orggrafptr->edgetax; const Gnum * restrict const orgedlotax = orggrafptr->edlotax; + const Gnum * restrict const orgindxtax = indgrafptr->edlotax; /* TRICK: get orgindxtax from edlotax */ Gnum * restrict const indverttax = indgrafptr->verttax; Gnum * restrict const indvelotax = indgrafptr->velotax; Gnum * restrict const indvnumtax = indgrafptr->vnumtax; - Gnum * restrict indedgetax; - Gnum * restrict indedlotax; if (orgedlotax != NULL) { - memOffset ((void *) indedgetab, + memOffset ((void *) indgrafptr->edgetax, /* TRICK: compute based offsets from based array */ &indedgetax, (size_t) (indedgenbr * sizeof (Gnum)), &indedlotax, (size_t) (indedgenbr * sizeof (Gnum)), NULL); - indedgetax -= indgrafptr->baseval; - indedlotax -= indgrafptr->baseval; } else { - indedgetax = indedgetab - indgrafptr->baseval; + indedgetax = indgrafptr->edgetax; indedlotax = NULL; } @@ -338,7 +322,7 @@ for (orgedgenum = orgverttax[orgvertnum]; orgedgenum < orgvendtax[orgvertnum]; orgedgenum ++) { if (orgindxtax[orgedgetax[orgedgenum]] != ~0) { /* If edge should be kept */ - indedlosum += + indedlosum += indedlotax[indedgenum] = orgedlotax[orgedgenum]; indedgetax[indedgenum] = orgindxtax[orgedgetax[orgedgenum]]; indedgenum ++; @@ -363,7 +347,7 @@ indgrafptr->velosum = indvelosum; indgrafptr->edgenbr = indedgenum - indgrafptr->baseval; /* Set actual number of edges */ indgrafptr->edlosum = (indedlotax != NULL) ? indedlosum : indgrafptr->edgenbr; - indgrafptr->degrmax = orggrafptr->degrmax; /* Induced maximum degree is likely to be the one of the original graph */ + indgrafptr->degrmax = orggrafptr->degrmax; /* Induced maximum degree is likely to be that of the original graph */ if (orggrafptr->vnumtax != NULL) { /* Adjust vnumtax */ for (indvertnum = indgrafptr->baseval; indvertnum < indgrafptr->vertnnd; indvertnum ++) @@ -374,15 +358,19 @@ size_t indedlooftval; /* Offset of edge load array with respect to edge array */ indedlooftval = indedlotax - indedgetax; - indgrafptr->edgetax = (Gnum *) memRealloc (indedgetab, (indedlooftval + indgrafptr->edgenbr) * sizeof (Gnum)) - indgrafptr->baseval; + indgrafptr->edgetax = (Gnum *) memRealloc ((indgrafptr->edgetax + indgrafptr->baseval), + (indedlooftval + indgrafptr->edgenbr) * sizeof (Gnum)) - indgrafptr->baseval; indgrafptr->edlotax = indgrafptr->edgetax + indedlooftval; /* Use old index into old array as new index */ } - else - indgrafptr->edgetax = (Gnum *) memRealloc (indedgetab, indgrafptr->edgenbr * sizeof (Gnum)) - indgrafptr->baseval; + else { + indgrafptr->edgetax = (Gnum *) memRealloc ((indgrafptr->edgetax + indgrafptr->baseval), + indgrafptr->edgenbr * sizeof (Gnum)) - indgrafptr->baseval; + indgrafptr->edlotax = NULL; /* Delete link to orgindxtax */ + } #ifdef SCOTCH_DEBUG_GRAPH2 if (graphCheck (indgrafptr) != 0) { /* Check graph consistency */ - errorPrint ("graphInduce2: inconsistent graph data"); + errorPrint ("graphInduce3: inconsistent graph data"); graphExit (indgrafptr); return (1); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/graph_induce.h scotch-6.0.6/src/libscotch/graph_induce.h --- scotch-6.0.4.dfsg1/src/libscotch/graph_induce.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/graph_induce.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -53,6 +53,8 @@ /** to 17 sep 1998 **/ /** # Version 4.0 : from : 28 nov 2001 **/ /** to 28 nov 2001 **/ +/** # Version 6.0 : from : 03 aug 2016 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -60,10 +62,7 @@ ** The function prototypes. */ -#ifndef GRAPH_INDUCE -#define static -#endif - -static int graphInduce2 (const Graph * const, Graph * const, const Gnum, const Gnum, Gnum * const, const Gnum * const); - -#undef static +#ifdef GRAPH_INDUCE +static int graphInduce2 (const Graph * const, Graph * const, const Gnum); +static int graphInduce3 (const Graph * const, Graph * const, const Gnum, const Gnum); +#endif /* GRAPH_INDUCE */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/graph_io.c scotch-6.0.6/src/libscotch/graph_io.c --- scotch-6.0.4.dfsg1/src/libscotch/graph_io.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/graph_io.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -56,6 +56,8 @@ /** to 10 sep 2007 **/ /** # Version 5.1 : from : 11 aug 2010 **/ /** to 11 aug 2010 **/ +/** # Version 6.0 : from : 03 aug 2016 **/ +/** to 03 aug 2016 **/ /** **/ /************************************************************/ @@ -92,11 +94,11 @@ { Gnum edgenum; /* Number of edges really allocated */ Gnum edgennd; - Gnum vlblnbr; /* = vertnbr if vertex labels */ + Gnum vlblsiz; /* = vertnbr if vertex labels */ Gnum vlblmax; /* Maximum vertex label number */ - Gnum velonbr; /* = vertnbr if vertex loads wanted */ + Gnum velosiz; /* = vertnbr if vertex loads wanted */ Gnum velosum; /* Sum of vertex loads */ - Gnum edlonbr; /* = edgenbr if edge loads wanted */ + Gnum edlosiz; /* = edgenbr if edge loads wanted */ Gnum edlosum; /* Sum of edge loads */ Gnum edgeval; /* Value where to read edge end */ Gnum baseadj; @@ -136,24 +138,24 @@ grafptr->baseval = baseadj; /* Set graph base as file base */ baseadj = 0; /* No base adjustment needed */ } - else { /* If set graph base */ - grafptr->baseval = baseval; /* Set wanted graph base */ - baseadj = baseval - baseadj; /* Update base adjust */ + else { /* If prescribed graph base */ + grafptr->baseval = baseval; /* Set wanted graph base */ + baseadj = baseval - baseadj; /* Update base adjust */ } if (proptab[0] != 0) /* If vertex labels, no base adjust */ baseadj = 0; - velonbr = ((proptab[2] != 0) && ((flagval & GRAPHIONOLOADVERT) == 0)) ? grafptr->vertnbr : 0; - vlblnbr = (proptab[0] != 0) ? grafptr->vertnbr : 0; - edlonbr = ((proptab[1] != 0) && ((flagval & GRAPHIONOLOADEDGE) == 0)) ? grafptr->edgenbr : 0; + velosiz = ((proptab[2] != 0) && ((flagval & GRAPHIONOLOADVERT) == 0)) ? grafptr->vertnbr : 0; + vlblsiz = (proptab[0] != 0) ? grafptr->vertnbr : 0; + edlosiz = ((proptab[1] != 0) && ((flagval & GRAPHIONOLOADEDGE) == 0)) ? grafptr->edgenbr : 0; if ((memAllocGroup ((void **) (void *) &grafptr->verttax, (size_t) ((grafptr->vertnbr + 1) * sizeof (Gnum)), - &grafptr->velotax, (size_t) (velonbr * sizeof (Gnum)), - &grafptr->vlbltax, (size_t) (vlblnbr * sizeof (Gnum)), NULL) == NULL) || + &grafptr->velotax, (size_t) (velosiz * sizeof (Gnum)), + &grafptr->vlbltax, (size_t) (vlblsiz * sizeof (Gnum)), NULL) == NULL) || (memAllocGroup ((void **) (void *) &grafptr->edgetax, (size_t) (grafptr->edgenbr * sizeof (Gnum)), - &grafptr->edlotax, (size_t) (edlonbr * sizeof (Gnum)), NULL) == NULL)) { + &grafptr->edlotax, (size_t) (edlosiz * sizeof (Gnum)), NULL) == NULL)) { if (grafptr->verttax != NULL) memFree (grafptr->verttax); errorPrint ("graphLoad: out of memory"); @@ -163,10 +165,10 @@ grafptr->vertnnd = grafptr->vertnbr + grafptr->baseval; grafptr->verttax -= grafptr->baseval; grafptr->vendtax = grafptr->verttax + 1; /* Use compact vertex array */ - grafptr->velotax = (velonbr != 0) ? (grafptr->velotax - grafptr->baseval) : NULL; - grafptr->vlbltax = (vlblnbr != 0) ? (grafptr->vlbltax - grafptr->baseval) : NULL; + grafptr->velotax = (velosiz != 0) ? (grafptr->velotax - grafptr->baseval) : NULL; + grafptr->vlbltax = (vlblsiz != 0) ? (grafptr->vlbltax - grafptr->baseval) : NULL; grafptr->edgetax -= grafptr->baseval; - grafptr->edlotax = (edlonbr != 0) ? (grafptr->edlotax - grafptr->baseval) : NULL; + grafptr->edlotax = (edlosiz != 0) ? (grafptr->edlotax - grafptr->baseval) : NULL; vlblmax = grafptr->vertnnd - 1; /* No vertex labels known */ velosum = (grafptr->velotax == NULL) ? grafptr->vertnbr : 0; @@ -192,7 +194,7 @@ if (proptab[2] != 0) { /* If must read vertex load */ Gnum veloval; /* Value where to read vertex load */ - if (intLoad (stream, &veloval) != 1) { /* Read vertex load data */ + if (intLoad (stream, &veloval) != 1) { /* Read vertex load data */ errorPrint ("graphLoad: bad input (4)"); graphFree (grafptr); return (1); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/graph_io_chac.c scotch-6.0.6/src/libscotch/graph_io_chac.c --- scotch-6.0.4.dfsg1/src/libscotch/graph_io_chac.c 2013-10-10 21:18:28.000000000 +0000 +++ scotch-6.0.6/src/libscotch/graph_io_chac.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010,2013 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010,2013,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -51,7 +51,9 @@ /** # Version 5.1 : from : 02 dec 2008 **/ /** to 11 aug 2010 **/ /** # Version 6.0 : from : 10 oct 2013 **/ -/** to 10 oct 2013 **/ +/** to 03 aug 2016 **/ +/** # Version 6.1 : from : 03 aug 2016 **/ +/** to 03 aug 2016 **/ /** **/ /************************************************************/ @@ -88,11 +90,14 @@ long chaflagval; /* Flag on numeric form */ char chaflagstr[4]; /* Flag for optional data */ int chabuffcar; /* Buffer for line processing */ - Gnum edgenum; - Gnum edlosum; Gnum vertnum; + Gnum velosiz; Gnum velosum; + Gnum vlblsiz; Gnum vlblmax; + Gnum edgenum; + Gnum edlosiz; + Gnum edlosum; Gnum degrmax; do { /* Skip comment lines */ @@ -113,7 +118,7 @@ errorPrint ("graphGeomLoadChac: bad input (1)"); return (1); } - getc (filesrcptr); /* Purge newline (cannot be merged with above fscanf) */ + getc (filesrcptr); /* Purge newline; cannot be merged with fscanf above */ chaflagstr[0] = /* Pre-set flag array */ chaflagstr[1] = @@ -123,54 +128,50 @@ chaflagstr[1] = '0' + ((chaflagval / 10) % 10); chaflagstr[2] = '0' + ((chaflagval) % 10); - grafptr->flagval = GRAPHFREETABS; + grafptr->flagval = GRAPHFREETABS | GRAPHVERTGROUP | GRAPHEDGEGROUP; grafptr->baseval = 1; /* Chaco graphs are based */ grafptr->vertnbr = chavertnbr; grafptr->vertnnd = chavertnbr + 1; grafptr->edgenbr = chaedgenbr * 2; /* We are counting arcs */ - if (((grafptr->verttax = (Gnum *) memAlloc (grafptr->vertnnd * sizeof (Gnum))) == NULL) || - ((grafptr->edgetax = (Gnum *) memAlloc (grafptr->edgenbr * sizeof (Gnum))) == NULL)) { - errorPrint ("graphGeomLoadChac: out of memory (1)"); + + vlblsiz = (chaflagstr[0] != '0') ? grafptr->vertnbr : 0; + velosiz = (chaflagstr[1] != '0') ? grafptr->vertnbr : 0; + edlosiz = (chaflagstr[2] != '0') ? grafptr->edgenbr : 0; + + if ((memAllocGroup ((void **) (void *) + &grafptr->verttax, (size_t) (grafptr->vertnnd * sizeof (Gnum)), + &grafptr->velotax, (size_t) (velosiz * sizeof (Gnum)), + &grafptr->vlbltax, (size_t) (vlblsiz * sizeof (Gnum)), NULL) == NULL) || + (memAllocGroup ((void **) (void *) + &grafptr->edgetax, (size_t) (grafptr->edgenbr * sizeof (Gnum)), + &grafptr->edlotax, (size_t) (edlosiz * sizeof (Gnum)), NULL) == NULL)) { if (grafptr->verttax != NULL) memFree (grafptr->verttax); + errorPrint ("graphGeomLoadChac: out of memory"); return (1); } - grafptr->edgetax -= grafptr->baseval; - grafptr->verttax -= grafptr->baseval; - grafptr->vendtax = grafptr->verttax + 1; - - if (chaflagstr[0] != '0') { - if ((grafptr->vlbltax = (Gnum *) memAlloc (chavertnbr * sizeof (Gnum))) == NULL) { - errorPrint ("graphGeomLoadChac: out of memory (2)"); - memFree (grafptr); - return (1); - } - grafptr->vlbltax -= grafptr->baseval; - } - - velosum = grafptr->vertnbr; /* Assume no vertex loads */ + grafptr->verttax --; + grafptr->vendtax = grafptr->verttax + 1; + grafptr->vlbltax = (chaflagstr[0] != '0') ? (grafptr->vlbltax - 1) : NULL; + grafptr->edgetax --; if (chaflagstr[1] != '0') { - if ((grafptr->velotax = (Gnum *) memAlloc (chavertnbr * sizeof (Gnum))) == NULL) { - errorPrint ("graphGeomLoadChac: out of memory (3)"); - memFree (grafptr); - return (1); - } - grafptr->velotax -= grafptr->baseval; + grafptr->velotax --; velosum = 0; } - - edlosum = grafptr->edgenbr; + else { + grafptr->velotax = NULL; + velosum = grafptr->vertnbr; /* No vertex loads */ + } if (chaflagstr[2] != '0') { - if ((grafptr->edlotax = (Gnum *) memAlloc (grafptr->edgenbr * sizeof (Gnum))) == NULL) { - errorPrint ("graphGeomLoadChac: out of memory (4)"); - memFree (grafptr); - return (1); - } - grafptr->edlotax -= grafptr->baseval; + grafptr->edlotax --; edlosum = 0; } + else { + grafptr->edlotax = NULL; + edlosum = grafptr->edgenbr; + } - for (vertnum = edgenum = grafptr->baseval, degrmax = vlblmax = 0; + for (vertnum = edgenum = 1, degrmax = vlblmax = 0; vertnum < grafptr->vertnnd; vertnum ++) { do { /* Skip comment lines */ chabuffcar = getc (filesrcptr); /* Read first character */ @@ -223,7 +224,7 @@ graphFree (grafptr); return (1); } - if (edgenum > (grafptr->edgenbr + grafptr-> baseval)) { /* Test edge array overflow */ + if (edgenum > (grafptr->edgenbr + 1)) { /* Test edge array overflow */ errorPrint ("graphGeomLoadChac: bad input (5)"); graphFree (grafptr); return (1); @@ -240,7 +241,7 @@ grafptr->degrmax = degrmax; if (grafptr->vlbltax != NULL) { /* If graph has labels */ - if (graphLoad2 (grafptr->baseval, grafptr->vertnnd, /* Un-label graph data */ + if (graphLoad2 (1, grafptr->vertnnd, /* Un-label graph data */ grafptr->verttax, grafptr->vendtax, grafptr->edgetax, vlblmax, grafptr->vlbltax) != 0) { errorPrint ("graphGeomLoadChac: cannot relabel graph"); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/graph_io.h scotch-6.0.6/src/libscotch/graph_io.h --- scotch-6.0.4.dfsg1/src/libscotch/graph_io.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/graph_io.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -53,6 +53,8 @@ /** to 15 may 1999 **/ /** # Version 4.0 : from : 25 nov 2001 **/ /** to 25 nov 2001 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -60,10 +62,4 @@ ** The function prototypes. */ -#ifndef GRAPH_IO -#define static -#endif - int graphLoad2 (const Gnum, const Gnum, const Gnum * const, const Gnum * const, Gnum * const, const Gnum, const Gnum * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/graph_io_habo.c scotch-6.0.6/src/libscotch/graph_io_habo.c --- scotch-6.0.4.dfsg1/src/libscotch/graph_io_habo.c 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/graph_io_habo.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2008,2010,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -49,6 +49,8 @@ /** to 31 aug 2007 **/ /** # Version 5.1 : from : 09 nov 2008 **/ /** to 27 apr 2010 **/ +/** # Version 6.0 : from : 04 aug 2016 **/ +/** to 31 may 2018 **/ /** **/ /************************************************************/ @@ -85,7 +87,6 @@ char habmattype[3]; /* Matrix type */ Gnum habcrdnbr; /* Total number of data lines */ Gnum habrhsnbr; /* Number of right hand side lines */ - Gnum habrownbr; /* Number of rows */ GraphGeomHaboLine habcolfmt; /* Format of column line */ int habvalnum; /* Number of value in line */ Gnum habcolnbr; /* Number of columns */ @@ -135,8 +136,10 @@ habnzrnbr = (Gnum) atol (&habmatbuf[2][43]); habmatbuf[2][42] = '\0'; habcolnbr = (Gnum) atol (&habmatbuf[2][29]); +#if 0 /* Number of rows not used since only square matrices considered */ habmatbuf[2][28] = '\0'; habrownbr = (Gnum) atol (&habmatbuf[2][14]); +#endif habmatbuf[3][32] = '\0'; if (graphGeomLoadHaboFormat (&habnzrfmt, &habmatbuf[3][16]) != 0) { @@ -180,10 +183,10 @@ } if (((grafptr->verttax = (Gnum *) memAlloc ((habcolnbr + 1) * sizeof (Gnum))) == NULL) || - ((grafptr->edgetax = (Gnum *) memAllocGroup ((void **) (void *) - &grafptr->edgetax, (size_t) (habnzrnbr * 2 * sizeof (Gnum)), - &habcoltab, (size_t) ((habcolnbr + 1) * sizeof (Gnum)), - &habnzrtab, (size_t) (habnzrnbr * sizeof (Gnum)), NULL)) == NULL)) { + (memAllocGroup ((void **) (void *) + &grafptr->edgetax, (size_t) (habnzrnbr * 2 * sizeof (Gnum)), + &habcoltab, (size_t) ((habcolnbr + 1) * sizeof (Gnum)), + &habnzrtab, (size_t) (habnzrnbr * sizeof (Gnum)), NULL) == NULL)) { errorPrint ("graphGeomLoadHabo: out of memory (1)"); if (grafptr->verttax != NULL) { memFree (grafptr->verttax); @@ -191,7 +194,7 @@ } return (1); } - grafptr->flagval = GRAPHFREETABS; /* Totally new graph structure */ + grafptr->flagval = GRAPHFREETABS | GRAPHVERTGROUP | GRAPHEDGEGROUP; grafptr->baseval = 1; /* Harwell-Boeing graphs have base 1 */ grafptr->vertnbr = (Gnum) habcolnbr; grafptr->vertnnd = grafptr->vertnbr + 1; @@ -199,6 +202,10 @@ grafptr->vendtax = grafptr->verttax; /* Use compact representation for array based at 1 */ grafptr->verttax --; /* Base verttab array at 1, with vendtab = verttab + 1 */ grafptr->edgetax --; + grafptr->velotax = NULL; + grafptr->vnumtax = NULL; + grafptr->vlbltax = NULL; + grafptr->edlotax = NULL; ungetc ('\n', filesrcptr); /* Create fake previous line */ for (habcolnum = 0, habvalnum = habcolfmt.datanbr; /* Eat up fake previous line */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/graph_io_habo.h scotch-6.0.6/src/libscotch/graph_io_habo.h --- scotch-6.0.4.dfsg1/src/libscotch/graph_io_habo.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/graph_io_habo.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2008,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -49,6 +49,8 @@ /** to 06 jun 2007 **/ /** # Version 5.1 : from : 09 nov 2008 **/ /** to 09 nov 2008 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -83,10 +85,4 @@ ** The function prototypes. */ -#ifndef GRAPH_IO_HABO -#define static -#endif - static int graphGeomLoadHaboFormat (GraphGeomHaboLine * restrict const, const char * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/graph_io_mmkt.c scotch-6.0.6/src/libscotch/graph_io_mmkt.c --- scotch-6.0.4.dfsg1/src/libscotch/graph_io_mmkt.c 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/graph_io_mmkt.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2008,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2008,2010,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,6 +44,8 @@ /** to : 21 mar 2008 **/ /** # Version 5.1 : from : 27 apr 2010 **/ /** to : 11 aug 2010 **/ +/** # Version 6.0 : from : 04 aug 2016 **/ +/** to 04 aug 2016 **/ /** **/ /************************************************************/ @@ -159,6 +161,9 @@ grafptr->verttax -= baseval; grafptr->vendtax = grafptr->verttax + 1; grafptr->velosum = grafptr->vertnbr; + grafptr->velotax = NULL; + grafptr->vnumtax = NULL; + grafptr->vlbltax = NULL; if ((sorttab = (GraphGeomMmktEdge *) memAlloc (2 * linenbr * sizeof (GraphGeomMmktEdge))) == NULL) { /* Twice the space for symmetric edges */ errorPrint ("graphGeomLoadMmkt: out of memory (2)"); @@ -166,6 +171,7 @@ return (1); } grafptr->edgetax = ((Gnum *) sorttab) - baseval; /* TRICK: will be freed if graph is freed */ + grafptr->edlotax = NULL; for (linenum = sortnbr = 0; linenum < linenbr; linenum ++) { if ((intLoad (filesrcptr, &sorttab[sortnbr].vertnum[0]) != 1) || /* Read edge ends */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/graph_list.h scotch-6.0.6/src/libscotch/graph_list.h --- scotch-6.0.4.dfsg1/src/libscotch/graph_list.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/graph_list.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -58,6 +58,8 @@ /** to 27 sep 2002 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to 04 nov 2010 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -82,10 +84,6 @@ ** The function prototypes. */ -#ifndef GRAPH_LIST -#define static -#endif - int listInit (VertList *); void listExit (VertList *); int listAlloc (VertList *, Gnum); @@ -94,5 +92,3 @@ int listSave (VertList *, FILE *); void listSort (VertList *); int listCopy (VertList *, VertList *); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/graph_match.c scotch-6.0.6/src/libscotch/graph_match.c --- scotch-6.0.4.dfsg1/src/libscotch/graph_match.c 2015-03-01 09:14:02.000000000 +0000 +++ scotch-6.0.6/src/libscotch/graph_match.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2009,2011,2012,2015 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2009,2011,2012,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,7 +40,7 @@ /** generic pattern. **/ /** **/ /** DATES : # Version 6.0 : from : 05 oct 2012 **/ -/** to 26 feb 2015 **/ +/** to 05 jun 2018 **/ /** **/ /************************************************************/ @@ -386,7 +386,7 @@ } /* This routine merges the results of two mating -** threads and re-launches a mating operations +** threads and re-launches a mating operation ** if necessary. */ @@ -442,10 +442,6 @@ const Gnum finevertbas = thrdptr->finevertbas; /* Get fine vertex range */ const Gnum finevertnnd = thrdptr->finevertnnd; Gnum * restrict const finematetax = coarptr->finematetax; - const Gnum baseval = finegrafptr->baseval; - - if (coarptr->fbegptr == NULL) /* If user-provided mating, nothing to do */ - return; thrdptr->finequeubas = finevertbas; /* Assume matching range is fine vertex processing range */ thrdptr->finequeunnd = finevertnnd; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/graph_match.h scotch-6.0.6/src/libscotch/graph_match.h --- scotch-6.0.4.dfsg1/src/libscotch/graph_match.h 2015-03-01 09:14:02.000000000 +0000 +++ scotch-6.0.6/src/libscotch/graph_match.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2012,2015 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2012,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,7 +40,7 @@ /** matching routines. **/ /** **/ /** DATES : # Version 6.0 : from : 02 oct 2012 **/ -/** to 25 feb 2015 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -80,20 +80,13 @@ ** The function prototypes. */ -void graphMatchNone (GraphCoarsenData *); -int graphMatchInit (GraphCoarsenData *); -void graphMatch (GraphCoarsenThread * restrict const); - -#ifndef GRAPH_MATCH -#define static -#endif - +#ifdef GRAPH_MATCH GRAPHMATCHFUNCDECL (Seq); - GRAPHMATCHFUNCDECL (ThrBeg); - GRAPHMATCHFUNCDECL (ThrMid); - GRAPHMATCHFUNCDECL (ThrEnd); +#endif /* GRAPH_MATCH */ -#undef static +void graphMatchNone (GraphCoarsenData *); +int graphMatchInit (GraphCoarsenData *); +void graphMatch (GraphCoarsenThread * restrict const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/graph_match_scan.c scotch-6.0.6/src/libscotch/graph_match_scan.c --- scotch-6.0.4.dfsg1/src/libscotch/graph_match_scan.c 2014-06-04 18:50:16.000000000 +0000 +++ scotch-6.0.6/src/libscotch/graph_match_scan.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2012,2014,2015 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,7 +41,7 @@ /** graph matching functions. **/ /** **/ /** DATES : # Version 6.0 : from : 01 oct 2012 **/ -/** to 04 jun 2014 **/ +/** to 14 aug 2015 **/ /** **/ /** NOTES : # This code partly derives from the **/ /** code of graph_match.c partly updated **/ @@ -96,6 +96,7 @@ #if ((defined GRAPHMATCHSCANP1OUTQUEUE) || defined (GRAPHMATCHSCANP2OUTQUEUE)) Gnum queunew; #endif /* ((defined GRAPHMATCHSCANP1OUTQUEUE) || defined (GRAPHMATCHSCANP2OUTQUEUE)) */ + const int flagval = coarptr->flagval; const Gnum * restrict const fineverttax = finegrafptr->verttax; const Gnum * restrict const finevendtax = finegrafptr->vendtax; @@ -248,7 +249,8 @@ if (finematetax[finevertnum] >= 0) /* If vertex already mated, skip it without remembering it */ goto loop2; - if (fineverttax[finevertnum] == finevendtax[finevertnum]) { /* If isolated vertex */ + if (((flagval & GRAPHCOARSENNOMERGE) == 0) && /* If merging isolated vertices is allowed */ + (fineverttax[finevertnum] == finevendtax[finevertnum])) { /* And if isolated vertex */ #ifdef GRAPHMATCHSCANP2INPERT Gnum perttmp = pertnnd; do diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hall_order_hd.c scotch-6.0.6/src/libscotch/hall_order_hd.c --- scotch-6.0.4.dfsg1/src/libscotch/hall_order_hd.c 2012-07-03 14:12:44.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hall_order_hd.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -49,7 +49,7 @@ /** # Version 4.0 : from : 14 jan 2003 **/ /** to : 29 aug 2007 **/ /** # Version 6.0 : from : 08 mar 2012 **/ -/** to : 08 mar 2012 **/ +/** to : 30 apr 2018 **/ /** **/ /** NOTES : # This module contains pieces of code **/ /** that belong to other people; see **/ @@ -390,8 +390,7 @@ if (nbelts == 0) { /* Patch 8/12/03 */ memSet (elen + 1, 0, n * sizeof (Gnum)); for (i = 1; i <= n; i ++) { - nv[i] = 1; - w[i] = 1; + w[i] = 1; if (len[i] < 0) { degree[i] = n + 1; nbflag ++; @@ -408,8 +407,7 @@ } else { /* Patch 08/12/03 : Duplicate part of previous loop to avoid sytematic testing for elements */ for (i = 1; i <= n; i ++) { - nv[i] = 1; - w[i] = 1; + w[i] = 1; if (len[i] < 0) { /* i \in V1 */ degree[i] = n + 1; nbflag ++; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hall_order_hd.h scotch-6.0.6/src/libscotch/hall_order_hd.h --- scotch-6.0.4.dfsg1/src/libscotch/hall_order_hd.h 2012-03-08 08:48:03.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hall_order_hd.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,7 +45,7 @@ /** # Version 4.0 : from : 10 jan 2003 **/ /** to : 10 dec 2003 **/ /** # Version 6.0 : from : 08 mar 2012 **/ -/** to : 08 mar 2012 **/ +/** to : 07 jun 2018 **/ /** **/ /************************************************************/ @@ -53,10 +53,4 @@ ** The function prototypes. */ -#ifndef HALL_ORDER_HD -#define static -#endif - void hallOrderHdHalmd (const Gnum n, const Gnum nbelts, const Gnum iwlen, Gnum pe[], Gnum pfree, Gnum len[], Gnum iw[], Gnum nv[], Gnum elen[], Gnum last[], Gnum * ncmpa, Gnum degree[], Gnum head[], Gnum next[], Gnum w[]); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hall_order_hf.c scotch-6.0.6/src/libscotch/hall_order_hf.c --- scotch-6.0.4.dfsg1/src/libscotch/hall_order_hf.c 2014-08-20 16:20:33.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hall_order_hf.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -49,7 +49,7 @@ /** # Version 5.1 : from : 08 dec 2010 **/ /** to : 08 dec 2010 **/ /** # Version 6.0 : from : 08 mar 2012 **/ -/** to : 08 mar 2012 **/ +/** to : 30 apr 2018 **/ /** **/ /** NOTES : # This module contains pieces of code **/ /** that belong to other people; see **/ @@ -155,7 +155,7 @@ Gnum pfree, /* Useful size in iw */ Gnum * restrict len /* [] */, /* Array of lengths of adjacency lists */ Gnum * restrict iw /* [] */, /* Adjacency list array */ -Gnum * restrict nv /* [] */, /* Array of element degrees */ +Gnum * restrict nv /* [] */, /* Array of element degrees (weights) */ Gnum * restrict elen /* [] */, /* Array that holds the inverse permutation */ Gnum * restrict last /* [] */, /* Array that holds the permutation */ Gnum * restrict ncmpaptr, /* Number of times array iw was compressed */ @@ -426,8 +426,7 @@ if (nbelts == 0) { /* Patch 8/12/03 */ memSet (elen + 1, 0, n * sizeof (Gnum)); for (i = 1; i <= n; i ++) { - nv[i] = 1; - w[i] = 1; + w[i] = 1; if (len[i] < 0) { degree[i] = n2; nbflag ++; @@ -444,8 +443,7 @@ } else { /* Patch 08/12/03 : Duplicate part of previous loop to avoid sytematic testing for elements */ for (i = 1; i <= n; i ++) { - nv[i] = 1; - w[i] = 1; + w[i] = 1; if (len[i] < 0) { /* i \in V1 */ degree[i] = n2; nbflag ++; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hall_order_hf.h scotch-6.0.6/src/libscotch/hall_order_hf.h --- scotch-6.0.4.dfsg1/src/libscotch/hall_order_hf.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hall_order_hf.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,6 +44,8 @@ /** to : 15 may 2001 **/ /** # Version 4.0 : from : 10 jan 2003 **/ /** to : 08 dec 2003 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -51,10 +53,4 @@ ** The function prototypes. */ -#ifndef HALL_ORDER_HF -#define static -#endif - void hallOrderHfR2hamdf4 (const Gnum n, const Gnum nbelts, const Gnum nbbuck, const Gnum iwlen, Gnum pe[], Gnum pfree, Gnum len[], Gnum iw[], Gnum nv[], Gnum elen[], Gnum last[], Gnum * ncmpa, Gnum degree[], Gnum wf[], Gnum next[], Gnum w[], Gnum head[]); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hall_order_hx.h scotch-6.0.6/src/libscotch/hall_order_hx.h --- scotch-6.0.4.dfsg1/src/libscotch/hall_order_hx.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hall_order_hx.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 4.0 : from : 14 jan 2003 **/ /** to : 08 dec 2003 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -48,11 +50,5 @@ ** The function prototypes. */ -#ifndef HALL_ORDER_HX -#define static -#endif - int hallOrderHxBuild (const Gnum, const Gnum, const Gnum, const Gnum * restrict const, Order * restrict const, OrderCblk * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, const Gnum, const Gnum, const float); Gnum hallOrderHxTree (const Gnum * restrict const, const Gnum * restrict const, const Gnum * restrict const, Gnum * restrict const, const Gnum, const Gnum); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hdgraph_gather.c scotch-6.0.6/src/libscotch/hdgraph_gather.c --- scotch-6.0.4.dfsg1/src/libscotch/hdgraph_gather.c 2012-11-26 23:31:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hdgraph_gather.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,7 +45,7 @@ /** # Version 5.1 : from : 30 jul 2010 **/ /** to : 30 jul 2010 **/ /** # Version 6.0 : from : 27 nov 2012 **/ -/** to 27 nov 2012 **/ +/** to 23 may 2018 **/ /** **/ /************************************************************/ @@ -181,7 +181,7 @@ cgrfptr->vnohnnd = vnohnbr + dgrfptr->s.baseval; cgrfptr->vnlosum = dgrfptr->s.veloglbsum; cgrfptr->enohnbr = - cgrfptr->enohsum = dgrfptr->s.edgeglbnbr; + cgrfptr->enlosum = dgrfptr->s.edgeglbnbr; cgrfptr->levlnum = dgrfptr->levlnum; } } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hdgraph.h scotch-6.0.6/src/libscotch/hdgraph.h --- scotch-6.0.4.dfsg1/src/libscotch/hdgraph.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hdgraph.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to 16 jun 2007 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to 04 nov 2010 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -93,10 +95,6 @@ ** The function prototypes. */ -#ifndef HDGRAPH -#define static -#endif - int hdgraphInit (Hdgraph * const); void hdgraphExit (Hdgraph * const); void hdgraphFree (Hdgraph * const); @@ -107,5 +105,3 @@ int hdgraphGather (Hdgraph *, Hgraph *); #endif /* HGRAPH_H */ int hdgraphInduceList (Hdgraph * restrict const, const Gnum, const Gnum * restrict const, Hdgraph * restrict const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hdgraph_order_nd.h scotch-6.0.6/src/libscotch/hdgraph_order_nd.h --- scotch-6.0.4.dfsg1/src/libscotch/hdgraph_order_nd.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hdgraph_order_nd.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to 16 jun 2007 **/ /** # Version 5.1 : from : 11 nov 2008 **/ /** to 04 nov 2010 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -93,13 +95,9 @@ ** The function prototypes. */ -#ifndef HDGRAPH_ORDER_ND -#define static -#endif - +#ifdef HDGRAPH_ORDER_ND static void * hdgraphOrderNdFold2 (void * const); static int hdgraphOrderNdFold (Hdgraph * restrict const, const Gnum, const Gnum * restrict const, const Gnum, const Gnum * restrict const, HdgraphOrderNdGraph * restrict const); +#endif /* HDGRAPH_ORDER_ND */ int hdgraphOrderNd (Hdgraph * const, DorderCblk * const, const HdgraphOrderNdParam * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hdgraph_order_si.h scotch-6.0.6/src/libscotch/hdgraph_order_si.h --- scotch-6.0.4.dfsg1/src/libscotch/hdgraph_order_si.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hdgraph_order_si.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007 ENSEIRB, INRIA & CNRS +/* Copyright 2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 5.0 : from : 15 apr 2006 **/ /** to 15 apr 2006 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -48,10 +50,4 @@ ** The function prototypes. */ -#ifndef HDGRAPH_ORDER_SI -#define static -#endif - int hdgraphOrderSi (const Hdgraph * const, DorderCblk * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hdgraph_order_sq.h scotch-6.0.6/src/libscotch/hdgraph_order_sq.h --- scotch-6.0.4.dfsg1/src/libscotch/hdgraph_order_sq.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hdgraph_order_sq.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2008,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2008,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 5.1 : from : 11 nov 2008 **/ /** to 04 nov 2010 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -58,14 +60,10 @@ ** The function prototypes. */ -#ifndef HDGRAPH_ORDER_SQ -#define static -#endif - -int hdgraphOrderSq (Hdgraph * const, DorderCblk * const, const HdgraphOrderSqParam * const); - -int hdgraphOrderSq2 (Hgraph * restrict const, DorderCblk * restrict const, const Strat * restrict const); +#ifdef HDGRAPH_ORDER_SQ static DorderNode * hdgraphOrderSqTree (const Order * const); static void hdgraphOrderSqTree2 (DorderNode * const, Gnum * const, const OrderCblk * const, const Gnum, const Gnum); +#endif /* HDGRAPH_ORDER_SQ */ -#undef static +int hdgraphOrderSq2 (Hgraph * restrict const, DorderCblk * restrict const, const Strat * restrict const); +int hdgraphOrderSq (Hdgraph * const, DorderCblk * const, const HdgraphOrderSqParam * const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hdgraph_order_st.h scotch-6.0.6/src/libscotch/hdgraph_order_st.h --- scotch-6.0.4.dfsg1/src/libscotch/hdgraph_order_st.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hdgraph_order_st.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2008 ENSEIRB, INRIA & CNRS +/* Copyright 2007,2008,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to : 14 apr 2006 **/ /** # Version 5.1 : from : 11 nov 2008 **/ /** to : 11 nov 2008 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -69,10 +71,4 @@ ** The function prototypes. */ -#ifndef HDGRAPH_ORDER_ST -#define static -#endif - int hdgraphOrderSt (const Hdgraph * restrict const, DorderCblk * restrict const, const Strat * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph.c scotch-6.0.6/src/libscotch/hgraph.c --- scotch-6.0.4.dfsg1/src/libscotch/hgraph.c 2014-08-05 00:32:08.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2012,2014,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,7 +43,7 @@ /** # Version 5.0 : from : 19 dec 2006 **/ /** to 30 may 2008 **/ /** # Version 6.0 : from : 17 oct 2012 **/ -/** to 04 aug 2014 **/ +/** to 23 may 2018 **/ /** **/ /************************************************************/ @@ -136,6 +136,7 @@ ugrfptr->edgenbr = grafptr->enohnbr; ugrfptr->edgetax = grafptr->s.edgetax; ugrfptr->edlotax = grafptr->s.edlotax; - ugrfptr->edlosum = grafptr->enohsum; + ugrfptr->edlosum = grafptr->enlosum; ugrfptr->degrmax = grafptr->s.degrmax; /* Upper bound */ + ugrfptr->procptr = grafptr->s.procptr; } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph_check.c scotch-6.0.6/src/libscotch/hgraph_check.c --- scotch-6.0.4.dfsg1/src/libscotch/hgraph_check.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph_check.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,6 +42,8 @@ /** to 01 dec 2003 **/ /** # Version 5.0 : from : 19 dec 2006 **/ /** to 19 dec 2006 **/ +/** # Version 6.0 : from : 23 may 2018 **/ +/** to 23 may 2018 **/ /** **/ /************************************************************/ @@ -75,7 +77,7 @@ { Gnum vertnum; /* Number of current vertex */ Gnum edgenum; /* Number of current edge */ - Gnum enohsum; + Gnum enlosum; if (graphCheck (&grafptr->s) != 0) { errorPrint ("hgraphCheck: invalid graph structure in halo graph"); @@ -87,12 +89,12 @@ (grafptr->vnohnnd != (grafptr->vnohnbr + grafptr->s.baseval)) || (grafptr->vnlosum > grafptr->s.velosum) || (grafptr->enohnbr > grafptr->s.edgenbr) || - (grafptr->enohsum < grafptr->enohnbr)) { + (grafptr->enlosum < grafptr->enohnbr)) { errorPrint ("hgraphCheck: invalid halo graph parameters"); return (1); } - enohsum = (grafptr->s.edlotax == NULL) ? grafptr->enohnbr : 0; + enlosum = (grafptr->s.edlotax == NULL) ? grafptr->enohnbr : 0; for (vertnum = grafptr->s.baseval; vertnum < grafptr->vnohnnd; vertnum ++) { /* For all non-halo vertices */ if ((grafptr->vnhdtax[vertnum] < grafptr->s.verttax[vertnum]) || (grafptr->vnhdtax[vertnum] > grafptr->s.vendtax[vertnum])) { @@ -104,11 +106,11 @@ Gnum edgenum; for (edgenum = grafptr->s.verttax[vertnum]; edgenum < grafptr->vnhdtax[vertnum]; edgenum ++) - enohsum += grafptr->s.edlotax[edgenum]; + enlosum += grafptr->s.edlotax[edgenum]; } } - if (grafptr->enohsum != enohsum) { + if (grafptr->enlosum != enlosum) { errorPrint ("hgraphCheck: invalid non-halo edge load sum"); return (1); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph.h scotch-6.0.6/src/libscotch/hgraph.h --- scotch-6.0.4.dfsg1/src/libscotch/hgraph.h 2012-10-17 14:36:24.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,7 +45,7 @@ /** # Version 5.1 : from : 04 nov 2010 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 17 oct 2012 **/ -/** to 17 oct 2012 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -73,7 +73,7 @@ Gnum * vnhdtax; /*+ End vertex array for non-halo vertices [vnohnbr, based] +*/ Gnum vnlosum; /*+ Sum of vertex loads for non-halo vertices only (<= s.velosum) +*/ Gnum enohnbr; /*+ Number of non-halo edges +*/ - Gnum enohsum; /*+ Sum of non-halo edge loads +*/ + Gnum enlosum; /*+ Sum of non-halo edge loads +*/ Gnum levlnum; /*+ Nested dissection level +*/ } Hgraph; @@ -81,16 +81,10 @@ ** The function prototypes. */ -#ifndef HGRAPH -#define static -#endif - int hgraphInit (Hgraph * const); void hgraphExit (Hgraph * const); void hgraphFree (Hgraph * const); Gnum hgraphBase (Hgraph * const, const Gnum); int hgraphCheck (const Hgraph *); -int hgraphInduceList (const Hgraph * const, const VertList * const, const Gnum, Hgraph * const); +int hgraphInduceList (const Hgraph * restrict const, const Gnum, const Gnum * restrict const, const Gnum, Hgraph * restrict const); void hgraphUnhalo (const Hgraph * const, Graph * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph_induce.c scotch-6.0.6/src/libscotch/hgraph_induce.c --- scotch-6.0.4.dfsg1/src/libscotch/hgraph_induce.c 2015-02-24 18:35:05.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph_induce.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010,2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010,2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,7 +45,7 @@ /** # Version 5.1 : from : 24 oct 2010 **/ /** to 24 oct 2010 **/ /** # Version 6.0 : from : 27 mar 2012 **/ -/** to 07 nov 2014 **/ +/** to 23 may 2018 **/ /** **/ /************************************************************/ @@ -83,8 +83,9 @@ int hgraphInduceList ( const Hgraph * restrict const orggrafptr, /* Pointer to original graph */ -const VertList * restrict const orglistptr, /* Pointer to vertex list */ -const Gnum orghalonbr, /* Upper bound of number of vertices in halo */ +const Gnum indvnumnbr, +const Gnum * restrict const indvnumtab, +const Gnum indhalonbr, /* Upper bound of number of vertices in halo */ Hgraph * restrict const indgrafptr) /* Pointer to induced subgraph */ { Gnum * restrict orgindxtax; /* Original to induced vertex number translation */ @@ -100,23 +101,23 @@ indgrafptr->s.flagval = GRAPHFREETABS | GRAPHVERTGROUP | GRAPHEDGEGROUP; indgrafptr->s.baseval = orggrafptr->s.baseval; - indvertnbr = orglistptr->vnumnbr + orghalonbr; /* Compute upper bound on number of vertices */ + indvertnbr = indvnumnbr + indhalonbr; /* Compute upper bound on number of vertices */ indvelosiz = (orggrafptr->s.velotax != NULL) ? indvertnbr : 0; if (memAllocGroup ((void **) (void *) - &indgrafptr->s.verttax, (size_t) ((indvertnbr + 1) * sizeof (Gnum)), - &indgrafptr->vnhdtax, (size_t) ( orglistptr->vnumnbr * sizeof (Gnum)), /* Put closest to beginning of array because no padding after */ - &indgrafptr->s.velotax, (size_t) ( indvertnbr * sizeof (Gnum)), - &indgrafptr->s.vnumtax, (size_t) ( indvertnbr * sizeof (Gnum)), NULL) == NULL) { + &indgrafptr->s.verttax, (size_t) ((indvertnbr + 1) * sizeof (Gnum)), + &indgrafptr->vnhdtax, (size_t) ( indvnumnbr * sizeof (Gnum)), /* Put closest to beginning of array because no padding after */ + &indgrafptr->s.velotax, (size_t) ( indvelosiz * sizeof (Gnum)), + &indgrafptr->s.vnumtax, (size_t) ( indvertnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("hgraphInduceList: out of memory (1)"); /* Allocate induced graph structure */ return (1); } - memCpy (indgrafptr->s.vnumtax, orglistptr->vnumtab, orglistptr->vnumnbr * sizeof (Gnum)); /* Copy vertex number array from list */ + memCpy (indgrafptr->s.vnumtax, indvnumtab, indvnumnbr * sizeof (Gnum)); /* Copy vertex number array from list */ indgrafptr->s.velotax = (orggrafptr->s.velotax != NULL) ? (indgrafptr->s.velotax - indgrafptr->s.baseval) : NULL; indgrafptr->s.verttax -= indgrafptr->s.baseval; indgrafptr->s.vnumtax -= indgrafptr->s.baseval; indgrafptr->vnhdtax -= indgrafptr->s.baseval; - indgrafptr->vnohnbr = orglistptr->vnumnbr; - indgrafptr->vnohnnd = orglistptr->vnumnbr + indgrafptr->s.baseval; + indgrafptr->vnohnbr = indvnumnbr; + indgrafptr->vnohnnd = indvnumnbr + indgrafptr->s.baseval; indedgenbr = ((orggrafptr->s.degrmax > 0) && (indvertnbr < (orggrafptr->s.edgenbr / orggrafptr->s.degrmax))) /* Choose best upper bound on number of edges (avoid multiply overflow) */ ? (indvertnbr * orggrafptr->s.degrmax) : orggrafptr->s.edgenbr; @@ -125,7 +126,7 @@ if (memAllocGroup ((void **) (void *) /* If cannot allocate edge arrays with approximation */ &indedgetab, (size_t) (indedgesiz * sizeof (Gnum)), &orgindxtax, (size_t) (orggrafptr->s.vertnbr * sizeof (Gnum)), NULL) == NULL) { - indedgenbr = hgraphInduce3 (orggrafptr, orglistptr); /* Count real number of edges */ + indedgenbr = hgraphInduce3 (orggrafptr, indvnumnbr, indvnumtab); /* Count real number of edges */ indedgesiz = (orggrafptr->s.edlotax != NULL) ? indedgenbr * 2 : indedgenbr; /* Account for edge load array size if graph has edge weights */ @@ -232,27 +233,27 @@ #define HGRAPHINDUCE2EDLOINIT(e) #define HGRAPHINDUCE2EDLOSUM indgrafptr->s.edgenbr #define HGRAPHINDUCE2ENOHINIT -#define HGRAPHINDUCE2ENOHSUM indgrafptr->enohnbr +#define HGRAPHINDUCE2ENLOSUM indgrafptr->enohnbr #include "hgraph_induce_edge.c" #undef HGRAPHINDUCE2NAME #undef HGRAPHINDUCE2EDLOINIT #undef HGRAPHINDUCE2EDLOSUM #undef HGRAPHINDUCE2ENOHINIT -#undef HGRAPHINDUCE2ENOHSUM +#undef HGRAPHINDUCE2ENLOSUM #undef HGRAPHINDUCE2U #define HGRAPHINDUCE2L #define HGRAPHINDUCE2NAME hgraphInduce2L #define HGRAPHINDUCE2EDLOINIT(e) indedlosum += indedlotax[e] = orgedlotax[orgedgenum] #define HGRAPHINDUCE2EDLOSUM indedlosum -#define HGRAPHINDUCE2ENOHINIT indenohsum += orgedlotax[orgedgenum] -#define HGRAPHINDUCE2ENOHSUM indenohsum +#define HGRAPHINDUCE2ENOHINIT indenlosum += orgedlotax[orgedgenum] +#define HGRAPHINDUCE2ENLOSUM indenlosum #include "hgraph_induce_edge.c" #undef HGRAPHINDUCE2NAME #undef HGRAPHINDUCE2EDLOINIT #undef HGRAPHINDUCE2EDLOSUM #undef HGRAPHINDUCE2ENOHINIT -#undef HGRAPHINDUCE2ENOHSUM +#undef HGRAPHINDUCE2ENLOSUM #undef HGRAPHINDUCE2L /* This routine computes the exact number of edges @@ -270,14 +271,14 @@ static Gnum hgraphInduce3 ( -const Hgraph * restrict const orggrafptr, /* Pointer to original graph */ -const VertList * restrict const orglistptr) /* Pointer to vertex list */ +const Hgraph * restrict const orggrafptr, /* Pointer to original graph */ +const Gnum indvnumnbr, +const Gnum * restrict const indvnumtab) { Gnum indedgenbr; /* Revised number of edges in induced halo graph */ Gnum indvertnum; /* Current vertex number in induced halo graph */ Gnum * restrict orgindxtax; /* Array of numbers of selected vertices */ - const Gnum * restrict const orglistvnumtab = orglistptr->vnumtab; const Gnum * restrict const orgverttax = orggrafptr->s.verttax; const Gnum * restrict const orgvendtax = orggrafptr->s.vendtax; const Gnum * restrict const orgedgetax = orggrafptr->s.edgetax; @@ -287,15 +288,15 @@ memSet (orgindxtax, ~0, orggrafptr->s.vertnbr * sizeof (Gnum)); /* Preset index array */ orgindxtax -= orggrafptr->s.baseval; /* Base access to orgindxtab */ - for (indvertnum = 0; indvertnum < orglistptr->vnumnbr; indvertnum ++) /* For all vertices in list */ - orgindxtax[orglistvnumtab[indvertnum]] = indvertnum; /* Mark selected vertices */ + for (indvertnum = 0; indvertnum < indvnumnbr; indvertnum ++) /* For all vertices in list */ + orgindxtax[indvnumtab[indvertnum]] = indvertnum; /* Mark selected vertices */ for (indvertnum = 0, indedgenbr = 0; /* For all vertices in list */ - indvertnum < orglistptr->vnumnbr; indvertnum ++) { + indvertnum < indvnumnbr; indvertnum ++) { Gnum orgvertnum; /* Current vertex number in original halo graph */ Gnum orgedgenum; /* Current edge number in original halo graph */ - orgvertnum = orglistvnumtab[indvertnum]; /* Get number of original vertex */ + orgvertnum = indvnumtab[indvertnum]; /* Get number of original vertex */ indedgenbr += orgvendtax[orgvertnum] - orgverttax[orgvertnum]; /* Add degree of original vertex */ for (orgedgenum = orgverttax[orgvertnum]; /* For all neighbors of original halo vertex */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph_induce_edge.c scotch-6.0.6/src/libscotch/hgraph_induce_edge.c --- scotch-6.0.4.dfsg1/src/libscotch/hgraph_induce_edge.c 2015-02-24 22:20:15.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph_induce_edge.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010,2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2010,2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -47,7 +47,7 @@ /** # Version 5.1 : from : 24 oct 2010 **/ /** to 24 oct 2010 **/ /** # Version 6.0 : from : 22 mar 2012 **/ -/** to 07 nov 2014 **/ +/** to 23 may 2018 **/ /** **/ /************************************************************/ @@ -69,13 +69,12 @@ #endif /* SCOTCH_DEBUG_HGRAPH2 */ #ifdef HGRAPHINDUCE2L /* If edge loads present */ Gnum indedlosum; - Gnum indenohsum; + Gnum indenlosum; #endif /* HGRAPHINDUCE2L */ const Gnum * restrict const orgverttax = orggrafptr->s.verttax; const Gnum * restrict const orgvendtax = orggrafptr->s.vendtax; const Gnum * restrict const orgvelotax = orggrafptr->s.velotax; - const Gnum * restrict const orgvnumtax = orggrafptr->s.vnumtax; const Gnum * restrict const orgedgetax = orggrafptr->s.edgetax; Gnum * restrict const indvnhdtax = indgrafptr->vnhdtax; Gnum * restrict const indverttax = indgrafptr->s.verttax; @@ -87,7 +86,7 @@ Gnum * restrict indedlotax = indgrafptr->s.edlotax; /* Not const because location will change */ indedlosum = - indenohsum = 0; + indenlosum = 0; #endif /* HGRAPHINDUCE2L */ inddegrmax = 0; for (indvertnum = indedgenum = indgrafptr->s.baseval, indvelosum = indenohnbr = 0, indvertnnd = indgrafptr->vnohnnd; /* For all non-halo vertices */ @@ -211,5 +210,5 @@ indgrafptr->s.edgenbr = indedgenum - indgrafptr->s.baseval; /* Set actual number of edges */ indgrafptr->s.edlosum = HGRAPHINDUCE2EDLOSUM; indgrafptr->s.degrmax = inddegrmax; - indgrafptr->enohsum = HGRAPHINDUCE2ENOHSUM; + indgrafptr->enlosum = HGRAPHINDUCE2ENLOSUM; } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph_induce.h scotch-6.0.6/src/libscotch/hgraph_induce.h --- scotch-6.0.4.dfsg1/src/libscotch/hgraph_induce.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph_induce.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 4.0 : from : 10 jan 2002 **/ /** to 22 dec 2002 **/ +/** # Version 6.0 : from : 05 apr 2018 **/ +/** to 05 apr 2018 **/ /** **/ /************************************************************/ @@ -48,13 +50,9 @@ ** The function prototypes. */ -#ifndef HGRAPH_INDUCE -#define static -#endif - +#ifdef HGRAPH_INDUCE static int hgraphInduce2 (const Hgraph * const, Gnum * const, Hgraph * const, const Gnum, Gnum * const); static void hgraphInduce2L (const Hgraph * const, Gnum * const, Hgraph * const); static void hgraphInduce2U (const Hgraph * const, Gnum * const, Hgraph * const); -static Gnum hgraphInduce3 (const Hgraph * const, const VertList * const); - -#undef static +static Gnum hgraphInduce3 (const Hgraph * restrict const, const Gnum, const Gnum * restrict const); +#endif /* HGRAPH_INDUCE */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_bl.h scotch-6.0.6/src/libscotch/hgraph_order_bl.h --- scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_bl.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph_order_bl.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2009,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2009,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,6 +44,8 @@ /** to 29 dec 2004 **/ /** # Version 5.1 : from : 01 oct 2009 **/ /** to : 04 nov 2010 **/ +/** # Version 6.0 : from : 05 apr 2018 **/ +/** to : 05 apr 2018 **/ /** **/ /************************************************************/ @@ -62,10 +64,4 @@ ** The function prototypes. */ -#ifndef HGRAPH_ORDER_BL -#define static -#endif - int hgraphOrderBl (const Hgraph * const, Order * const, const Gnum, OrderCblk * const, const HgraphOrderBlParam * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_cc.c scotch-6.0.6/src/libscotch/hgraph_order_cc.c --- scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_cc.c 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph_order_cc.c 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,202 @@ +/* Copyright 2018 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : hgraph_order_cc.c **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : This module orders a subgraph by **/ +/** ordering separately its connected **/ +/** components. **/ +/** **/ +/** DATES : # Version 6.0 : from : 04 apr 2018 **/ +/** to : 06 jun 2018 **/ +/** **/ +/************************************************************/ + +/* +** The defines and includes. +*/ + +#define HGRAPH_ORDER_CC + +#include "module.h" +#include "common.h" +#include "parser.h" +#include "graph.h" +#include "order.h" +#include "hgraph.h" +#include "hgraph_order_cc.h" +#include "hgraph_order_st.h" + +/*****************************/ +/* */ +/* This is the main routine. */ +/* */ +/*****************************/ + +/* This routine performs the ordering. +** It returns: +** - 0 : if the ordering could be computed. +** - !0 : on error. +*/ + +int +hgraphOrderCc ( +const Hgraph * restrict const grafptr, +Order * restrict const ordeptr, +const Gnum ordenum, /*+ Zero-based ordering number +*/ +OrderCblk * restrict const cblkptr, /*+ Single column-block +*/ +const HgraphOrderCcParam * restrict const paraptr) +{ + Hgraph indgrafdat; + Gnum indordenum; + Gnum * restrict flagtax; /* Flag array */ + Gnum * restrict roottab; /* Array of root indices in queutab */ + Gnum rootnbr; /* Number of connected components */ + Gnum rootnum; + Gnum vrotnum; /* Number of found root vertex */ + Gnum * restrict queutab; /* Vertex queue and sub-lists */ + Gnum qhedidx; + Gnum qtalidx; + + const Gnum * restrict const verttax = grafptr->s.verttax; + const Gnum * restrict const vnhdtax = grafptr->vnhdtax; + const Gnum * restrict const edgetax = grafptr->s.edgetax; + + if (memAllocGroup ((void **) (void *) + &queutab, (size_t) ( grafptr->vnohnbr * sizeof (Gnum)), + &roottab, (size_t) ((grafptr->vnohnbr + 1) * sizeof (Gnum)), /* TRICK: +1 to store end index */ + &flagtax, (size_t) ( grafptr->vnohnbr * sizeof (Gnum)), NULL) == NULL) { + errorPrint ("hgraphOrderCc: out of memory"); + return (1); + } + memSet (flagtax, ~0, grafptr->vnohnbr * sizeof (Gnum)); /* Initialize flag array */ + flagtax -= grafptr->s.baseval; + + rootnbr = 0; + qhedidx = + qtalidx = 0; + vrotnum = grafptr->s.baseval; + while (qtalidx < grafptr->vnohnbr) { + while (flagtax[vrotnum] >= 0) /* Search for an unflagged vertex */ + vrotnum ++; + roottab[rootnbr] = qtalidx; /* Record start vertex of component */ + flagtax[vrotnum] = rootnbr; /* Flag vertex as enqueued */ + queutab[qtalidx ++] = vrotnum; /* Enqueue found root vertex */ + + while (qhedidx < qtalidx) { + Gnum vertnum; + Gnum edgenum; + + vertnum = queutab[qhedidx ++]; /* Get vertex from queue */ +#ifdef SCOTCH_DEBUG_ORDER2 + if ((vertnum < grafptr->s.baseval) || (vertnum >= grafptr->vnohnnd)) { + errorPrint ("hgraphOrderCc: internal error (1)"); + return (1); + } +#endif /* SCOTCH_DEBUG_ORDER2 */ + + for (edgenum = verttax[vertnum]; edgenum < vnhdtax[vertnum]; edgenum ++) { + Gnum vertend; + + vertend = edgetax[edgenum]; + if (flagtax[vertend] < 0) { /* If end vertex has never been enqueued */ + flagtax[vertend] = rootnbr; /* Flag end vertex */ + queutab[qtalidx ++] = vertend; /* Enqueue it */ + } +#ifdef SCOTCH_DEBUG_ORDER2 + else { + if (flagtax[vertend] != rootnbr) { + errorPrint ("hgraphOrderCc: internal error (2)"); + return (1); + } + } +#endif /* SCOTCH_DEBUG_ORDER2 */ + } + } + + rootnbr ++; /* One more connected component */ + } + roottab[rootnbr] = qtalidx; /* Record end index */ + + if (rootnbr == 1) { /* If only one connected component */ + memFree (queutab); /* Free group leader */ + return (hgraphOrderSt (grafptr, ordeptr, ordenum, cblkptr, paraptr->straptr)); /* Perform strategy on whole graph */ + } + + if ((cblkptr->cblktab = (OrderCblk *) memAlloc (rootnbr * sizeof (OrderCblk))) == NULL) { + errorPrint ("hgraphOrderCc: out of memory"); + memFree (queutab); + return (1); + } + ordeptr->treenbr += rootnbr; /* These more number of tree nodes */ + ordeptr->cblknbr += rootnbr - 1; /* These more number of column blocks */ + cblkptr->cblknbr = rootnbr; + cblkptr->typeval = ORDERCBLKDICO; /* Disconnected components node */ + for (rootnum = 0; rootnum < rootnbr; rootnum ++) { /* Initialize tree node array */ + cblkptr->cblktab[rootnum].typeval = ORDERCBLKOTHR; + cblkptr->cblktab[rootnum].vnodnbr = roottab[rootnum + 1] - roottab[rootnum]; + cblkptr->cblktab[rootnum].cblknbr = 0; + cblkptr->cblktab[rootnum].cblktab = NULL; + } + + for (rootnum = 0, indordenum = 0; rootnum < rootnbr; rootnum ++) { + Gnum indvnohnbr; + int o; + + indvnohnbr = roottab[rootnum + 1] - roottab[rootnum]; + + if (hgraphInduceList (grafptr, indvnohnbr, &queutab[roottab[rootnum]], grafptr->s.vertnbr - grafptr->vnohnbr, &indgrafdat) != 0) { + errorPrint ("hgraphOrderCc: cannot create induced graph"); + memFree (queutab); + return (1); + } + + o = hgraphOrderSt (&indgrafdat, ordeptr, indordenum, &cblkptr->cblktab[rootnum], paraptr->straptr); /* Perform strategy on induced subgraph */ + + hgraphExit (&indgrafdat); + + if (o != 0) { + errorPrint ("hgraphOrderCc: cannot compute ordering on induced graph"); + memFree (queutab); + return (1); + } + + indordenum += indvnohnbr; + } + + memFree (queutab); + + return (0); +} diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_cc.h scotch-6.0.6/src/libscotch/hgraph_order_cc.h --- scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_cc.h 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph_order_cc.h 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,61 @@ +/* Copyright 2018 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : hgraph_order_cc.h **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : This module contains the data declara- **/ +/** tions for the graph cnnected component **/ +/** ordering routine. **/ +/** **/ +/** DATES : # Version 6.0 : from : 04 apr 2018 **/ +/** to 05 apr 2018 **/ +/** **/ +/************************************************************/ + +/* +** The type and structure definitions. +*/ + +/*+ This structure holds the method parameters. +*/ + +typedef struct HgraphOrderCcParam_ { + Strat * straptr; /*+ Ordering strategy for connected components +*/ +} HgraphOrderCcParam; + +/* +** The function prototypes. +*/ + +int hgraphOrderCc (const Hgraph * const, Order * const, const Gnum, OrderCblk * const, const HgraphOrderCcParam * const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_cp.c scotch-6.0.6/src/libscotch/hgraph_order_cp.c --- scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_cp.c 2015-02-24 22:35:12.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph_order_cp.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2009,2014,2015 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2009,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -50,7 +50,7 @@ /** # Version 5.1 : from : 01 oct 2009 **/ /** to : 01 oct 2009 **/ /** # Version 6.0 : from : 04 aug 2014 **/ -/** to : 24 feb 2015 **/ +/** to : 06 jun 2018 **/ /** **/ /** NOTES : # Pre-hashing proves itself extremely **/ /** efficient, since for graphs that **/ @@ -117,10 +117,13 @@ int * restrict finehasptab; /* Pre-hashing table */ Gnum finehaspmsk; /* Mask for access to pre-hashing table */ Gnum * restrict finehsumtax; /* Array of hash values for each original vertex */ - Gnum finevertnbr; /* Number of fine vertices in compressed elimination tree */ Gnum finevertnum; /* Number of current original vertex */ Gnum finevsizsum; /* Sum of compressed vertex sizes to build fine inverse permutation */ void * dataptr; /* Flag of memory allocation success */ +#ifdef SCOTCH_DEBUG_ORDER2 + Gnum finevertnbr; /* Number of fine vertices in compressed elimination tree */ +#endif /* SCOTCH_DEBUG_ORDER2 */ + Gnum * restrict const fineperitab = fineordeptr->peritab; const Gnum * restrict const fineverttax = finegrafptr->s.verttax; @@ -409,7 +412,7 @@ coargrafdat.s.verttax[coarvertnum] = coaredgenum; /* Set end of compact vertex array */ coargrafdat.s.edlosum = coargrafdat.s.edgenbr = coaredgenum - coargrafdat.s.baseval; - coargrafdat.enohsum = + coargrafdat.enlosum = coargrafdat.enohnbr = coargrafdat.s.edgenbr - 2 * (coaredgenum - coarenohnnd); if (finevelotax != NULL) { /* If fine graph has vertex loads */ @@ -446,8 +449,10 @@ *cblkptr = coarordedat.cblktre; /* Link sub-tree to ordering */ coarordedat.cblktre.cblktab = NULL; /* Unlink sub-tree from sub-ordering */ - finevertnbr = hgraphOrderCpTree (coarordedat.peritab, /* Expand sub-tree */ - coarvsiztax, cblkptr, 0); +#ifdef SCOTCH_DEBUG_ORDER2 + finevertnbr = +#endif /* SCOTCH_DEBUG_ORDER2 */ + hgraphOrderCpTree (coarordedat.peritab, coarvsiztax, cblkptr, 0); /* Expand sub-tree */ #ifdef SCOTCH_DEBUG_ORDER2 if (finevertnbr != finegrafptr->vnohnbr) { errorPrint ("hgraphOrderCp: internal error (4)"); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_cp.h scotch-6.0.6/src/libscotch/hgraph_order_cp.h --- scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_cp.h 2015-02-24 22:35:36.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph_order_cp.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2010,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -48,7 +48,7 @@ /** # Version 5.1 : from : 04 nov 2010 **/ /** to : 04 nov 2010 **/ /** # Version 6.0 : from : 09 nov 2014 **/ -/** to 09 nov 2014 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -90,12 +90,8 @@ ** The function prototypes. */ -#ifndef HGRAPH_ORDER_CP -#define static -#endif - -int hgraphOrderCp (const Hgraph * const, Order * const, const Gnum, OrderCblk * const, const HgraphOrderCpParam * const); - +#ifdef HGRAPH_ORDER_CP static Gnum hgraphOrderCpTree (const Gnum * const, const Gnum * const, OrderCblk * const, const Gnum); +#endif /* HGRAPH_ORDER_CP */ -#undef static +int hgraphOrderCp (const Hgraph * const, Order * const, const Gnum, OrderCblk * const, const HgraphOrderCpParam * const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_gp.h scotch-6.0.6/src/libscotch/hgraph_order_gp.h --- scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_gp.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph_order_gp.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2009,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2009,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -47,6 +47,8 @@ /** to : 01 dec 2003 **/ /** # Version 5.1 : from : 01 oct 2009 **/ /** to : 04 nov 2010 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -79,14 +81,8 @@ ** The function prototypes. */ -#ifndef HGRAPH_ORDER_GP -#define static -#endif - int hgraphOrderGp (const Hgraph * const, Order * const, const Gnum, OrderCblk * const, const HgraphOrderGpParam * restrict const); -#undef static - /* ** The macro definitions. */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_hd.c scotch-6.0.6/src/libscotch/hgraph_order_hd.c --- scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_hd.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph_order_hd.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -49,6 +49,8 @@ /** to : 23 jan 2004 **/ /** # Version 5.0 : from : 10 sep 2007 **/ /** to : 10 sep 2007 **/ +/** # Version 6.0 : from : 30 apr 2018 **/ +/** to : 30 apr 2018 **/ /** **/ /************************************************************/ @@ -128,7 +130,7 @@ return (1); } - hgraphOrderHxFill (grafptr, petab, lentab, iwtab, elentab, &pfree); + hgraphOrderHxFill (grafptr, petab, lentab, iwtab, nvartab, elentab, &pfree); hallOrderHdHalmd (n, 0, iwlen, petab, pfree, /* No elements here */ lentab, iwtab, nvartab, elentab, lasttab, &ncmpa, diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_hd.h scotch-6.0.6/src/libscotch/hgraph_order_hd.h --- scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_hd.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph_order_hd.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2009 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2009,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -48,6 +48,8 @@ /** to : 24 jan 2004 **/ /** # Version 5.1 : from : 01 oct 2009 **/ /** to : 01 oct 2009 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -73,10 +75,4 @@ ** The function prototypes. */ -#ifndef HGRAPH_ORDER_HD -#define static -#endif - int hgraphOrderHd (const Hgraph * restrict const, Order * restrict const, const Gnum, OrderCblk * restrict const, const HgraphOrderHdParam * restrict const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_hf.c scotch-6.0.6/src/libscotch/hgraph_order_hf.c --- scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_hf.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph_order_hf.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -47,6 +47,8 @@ /** to : 24 jan 2004 **/ /** # Version 5.0 : from : 10 sep 2007 **/ /** to : 10 sep 2007 **/ +/** # Version 6.0 : from : 30 apr 2018 **/ +/** to : 30 apr 2018 **/ /** **/ /************************************************************/ @@ -130,7 +132,7 @@ return (1); } - hgraphOrderHxFill (grafptr, petab, lentab, iwtab, elentab, &pfree); + hgraphOrderHxFill (grafptr, petab, lentab, iwtab, nvartab, elentab, &pfree); hallOrderHfR2hamdf4 (n, 0, nbbuck, iwlen, petab, pfree, /* No elements here */ lentab, iwtab, nvartab, elentab, lasttab, &ncmpa, diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_hf.h scotch-6.0.6/src/libscotch/hgraph_order_hf.h --- scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_hf.h 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph_order_hf.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2009 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2009,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -46,6 +46,8 @@ /** to : 24 jan 2004 **/ /** # Version 5.1 : from : 01 oct 2009 **/ /** to : 01 oct 2009 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -71,10 +73,4 @@ ** The function prototypes. */ -#ifndef HGRAPH_ORDER_HF -#define static -#endif - int hgraphOrderHf (const Hgraph * const, Order * const, const Gnum, OrderCblk * const, const HgraphOrderHfParam * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_hx.c scotch-6.0.6/src/libscotch/hgraph_order_hx.c --- scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_hx.c 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph_order_hx.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 4.0 : from : 23 jan 2004 **/ /** to : 28 jan 2004 **/ +/** # Version 6.0 : from : 30 apr 2018 **/ +/** to : 25 jun 2018 **/ /** **/ /************************************************************/ @@ -70,26 +72,30 @@ void hgraphOrderHxFill ( -const Hgraph * restrict const grafptr, -Gnum * restrict const petab, -Gnum * restrict const lentab, -Gnum * restrict const iwtab, -Gnum * restrict const elentab, -Gnum * restrict const pfreptr) +const Hgraph * restrict const grafptr, +Gnum * restrict const petab, +Gnum * restrict const lentab, +Gnum * restrict const iwtab, +Gnum * restrict const nvartab, +Gnum * restrict const elentab, +Gnum * restrict const pfreptr) { - Gnum * restrict petax; - Gnum * restrict iwtax; - Gnum * restrict lentax; - Gnum * restrict elentax; - Gnum vertadj; /* Index adjustment for vertices */ - Gnum vertnum; - Gnum vertnew; - Gnum edgenew; - - petax = petab - 1; /* Base HAMF arrays at base 1 */ - iwtax = iwtab - 1; - lentax = lentab - 1; - elentax = elentab - 1; + Gnum vertadj; /* Index adjustment for vertices */ + Gnum vertnum; + Gnum vertnew; + Gnum edgenew; + + Gnum * restrict const petax = petab - 1; /* Base HAMF arrays at base 1 */ + Gnum * restrict const iwtax = iwtab - 1; + Gnum * restrict const lentax = lentab - 1; + Gnum * restrict const nvartax = nvartab - 1; + Gnum * restrict const elentax = elentab - 1; + const Gnum * restrict const verttax = grafptr->s.verttax; + const Gnum * restrict const vendtax = grafptr->s.vendtax; +#if 0 /* TODO when weighted vertices will be managed */ + const Gnum * restrict const velotax = grafptr->s.velotax; +#endif + const Gnum * restrict const edgetax = grafptr->s.edgetax; vertadj = 1 - grafptr->s.baseval; for (vertnum = grafptr->s.baseval, vertnew = edgenew = 1; /* Process non-halo vertices */ @@ -97,23 +103,32 @@ Gnum degrval; Gnum edgenum; - degrval = grafptr->s.vendtax[vertnum] - grafptr->s.verttax[vertnum]; + degrval = vendtax[vertnum] - verttax[vertnum]; petax[vertnew] = edgenew; lentax[vertnew] = degrval; elentax[vertnew] = degrval; +#if 0 /* TODO when weighted vertices will be managed */ + nvartax[vertnew] = (velotax != NULL) ? velotax[vertnum] : 1; +#else + nvartax[vertnew] = 1; +#endif - for (edgenum = grafptr->s.verttax[vertnum]; - edgenum < grafptr->s.vendtax[vertnum]; edgenum ++, edgenew ++) - iwtax[edgenew] = grafptr->s.edgetax[edgenum] + vertadj; + for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++, edgenew ++) + iwtax[edgenew] = edgetax[edgenum] + vertadj; } for ( ; vertnum < grafptr->s.vertnnd; vertnum ++, vertnew ++) { /* Process halo vertices */ Gnum degrval; Gnum edgenum; - degrval = grafptr->s.verttax[vertnum] - grafptr->s.vendtax[vertnum]; + degrval = verttax[vertnum] - vendtax[vertnum]; /* Negative degree */ petax[vertnew] = edgenew; lentax[vertnew] = (degrval != 0) ? degrval : (-1 - grafptr->s.vertnbr); elentax[vertnew] = 0; +#if 0 /* TODO when weighted vertices will be managed */ + nvartax[vertnew] = (velotax != NULL) ? velotax[vertnum] : 1; +#else + nvartax[vertnew] = 1; +#endif for (edgenum = grafptr->s.verttax[vertnum]; edgenum < grafptr->s.vendtax[vertnum]; edgenum ++, edgenew ++) diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_hx.h scotch-6.0.6/src/libscotch/hgraph_order_hx.h --- scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_hx.h 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph_order_hx.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,6 +42,8 @@ /** **/ /** DATES : # Version 4.0 : from : 24 jan 2004 **/ /** to 24 jan 2004 **/ +/** # Version 6.0 : from : 30 apr 2018 **/ +/** to : 03 jun 2018 **/ /** **/ /************************************************************/ @@ -49,10 +51,4 @@ ** The function prototypes. */ -#ifndef HGRAPH_ORDER_HX -#define static -#endif - -void hgraphOrderHxFill (const Hgraph * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const); - -#undef static +void hgraphOrderHxFill (const Hgraph * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_kp.c scotch-6.0.6/src/libscotch/hgraph_order_kp.c --- scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_kp.c 2014-08-23 10:14:16.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph_order_kp.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2012,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,7 +41,7 @@ /** DATES : # Version 5.0 : from : 17 oct 2012 **/ /** to : 17 oct 2012 **/ /** # Version 6.0 : from : 23 aug 2014 **/ -/** to : 23 aug 2014 **/ +/** to : 15 aug 2016 **/ /** **/ /************************************************************/ @@ -105,6 +105,7 @@ return (1); } + memSet (&actgrafdat, 0, sizeof (Kgraph)); /* Allow for freeing on subsequent error */ hgraphUnhalo (grafptr, &actgrafdat.s); /* Extract non-halo part of given graph */ actgrafdat.s.vnumtax = NULL; /* Do not keep numbers from nested dissection */ @@ -114,6 +115,7 @@ (kgraphMapSt (&actgrafdat, paraptr->strat) != 0)) { errorPrint ("hgraphOrderKp: cannot compute partition"); memFree (cblkptr->cblktab); + kgraphExit (&actgrafdat); cblkptr->cblktab = NULL; return (1); } @@ -123,6 +125,7 @@ &parttax, (size_t) (grafptr->vnohnbr * sizeof (Anum)), NULL) == NULL) { errorPrint ("hgraphOrderKp: out of memory (2)"); memFree (cblkptr->cblktab); + kgraphExit (&actgrafdat); cblkptr->cblktab = NULL; return (1); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_kp.h scotch-6.0.6/src/libscotch/hgraph_order_kp.h --- scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_kp.h 2012-10-17 14:26:06.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph_order_kp.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,7 +40,7 @@ /** ordering module. **/ /** **/ /** DATES : # Version 6.0 : from : 17 oct 2012 **/ -/** to 17 oct 2012 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -59,10 +59,4 @@ ** The function prototypes. */ -#ifndef HGRAPH_ORDER_KP -#define static -#endif - int hgraphOrderKp (const Hgraph * const, Order * const, const Gnum, OrderCblk * const, const HgraphOrderKpParam * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_nd.c scotch-6.0.6/src/libscotch/hgraph_order_nd.c --- scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_nd.c 2014-08-05 16:20:41.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph_order_nd.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010,2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2010,2012,2014,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -49,7 +49,7 @@ /** # Version 5.1 : from : 24 oct 2010 **/ /** to 24 oct 2010 **/ /** # Version 6.0 : from : 17 oct 2012 **/ -/** to 05 aug 2014 **/ +/** to 23 may 2018 **/ /** **/ /************************************************************/ @@ -110,7 +110,6 @@ } memSet (vspgrafdat.parttax, 0, vspgrafdat.s.vertnbr * sizeof (GraphPart)); /* Set all vertices to part 0 */ vspgrafdat.parttax -= vspgrafdat.s.baseval; - vspgrafdat.fronnbr = 0; vspgrafdat.compload[0] = vspgrafdat.s.velosum; vspgrafdat.compload[1] = 0; vspgrafdat.compload[2] = 0; @@ -200,7 +199,7 @@ cblkptr->cblktab[2].cblknbr = 0; cblkptr->cblktab[2].cblktab = NULL; - if (graphInduceList (&grafptr->s, &vsplisttab[2], &indgrafdat.s) != 0) { /* Perform non-halo induction for separator, as it will get highest numbers */ + if (graphInduceList (&grafptr->s, vsplisttab[2].vnumnbr, vsplisttab[2].vnumtab, &indgrafdat.s) != 0) { /* Perform non-halo induction for separator, as it will get highest numbers */ errorPrint ("hgraphOrderNd: cannot build induced subgraph (1)"); memFree (vspgrafdat.frontab); /* Free remaining space */ return (1); @@ -210,7 +209,7 @@ indgrafdat.vnhdtax = indgrafdat.s.vendtax; indgrafdat.vnlosum = indgrafdat.s.velosum; indgrafdat.enohnbr = indgrafdat.s.edgenbr; - indgrafdat.enohsum = indgrafdat.s.edlosum; + indgrafdat.enlosum = indgrafdat.s.edlosum; indgrafdat.levlnum = grafptr->levlnum; /* Separator graph is at level of original graph */ o = hgraphOrderSt (&indgrafdat, ordeptr, ordenum + vsplisttab[0].vnumnbr + vsplisttab[1].vnumnbr, @@ -224,7 +223,7 @@ o = 0; /* No separator ordering computed */ } if (o == 0) { - if ((hgraphInduceList (grafptr, &vsplisttab[0], vsplisttab[2].vnumnbr + grafptr->s.vertnbr - grafptr->vnohnbr, &indgrafdat)) != 0) { + if ((hgraphInduceList (grafptr, vsplisttab[0].vnumnbr, vsplisttab[0].vnumtab, vsplisttab[2].vnumnbr + grafptr->s.vertnbr - grafptr->vnohnbr, &indgrafdat)) != 0) { errorPrint ("hgraphOrderNd: cannot build induced subgraph (2)"); memFree (vspgrafdat.frontab); /* Free remaining space */ return (1); @@ -233,7 +232,7 @@ hgraphExit (&indgrafdat); } if (o == 0) { - if ((hgraphInduceList (grafptr, &vsplisttab[1], vsplisttab[2].vnumnbr + grafptr->s.vertnbr - grafptr->vnohnbr, &indgrafdat)) != 0) { + if ((hgraphInduceList (grafptr, vsplisttab[1].vnumnbr, vsplisttab[1].vnumtab, vsplisttab[2].vnumnbr + grafptr->s.vertnbr - grafptr->vnohnbr, &indgrafdat)) != 0) { errorPrint ("hgraphOrderNd: cannot build induced subgraph (3)"); memFree (vspgrafdat.frontab); /* Free remaining space */ return (1); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_nd.h scotch-6.0.6/src/libscotch/hgraph_order_nd.h --- scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_nd.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph_order_nd.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -47,6 +47,8 @@ /** to 24 apr 2004 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to 04 nov 2010 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -66,10 +68,4 @@ ** The function prototypes. */ -#ifndef HGRAPH_ORDER_ND -#define static -#endif - int hgraphOrderNd (const Hgraph * const, Order * const, const Gnum, OrderCblk * const, const HgraphOrderNdParam * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_si.h scotch-6.0.6/src/libscotch/hgraph_order_si.h --- scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_si.h 2012-07-01 17:02:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph_order_si.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,6 +45,8 @@ /** to 02 oct 1998 **/ /** # Version 4.0 : from : 19 dec 2001 **/ /** to 11 dec 2002 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -52,10 +54,4 @@ ** The function prototypes. */ -#ifndef HGRAPH_ORDER_SI -#define static -#endif - int hgraphOrderSi (const Hgraph * const, Order * const, const Gnum, OrderCblk * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_st.c scotch-6.0.6/src/libscotch/hgraph_order_st.c --- scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_st.c 2012-10-17 14:26:21.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph_order_st.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -48,7 +48,7 @@ /** # Version 5.0 : from : 31 may 2008 **/ /** to 31 may 2008 **/ /** # Version 6.0 : from : 17 oct 2012 **/ -/** to 17 oct 2012 **/ +/** to 05 apr 2018 **/ /** **/ /************************************************************/ @@ -67,6 +67,7 @@ #include "order.h" #include "hgraph.h" #include "hgraph_order_bl.h" +#include "hgraph_order_cc.h" #include "hgraph_order_cp.h" #include "hgraph_order_gp.h" #include "hgraph_order_hd.h" @@ -92,6 +93,11 @@ } hgraphorderstdefaultbl = { { &stratdummy, 8 } }; static union { + HgraphOrderCcParam param; + StratNodeMethodData padding; +} hgraphorderstdefaultcc = { { &stratdummy } }; + +static union { HgraphOrderCpParam param; StratNodeMethodData padding; } hgraphorderstdefaultcp = { { 0.70L, &stratdummy, &stratdummy } }; @@ -123,6 +129,7 @@ static StratMethodTab hgraphorderstmethtab[] = { /* Graph ordering methods array */ { HGRAPHORDERSTMETHBL, "b", hgraphOrderBl, &hgraphorderstdefaultbl }, + { HGRAPHORDERSTMETHCC, "o", hgraphOrderCc, &hgraphorderstdefaultcc }, { HGRAPHORDERSTMETHCP, "c", hgraphOrderCp, &hgraphorderstdefaultcp }, { HGRAPHORDERSTMETHGP, "g", hgraphOrderGp, &hgraphorderstdefaultgp }, { HGRAPHORDERSTMETHHD, "d", hgraphOrderHd, &hgraphorderstdefaulthd }, @@ -141,6 +148,10 @@ (byte *) &hgraphorderstdefaultbl.param, (byte *) &hgraphorderstdefaultbl.param.cblkmin, NULL }, + { HGRAPHORDERSTMETHCC, STRATPARAMSTRAT, "strat", + (byte *) &hgraphorderstdefaultcc.param, + (byte *) &hgraphorderstdefaultcc.param.straptr, + (void *) &hgraphorderststratab }, { HGRAPHORDERSTMETHCP, STRATPARAMDOUBLE, "rat", (byte *) &hgraphorderstdefaultcp.param, (byte *) &hgraphorderstdefaultcp.param.comprat, diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_st.h scotch-6.0.6/src/libscotch/hgraph_order_st.h --- scotch-6.0.4.dfsg1/src/libscotch/hgraph_order_st.h 2012-10-17 13:59:57.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hgraph_order_st.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -46,7 +46,7 @@ /** # Version 4.0 : from : 29 dec 2001 **/ /** to : 15 jan 2003 **/ /** # Version 6.0 : from : 17 oct 2012 **/ -/** to : 17 oct 2012 **/ +/** to : 05 apr 2018 **/ /** **/ /************************************************************/ @@ -58,6 +58,7 @@ typedef enum HgraphOrderStMethodType_ { HGRAPHORDERSTMETHBL = 0, /*+ Block splitting post-processing +*/ + HGRAPHORDERSTMETHCC, /*+ Splitting of connected components +*/ HGRAPHORDERSTMETHCP, /*+ Graph compression +*/ HGRAPHORDERSTMETHGP, /*+ Gibbs-Poole-Stockmeyer +*/ HGRAPHORDERSTMETHHD, /*+ Block Halo Approximate Minimum Degree +*/ @@ -78,10 +79,4 @@ ** The function prototypes. */ -#ifndef HGRAPH_ORDER_ST -#define static -#endif - int hgraphOrderSt (const Hgraph * restrict const, Order * restrict const, const Gnum, OrderCblk * restrict const, const Strat * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hmesh.h scotch-6.0.6/src/libscotch/hmesh.h --- scotch-6.0.4.dfsg1/src/libscotch/hmesh.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hmesh.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 4.0 : from : 31 dec 2001 **/ /** to 29 apr 2004 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -92,10 +94,6 @@ ** The function prototypes. */ -#ifndef HMESH -#define static -#endif - void hmeshExit (Hmesh * const); Gnum hmeshBase (Hmesh * const, const Gnum); #ifdef HGRAPH_H @@ -104,5 +102,3 @@ int hmeshInducePart (const Hmesh * const, const GraphPart * const, const GraphPart, const Gnum, const Gnum, const Gnum, Hmesh * const); int hmeshMesh (const Hmesh * restrict const, Mesh * restrict const); int hmeshCheck (const Hmesh *); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hmesh_hgraph.c scotch-6.0.6/src/libscotch/hmesh_hgraph.c --- scotch-6.0.4.dfsg1/src/libscotch/hmesh_hgraph.c 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hmesh_hgraph.c 2018-07-14 15:24:49.000000000 +0000 @@ -154,6 +154,7 @@ if ((grafptr->s.edgetax = memAlloc (edgemax * sizeof (Gnum))) == NULL) { errorPrint ("hmeshHgraph: out of memory (3)"); hgraphFree (grafptr); + memFree (hashtab); return (1); } grafptr->s.edgetax -= grafptr->s.baseval; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_bl.h scotch-6.0.6/src/libscotch/hmesh_order_bl.h --- scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_bl.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hmesh_order_bl.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2009,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2009,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,6 +42,8 @@ /** to 04 jan 2005 **/ /** # Version 5.1 : from : 01 oct 2009 **/ /** to : 04 nov 2010 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -60,10 +62,4 @@ ** The function prototypes. */ -#ifndef HMESH_ORDER_BL -#define static -#endif - int hmeshOrderBl (const Hmesh * const, Order * const, const Gnum, OrderCblk * const, const HmeshOrderBlParam * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_cp.c scotch-6.0.6/src/libscotch/hmesh_order_cp.c --- scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_cp.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hmesh_order_cp.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to 05 jan 2005 **/ /** # Version 5.0 : from : 25 jul 2007 **/ /** to : 12 sep 2007 **/ +/** # Version 6.0 : from : 06 jun 2018 **/ +/** to : 06 jun 2018 **/ /** **/ /************************************************************/ @@ -98,7 +100,6 @@ int * restrict finehasptab; /* Pre-hashing table */ Gnum finehaspmsk; /* Mask for access to pre-hashing table */ Gnum * restrict finehsumtax; /* Array of hash values for each original vertex */ - Gnum finevertnbr; /* Number of fine vertices in compressed elimination tree */ Gnum finevsizsum; /* Sum of compressed vertex sizes to build fine inverse permutation */ Gnum coarvsizsiz; /* Size of array of sizes of coarse nodes */ Gnum coarvelmnbr; /* Number of coarse element vertices */ @@ -112,6 +113,9 @@ Gnum coarvnodnnd; Gnum coardegrmax; Gnum coarvnodnum; +#ifdef SCOTCH_DEBUG_ORDER2 + Gnum finevertnbr; /* Number of fine vertices in compressed elimination tree */ +#endif /* SCOTCH_DEBUG_ORDER2 */ if (finemeshptr->vnohnbr != finemeshptr->m.vnodnbr) { errorPrint ("hmeshOrderCp: halo meshes not supported yet"); @@ -384,8 +388,11 @@ *cblkptr = coarordedat.cblktre; /* Link sub-tree to ordering */ coarordedat.cblktre.cblktab = NULL; /* Unlink sub-tree from sub-ordering */ - finevertnbr = hmeshOrderCpTree (coarordedat.peritab, /* Expand sub-tree */ - coarvsiztax, cblkptr, 0); + +#ifdef SCOTCH_DEBUG_ORDER2 + finevertnbr = +#endif /* SCOTCH_DEBUG_ORDER2 */ + hmeshOrderCpTree (coarordedat.peritab, coarvsiztax, cblkptr, 0); /* Expand sub-tree */ #ifdef SCOTCH_DEBUG_ORDER2 if (finevertnbr != finemeshptr->m.vnodnbr) { errorPrint ("hmeshOrderCp: internal error (5)"); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_cp.h scotch-6.0.6/src/libscotch/hmesh_order_cp.h --- scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_cp.h 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hmesh_order_cp.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,6 +42,8 @@ /** to 08 feb 2004 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to 04 nov 2010 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -83,12 +85,8 @@ ** The function prototypes. */ -#ifndef HMESH_ORDER_CP -#define static -#endif - -int hmeshOrderCp (const Hmesh * const, Order * const, const Gnum, OrderCblk * const, const HmeshOrderCpParam * const); - +#ifdef HMESH_ORDER_CP static Gnum hmeshOrderCpTree (const Gnum * const, const Gnum * const, OrderCblk * const, Gnum); +#endif /* HMESH_ORDER_CP */ -#undef static +int hmeshOrderCp (const Hmesh * const, Order * const, const Gnum, OrderCblk * const, const HmeshOrderCpParam * const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_gp.h scotch-6.0.6/src/libscotch/hmesh_order_gp.h --- scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_gp.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hmesh_order_gp.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2009 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2009,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -47,6 +47,8 @@ /** to : 01 dec 2003 **/ /** # Version 5.1 : from : 01 oct 2009 **/ /** to : 01 oct 2009 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -79,14 +81,8 @@ ** The function prototypes. */ -#ifndef HMESH_ORDER_GP -#define static -#endif - int hmeshOrderGp (const Hmesh * const, Order * const, const Gnum, OrderCblk * const, const HmeshOrderGpParam * restrict const); -#undef static - /* ** The macro definitions. */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_gr.h scotch-6.0.6/src/libscotch/hmesh_order_gr.h --- scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_gr.h 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hmesh_order_gr.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 4.0 : from : 30 nov 2003 **/ /** to : 30 nov 2003 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -58,10 +60,4 @@ ** The function prototypes. */ -#ifndef HMESH_ORDER_GR -#define static -#endif - int hmeshOrderGr (const Hmesh * const, Order * restrict const, const Gnum, OrderCblk * restrict const, const HmeshOrderGrParam * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_hd.c scotch-6.0.6/src/libscotch/hmesh_order_hd.c --- scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_hd.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hmesh_order_hd.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,6 +45,8 @@ /** to : 24 jan 2004 **/ /** # Version 5.0 : from : 12 sep 2007 **/ /** to : 12 sep 2007 **/ +/** # Version 6.0 : from : 30 apr 2018 **/ +/** to : 30 apr 2018 **/ /** **/ /************************************************************/ @@ -126,7 +128,7 @@ return (1); } - hmeshOrderHxFill (meshptr, petab, lentab, iwtab, elentab, &pfree); + hmeshOrderHxFill (meshptr, petab, lentab, iwtab, nvartab, elentab, &pfree); hallOrderHdHalmd (n, meshptr->m.velmnbr, iwlen, petab, pfree, lentab, iwtab, nvartab, elentab, lasttab, &ncmpa, diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_hd.h scotch-6.0.6/src/libscotch/hmesh_order_hd.h --- scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_hd.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hmesh_order_hd.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2009 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2009,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,6 +44,8 @@ /** to 10 dec 2003 **/ /** # Version 5.1 : from : 01 oct 2009 **/ /** to : 01 oct 2009 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -69,10 +71,4 @@ ** The function prototypes. */ -#ifndef HMESH_ORDER_HD -#define static -#endif - int hmeshOrderHd (const Hmesh * restrict const, Order * restrict const, const Gnum, OrderCblk * restrict const, const HmeshOrderHdParam * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_hf.c scotch-6.0.6/src/libscotch/hmesh_order_hf.c --- scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_hf.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hmesh_order_hf.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,6 +45,8 @@ /** to : 09 dec 2003 **/ /** # Version 5.0 : from : 12 sep 2007 **/ /** to : 12 sep 2007 **/ +/** # Version 6.0 : from : 30 apr 2018 **/ +/** to : 30 apr 2018 **/ /** **/ /************************************************************/ @@ -130,7 +132,7 @@ return (1); } - hmeshOrderHxFill (meshptr, petab, lentab, iwtab, elentab, &pfree); + hmeshOrderHxFill (meshptr, petab, lentab, iwtab, nvartab, elentab, &pfree); hallOrderHfR2hamdf4 (n, meshptr->m.velmnbr, nbbuck, iwlen, petab, pfree, lentab, iwtab, nvartab, elentab, lasttab, &ncmpa, diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_hf.h scotch-6.0.6/src/libscotch/hmesh_order_hf.h --- scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_hf.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hmesh_order_hf.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2009 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2009,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,6 +44,8 @@ /** to 10 dec 2003 **/ /** # Version 5.1 : from : 01 oct 2009 **/ /** to : 01 oct 2009 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -69,10 +71,4 @@ ** The function prototypes. */ -#ifndef HMESH_ORDER_HF -#define static -#endif - int hmeshOrderHf (const Hmesh * restrict const, Order * restrict const, const Gnum, OrderCblk * restrict const, const HmeshOrderHfParam * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_hx.c scotch-6.0.6/src/libscotch/hmesh_order_hx.c --- scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_hx.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hmesh_order_hx.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 4.0 : from : 09 dec 2003 **/ /** to : 24 jan 2004 **/ +/** # Version 6.0 : from : 30 apr 2018 **/ +/** to : 25 jun 2018 **/ /** **/ /************************************************************/ @@ -71,17 +73,14 @@ int hmeshOrderHxFill ( -const Hmesh * restrict const meshptr, -Gnum * restrict const petab, -Gnum * restrict const lentab, -Gnum * restrict const iwtab, -Gnum * restrict const elentab, -Gnum * restrict const pfreptr) +const Hmesh * restrict const meshptr, +Gnum * restrict const petab, +Gnum * restrict const lentab, +Gnum * restrict const iwtab, +Gnum * restrict const nvartab, +Gnum * restrict const elentab, +Gnum * restrict const pfreptr) { - Gnum * restrict petax; - Gnum * restrict iwtax; - Gnum * restrict lentax; - Gnum * restrict elentax; HmeshOrderHxHash * restrict hashtab; /* Neighbor hash table */ Gnum hashsiz; Gnum hashmsk; @@ -94,6 +93,18 @@ Gnum vertnum; Gnum edgenum; + Gnum * restrict const petax = petab - 1; /* Base HAMF arrays at base 1 */ + Gnum * restrict const iwtax = iwtab - 1; + Gnum * restrict const lentax = lentab - 1; + Gnum * restrict const nvartax = nvartab - 1; + Gnum * restrict const elentax = elentab - 1; + const Gnum * restrict const verttax = meshptr->m.verttax; + const Gnum * restrict const vendtax = meshptr->m.vendtax; +#if 0 /* TODO when weighted vertices will be managed */ + const Gnum * restrict const velotax = meshptr->m.velotax; +#endif + const Gnum * restrict const edgetax = meshptr->m.edgetax; + n = meshptr->m.velmnbr + meshptr->m.vnodnbr; for (hashsiz = 16, degrval = meshptr->m.degrmax * (meshptr->m.degrmax - 1); /* Compute hash table size */ hashsiz < degrval; hashsiz <<= 1) ; @@ -106,33 +117,33 @@ } memSet (hashtab, ~0, hashsiz * sizeof (HmeshOrderHxHash)); - petax = petab - 1; /* Base HAMF arrays at base 1 */ - iwtax = iwtab - 1; - lentax = lentab - 1; - elentax = elentab - 1; - velmadj = 1 + meshptr->m.vnodnbr - meshptr->m.velmbas; for (vnodnum = meshptr->m.vnodbas, vertnum = edgenum = 1; /* Copy non-halo node data with base 1 */ vnodnum < meshptr->vnohnnd; vertnum ++, vnodnum ++) { Gnum enodnum; Gnum nghbnbr; - petax[vertnum] = edgenum; - lentax[vertnum] = meshptr->m.vendtax[vnodnum] - meshptr->m.verttax[vnodnum]; + petax[vertnum] = edgenum; + lentax[vertnum] = vendtax[vnodnum] - verttax[vnodnum]; +#if 0 /* TODO when weighted vertices will be managed */ + nvartax[vertnum] = (velotax != NULL) ? velotax[vnodnum] : 1; +#else + nvartax[vertnum] = 1; +#endif - for (enodnum = meshptr->m.verttax[vnodnum], nghbnbr = -1; /* -1 since loop edge will be processed in the main loop */ - enodnum < meshptr->m.vendtax[vnodnum]; enodnum ++) { + for (enodnum = verttax[vnodnum], nghbnbr = -1; /* -1 since loop edge will be processed in the main loop */ + enodnum < vendtax[vnodnum]; enodnum ++) { Gnum velmnum; Gnum eelmnum; - velmnum = meshptr->m.edgetax[enodnum]; + velmnum = edgetax[enodnum]; iwtax[edgenum ++] = velmnum + velmadj; /* Adjust end element index */ - for (eelmnum = meshptr->m.verttax[velmnum]; eelmnum < meshptr->m.vendtax[velmnum]; eelmnum ++) { + for (eelmnum = verttax[velmnum]; eelmnum < vendtax[velmnum]; eelmnum ++) { Gnum vnodend; Gnum hnodend; - vnodend = meshptr->m.edgetax[eelmnum]; + vnodend = edgetax[eelmnum]; for (hnodend = (vnodend * HMESHORDERHXHASHPRIME) & hashmsk; ; hnodend = (hnodend + 1) & hashmsk) { if (hashtab[hnodend].vertnum != vnodnum) { @@ -152,14 +163,19 @@ Gnum degrval; Gnum enodnum; - degrval = meshptr->m.verttax[vnodnum] - meshptr->m.vendtax[vnodnum]; + degrval = verttax[vnodnum] - vendtax[vnodnum]; petax[vertnum] = edgenum; lentax[vertnum] = (degrval != 0) ? degrval : - (n + 1); elentax[vertnum] = 0; - - for (enodnum = meshptr->m.verttax[vnodnum]; - enodnum < meshptr->m.vendtax[vnodnum]; enodnum ++) - iwtax[edgenum ++] = meshptr->m.edgetax[enodnum] + velmadj; /* Adjust end element index */ +#if 0 /* TODO when weighted vertices will be managed */ + nvartax[vertnum] = (velotax != NULL) ? velotax[vnodnum] : 1; +#else + nvartax[vertnum] = 1; +#endif + + for (enodnum = verttax[vnodnum]; + enodnum < vendtax[vnodnum]; enodnum ++) + iwtax[edgenum ++] = edgetax[enodnum] + velmadj; /* Adjust end element index */ } vnodadj = 1 - meshptr->m.vnodbas; /* Base nodes at 1 */ @@ -169,10 +185,15 @@ petax[vertnum] = edgenum; lentax[vertnum] = meshptr->m.vendtax[velmnum] - meshptr->m.verttax[velmnum]; elentax[vertnum] = - (n + 1); - - for (eelmnum = meshptr->m.verttax[velmnum]; - eelmnum < meshptr->m.vendtax[velmnum]; eelmnum ++) - iwtax[edgenum ++] = meshptr->m.edgetax[eelmnum] + vnodadj; /* Adjust end node index */ +#if 0 /* TODO when weighted vertices will be managed */ + nvartax[vertnum] = (velotax != NULL) ? velotax[vnodnum] : 1; +#else + nvartax[vertnum] = 1; +#endif + + for (eelmnum = verttax[velmnum]; + eelmnum < vendtax[velmnum]; eelmnum ++) + iwtax[edgenum ++] = edgetax[eelmnum] + vnodadj; /* Adjust end node index */ } *pfreptr = edgenum; /* Set index to first free area */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_hx.h scotch-6.0.6/src/libscotch/hmesh_order_hx.h --- scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_hx.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hmesh_order_hx.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,6 +42,8 @@ /** **/ /** DATES : # Version 4.0 : from : 09 dec 2003 **/ /** to 09 dec 2003 **/ +/** # Version 6.0 : from : 30 apr 2018 **/ +/** to : 07 jun 2018 **/ /** **/ /************************************************************/ @@ -67,10 +69,4 @@ ** The function prototypes. */ -#ifndef HMESH_ORDER_HX -#define static -#endif - -int hmeshOrderHxFill (const Hmesh * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const); - -#undef static +int hmeshOrderHxFill (const Hmesh * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_nd.c scotch-6.0.6/src/libscotch/hmesh_order_nd.c --- scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_nd.c 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hmesh_order_nd.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2008,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,6 +44,8 @@ /** to : 12 sep 2007 **/ /** # Version 5.1 : from : 09 nov 2008 **/ /** to : 09 nov 2008 **/ +/** # Version 6.0 : from : 15 may 2018 **/ +/** to : 15 may 2018 **/ /** **/ /************************************************************/ @@ -200,5 +202,5 @@ vmeshExit (&nspmeshdat); - return (0); + return (o); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_nd.h scotch-6.0.6/src/libscotch/hmesh_order_nd.h --- scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_nd.h 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hmesh_order_nd.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 4.0 : from : 06 jan 2002 **/ /** to 23 jan 2004 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -60,10 +62,4 @@ ** The function prototypes. */ -#ifndef HMESH_ORDER_ND -#define static -#endif - int hmeshOrderNd (const Hmesh * restrict const, Order * restrict const, const Gnum, OrderCblk * restrict const, const HmeshOrderNdParam * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_si.h scotch-6.0.6/src/libscotch/hmesh_order_si.h --- scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_si.h 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hmesh_order_si.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 4.0 : from : 01 jan 2002 **/ /** to 28 sep 2002 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -48,10 +50,4 @@ ** The function prototypes. */ -#ifndef HMESH_ORDER_SI -#define static -#endif - int hmeshOrderSi (const Hmesh * const, Order * const, const Gnum, OrderCblk * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_st.h scotch-6.0.6/src/libscotch/hmesh_order_st.h --- scotch-6.0.4.dfsg1/src/libscotch/hmesh_order_st.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/hmesh_order_st.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 4.0 : from : 28 sep 2002 **/ /** to : 08 feb 2004 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -72,10 +74,4 @@ ** The function prototypes. */ -#ifndef HMESH_ORDER_ST -#define static -#endif - int hmeshOrderSt (const Hmesh * restrict const, Order * restrict const, const Gnum, OrderCblk * restrict const, const Strat * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kdgraph.h scotch-6.0.6/src/libscotch/kdgraph.h --- scotch-6.0.4.dfsg1/src/libscotch/kdgraph.h 2012-08-29 16:39:21.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kdgraph.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2008,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2008,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** DATES : # Version 5.1 : from : 31 mar 2008 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 29 aug 2012 **/ -/** to 29 aug 2012 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -71,10 +71,6 @@ ** The function prototypes. */ -#ifndef KDGRAPH -#define static -#endif - int kdgraphInit (Kdgraph * const, const Dgraph * restrict const, Dmapping * restrict const); void kdgraphExit (Kdgraph * const); int kdgraphFold (const Kdgraph *, const int, Kdgraph * const); @@ -82,5 +78,3 @@ #ifdef KGRAPH_H int kdgraphGather (Kdgraph *, Kgraph *); #endif /* KGRAPH_H */ - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kdgraph_map_rb.c scotch-6.0.6/src/libscotch/kdgraph_map_rb.c --- scotch-6.0.4.dfsg1/src/libscotch/kdgraph_map_rb.c 2012-10-10 15:18:19.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kdgraph_map_rb.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2008,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2008,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,7 +43,7 @@ /** DATES : # Version 5.1 : from : 16 apr 2008 **/ /** to 01 jul 2008 **/ /** # Version 6.0 : from : 03 oct 2012 **/ -/** to 10 oct 2012 **/ +/** to 15 may 2018 **/ /** **/ /************************************************************/ @@ -95,7 +95,8 @@ memFree (fragptr->parttab); memFree (fragptr->vnumtab); } - return (NULL); + memFree (fragptr); + return (NULL); } fragptr->vertnbr = vertnbr; fragptr->domnnbr = domnnbr; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kdgraph_map_rb.h scotch-6.0.6/src/libscotch/kdgraph_map_rb.h --- scotch-6.0.4.dfsg1/src/libscotch/kdgraph_map_rb.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kdgraph_map_rb.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2008,2010,2011 ENSEIRB, INRIA & CNRS +/* Copyright 2008,2010,2011,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,6 +42,8 @@ /** **/ /** DATES : # Version 5.1 : from : 16 apr 2008 **/ /** to 14 apr 2011 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -61,10 +63,6 @@ ** The function prototypes. */ -#ifndef KDGRAPH_MAP_RB -#define static -#endif - DmappingFrag * kdgraphMapRbAdd2 (const Gnum, const Anum); int kdgraphMapRbAddBoth (const Dgraph * restrict const, Dmapping * restrict const, const ArchDom * restrict const, const GraphPart * restrict const); int kdgraphMapRbAddOne (const Dgraph * restrict const, Dmapping * restrict const, const ArchDom * restrict const); @@ -72,5 +70,3 @@ int kdgraphMapRb (Kdgraph * const, Kdmapping * const, const KdgraphMapRbParam * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kdgraph_map_rb_map.h scotch-6.0.6/src/libscotch/kdgraph_map_rb_map.h --- scotch-6.0.4.dfsg1/src/libscotch/kdgraph_map_rb_map.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kdgraph_map_rb_map.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2008 ENSEIRB, INRIA & CNRS +/* Copyright 2008,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,6 +42,8 @@ /** **/ /** DATES : # Version 5.1 : from : 24 jun 2008 **/ /** to 24 jun 2008 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -53,10 +55,4 @@ ** The function prototypes. */ -#ifndef KDGRAPH_MAP_RB -#define static -#endif - int kdgraphMapRbMap (Kdgraph * const, Kdmapping * const, const KdgraphMapRbParam * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kdgraph_map_rb_part.c scotch-6.0.6/src/libscotch/kdgraph_map_rb_part.c --- scotch-6.0.4.dfsg1/src/libscotch/kdgraph_map_rb_part.c 2015-02-24 22:22:58.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kdgraph_map_rb_part.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2008-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2008-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -47,7 +47,7 @@ /** DATES : # Version 5.1 : from : 21 jun 2008 **/ /** to 31 aug 2011 **/ /** # Version 6.0 : from : 03 mar 2011 **/ -/** to 31 aug 2014 **/ +/** to 03 jun 2018 **/ /** **/ /************************************************************/ @@ -206,7 +206,6 @@ KdgraphMapRbPartGraph * restrict const fldgrafptr) { KdgraphMapRbPartThread fldthrdtab[2]; - int fldprocnbr; /* Number of processes in part of this process */ int fldprocnbr0; /* Number of processes in first part */ int fldprocnum; int fldproccol; @@ -275,12 +274,10 @@ if (actgrafptr->s.proclocnum < fldprocnbr0) { /* Compute color and rank in our future subpart */ fldpartval = 0; fldprocnum = actgrafptr->s.proclocnum; - fldprocnbr = fldprocnbr0; } else { fldpartval = 1; fldprocnum = actgrafptr->s.proclocnum - fldprocnbr0; - fldprocnbr = actgrafptr->s.procglbnbr - fldprocnbr0; } fldgrafptr->domnorg = *fldthrdtab[fldpartval].inddomnptr; /* Set data of our folded graph */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kdgraph_map_rb_part.h scotch-6.0.6/src/libscotch/kdgraph_map_rb_part.h --- scotch-6.0.4.dfsg1/src/libscotch/kdgraph_map_rb_part.h 2012-10-10 12:52:10.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kdgraph_map_rb_part.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2008,2010,2011 ENSEIRB, INRIA & CNRS +/* Copyright 2008,2010,2011,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 5.1 : from : 23 jun 2008 **/ /** to 31 aug 2011 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -90,10 +92,4 @@ ** The function prototypes. */ -#ifndef KDGRAPH_MAP_RB -#define static -#endif - int kdgraphMapRbPart (Kdgraph * const, Kdmapping * const, const KdgraphMapRbParam * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kdgraph_map_st.h scotch-6.0.6/src/libscotch/kdgraph_map_st.h --- scotch-6.0.4.dfsg1/src/libscotch/kdgraph_map_st.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kdgraph_map_st.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2008 ENSEIRB, INRIA & CNRS +/* Copyright 2008,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** **/ /** DATES : # Version 5.1 : from : 16 jun 2008 **/ /** to 16 jun 2008 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -67,10 +69,4 @@ ** The function prototypes. */ -#ifndef KDGRAPH_MAP_ST -#define static -#endif - int kdgraphMapSt (Kdgraph * restrict const, Kdmapping * restrict const, const Strat * restrict const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kgraph_band.c scotch-6.0.6/src/libscotch/kgraph_band.c --- scotch-6.0.4.dfsg1/src/libscotch/kgraph_band.c 2015-03-01 09:14:02.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kgraph_band.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2009-2011,2013-2015 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2009-2011,2013-2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,7 +41,7 @@ /** array. **/ /** **/ /** DATES : # Version 6.0 : from : 05 jan 2009 **/ -/** to : 01 mar 2015 **/ +/** to : 31 may 2018 **/ /** **/ /** NOTES : # This code derives from the code of **/ /** kdgraph_band.c in version 5.2 for **/ @@ -109,7 +109,6 @@ Gnum bandedlonbr; /* Size of local band edge load array */ Gnum bandedlosum; Gnum * restrict bandcompload; - Gnum bandcommload; Gnum * restrict compload; /* Load of parts in original graph */ Gnum fronnum; Anum domnnbr; @@ -185,7 +184,6 @@ if (termhashtab[termhashnum].termnum == termnum) { /* If hash slot found */ errorPrint ("kgraphBand: duplicate terminal domain in domain array"); memFree (termhashtab); - kgraphExit (bandgrafptr); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ @@ -232,9 +230,11 @@ errorPrint ("kgraphBand: out of memory (3)"); return (1); } + bandvmlotax = NULL; if (vmlotax != NULL) { if ((bandvmlotax = memAlloc (bandvertnbr * sizeof (Gnum))) == NULL) { errorPrint ("kgraphBand: out of memory (4)"); + memFree (bandvnumtax); return (1); } memSet (bandvnumtax + bandvertnbr - domnnbr, ~0, domnnbr * sizeof (Gnum)); /* Prevent Valgrind from yelling when centralizing band graphs */ @@ -242,14 +242,18 @@ bandgrafptr->r.vmlotax = bandvmlotax; bandgrafptr->s.flagval |= KGRAPHFREEVMLO; } + bandparotax = NULL; if (parotax != NULL) { if ((bandparotax = memAlloc (bandvertnbr * sizeof (Gnum))) == NULL) { errorPrint ("kgraphBand: out of memory (5)"); - return (1); + if (bandvmlotax != NULL) + memFree (bandvmlotax + bandgrafptr->s.baseval); + memFree (bandvnumtax); + return (1); } memSet (bandparotax + bandvertnbr - bandgrafptr->r.m.domnnbr, ~0, bandgrafptr->r.m.domnnbr * sizeof (Gnum)); /* Prevent Valgrind from yelling when centralizing band graphs */ bandparotax -= bandgrafptr->s.baseval; - bandgrafptr->r.m.parttax = bandparotax; + bandgrafptr->r.m.parttax = bandparotax; bandgrafptr->r.m.flagval |= MAPPINGFREEPART; } @@ -259,6 +263,7 @@ if ((bandgrafptr->s.edgetax = memAlloc ((bandedgenbr + bandedlonbr) * sizeof (Gnum))) == NULL) { errorPrint ("kgraphBand: out of memory (6)"); + kgraphExit (bandgrafptr); return (1); } bandedlotax = NULL; @@ -334,7 +339,6 @@ bandverttax = bandgrafptr->s.verttax; bandvelotax = bandgrafptr->s.velotax; banddegrmax = 0; - bandcommload = 0; bandcompload = bandgrafptr->comploaddlt; /* TRICK: use delta array to compute load sums */ memSet (bandcompload, 0, domnnbr * sizeof (Gnum)); bandedlosum = 0; @@ -635,9 +639,7 @@ for (bandvertnum = bandvertlvlnum; bandvertnum < bandvertnnd; /* We do not have fixed vertices */ bandvertnum ++) { /* Link anchors to vertices of last level */ Anum partval; - Gnum vertnum; - vertnum = bandvnumtax[bandvertnum]; partval = bandparttax[bandvertnum]; bandedgetax[bandedgetab[partval] ++] = bandvertnum; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kgraph.c scotch-6.0.6/src/libscotch/kgraph.c --- scotch-6.0.4.dfsg1/src/libscotch/kgraph.c 2015-02-24 22:23:29.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kgraph.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -50,7 +50,7 @@ /** # Version 5.1 : from : 28 sep 2008 **/ /** to 31 aug 2011 **/ /** # Version 6.0 : from : 03 mar 2011 **/ -/** to 12 nov 2014 **/ +/** to 26 feb 2018 **/ /** **/ /************************************************************/ @@ -95,7 +95,6 @@ const Gnum * restrict const vmlotax) /*+ Vertex migration cost array +*/ { ArchDom domndat; /* First, largest domain */ - const ArchDom * restrict domntmp; #ifdef SCOTCH_DEBUG_KGRAPH2 if ((crloval < 1) || (cmloval < 0)) { @@ -209,15 +208,14 @@ kgraphFrst ( Kgraph * restrict const grafptr) { - archDomFrst (grafptr->m.archptr, &grafptr->m.domntab[0]); - grafptr->m.domnnbr = 1; + grafptr->m.domnnbr = 1; + grafptr->m.domntab[0] = grafptr->m.domnorg; /* Use initial (sub)domain as root */ memSet (grafptr->m.parttax + grafptr->s.baseval, 0, grafptr->s.vertnbr * sizeof (Anum)); /* Set all vertices to subdomain 0 */ memSet (grafptr->comploadavg + 1, 0, (2 * grafptr->m.domnmax - 1) * sizeof (Gnum)); grafptr->comploadavg[0] = grafptr->s.velosum; grafptr->commload = 0; - grafptr->m.domntab[0] = grafptr->m.domnorg; /* Point to first domain */ grafptr->fronnbr = 0; /* No frontier vertices */ } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kgraph.h scotch-6.0.6/src/libscotch/kgraph.h --- scotch-6.0.4.dfsg1/src/libscotch/kgraph.h 2014-08-23 18:29:20.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kgraph.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -52,7 +52,7 @@ /** # Version 5.1 : from : 13 jul 2010 **/ /** to 31 aug 2011 **/ /** # Version 6.0 : from : 03 mar 2011 **/ -/** to 23 aug 2014 **/ +/** to 07 jun 2018 **/ /** **/ /** NOTES : # The comploadavg and comploaddlt **/ /** should always be allocated together, **/ @@ -122,7 +122,7 @@ double comploadrat; /*+ Ideal load balance per weight unit +*/ double kbalval; /*+ Last k-way imbalance ratio +*/ Gnum commload; /*+ Communication load +*/ - Gnum levlnum; /*+ Graph coarsening level +*/ + INT levlnum; /*+ Graph coarsening level +*/ } Kgraph; /*+ The save graph structure. +*/ @@ -145,10 +145,6 @@ ** The function prototypes. */ -#ifndef KGRAPH -#define static -#endif - int kgraphInit (Kgraph * restrict const, const Graph * restrict const, const Arch * restrict const, const ArchDom * restrict const, const Gnum, const Anum * restrict const, const Anum * restrict const, const Gnum, const Gnum, const Gnum * restrict const); void kgraphExit (Kgraph * const); void kgraphFrst (Kgraph * const); @@ -161,5 +157,3 @@ void kgraphStoreExit (KgraphStore * const); void kgraphStoreSave (const Kgraph * const, KgraphStore * const); void kgraphStoreUpdt (Kgraph * const, const KgraphStore * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_bd.c scotch-6.0.6/src/libscotch/kgraph_map_bd.c --- scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_bd.c 2014-06-01 08:05:41.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kgraph_map_bd.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2010,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2010,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -34,6 +34,7 @@ /** NAME : kgraph_map_bd.c **/ /** **/ /** AUTHOR : Sebastien FOURESTIER (v6.0) **/ +/** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module computes a partition of **/ /** the given k-way mapping graph by **/ @@ -45,7 +46,7 @@ /** graph. **/ /** **/ /** DATES : # Version 6.0 : from : 05 jan 2010 **/ -/** to : 03 mar 2011 **/ +/** to : 21 may 2018 **/ /** **/ /** NOTES : # Since only edges from local vertices **/ /** to local anchors are created in **/ @@ -122,14 +123,6 @@ Gnum * restrict const orgfrontab = orggrafptr->frontab; Gnum * restrict const orgparttax = orggrafptr->m.parttax; - if ((vertnbrtab = memAlloc (domnnbr * sizeof(Gnum))) == NULL) { - errorPrint ("kgraphMapBd: out of memory (1)"); - return (1); - } - memSet (vertnbrtab, 0, domnnbr * sizeof(Gnum)); - for (vertnum = orggrafptr->s.baseval; vertnum < orggrafptr->s.vertnnd; vertnum ++) - vertnbrtab[orgparttax[vertnum]] ++; /* TODO check optimize? */ - if (orggrafptr->fronnbr == 0) /* If no separator vertices, apply strategy to full (original) graph */ return (kgraphMapSt (orggrafptr, paraptr->stratorg)); @@ -138,6 +131,14 @@ return (1); } + if ((vertnbrtab = memAlloc (domnnbr * sizeof(Gnum))) == NULL) { + errorPrint ("kgraphMapBd: out of memory (1)"); + return (1); + } + memSet (vertnbrtab, 0, domnnbr * sizeof(Gnum)); + for (vertnum = orggrafptr->s.baseval; vertnum < orggrafptr->s.vertnnd; vertnum ++) + vertnbrtab[orgparttax[vertnum]] ++; /* TODO check optimize? */ + bndvertancnnd = bndgrafdat.s.vertnnd - domnnbr; for (domnnum = 0; domnnum < domnnbr; domnnum ++) { /* For all anchor domains */ Gnum vertnum; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_bd.h scotch-6.0.6/src/libscotch/kgraph_map_bd.h --- scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_bd.h 2012-06-01 16:04:18.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kgraph_map_bd.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2010,2011 ENSEIRB, INRIA & CNRS +/* Copyright 2010,2011,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,7 +40,7 @@ /** routine for distributed graphs. **/ /** **/ /** DATES : # Version 6.0 : from : 05 jan 2010 **/ -/** to : 20 feb 2012 **/ +/** to : 07 jun 2018 **/ /** **/ /************************************************************/ @@ -70,11 +70,4 @@ ** The function prototypes. */ -#ifndef KGRAPH_MAP_BD -#define static -#endif - -int kgraphMapBd (Kgraph * const, const KgraphMapBdParam * const); - -#undef static - +int kgraphMapBd (Kgraph * const, const KgraphMapBdParam * const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_cp.c scotch-6.0.6/src/libscotch/kgraph_map_cp.c --- scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_cp.c 2014-08-23 17:44:10.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kgraph_map_cp.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -39,7 +39,7 @@ /** as a mapping result. **/ /** **/ /** DATES : # Version 6.0 : from : 16 jan 2012 **/ -/** to 23 aug 2014 **/ +/** to 31 may 2018 **/ /** **/ /************************************************************/ @@ -71,22 +71,18 @@ ** - 1 : on error. */ -/* TODO handle the case when the old and the new architectures are differents. */ +/* TODO handle the case when the old and the new architectures are different. */ int kgraphMapCp ( Kgraph * restrict const grafptr) /*+ Graph +*/ { - Gnum baseval; - Anum domnnbr; - const Anum * restrict const pfixtax = grafptr->pfixtax; if (grafptr->r.m.parttax == NULL) { /* If we do not have an old partition */ errorPrint ("kgraphMapCp: inconsistent old mapping data"); return (1); } - baseval = grafptr->s.baseval; if (mapCopy (&grafptr->m, &grafptr->r.m) != 0) { errorPrint ("kgraphMapCp: cannot copy old mapping"); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_cp.h scotch-6.0.6/src/libscotch/kgraph_map_cp.h --- scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_cp.h 2014-08-23 10:49:28.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kgraph_map_cp.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,7 +41,7 @@ /** old mapping has a mapping result. **/ /** **/ /** DATES : # Version 6.0 : from : 16 jan 2012 **/ -/** to 23 aug 2014 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -49,10 +49,4 @@ ** The function prototypes. */ -#ifndef KGRAPH_MAP_CP -#define static -#endif - int kgraphMapCp (Kgraph * restrict const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_df.h scotch-6.0.6/src/libscotch/kgraph_map_df.h --- scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_df.h 2012-11-02 22:21:24.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kgraph_map_df.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2009-2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2009-2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,7 +40,7 @@ /** k-partitioning method. **/ /** **/ /** DATES : # Version 6.0 : from : 22 dec 2009 **/ -/** to 02 nov 2012 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -119,12 +119,8 @@ ** The function prototypes. */ -#ifndef KGRAPH_MAP_DF -#define static -#endif +#ifdef KGRAPH_MAP_DF +static void kgraphMapDfSort (void * const, const INT); +#endif /* KGRAPH_MAP_DF */ -int kgraphMapDf (Kgraph * restrict const, const KgraphMapDfParam * const); - -static void kgraphMapDfSort (void * const, const INT); - -#undef static +int kgraphMapDf (Kgraph * restrict const, const KgraphMapDfParam * const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_ex.c scotch-6.0.6/src/libscotch/kgraph_map_ex.c --- scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_ex.c 2014-08-21 20:50:32.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kgraph_map_ex.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2011,2013,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2011,2013,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,7 +40,7 @@ /** it can. **/ /** **/ /** DATES : # Version 6.0 : from : 27 may 2011 **/ -/** to 21 aug 2014 **/ +/** to 06 jun 2018 **/ /** **/ /************************************************************/ @@ -81,38 +81,41 @@ KgraphMapExTerm * restrict termtab; KgraphMapExTree * restrict treetab; Anum * restrict parttax; - Anum treenbr; /* Number of nodes in tree structure */ + Anum treemax; /* Maximum number of nodes in tree structure */ + Anum treenbr; /* Number of nodes in tree structure */ const Arch * restrict archptr; - ArchDom domndat; /* Root domain */ + ArchDom domndat; /* Root domain */ Anum domnnbr; Anum domnnum; - Gnum sortnbr; /* Number of non-fixed vertices */ + Gnum sortnbr; /* Number of non-fixed vertices */ Gnum sortnum; - Anum termnbr; /* Number of terminal domains in mapping */ + Anum termnbr; /* Number of terminal domains in mapping */ Gnum vertnum; Gnum vertnnd; - double velosum; /* Sum of vertex weights */ - double wghtsum; /* Sum of architecture weights */ - Anum wghttmp; /* Sum of architecture weights for archVar */ - int flagval; /* Flag unset if load imbalance to fix */ + double velosum; /* Sum of vertex weights */ + double wghtsum; /* Sum of architecture weights */ + Anum wghttmp; /* Sum of architecture weights for archVar */ + int flagval; /* Flag unset if load imbalance to fix */ const Gnum * restrict const velotax = grafptr->s.velotax; const Anum * restrict const pfixtax = grafptr->pfixtax; + archptr = grafptr->m.archptr; + archDomFrst (archptr, &domndat); + grafptr->kbalval = paraptr->kbalval; /* Store last k-way imbalance ratio */ domnnbr = grafptr->m.domnnbr; sortnbr = grafptr->s.vertnbr - grafptr->vfixnbr; /* Only sort non-fixed vertices */ + treemax = 2 * ((archVar (archptr)) ? domnnbr : archDomSize (archptr, &domndat)); /* At most twice the number of terminals in last rank */ if (memAllocGroup ((void **) (void *) &doextab, (size_t) (domnnbr * sizeof (KgraphMapExDom)), &sorttab, (size_t) (sortnbr * sizeof (KgraphMapExSort)), &termtab, (size_t) (domnnbr * sizeof (KgraphMapExTerm)), - &treetab, (size_t) (domnnbr * sizeof (KgraphMapExTree) * 2), NULL) == NULL) { + &treetab, (size_t) (treemax * sizeof (KgraphMapExTree)), NULL) == NULL) { errorPrint ("kgraphMapEx: out of memory"); return (1); } - archptr = grafptr->m.archptr; - archDomFrst (archptr, &domndat); wghtsum = (double) archDomWght (archptr, &domndat); velosum = (double) grafptr->s.velosum; @@ -162,6 +165,12 @@ treenbr = 0; /* Prepare to fill tree array; next slot to fill */ kgraphMapExTree (archptr, termtab, termnbr, doextab, treetab, &treenbr, &domndat); /* Recursively fill tree array */ +#ifdef SCOTCH_DEBUG_KGRAPH2 + if (treenbr >= treemax) { + errorPrint ("kgraphMapEx: internal error (1)"); + return (1); + } +#endif /* SCOTCH_DEBUG_KGRAPH2 */ parttax = grafptr->m.parttax; for (vertnum = grafptr->s.baseval, vertnnd = grafptr->s.vertnnd, sortnbr = 0; /* Get vertex weights */ @@ -179,7 +188,7 @@ } #ifdef SCOTCH_DEBUG_KGRAPH2 if (sortnbr != (grafptr->s.vertnbr - grafptr->vfixnbr)) { - errorPrint ("kgraphMapEx: internal error"); + errorPrint ("kgraphMapEx: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ @@ -240,14 +249,17 @@ const ArchDom * restrict const domnptr) /*+ Pointer to subdomain to consider for this node +*/ { Anum treenum; - int o; if (archDomSize (archptr, domnptr) > 1) { /* If not variable-sized architecture and can bipartition */ ArchDom domntab[2]; /* Temporary area to store subdomains */ Anum sonstab[2]; int i, j; +#ifdef SCOTCH_DEBUG_KGRAPH2 + int o; - o = archDomBipart (archptr, domnptr, &domntab[0], &domntab[1]); + o = /* Only collect value in debug mode */ +#endif /* SCOTCH_DEBUG_KGRAPH2 */ + archDomBipart (archptr, domnptr, &domntab[0], &domntab[1]); #ifdef SCOTCH_DEBUG_KGRAPH2 if (o != 0) { errorPrint ("kgraphMapExTree: internal error"); @@ -270,9 +282,8 @@ if (sonsnum == -1) /* If this son does not exist, skip it */ continue; - treetab[treenum].sonstab[j] = sonsnum; /* Link son to current node */ + treetab[treenum].sonstab[j ++] = sonsnum; /* Link son to current node; one more son created */ treetab[sonsnum].fathnum = treenum; - j ++; /* One more son created */ } treetab[treenum].domndat = *domnptr; } @@ -331,13 +342,12 @@ { KgraphMapExFind bestdat; Anum treenum; - int o; bestdat.comploaddlt = (doextab[domnnum].compload + veloval - doextab[domnnum].comploadmax) / doextab[domnnum].domnwght; /* Compute weighted imbalance */ bestdat.domnnum = domnnum; treenum = doextab[domnnum].treenum; /* Start from leaf of subdomain tree */ - do { /* Traverse nodes up to the root */ + while (1) { /* Traverse nodes up to the root */ Anum nodenum; /* Number of the son we come from */ Anum othrnum; /* Number of the other son */ @@ -348,12 +358,11 @@ othrnum = treetab[treenum].sonstab[(treetab[treenum].sonstab[0] == nodenum) ? 1 : 0]; /* Don't consider the branch we come from */ - if (othrnum == -1) /* If parent node has only one son */ - continue; /* Skip to upper level */ - - o = kgraphMapExFind2 (archptr, treetab, doextab, &bestdat, treenum, othrnum, veloval); - } - while (o != 0); /* As long as proper candidate not found */ + if (othrnum != -1) { /* If we have a sibling */ + if (kgraphMapExFind2 (archptr, treetab, doextab, &bestdat, treenum, othrnum, veloval) == 0) + break; /* If the sibling is a proper candidate for moving some weight */ + } + } /* As long as proper candidate not found */ return (bestdat.domnnum); /* Return best candidate found */ } @@ -371,7 +380,7 @@ const Arch * restrict const archptr, const KgraphMapExTree * restrict const treetab, const KgraphMapExDom * restrict const doextab, -KgraphMapExFind * restrict const bestptr, /*+ Pointer to structure that keeps best terminal found */ +KgraphMapExFind * restrict const bestptr, /*+ Pointer to structure that keeps best terminal found +*/ const Anum treenum, const Anum nodenum, const Gnum veloval) diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_ex.h scotch-6.0.6/src/libscotch/kgraph_map_ex.h --- scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_ex.h 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kgraph_map_ex.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2011 ENSEIRB, INRIA & CNRS +/* Copyright 2011,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,7 +40,7 @@ /** routines. **/ /** **/ /** DATES : # Version 6.0 : from : 08 jun 2011 **/ -/** to 08 jun 2011 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -104,14 +104,10 @@ ** The function prototypes. */ -#ifndef KGRAPH_MAP_EX -#define static -#endif - -int kgraphMapEx (Kgraph * restrict const, const KgraphMapExParam * const); - +#ifdef KGRAPH_MAP_EX static Anum kgraphMapExTree (const Arch * restrict const, const KgraphMapExTerm * restrict const, const Anum, KgraphMapExDom * restrict const, KgraphMapExTree * restrict const, Anum * restrict const, const ArchDom * restrict const); static Anum kgraphMapExFind (const Arch * restrict const, const KgraphMapExTree * restrict const, const KgraphMapExDom * restrict const, const Anum, const Gnum); static int kgraphMapExFind2 (const Arch * restrict const, const KgraphMapExTree * restrict const, const KgraphMapExDom * restrict const, KgraphMapExFind * restrict const, const Anum, const Anum, const Gnum); +#endif /* KGRAPH_MAP_EX */ -#undef static +int kgraphMapEx (Kgraph * restrict const, const KgraphMapExParam * const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_fm.c scotch-6.0.6/src/libscotch/kgraph_map_fm.c --- scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_fm.c 2014-08-29 10:40:05.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kgraph_map_fm.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2010-2012,2014,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** method. **/ /** **/ /** DATES : # Version 6.0 : from : 03 mar 2011 **/ -/** to 23 aug 2014 **/ +/** to 06 jun 2018 **/ /** **/ /************************************************************/ @@ -215,7 +215,7 @@ edxxptr = NULL; remoptr = NULL; - while ((linkptr = fiboTreeMin (tablptr)) != NULL) { /* Select candidate vertices */ + while ((linkptr = fiboHeapMin (tablptr)) != NULL) { /* Select candidate vertices */ Gnum vexxidx; Gnum veloval; Anum domnnumold; @@ -233,7 +233,7 @@ } #endif /* SCOTCH_DEBUG_KGRAPH2 */ - fiboTreeDel (tablptr, linkptr); /* Remove vertex link from table */ + fiboHeapDel (tablptr, linkptr); /* Remove vertex link from table */ linkptr->linkdat.prevptr = remoptr; /* Node has been removed but is not kept */ remoptr = linkptr; /* It will be chained back afterwards */ @@ -264,7 +264,7 @@ tempptr = remoptr; /* Get pointer to node */ remoptr = remoptr->linkdat.prevptr; /* Find next node */ - fiboTreeAdd (tablptr, tempptr); /* Re-link node */ + fiboHeapAdd (tablptr, tempptr); /* Re-link node */ } if (linkptr == NULL) @@ -570,9 +570,6 @@ { KgraphMapFmEdge * restrict edxxtab; Gnum edxxidx; - Gnum edgenum; - Gnum edlosum; - Gnum edgenbr; Gnum edxxtmp; Gnum commgain; @@ -807,7 +804,6 @@ KgraphMapFmVertex ** const lockptr) /*+ Pointer to locked list +*/ { KgraphMapFmVertex * restrict vexxtab; /* Extended vertex array */ - KgraphMapFmSave * restrict saveold; /* Pointer to translated old save array */ Gnum savenum; Gnum hashold; /* Size of old hash table (half of new) */ Gnum hashsiz; @@ -1332,7 +1328,6 @@ Gnum edxxidx; Gnum * edxpptr; Gnum * vpexptr; - Gnum vexdflg; vexxidx = edxxptr->vexxidx; /* Get relevant information */ vertnum = vexxtab[vexxidx].vertnum; @@ -1421,7 +1416,6 @@ edxxptr->commgain = - edxxptr->commgain; edxxptr->cmiggain = - edxxptr->cmiggain; - vexdflg = 0; if (edgenbr == 0) { Gnum edxxidx; @@ -1451,9 +1445,6 @@ Gnum edxnidx; /* index of extended edge to new domain */ Gnum vertend; /* Number of current end neighbor vertex */ Gnum edxfidx; /* Index of first extended edge to update */ - Gnum edgeend; - Gnum edodnbr; - Gnum edndnbr; Anum divoval; /* Distance between current neighbor domain and old domain */ Anum divnval; /* Distance between current neighbor domain and new domain */ Gnum edloval; @@ -1461,9 +1452,6 @@ vertend = edgetax[edgenum]; edloval = (edlotax != NULL) ? edlotax[edgenum] : 1; - if (parttax[edgetax[edgenum]] == domnnum) - vexdflg = 1; - if ((pfixtax != NULL) && (pfixtax[vertend] != -1)) /* Do not link fixed vertices */ continue; @@ -1625,7 +1613,9 @@ } if ((edxnidx == -1) && (vexxtab[vexxend].domnnum != domnend)) { /* If was first vertex linked to this domain, add edge to new domain */ +#ifdef SCOTCH_DEBUG_KGRAPH2 Gnum edxxidx; +#endif /* SCOTCH_DEBUG_KGRAPH2 */ kgraphMapFmPartAdd2 (grafptr, vexxtab, vexxend, &edxxtab, &edxxsiz, &edxxnbr, vexxtab[vexxend].domnnum, domnend, edloval, tablptr); /* Add new extended edge */ #ifdef SCOTCH_DEBUG_KGRAPH2 @@ -1857,5 +1847,3 @@ return (0); } - - diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_fm.h scotch-6.0.6/src/libscotch/kgraph_map_fm.h --- scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_fm.h 2012-09-19 17:52:08.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kgraph_map_fm.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2010-2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2010-2012,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -47,7 +47,7 @@ /** # Version 5.0 : from : 11 oct 2006 **/ /** to 12 oct 2006 **/ /** # Version 6.0 : from : 03 mar 2011 **/ -/** to 19 sep 2012 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -97,7 +97,7 @@ #else /* SCOTCH_TABLE_GAIN */ -typedef FiboTree KgraphMapFmTabl; +typedef FiboHeap KgraphMapFmTabl; typedef FiboNode KgraphMapFmLink; #endif /* SCOTCH_TABLE_GAIN */ @@ -165,14 +165,8 @@ ** The function prototypes. */ -#ifndef KGRAPH_MAP_FM -#define static -#endif - int kgraphMapFm (Kgraph * restrict const, const KgraphMapFmParam * const); -#undef static - /* ** The macro definitions. */ @@ -197,11 +191,11 @@ /*+ Service routines. +*/ -#define kgraphMapFmTablInit(t) (fiboTreeInit ((t), kgraphMapFmCmpFunc)) -#define kgraphMapFmTablFree(t) fiboTreeFree (t) -#define kgraphMapFmTablExit(t) fiboTreeExit (t) -#define kgraphMapFmTablAdd(t,e) fiboTreeAdd ((t), &(e)->gainlink) -#define kgraphMapFmTablDel(t,e) fiboTreeDel ((t), &(e)->gainlink) +#define kgraphMapFmTablInit(t) (fiboHeapInit ((t), kgraphMapFmCmpFunc)) +#define kgraphMapFmTablFree(t) fiboHeapFree (t) +#define kgraphMapFmTablExit(t) fiboHeapExit (t) +#define kgraphMapFmTablAdd(t,e) fiboHeapAdd ((t), &(e)->gainlink) +#define kgraphMapFmTablDel(t,e) fiboHeapDel ((t), &(e)->gainlink) #endif /* SCOTCH_TABLE_GAIN */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_ml.c scotch-6.0.6/src/libscotch/kgraph_map_ml.c --- scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_ml.c 2015-03-01 09:14:02.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kgraph_map_ml.c 2018-07-14 15:24:49.000000000 +0000 @@ -42,8 +42,8 @@ /** **/ /** DATES : # Version 5.1 : from : 13 jul 2010 **/ /** to 14 jul 2010 **/ -/** DATES : # Version 6.0 : from : 03 mar 2011 **/ -/** to 27 feb 2015 **/ +/** # Version 6.0 : from : 03 mar 2011 **/ +/** to 25 feb 2018 **/ /** **/ /************************************************************/ @@ -90,7 +90,6 @@ { GraphCoarsenMulti * restrict coarmulttab; Gnum coarvertnum; /* Number of current multinode vertex */ - Gnum coarflagval; const Anum * restrict const finepfixtax = finegrafptr->pfixtax; @@ -102,7 +101,8 @@ #endif /* SCOTCH_DEBUG_KGRAPH2 */ *coarmultptr = NULL; /* Allocate coarmulttab along with coarse graph */ - if (graphCoarsen (&finegrafptr->s, &coargrafptr->s, coarmultptr, paraptr->coarnbr, paraptr->coarval, finegrafptr->r.m.parttax, finegrafptr->pfixtax, finegrafptr->vfixnbr, &coargrafptr->vfixnbr) != 0) + if (graphCoarsen (&finegrafptr->s, &coargrafptr->s, NULL, coarmultptr, paraptr->coarnbr, paraptr->coarval, GRAPHCOARSENNONE, + finegrafptr->r.m.parttax, finegrafptr->pfixtax, finegrafptr->vfixnbr, &coargrafptr->vfixnbr) != 0) return (1); /* Return if coarsening failed */ finegrafptr->s.flagval &= ~KGRAPHFREECOMP; /* Now it's the coarse graph job to handle the load array */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_ml.h scotch-6.0.6/src/libscotch/kgraph_map_ml.h --- scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_ml.h 2014-06-01 11:14:34.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kgraph_map_ml.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2010,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2010,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,7 +43,7 @@ /** DATES : # Version 5.1 : from : 10 jul 2010 **/ /** to 10 jul 2010 **/ /** # Version 6.0 : from : 03 mar 2011 **/ -/** to 01 jun 2014 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -65,14 +65,10 @@ ** The function prototypes. */ -#ifndef KGRAPH_MAP_ML -#define static -#endif - +#ifdef KGRAPH_MAP_ML static int kgraphMapMlCoarsen (Kgraph * const, Kgraph * restrict const, GraphCoarsenMulti * restrict * const, const KgraphMapMlParam * const); static int kgraphMapMlUncoarsen (Kgraph * restrict const, Kgraph * const, const GraphCoarsenMulti * const); - -int kgraphMapMl (Kgraph * restrict const, const KgraphMapMlParam * const); static int kgraphMapMl2 (Kgraph * restrict const, const KgraphMapMlParam * const); +#endif /* KGRAPH_MAP_ML */ -#undef static +int kgraphMapMl (Kgraph * restrict const, const KgraphMapMlParam * const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_rb.c scotch-6.0.6/src/libscotch/kgraph_map_rb.c --- scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_rb.c 2014-08-28 18:05:09.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kgraph_map_rb.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2011,2013,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2011,2013,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -67,7 +67,7 @@ /** # Version 5.1 : from : 22 nov 2007 **/ /** to 07 oct 2008 **/ /** # Version 6.0 : from : 03 mar 2011 **/ -/** to 28 aug 2014 **/ +/** to 31 may 2018 **/ /** **/ /************************************************************/ @@ -115,14 +115,8 @@ Graph * restrict indgrafptr; /* Pointer to top-level graph without fixed vertices */ KgraphMapRbVflo * restrict vflotab; /* Array of fixed vertex load slots */ Anum vflonbr; /* Number of fixed vertex load slots */ - Gnum vertnum; int o; - Gnum * const frontab = grafptr->frontab; - const Gnum * restrict const verttax = grafptr->s.verttax; - const Gnum * restrict const vendtax = grafptr->s.vendtax; - const Gnum * restrict const edgetax = grafptr->s.edgetax; - grafptr->kbalval = paraptr->kbalval; /* Store last k-way imbalance ratio */ datadat.grafptr = &grafptr->s; @@ -443,8 +437,6 @@ const Anum * restrict const pfixtax, /*+ Array of fixed vertex terminal domains +*/ const Anum vflonbr) /*+ Number of fixed vertex load slots +*/ { - ArchDom domndat; - Anum domnmax; Anum domnnum; Gnum vertnum; Gnum vertnnd; @@ -483,7 +475,6 @@ } } - domnmax = mappptr->domnmax; for (vertnum = mappptr->grafptr->baseval, vertnnd = mappptr->grafptr->vertnnd; vertnum < vertnnd; vertnum ++) { Anum pfixval; @@ -492,7 +483,7 @@ #ifdef SCOTCH_DEBUG_KGRAPH2 if (mappptr->parttax[vertnum] < 0) { /* If vertex has not been mapped */ errorPrint ("kgraphMapRbVfloMerge: internal error (1)"); - return; + return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ continue; /* Skip to next vertex */ @@ -501,7 +492,7 @@ #ifdef SCOTCH_DEBUG_KGRAPH2 if (mappptr->parttax[vertnum] >= 0) { /* If fixed vertex has been mapped */ errorPrint ("kgraphMapRbVfloMerge: internal error (2)"); - return; + return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ @@ -568,7 +559,6 @@ const Arch * restrict const archptr = dataptr->mappptr->archptr; const Gnum * restrict const orgverttax = dataptr->grafptr->verttax; const Gnum * restrict const orgvendtax = dataptr->grafptr->vendtax; - const Gnum * restrict const orgvelotax = dataptr->grafptr->velotax; const Gnum * restrict const orgedgetax = dataptr->grafptr->edgetax; const Gnum * restrict const orgedlotax = dataptr->grafptr->edlotax; const Mapping * restrict const oldmappptr = dataptr->r.mappptr; @@ -714,7 +704,7 @@ } o = 0; /* Computations succeeded */ -fail: +fail : if ((o != 0) || (veexmsk == 0)) { /* If external gain array is useless */ memFree (veextax + actgrafptr->s.baseval); /* Forget about it */ return (o); /* Return error code */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_rb.h scotch-6.0.6/src/libscotch/kgraph_map_rb.h --- scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_rb.h 2014-09-15 08:15:14.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kgraph_map_rb.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -62,7 +62,7 @@ /** # Version 5.1 : from : 07 oct 2008 **/ /** to 28 mar 2011 **/ /** # Version 6.0 : from : 07 aug 2014 **/ -/** to 24 aug 2014 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -152,10 +152,6 @@ ** The function prototypes. */ -#ifndef KGRAPH_MAP_RB -#define static -#endif - int kgraphMapRb (Kgraph * const, const KgraphMapRbParam * const); int kgraphMapRbVfloBuild (const Arch * restrict const, const Graph * restrict const, const Gnum, const Anum * restrict const, Graph * restrict const, Anum * restrict const, KgraphMapRbVflo * restrict * restrict const); @@ -163,5 +159,3 @@ int kgraphMapRbVfloMerge (Mapping * restrict const, const Gnum, const Anum * restrict const, const Anum); int kgraphMapRbBgraph (const KgraphMapRbData * restrict const, Bgraph * restrict const, const Graph * restrict const, const Mapping * restrict const, const ArchDom * restrict const, const Gnum * restrict const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_rb_map.c scotch-6.0.6/src/libscotch/kgraph_map_rb_map.c --- scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_rb_map.c 2014-08-29 06:36:06.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kgraph_map_rb_map.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007-2009,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007-2009,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -66,7 +66,7 @@ /** # Version 5.1 : from : 22 nov 2007 **/ /** to 04 feb 2009 **/ /** # Version 6.0 : from : 03 mar 2011 **/ -/** to 29 aug 2014 **/ +/** to 25 feb 2018 **/ /** **/ /** NOTES : # This code is a complete rewrite of **/ /** the original code of kgraphMapRb(), **/ @@ -694,15 +694,6 @@ KgraphMapRbMapPoolData * const poolptr, const KgraphMapRbMapJob * const joboldptr) /* Job to be removed */ { - KgraphMapRbMapJob * restrict jobtab; - const Anum * restrict mapparttax; /* Based pointer to mapping part array */ - const Gnum * restrict jobvnumtax; - const Gnum * restrict jobverttax; - const Gnum * restrict jobvendtax; - const Gnum * restrict topverttax; - const Gnum * restrict topvendtax; - const Gnum * restrict topedgetax; - if (poolptr->polival >= KGRAPHMAPRBPOLINEIGHBOR) { /* If neighbors have to be modified */ Gnum jobvertnnd; Gnum jobvertnum; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_rb_map.h scotch-6.0.6/src/libscotch/kgraph_map_rb_map.h --- scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_rb_map.h 2014-08-28 17:09:08.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kgraph_map_rb_map.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -63,7 +63,7 @@ /** # Version 5.1 : from : 30 sep 2008 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 03 mar 2011 **/ -/** to 28 aug 2014 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -123,10 +123,7 @@ ** The function prototypes. */ -#ifndef KGRAPH_MAP_RB_MAP -#define static -#endif - +#ifdef KGRAPH_MAP_RB_MAP static int kgraphMapRbMapPoolInit (KgraphMapRbMapPoolData * restrict const, const KgraphMapRbData * restrict const); static void kgraphMapRbMapPoolExit (KgraphMapRbMapPoolData * restrict const poolptr); static void kgraphMapRbMapPoolAdd (KgraphMapRbMapPoolLink * restrict const, KgraphMapRbMapJob * const); @@ -134,12 +131,10 @@ static void kgraphMapRbMapPoolFrst (KgraphMapRbMapPoolData * const, KgraphMapRbMapJob * const); static void kgraphMapRbMapPoolUpdt1 (KgraphMapRbMapPoolData * const, const KgraphMapRbMapJob * const, const GraphPart * const, KgraphMapRbMapJob * const, const GraphPart); static void kgraphMapRbMapPoolUpdt2 (KgraphMapRbMapPoolData * const, const KgraphMapRbMapJob * const, const GraphPart * const, KgraphMapRbMapJob * const, KgraphMapRbMapJob * const); - -int kgraphMapRbMap (const KgraphMapRbData * restrict const, const Graph * restrict const, const Anum, KgraphMapRbVflo * restrict const); - static int kgraphMapRbMapPoolResize (KgraphMapRbMapPoolData * restrict const); +#endif /* KGRAPH_MAP_RB_MAP */ -#undef static +int kgraphMapRbMap (const KgraphMapRbData * restrict const, const Graph * restrict const, const Anum, KgraphMapRbVflo * restrict const); /* ** The macro definitions. diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_rb_part.h scotch-6.0.6/src/libscotch/kgraph_map_rb_part.h --- scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_rb_part.h 2014-08-10 21:15:17.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kgraph_map_rb_part.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2008,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2008,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,7 +43,7 @@ /** DATES : # Version 5.1 : from : 22 sep 2008 **/ /** to 14 apr 2011 **/ /** # Version 6.0 : from : 03 mar 2011 **/ -/** to 10 aug 2014 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -51,10 +51,4 @@ ** The function prototypes. */ -#ifndef KGRAPH_MAP_RB_PART -#define static -#endif - int kgraphMapRbPart (const KgraphMapRbData * restrict const, const Graph * restrict const, const Anum, KgraphMapRbVflo * restrict); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_st.h scotch-6.0.6/src/libscotch/kgraph_map_st.h --- scotch-6.0.4.dfsg1/src/libscotch/kgraph_map_st.h 2012-01-19 06:04:14.000000000 +0000 +++ scotch-6.0.6/src/libscotch/kgraph_map_st.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010-2012 IPB, INRIA & CNRS +/* Copyright 2004,2007,2010-2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -50,7 +50,7 @@ /** # Version 5.1 : from : 13 jul 2010 **/ /** to 13 jul 2010 **/ /** # Version 6.0 : from : 08 jun 2011 **/ -/** to 16 jan 2012 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -81,10 +81,4 @@ ** The function prototypes. */ -#ifndef KGRAPH_MAP_ST -#define static -#endif - int kgraphMapSt (Kgraph * restrict const, const Strat * restrict const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/last_resort/parser_ll.c scotch-6.0.6/src/libscotch/last_resort/parser_ll.c --- scotch-6.0.4.dfsg1/src/libscotch/last_resort/parser_ll.c 2014-09-30 19:03:51.000000000 +0000 +++ scotch-6.0.6/src/libscotch/last_resort/parser_ll.c 2018-07-14 15:24:49.000000000 +0000 @@ -28,7 +28,7 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 37 +#define YY_FLEX_SUBMINOR_VERSION 39 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -187,6 +187,7 @@ #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) + #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ @@ -607,7 +608,7 @@ -#line 611 "lex.yy.c" +#line 612 "lex.yy.c" #define INITIAL 0 #define lstrat 1 @@ -796,10 +797,6 @@ register char *yy_cp, *yy_bp; register int yy_act; -#line 121 "parser_ll.l" - -#line 802 "lex.yy.c" - if ( !(yy_init) ) { (yy_init) = 1; @@ -826,6 +823,11 @@ scotchyy_load_buffer_state( ); } + { +#line 121 "parser_ll.l" + +#line 830 "lex.yy.c" + while ( 1 ) /* loops until end-of-file is reached */ { yy_cp = (yy_c_buf_p); @@ -842,7 +844,7 @@ yy_match: do { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -983,7 +985,7 @@ #line 177 "parser_ll.l" ECHO; YY_BREAK -#line 987 "lex.yy.c" +#line 989 "lex.yy.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(lstrat): case YY_STATE_EOF(lparam): @@ -1121,6 +1123,7 @@ "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ + } /* end of user's declarations */ } /* end of scotchyylex */ /* yy_get_next_buffer - try to read in a new buffer @@ -1176,7 +1179,7 @@ else { - yy_size_t num_to_read = + int num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) @@ -1754,7 +1757,7 @@ YY_BUFFER_STATE b; char *buf; yy_size_t n; - int i; + yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/last_resort/parser_ly.h scotch-6.0.6/src/libscotch/last_resort/parser_ly.h --- scotch-6.0.4.dfsg1/src/libscotch/last_resort/parser_ly.h 2014-09-30 19:03:52.000000000 +0000 +++ scotch-6.0.6/src/libscotch/last_resort/parser_ly.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.2. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -69,7 +69,7 @@ /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE YYSTYPE; + union YYSTYPE { #line 92 "parser_yy.y" /* yacc.c:1909 */ @@ -89,6 +89,8 @@ #line 91 "y.tab.h" /* yacc.c:1909 */ }; + +typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif diff -Nru scotch-6.0.4.dfsg1/src/libscotch/last_resort/parser_yy.c scotch-6.0.6/src/libscotch/last_resort/parser_yy.c --- scotch-6.0.4.dfsg1/src/libscotch/last_resort/parser_yy.c 2014-09-30 19:03:52.000000000 +0000 +++ scotch-6.0.6/src/libscotch/last_resort/parser_yy.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.2. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.0.2" +#define YYBISON_VERSION "3.0.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -72,7 +72,7 @@ /* Copy the first part of user declarations. */ #line 1 "parser_yy.y" /* yacc.c:339 */ -/* Copyright 2004,2007,2008,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -123,7 +123,7 @@ /** # Version 5.1 : from : 30 oct 2007 **/ /** to 24 jul 2011 **/ /** # Version 6.0 : from : 30 sep 2014 **/ -/** to 30 sep 2014 **/ +/** to 27 apr 2018 **/ /** **/ /************************************************************/ @@ -220,7 +220,7 @@ /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE YYSTYPE; + union YYSTYPE { #line 92 "parser_yy.y" /* yacc.c:355 */ @@ -240,6 +240,8 @@ #line 242 "y.tab.c" /* yacc.c:355 */ }; + +typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif @@ -253,7 +255,7 @@ /* Copy the second part of user declarations. */ -#line 257 "y.tab.c" /* yacc.c:358 */ +#line 259 "y.tab.c" /* yacc.c:358 */ #ifdef short # undef short @@ -1402,7 +1404,7 @@ { parserstratcurr = ((yyvsp[0].STRAT)); /* Save pointer to root of tree */ } -#line 1406 "y.tab.c" /* yacc.c:1646 */ +#line 1408 "y.tab.c" /* yacc.c:1646 */ break; case 3: @@ -1424,7 +1426,7 @@ ((yyval.STRAT)) = strat; } -#line 1428 "y.tab.c" /* yacc.c:1646 */ +#line 1430 "y.tab.c" /* yacc.c:1646 */ break; case 6: @@ -1442,7 +1444,7 @@ ((yyval.STRAT)) = strat; } -#line 1446 "y.tab.c" /* yacc.c:1646 */ +#line 1448 "y.tab.c" /* yacc.c:1646 */ break; case 7: @@ -1464,7 +1466,7 @@ ((yyval.STRAT)) = strat; } -#line 1468 "y.tab.c" /* yacc.c:1646 */ +#line 1470 "y.tab.c" /* yacc.c:1646 */ break; case 9: @@ -1472,7 +1474,7 @@ { stratParserSelect (VALTEST); /* Parse parameter tokens */ } -#line 1476 "y.tab.c" /* yacc.c:1646 */ +#line 1478 "y.tab.c" /* yacc.c:1646 */ break; case 10: @@ -1480,7 +1482,7 @@ { stratParserSelect (VALSTRAT); /* Parse strategy tokens */ } -#line 1484 "y.tab.c" /* yacc.c:1646 */ +#line 1486 "y.tab.c" /* yacc.c:1646 */ break; case 11: @@ -1505,7 +1507,7 @@ ((yyval.STRAT)) = strat; } -#line 1509 "y.tab.c" /* yacc.c:1646 */ +#line 1511 "y.tab.c" /* yacc.c:1646 */ break; case 13: @@ -1513,7 +1515,7 @@ { ((yyval.STRAT)) = ((yyvsp[0].STRAT)); } -#line 1517 "y.tab.c" /* yacc.c:1646 */ +#line 1519 "y.tab.c" /* yacc.c:1646 */ break; case 14: @@ -1521,7 +1523,7 @@ { ((yyval.STRAT)) = NULL; } -#line 1525 "y.tab.c" /* yacc.c:1646 */ +#line 1527 "y.tab.c" /* yacc.c:1646 */ break; case 15: @@ -1529,7 +1531,7 @@ { ((yyval.STRAT)) = ((yyvsp[-1].STRAT)); } -#line 1533 "y.tab.c" /* yacc.c:1646 */ +#line 1535 "y.tab.c" /* yacc.c:1646 */ break; case 17: @@ -1573,7 +1575,7 @@ parserstratcurr = strat; /* Structure available for parameter processing */ } -#line 1577 "y.tab.c" /* yacc.c:1646 */ +#line 1579 "y.tab.c" /* yacc.c:1646 */ break; case 18: @@ -1596,7 +1598,7 @@ ((yyval.STRAT)) = parserstratcurr; /* Return current structure */ parserstratcurr = NULL; /* No current structure */ } -#line 1600 "y.tab.c" /* yacc.c:1646 */ +#line 1602 "y.tab.c" /* yacc.c:1646 */ break; case 19: @@ -1604,7 +1606,7 @@ { stratParserSelect (VALPARAM); /* Parse parameter tokens */ } -#line 1608 "y.tab.c" /* yacc.c:1646 */ +#line 1610 "y.tab.c" /* yacc.c:1646 */ break; case 20: @@ -1612,7 +1614,7 @@ { stratParserSelect (VALSTRAT); /* Parse strategy tokens */ } -#line 1616 "y.tab.c" /* yacc.c:1646 */ +#line 1618 "y.tab.c" /* yacc.c:1646 */ break; case 25: @@ -1648,7 +1650,7 @@ if (parserparamcurr->type == STRATPARAMSTRAT) /* If parameter is a strategy */ parserstrattab = (StratTab *) parserparamcurr->datasltr; /* Use new strategy tables */ } -#line 1652 "y.tab.c" /* yacc.c:1646 */ +#line 1654 "y.tab.c" /* yacc.c:1646 */ break; case 26: @@ -1657,7 +1659,7 @@ stratParserSelect (VALPARAM); /* Go-on reading parameters */ parserstrattab = ((yyvsp[-2].SAVE)).tabl; /* Restore current strategy tables */ } -#line 1661 "y.tab.c" /* yacc.c:1646 */ +#line 1663 "y.tab.c" /* yacc.c:1646 */ break; case 27: @@ -1696,7 +1698,7 @@ parserparamcurr->database))) = i; } } -#line 1700 "y.tab.c" /* yacc.c:1646 */ +#line 1702 "y.tab.c" /* yacc.c:1646 */ break; case 28: @@ -1715,7 +1717,7 @@ parserparamcurr->database))) = ((yyvsp[0].DOUBLE)); } } -#line 1719 "y.tab.c" /* yacc.c:1646 */ +#line 1721 "y.tab.c" /* yacc.c:1646 */ break; case 29: @@ -1734,7 +1736,7 @@ parserparamcurr->database))) = (INT) ((yyvsp[0].INTEGER)); } } -#line 1738 "y.tab.c" /* yacc.c:1646 */ +#line 1740 "y.tab.c" /* yacc.c:1646 */ break; case 30: @@ -1754,7 +1756,7 @@ ((yyvsp[0].STRING))); } } -#line 1758 "y.tab.c" /* yacc.c:1646 */ +#line 1760 "y.tab.c" /* yacc.c:1646 */ break; case 31: @@ -1765,7 +1767,7 @@ parserstratcurr = NULL; parserparamcurr = NULL; } -#line 1769 "y.tab.c" /* yacc.c:1646 */ +#line 1771 "y.tab.c" /* yacc.c:1646 */ break; case 32: @@ -1787,7 +1789,7 @@ parserparamcurr->database))) = ((yyvsp[0].STRAT)); } } -#line 1791 "y.tab.c" /* yacc.c:1646 */ +#line 1793 "y.tab.c" /* yacc.c:1646 */ break; case 33: @@ -1797,7 +1799,7 @@ parserparamcurr->name, parserstratcurr->tabl->methtab[parserstratcurr->data.method.meth].name, stratParserRemain ()); YYABORT; } -#line 1801 "y.tab.c" /* yacc.c:1646 */ +#line 1803 "y.tab.c" /* yacc.c:1646 */ break; case 35: @@ -1819,7 +1821,7 @@ ((yyval.TEST)) = test; } -#line 1823 "y.tab.c" /* yacc.c:1646 */ +#line 1825 "y.tab.c" /* yacc.c:1646 */ break; case 37: @@ -1841,7 +1843,7 @@ ((yyval.TEST)) = test; } -#line 1845 "y.tab.c" /* yacc.c:1646 */ +#line 1847 "y.tab.c" /* yacc.c:1646 */ break; case 39: @@ -1861,7 +1863,7 @@ ((yyval.TEST)) = test; } -#line 1865 "y.tab.c" /* yacc.c:1646 */ +#line 1867 "y.tab.c" /* yacc.c:1646 */ break; case 40: @@ -1869,7 +1871,7 @@ { ((yyval.TEST)) = ((yyvsp[-1].TEST)); } -#line 1873 "y.tab.c" /* yacc.c:1646 */ +#line 1875 "y.tab.c" /* yacc.c:1646 */ break; case 42: @@ -1890,7 +1892,7 @@ ((yyval.TEST)) = test; } -#line 1894 "y.tab.c" /* yacc.c:1646 */ +#line 1896 "y.tab.c" /* yacc.c:1646 */ break; case 43: @@ -1898,7 +1900,7 @@ { ((yyval.TESTOP)) = STRATTESTLT; } -#line 1902 "y.tab.c" /* yacc.c:1646 */ +#line 1904 "y.tab.c" /* yacc.c:1646 */ break; case 44: @@ -1906,7 +1908,7 @@ { ((yyval.TESTOP)) = STRATTESTEQ; } -#line 1910 "y.tab.c" /* yacc.c:1646 */ +#line 1912 "y.tab.c" /* yacc.c:1646 */ break; case 45: @@ -1914,7 +1916,7 @@ { ((yyval.TESTOP)) = STRATTESTGT; } -#line 1918 "y.tab.c" /* yacc.c:1646 */ +#line 1920 "y.tab.c" /* yacc.c:1646 */ break; case 46: @@ -1934,7 +1936,7 @@ ((yyval.TEST)) = test; } -#line 1938 "y.tab.c" /* yacc.c:1646 */ +#line 1940 "y.tab.c" /* yacc.c:1646 */ break; case 48: @@ -1942,7 +1944,7 @@ { ((yyval.TESTOP)) = STRATTESTADD; } -#line 1946 "y.tab.c" /* yacc.c:1646 */ +#line 1948 "y.tab.c" /* yacc.c:1646 */ break; case 49: @@ -1950,7 +1952,7 @@ { ((yyval.TESTOP)) = STRATTESTSUB; } -#line 1954 "y.tab.c" /* yacc.c:1646 */ +#line 1956 "y.tab.c" /* yacc.c:1646 */ break; case 50: @@ -1970,7 +1972,7 @@ ((yyval.TEST)) = test; } -#line 1974 "y.tab.c" /* yacc.c:1646 */ +#line 1976 "y.tab.c" /* yacc.c:1646 */ break; case 52: @@ -1978,7 +1980,7 @@ { ((yyval.TESTOP)) = STRATTESTMUL; } -#line 1982 "y.tab.c" /* yacc.c:1646 */ +#line 1984 "y.tab.c" /* yacc.c:1646 */ break; case 53: @@ -1998,7 +2000,7 @@ ((yyval.TEST)) = test; } -#line 2002 "y.tab.c" /* yacc.c:1646 */ +#line 2004 "y.tab.c" /* yacc.c:1646 */ break; case 55: @@ -2006,7 +2008,7 @@ { ((yyval.TESTOP)) = STRATTESTMOD; } -#line 2010 "y.tab.c" /* yacc.c:1646 */ +#line 2012 "y.tab.c" /* yacc.c:1646 */ break; case 56: @@ -2014,7 +2016,7 @@ { ((yyval.TEST)) = ((yyvsp[-1].TEST)); } -#line 2018 "y.tab.c" /* yacc.c:1646 */ +#line 2020 "y.tab.c" /* yacc.c:1646 */ break; case 59: @@ -2033,7 +2035,7 @@ ((yyval.TEST)) = test; } -#line 2037 "y.tab.c" /* yacc.c:1646 */ +#line 2039 "y.tab.c" /* yacc.c:1646 */ break; case 60: @@ -2052,7 +2054,7 @@ ((yyval.TEST)) = test; } -#line 2056 "y.tab.c" /* yacc.c:1646 */ +#line 2058 "y.tab.c" /* yacc.c:1646 */ break; case 61: @@ -2095,7 +2097,7 @@ ((yyval.TEST)) = test; } -#line 2099 "y.tab.c" /* yacc.c:1646 */ +#line 2101 "y.tab.c" /* yacc.c:1646 */ break; case 62: @@ -2103,7 +2105,7 @@ { ((yyval.DOUBLE)) = (((yyvsp[-1].TESTOP)) == STRATTESTSUB) ? - ((yyvsp[0].DOUBLE)) : ((yyvsp[0].DOUBLE)); } -#line 2107 "y.tab.c" /* yacc.c:1646 */ +#line 2109 "y.tab.c" /* yacc.c:1646 */ break; case 64: @@ -2111,11 +2113,11 @@ { ((yyval.INTEGER)) = (((yyvsp[-1].TESTOP)) == STRATTESTSUB) ? - ((yyvsp[0].INTEGER)) : ((yyvsp[0].INTEGER)); } -#line 2115 "y.tab.c" /* yacc.c:1646 */ +#line 2117 "y.tab.c" /* yacc.c:1646 */ break; -#line 2119 "y.tab.c" /* yacc.c:1646 */ +#line 2121 "y.tab.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -2391,7 +2393,7 @@ parserstrattab = strattab; /* Point to the parsing tables */ parserstratcurr = NULL; /* Clear up the temporary strategy pointer */ - if (stratParserParse2 () != 0) { /* Parse the strategy string */ + if (yyparse () != 0) { /* Parse the strategy string */ if (parserstratcurr != NULL) stratExit (parserstratcurr); return (NULL); @@ -2407,7 +2409,7 @@ static int -stratParserError ( +yyerror ( const char * const errstr) { errorPrint ("stratParserParse: invalid strategy string, before \"%s\"", stratParserRemain ()); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_arch_build.c scotch-6.0.6/src/libscotch/library_arch_build.c --- scotch-6.0.4.dfsg1/src/libscotch/library_arch_build.c 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_arch_build.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,6 +45,8 @@ /** to 01 nov 2001 **/ /** # Version 4.0 : from : 08 mar 2005 **/ /** to 17 mar 2005 **/ +/** # Version 6.0 : from : 16 mar 2016 **/ +/** to 31 may 2018 **/ /** **/ /************************************************************/ @@ -60,6 +62,7 @@ #include "graph.h" #include "arch.h" #include "arch_build.h" +#include "arch_build2.h" #include "mapping.h" #include "bgraph.h" #include "bgraph_bipart_st.h" @@ -88,13 +91,38 @@ stratExit (*((Strat **) stratptr)); if ((*((Strat **) stratptr) = stratInit (&bgraphbipartststratab, string)) == NULL) { - errorPrint ("SCOTCH_stratBipart: error in bipartitioning strategy"); + errorPrint (STRINGIFY (SCOTCH_stratBipart) ": error in bipartitioning strategy"); return (1); } return (0); } +/*+ This routine parses the given +*** bipartitioning strategy. +*** It returns: +*** - 0 : if string successfully scanned. +*** - !0 : on error. ++*/ + +int +SCOTCH_stratArchBuild ( +SCOTCH_Strat * const stratptr, +const char * const string) +{ + if (*((Strat **) stratptr) != NULL) + stratExit (*((Strat **) stratptr)); + +#if 0 + if ((*((Strat **) stratptr) = stratInit (&archbuildststratab, "")) == NULL) { + errorPrint (STRINGIFY (SCOTCH_stratArchBuild) ": error in architecture building strategy"); + return (1); + } +#endif + + return (0); +} + /*+ This routine fills the contents of the given *** opaque target structure with the data provided *** by the user. The source graph provided on input @@ -106,7 +134,7 @@ +*/ int -SCOTCH_archBuild ( +SCOTCH_archBuild0 ( SCOTCH_Arch * const archptr, /*+ Target architecture to build +*/ const SCOTCH_Graph * const grafptr, /*+ Graph to turn into architecture +*/ const SCOTCH_Num listnbr, /*+ Number of elements in sublist +*/ @@ -120,7 +148,7 @@ if ((sizeof (SCOTCH_Num) != sizeof (Gnum)) || (sizeof (SCOTCH_Num) != sizeof (Anum))) { - errorPrint ("SCOTCH_archBuild: internal error (1)"); + errorPrint (STRINGIFY (SCOTCH_archBuild0) ": internal error"); return (1); } @@ -128,7 +156,7 @@ *((Strat **) stratptr) = stratInit (&bgraphbipartststratab, "(m{vert=50,low=h{pass=10},asc=f{move=100,bal=0.1}}f{move=100,bal=0.05})(/((load0=load)|(load0=0))?x;)"); bipstratptr = *((Strat **) stratptr); if (bipstratptr->tabl != &bgraphbipartststratab) { - errorPrint ("SCOTCH_archBuild: not a bipartitioning strategy"); + errorPrint (STRINGIFY (SCOTCH_archBuild0) ": not a bipartitioning strategy"); return (1); } @@ -140,7 +168,48 @@ graflistdat.vnumtab = (Gnum *) listptr; } - o = archBuild ((Arch * const) archptr, (const Graph * const) grafptr, graflistptr, bipstratptr); + o = archDecoArchBuild ((Arch * const) archptr, (const Graph * const) grafptr, graflistptr, bipstratptr); return (o); } + +int +SCOTCH_archBuild2 ( +SCOTCH_Arch * const archptr, /*+ Target architecture to build +*/ +const SCOTCH_Graph * const grafptr, /*+ Graph to turn into architecture +*/ +const SCOTCH_Num vnumnbr, /*+ Number of elements in sublist +*/ +const SCOTCH_Num * const vnumtab) /*+ Pointer to sublist +*/ +{ + Gnum vertnbr; + Gnum listnbr; + Gnum * listtab; + + if ((sizeof (SCOTCH_Num) != sizeof (Gnum)) || + (sizeof (SCOTCH_Num) != sizeof (Anum))) { + errorPrint (STRINGIFY (SCOTCH_archBuild2) ": internal error"); + return (1); + } + + vertnbr = ((Graph *) grafptr)->vertnbr; + if ((vnumnbr == vertnbr) || (vnumnbr == 0) || (vnumtab == NULL)) { + listnbr = vertnbr; + listtab = NULL; + } + else { + listnbr = (Gnum) vnumnbr; + listtab = (Gnum *) vnumtab; + } + + return (archDeco2ArchBuild ((Arch * const) archptr, (const Graph * const) grafptr, listnbr, listtab)); +} + +int +SCOTCH_archBuild ( +SCOTCH_Arch * const archptr, /*+ Target architecture to build +*/ +const SCOTCH_Graph * const grafptr, /*+ Graph to turn into architecture +*/ +const SCOTCH_Num listnbr, /*+ Number of elements in sublist +*/ +const SCOTCH_Num * const listptr, /*+ Pointer to sublist +*/ +const SCOTCH_Strat * const stratptr) /*+ Bipartitoning strategy +*/ +{ + return (SCOTCH_archBuild0 (archptr, grafptr, listnbr, listptr, stratptr)); /* Old-style behavior */ +} diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_arch_build_f.c scotch-6.0.6/src/libscotch/library_arch_build_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_arch_build_f.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_arch_build_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 4.0 : from : 17 mar 2005 **/ /** to 17 mar 2005 **/ +/** # Version 6.0 : from : 21 apr 2018 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -66,24 +68,25 @@ ** */ -FORTRAN ( \ -SCOTCHFSTRATGRAPHBIPART, scotchfstratgraphbipart, ( \ -SCOTCH_Strat * const stratptr, \ -const char * const string, \ -int * const revaptr, \ -const int strnbr), \ -(stratptr, string, revaptr, strnbr)) +SCOTCH_FORTRAN ( \ +STRATGRAPHBIPART, stratgraphbipart, ( \ +SCOTCH_Strat * const straptr, \ +const char * const string, \ +int * const revaptr, \ +const int strnbr), \ +(straptr, string, revaptr, strnbr)) { char * restrict strtab; /* Pointer to null-terminated string */ if ((strtab = (char *) memAlloc (strnbr + 1)) == NULL) { /* Allocate temporary space */ - errorPrint ("SCOTCHFSTRATGRAPHBIPART: out of memory (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (STRATGRAPHBIPART)) ": out of memory"); *revaptr = 1; + return; } memCpy (strtab, string, strnbr); /* Copy string contents */ strtab[strnbr] = '\0'; /* Terminate string */ - *revaptr = SCOTCH_stratGraphBipart (stratptr, strtab); /* Call original routine */ + *revaptr = SCOTCH_stratGraphBipart (straptr, strtab); /* Call original routine */ memFree (strtab); } @@ -92,15 +95,15 @@ ** */ -FORTRAN ( \ -SCOTCHFARCHBUILD, scotchfarchbuild, ( \ -SCOTCH_Arch * const archptr, \ -SCOTCH_Graph * const grafptr, \ -const SCOTCH_Num * const listnbr, \ -const SCOTCH_Num * const listptr, \ -SCOTCH_Strat * const stratptr, \ -int * const revaptr), \ -(archptr, grafptr, listnbr, listptr, stratptr, revaptr)) +SCOTCH_FORTRAN ( \ +ARCHBUILD, archbuild, ( \ +SCOTCH_Arch * const archptr, \ +SCOTCH_Graph * const grafptr, \ +const SCOTCH_Num * const listnbr, \ +const SCOTCH_Num * const listptr, \ +SCOTCH_Strat * const straptr, \ +int * const revaptr), \ +(archptr, grafptr, listnbr, listptr, straptr, revaptr)) { - *revaptr = SCOTCH_archBuild (archptr, grafptr, *listnbr, listptr, stratptr); + *revaptr = SCOTCH_archBuild (archptr, grafptr, *listnbr, listptr, straptr); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_arch.c scotch-6.0.6/src/libscotch/library_arch.c --- scotch-6.0.4.dfsg1/src/libscotch/library_arch.c 2014-08-19 21:46:52.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_arch.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2009-2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2009-2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -52,8 +52,8 @@ /** to : 12 sep 2007 **/ /** # Version 5.1 : from : 05 jun 2009 **/ /** to : 13 feb 2011 **/ -/** # Version 6.0 : from : 14 fev 2011 **/ -/** to 19 aug 2014 **/ +/** # Version 6.0 : from : 14 feb 2011 **/ +/** to 05 jun 2018 **/ /** **/ /************************************************************/ @@ -71,6 +71,7 @@ #include "arch_cmpltw.h" #include "arch_hcub.h" #include "arch_mesh.h" +#include "arch_sub.h" #include "arch_tleaf.h" #include "arch_torus.h" #include "arch_vcmplt.h" @@ -111,11 +112,11 @@ SCOTCH_Arch * const archptr) { if (sizeof (SCOTCH_Num) != sizeof (Anum)) { - errorPrint ("SCOTCH_archInit: internal error (1)"); + errorPrint (STRINGIFY (SCOTCH_archInit) ": internal error (1)"); return (1); } if (sizeof (SCOTCH_Arch) < sizeof (Arch)) { - errorPrint ("SCOTCH_archInit: internal error (2)"); + errorPrint (STRINGIFY (SCOTCH_archInit) ": internal error (2)"); return (1); } @@ -222,22 +223,22 @@ int SCOTCH_archCmplt ( SCOTCH_Arch * const archptr, -const SCOTCH_Num numnbr) +const SCOTCH_Num termnbr) { Arch * tgtarchptr; ArchCmplt * tgtarchdatptr; if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { - errorPrint ("SCOTCH_archCmplt: internal error"); + errorPrint (STRINGIFY (SCOTCH_archCmplt) ": internal error"); return (1); } tgtarchptr = (Arch *) archptr; tgtarchdatptr = (ArchCmplt *) (void *) (&tgtarchptr->data); - tgtarchptr->class = archClass ("cmplt"); - tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ - tgtarchdatptr->numnbr = (Anum) numnbr; + tgtarchptr->class = archClass ("cmplt"); + tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ + tgtarchdatptr->termnbr = (Anum) termnbr; return (0); } @@ -255,7 +256,7 @@ Arch * tgtarchptr; if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { - errorPrint ("SCOTCH_archCmpltw: internal error"); + errorPrint (STRINGIFY (SCOTCH_archCmpltw) ": internal error"); return (1); } @@ -273,22 +274,22 @@ int SCOTCH_archHcub ( SCOTCH_Arch * const archptr, -const SCOTCH_Num dimmax) /*+ Number of dimensions +*/ +const SCOTCH_Num dimnnbr) /*+ Number of dimensions +*/ { Arch * tgtarchptr; ArchHcub * tgtarchdatptr; if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { - errorPrint ("SCOTCH_archHcub: internal error"); + errorPrint (STRINGIFY (SCOTCH_archHcub) ": internal error"); return (1); } tgtarchptr = (Arch *) archptr; tgtarchdatptr = (ArchHcub *) (void *) (&tgtarchptr->data); - tgtarchptr->class = archClass ("hcub"); - tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ - tgtarchdatptr->dimmax = (Anum) dimmax; + tgtarchptr->class = archClass ("hcub"); + tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ + tgtarchdatptr->dimnnbr = (Anum) dimnnbr; return (0); } @@ -307,7 +308,7 @@ ArchMesh2 * tgtarchdatptr; if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { - errorPrint ("SCOTCH_archMesh2: internal error"); + errorPrint (STRINGIFY (SCOTCH_archMesh2) ": internal error"); return (1); } @@ -316,8 +317,9 @@ tgtarchptr->class = archClass ("mesh2D"); tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ - tgtarchdatptr->c[0] = (Anum) dimxval; - tgtarchdatptr->c[1] = (Anum) dimyval; + tgtarchdatptr->dimnnbr = 2; + tgtarchdatptr->c[0] = (Anum) dimxval; + tgtarchdatptr->c[1] = (Anum) dimyval; return (0); } @@ -337,7 +339,7 @@ ArchMesh3 * tgtarchdatptr; if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { - errorPrint ("SCOTCH_archMesh3: internal error"); + errorPrint (STRINGIFY (SCOTCH_archMesh3) ": internal error"); return (1); } @@ -346,9 +348,10 @@ tgtarchptr->class = archClass ("mesh3D"); tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ - tgtarchdatptr->c[0] = (Anum) dimxval; - tgtarchdatptr->c[1] = (Anum) dimyval; - tgtarchdatptr->c[2] = (Anum) dimzval; + tgtarchdatptr->dimnnbr = 3; + tgtarchdatptr->c[0] = (Anum) dimxval; + tgtarchdatptr->c[1] = (Anum) dimyval; + tgtarchdatptr->c[2] = (Anum) dimzval; return (0); } @@ -358,6 +361,67 @@ */ int +SCOTCH_archMeshX ( +SCOTCH_Arch * const archptr, +const SCOTCH_Num dimnnbr, /*+ Number of dimensions in architecture +*/ +const SCOTCH_Num * const dimntab) /*+ Array of dimensions +*/ +{ + Arch * tgtarchptr; + ArchMeshX * tgtarchdatptr; + + if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { + errorPrint (STRINGIFY (SCOTCH_archMeshX) ": internal error"); + return (1); + } + if (dimnnbr > ARCHMESHDIMNMAX) { + errorPrint (STRINGIFY (SCOTCH_archMeshX) ": too many dimensions"); + return (1); + } + + tgtarchptr = (Arch *) archptr; + tgtarchdatptr = (ArchMeshX *) (void *) (&tgtarchptr->data); + + tgtarchptr->class = archClass ("meshXD"); + tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ + tgtarchdatptr->dimnnbr = dimnnbr; + memCpy (tgtarchdatptr->c, dimntab, dimnnbr * sizeof (SCOTCH_Num)); /* Copy dimension array */ + + return (0); +} + +/* +** +*/ + +int +SCOTCH_archSub ( +SCOTCH_Arch * const subarchptr, +SCOTCH_Arch * const orgarchptr, +const SCOTCH_Num vnumnbr, /*+ Number of dimensions +*/ +const SCOTCH_Num * const vnumtab) +{ + Arch * tgtarchptr; + ArchSub * tgtarchdatptr; + + if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { + errorPrint (STRINGIFY (SCOTCH_archSub) ": internal error"); + return (2); + } + + tgtarchptr = (Arch *) subarchptr; + tgtarchdatptr = (ArchSub *) (void *) (&tgtarchptr->data); + + tgtarchptr->class = archClass ("sub"); + tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ + + return (archSubArchBuild (tgtarchdatptr, (Arch *) orgarchptr, (Gnum) vnumnbr, (Gnum *) vnumtab)); +} + +/* +** +*/ + +int SCOTCH_archTleaf ( SCOTCH_Arch * const archptr, const SCOTCH_Num levlnbr, /*+ Number of levels in architecture +*/ @@ -370,7 +434,7 @@ ArchTleaf * tgtarchdatptr; if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { - errorPrint ("SCOTCH_archTleaf: internal error"); + errorPrint (STRINGIFY (SCOTCH_archTleaf) ": internal error"); return (1); } @@ -380,7 +444,7 @@ tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ if ((tgtarchdatptr->sizetab = memAlloc ((levlnbr * 2 + 1) * sizeof (Anum))) == NULL) { /* TRICK: One more slot for linktab[-1] */ - errorPrint ("SCOTCH_archTleaf: out of memory"); + errorPrint (STRINGIFY (SCOTCH_archTleaf) ": out of memory"); return (1); } tgtarchdatptr->levlnbr = (Anum) levlnbr; @@ -411,9 +475,7 @@ const SCOTCH_Num permnbr, /*+ Number of permutation indices +*/ const SCOTCH_Num * const permtab) /*+ Permutation array +*/ { - Anum levlnum; Anum permnum; - Anum sizeval; Arch * tgtarchptr; ArchTleaf * tgtarchdatptr; @@ -424,7 +486,7 @@ tgtarchptr->class = archClass ("ltleaf"); /* Override class */ if ((tgtarchdatptr->permtab = memAlloc (permnbr * 2 * sizeof (Anum))) == NULL) { /* TRICK: space for peritab too */ - errorPrint ("SCOTCH_archLtleaf: out of memory"); + errorPrint (STRINGIFY (SCOTCH_archLtleaf) ": out of memory"); return (1); } tgtarchdatptr->permnbr = (Anum) permnbr; @@ -452,18 +514,18 @@ ArchTorusX * tgtarchdatptr; if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { - errorPrint ("SCOTCH_archTorus2: internal error"); + errorPrint (STRINGIFY (SCOTCH_archTorus2) ": internal error"); return (1); } tgtarchptr = (Arch *) archptr; tgtarchdatptr = (ArchTorusX *) (void *) (&tgtarchptr->data); - tgtarchptr->class = archClass ("torus2D"); - tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ - tgtarchdatptr->dimmax = 2; - tgtarchdatptr->c[0] = (Anum) dimxval; - tgtarchdatptr->c[1] = (Anum) dimyval; + tgtarchptr->class = archClass ("torus2D"); + tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ + tgtarchdatptr->dimnnbr = 2; + tgtarchdatptr->c[0] = (Anum) dimxval; + tgtarchdatptr->c[1] = (Anum) dimyval; return (0); } @@ -483,19 +545,19 @@ ArchTorusX * tgtarchdatptr; if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { - errorPrint ("SCOTCH_archTorus3: internal error"); + errorPrint (STRINGIFY (SCOTCH_archTorus3) ": internal error"); return (1); } tgtarchptr = (Arch *) archptr; tgtarchdatptr = (ArchTorusX *) (void *) (&tgtarchptr->data); - tgtarchptr->class = archClass ("torus3D"); - tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ - tgtarchdatptr->dimmax = 3; - tgtarchdatptr->c[0] = (Anum) dimxval; - tgtarchdatptr->c[1] = (Anum) dimyval; - tgtarchdatptr->c[2] = (Anum) dimzval; + tgtarchptr->class = archClass ("torus3D"); + tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ + tgtarchdatptr->dimnnbr = 3; + tgtarchdatptr->c[0] = (Anum) dimxval; + tgtarchdatptr->c[1] = (Anum) dimyval; + tgtarchdatptr->c[2] = (Anum) dimzval; return (0); } @@ -507,28 +569,28 @@ int SCOTCH_archTorusX ( SCOTCH_Arch * const archptr, -const SCOTCH_Num dimnbr, /*+ Number of dimensions in architecture +*/ -const SCOTCH_Num * const dimtab) /*+ Array of dimensions +*/ +const SCOTCH_Num dimnnbr, /*+ Number of dimensions in architecture +*/ +const SCOTCH_Num * const dimntab) /*+ Array of dimensions +*/ { Arch * tgtarchptr; ArchTorusX * tgtarchdatptr; if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { - errorPrint ("SCOTCH_archTorusX: internal error"); + errorPrint (STRINGIFY (SCOTCH_archTorusX) ": internal error"); return (1); } - if (dimnbr > ARCHTORUSDIMMAX) { - errorPrint ("SCOTCH_archTorusX: too many dimensions"); + if (dimnnbr > ARCHMESHDIMNMAX) { + errorPrint (STRINGIFY (SCOTCH_archTorusX) ": too many dimensions"); return (1); } tgtarchptr = (Arch *) archptr; tgtarchdatptr = (ArchTorusX *) (void *) (&tgtarchptr->data); - tgtarchptr->class = archClass ("torusXD"); - tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ - tgtarchdatptr->dimmax = dimnbr; - memCpy (tgtarchdatptr->c, dimtab, dimnbr * sizeof (SCOTCH_Num)); /* Copy dimension array */ + tgtarchptr->class = archClass ("torusXD"); + tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ + tgtarchdatptr->dimnnbr = dimnnbr; + memCpy (tgtarchdatptr->c, dimntab, dimnnbr * sizeof (SCOTCH_Num)); /* Copy dimension array */ return (0); } @@ -544,7 +606,7 @@ Arch * tgtarchptr; if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { - errorPrint ("SCOTCH_archVcmplt: internal error"); + errorPrint (STRINGIFY (SCOTCH_archVcmplt) ": internal error"); return (1); } @@ -567,7 +629,7 @@ Arch * tgtarchptr; if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { - errorPrint ("SCOTCH_archVhcub: internal error"); + errorPrint (STRINGIFY (SCOTCH_archVhcub) ": internal error"); return (1); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_arch_f.c scotch-6.0.6/src/libscotch/library_arch_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_arch_f.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_arch_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010,2011 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2011,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,6 +45,8 @@ /** to 13 jan 2004 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 13 feb 2011 **/ +/** # Version 6.0 : from : 16 apr 2015 **/ +/** to 31 may 2018 **/ /** **/ /************************************************************/ @@ -70,10 +72,10 @@ ** */ -FORTRAN ( \ -SCOTCHFARCHINIT, scotchfarchinit, ( \ -SCOTCH_Arch * const archptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +ARCHINIT, archinit, ( \ +SCOTCH_Arch * const archptr, \ +int * const revaptr), \ (archptr, revaptr)) { *revaptr = SCOTCH_archInit (archptr); @@ -83,9 +85,9 @@ ** */ -FORTRAN ( \ -SCOTCHFARCHEXIT, scotchfarchexit, ( \ -SCOTCH_Arch * const archptr), \ +SCOTCH_FORTRAN ( \ +ARCHEXIT, archexit, ( \ +SCOTCH_Arch * const archptr), \ (archptr)) { SCOTCH_archExit (archptr); @@ -99,11 +101,11 @@ ** block read. */ -FORTRAN ( \ -SCOTCHFARCHLOAD, scotchfarchload, ( \ -SCOTCH_Arch * const archptr, \ -int * const fileptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +ARCHLOAD, archload, ( \ +SCOTCH_Arch * const archptr, \ +int * const fileptr, \ +int * const revaptr), \ (archptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ @@ -111,12 +113,12 @@ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFARCHLOAD: cannot duplicate handle"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (ARCHLOAD)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "r")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFARCHLOAD: cannot open input stream"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (ARCHLOAD)) ": cannot open input stream"); close (filenum); *revaptr = 1; return; @@ -134,11 +136,11 @@ ** */ -FORTRAN ( \ -SCOTCHFARCHSAVE, scotchfarchsave, ( \ -const SCOTCH_Arch * const archptr, \ -int * const fileptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +ARCHSAVE, archsave, ( \ +SCOTCH_Arch * const archptr, \ +int * const fileptr, \ +int * const revaptr), \ (archptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ @@ -146,13 +148,13 @@ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFARCHSAVE: cannot duplicate handle"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (ARCHSAVE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFARCHSAVE: cannot open output stream"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (ARCHSAVE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; @@ -169,11 +171,11 @@ ** */ -FORTRAN ( \ -SCOTCHFARCHNAME, scotchfarchname, ( \ -const SCOTCH_Arch * const archptr, \ -char * const chartab, \ -int * const charptr), \ +SCOTCH_FORTRAN ( \ +ARCHNAME, archname, ( \ +SCOTCH_Arch * const archptr, \ +char * const chartab, \ +int * const charptr), \ (archptr, chartab, charptr)) { char * nameptr; /* Name string */ @@ -186,10 +188,10 @@ ** */ -FORTRAN ( \ -SCOTCHFARCHSIZE, scotchfarchsize, ( \ -const SCOTCH_Arch * const archptr, \ -int * const sizeptr), \ +SCOTCH_FORTRAN ( \ +ARCHSIZE, archsize, ( \ +SCOTCH_Arch * const archptr, \ +int * const sizeptr), \ (archptr, sizeptr)) { *sizeptr = SCOTCH_archSize (archptr); @@ -199,10 +201,10 @@ ** */ -FORTRAN ( \ -SCOTCHFARCHVAR, scotchfarchvar, ( \ -const SCOTCH_Arch * const archptr, \ -int * const flagptr), \ +SCOTCH_FORTRAN ( \ +ARCHVAR, archvar, ( \ +SCOTCH_Arch * const archptr, \ +int * const flagptr), \ (archptr, flagptr)) { *flagptr = SCOTCH_archVar (archptr); @@ -212,26 +214,26 @@ ** */ -FORTRAN ( \ -SCOTCHFARCHCMPLT, scotchfarchcmplt, ( \ -SCOTCH_Arch * const archptr, \ -const SCOTCH_Num * const archnbr, \ -int * const revaptr), \ -(archptr, archnbr, revaptr)) +SCOTCH_FORTRAN ( \ +ARCHCMPLT, archcmplt, ( \ +SCOTCH_Arch * const archptr, \ +const SCOTCH_Num * const vertnbr, \ +int * const revaptr), \ +(archptr, vertnbr, revaptr)) { - *revaptr = SCOTCH_archCmplt (archptr, *archnbr); + *revaptr = SCOTCH_archCmplt (archptr, *vertnbr); } /* ** */ -FORTRAN ( \ -SCOTCHFARCHCMPLTW, scotchfarchcmpltw, ( \ -SCOTCH_Arch * const archptr, \ -const SCOTCH_Num * const vertnbr, \ -const SCOTCH_Num * const velotab, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +ARCHCMPLTW, archcmpltw, ( \ +SCOTCH_Arch * const archptr, \ +const SCOTCH_Num * const vertnbr, \ +const SCOTCH_Num * const velotab, \ +int * const revaptr), \ (archptr, vertnbr, velotab, revaptr)) { *revaptr = SCOTCH_archCmpltw (archptr, *vertnbr, velotab); @@ -241,26 +243,26 @@ ** */ -FORTRAN ( \ -SCOTCHFARCHHCUB, scotchfarchhcub, ( \ -SCOTCH_Arch * const archptr, \ -const SCOTCH_Num * const dimmax, \ -int * const revaptr), \ -(archptr, dimmax, revaptr)) +SCOTCH_FORTRAN ( \ +ARCHHCUB, archhcub, ( \ +SCOTCH_Arch * const archptr, \ +const SCOTCH_Num * const dimnmax, \ +int * const revaptr), \ +(archptr, dimnmax, revaptr)) { - *revaptr = SCOTCH_archHcub (archptr, *dimmax); + *revaptr = SCOTCH_archHcub (archptr, *dimnmax); } /* ** */ -FORTRAN ( \ -SCOTCHFARCHMESH2, scotchfarchmesh2, ( \ -SCOTCH_Arch * const archptr, \ -const SCOTCH_Num * const dimxval, \ -const SCOTCH_Num * const dimyval, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +ARCHMESH2, archmesh2, ( \ +SCOTCH_Arch * const archptr, \ +const SCOTCH_Num * const dimxval, \ +const SCOTCH_Num * const dimyval, \ +int * const revaptr), \ (archptr, dimxval, dimyval, revaptr)) { *revaptr = SCOTCH_archMesh2 (archptr, *dimxval, *dimyval); @@ -270,30 +272,60 @@ ** */ -FORTRAN ( \ -SCOTCHFARCHMESH3, scotchfarchmesh3, ( \ -SCOTCH_Arch * const archptr, \ -const SCOTCH_Num * const dimxval, \ -const SCOTCH_Num * const dimyval, \ -const SCOTCH_Num * const dimzval, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +ARCHMESH3, archmesh3, ( \ +SCOTCH_Arch * const archptr, \ +const SCOTCH_Num * const dimxval, \ +const SCOTCH_Num * const dimyval, \ +const SCOTCH_Num * const dimzval, \ +int * const revaptr), \ (archptr, dimxval, dimyval, dimzval, revaptr)) { *revaptr = SCOTCH_archMesh3 (archptr, *dimxval, *dimyval, *dimzval); } +/* +** +*/ + +SCOTCH_FORTRAN ( \ +ARCHMESHX, archmeshx, ( \ +SCOTCH_Arch * const archptr, \ +const SCOTCH_Num * const dimnnbr, \ +const SCOTCH_Num * const dimntab, \ +int * const revaptr), \ +(archptr, dimnnbr, dimntab, revaptr)) +{ + *revaptr = SCOTCH_archMeshX (archptr, *dimnnbr, dimntab); +} + +/* +** +*/ + +SCOTCH_FORTRAN ( \ +ARCHSUB, archsub, ( \ +SCOTCH_Arch * const subarchptr, \ +SCOTCH_Arch * const orgarchptr, \ +const SCOTCH_Num * const vnumnbr, \ +const SCOTCH_Num * const vnumtab, \ +int * const revaptr), \ +(subarchptr, orgarchptr, vnumnbr, vnumtab, revaptr)) +{ + *revaptr = SCOTCH_archSub (subarchptr, orgarchptr, *vnumnbr, vnumtab); +} /* ** */ -FORTRAN ( \ -SCOTCHFARCHTLEAF, scotchfarchtleaf, ( \ -SCOTCH_Arch * const archptr, \ -const SCOTCH_Num * const levlnbr, \ -const SCOTCH_Num * const sizetab, \ -const SCOTCH_Num * const linktab, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +ARCHTLEAF, archtleaf, ( \ +SCOTCH_Arch * const archptr, \ +const SCOTCH_Num * const levlnbr, \ +const SCOTCH_Num * const sizetab, \ +const SCOTCH_Num * const linktab, \ +int * const revaptr), \ (archptr, levlnbr, sizetab, linktab, revaptr)) { *revaptr = SCOTCH_archTleaf (archptr, *levlnbr, sizetab, linktab); @@ -303,12 +335,12 @@ ** */ -FORTRAN ( \ -SCOTCHFARCHTORUS2, scotchfarchtorus2, ( \ -SCOTCH_Arch * const archptr, \ -const SCOTCH_Num * const dimxval, \ -const SCOTCH_Num * const dimyval, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +ARCHTORUS2, archtorus2, ( \ +SCOTCH_Arch * const archptr, \ +const SCOTCH_Num * const dimxval, \ +const SCOTCH_Num * const dimyval, \ +int * const revaptr), \ (archptr, dimxval, dimyval, revaptr)) { *revaptr = SCOTCH_archTorus2 (archptr, *dimxval, *dimyval); @@ -318,13 +350,13 @@ ** */ -FORTRAN ( \ -SCOTCHFARCHTORUS3, scotchfarchtorus3, ( \ -SCOTCH_Arch * const archptr, \ -const SCOTCH_Num * const dimxval, \ -const SCOTCH_Num * const dimyval, \ -const SCOTCH_Num * const dimzval, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +ARCHTORUS3, archtorus3, ( \ +SCOTCH_Arch * const archptr, \ +const SCOTCH_Num * const dimxval, \ +const SCOTCH_Num * const dimyval, \ +const SCOTCH_Num * const dimzval, \ +int * const revaptr), \ (archptr, dimxval, dimyval, dimzval, revaptr)) { *revaptr = SCOTCH_archTorus3 (archptr, *dimxval, *dimyval, *dimzval); @@ -334,10 +366,25 @@ ** */ -FORTRAN ( \ -SCOTCHFARCHVCMPLT, scotchfarchvcmplt, ( \ -SCOTCH_Arch * const archptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +ARCHTORUSX, archtorusx, ( \ +SCOTCH_Arch * const archptr, \ +const SCOTCH_Num * const dimnnbr, \ +const SCOTCH_Num * const dimntab, \ +int * const revaptr), \ +(archptr, dimnnbr, dimntab, revaptr)) +{ + *revaptr = SCOTCH_archTorusX (archptr, *dimnnbr, dimntab); +} + +/* +** +*/ + +SCOTCH_FORTRAN ( \ +ARCHVCMPLT, archvcmplt, ( \ +SCOTCH_Arch * const archptr, \ +int * const revaptr), \ (archptr, revaptr)) { *revaptr = SCOTCH_archVcmplt (archptr); @@ -347,10 +394,10 @@ ** */ -FORTRAN ( \ -SCOTCHFARCHVHCUB, scotchfarchvhcub, ( \ -SCOTCH_Arch * const archptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +ARCHVHCUB, archvhcub, ( \ +SCOTCH_Arch * const archptr, \ +int * const revaptr), \ (archptr, revaptr)) { *revaptr = SCOTCH_archVhcub (archptr); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_common_f.c scotch-6.0.6/src/libscotch/library_common_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_common_f.c 2012-06-14 14:12:42.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_common_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,7 +41,7 @@ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 6.0 : from : 14 jun 2012 **/ -/** to 14 jun 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -66,9 +66,9 @@ ** */ -FORTRAN ( \ -SCOTCHFMEMCUR, scotchfmemcur, ( \ -SCOTCH_Idx * const memoptr), \ +SCOTCH_FORTRAN ( \ +MEMCUR, memcur, ( \ +SCOTCH_Idx * const memoptr), \ (memoptr)) { *memoptr = SCOTCH_memCur (); @@ -78,9 +78,9 @@ ** */ -FORTRAN ( \ -SCOTCHFMEMMAX, scotchfmemmax, ( \ -SCOTCH_Idx * const memoptr), \ +SCOTCH_FORTRAN ( \ +MEMMAX, memmax, ( \ +SCOTCH_Idx * const memoptr), \ (memoptr)) { *memoptr = SCOTCH_memMax (); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_band.c scotch-6.0.6/src/libscotch/library_dgraph_band.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_band.c 2012-11-30 00:17:17.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_band.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2011,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2011,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,7 +40,7 @@ /** the libScotch library. **/ /** **/ /** DATES : # Version 6.0 : from : 28 oct 2011 **/ -/** to 29 nov 2012 **/ +/** to 21 may 2018 **/ /** **/ /************************************************************/ @@ -56,7 +56,7 @@ #include "dgraph_halo.h" #include "ptscotch.h" -#define DGRAPHBANDGROWNAME dgraphBand +#define DGRAPHBANDGROWNAME dgraphBand2 #include "dgraph_band_grow.h" /************************************/ @@ -82,7 +82,6 @@ const SCOTCH_Num distval, SCOTCH_Dgraph * const bndgrafptr) { - MPI_Comm bandproccomm; Gnum bandvertlocnnd; /* End of local band vertex array */ Gnum bandvertlocnbr; /* Number of local band vertices */ Gnum bandvertlvlnum; /* Index of first band vertex belonging to last level */ @@ -101,14 +100,11 @@ Gnum * restrict bandvnumgsttax; /* Indices of selected band vertices in band graph */ Gnum * restrict bandvlblloctax; Gnum banddegrlocmax; - Gnum degrval; Gnum veloval; Gnum vertlocadj; const Gnum * restrict edgegsttax; SCOTCH_Num * fronloctax; - Gnum fronlocnum; int cheklocval; - int chekglbval; int procngbnum; Dgraph * restrict const grafptr = (Dgraph *) orggrafptr; @@ -125,39 +121,31 @@ MPI_Comm_compare (((Dgraph * restrict const) orggrafptr)->proccomm, ((Dgraph * restrict const) bndgrafptr)->proccomm, &o); if ((o != MPI_IDENT) && (o != MPI_CONGRUENT)) { - errorPrint ("SCOTCH_dgraphBand: communicators are not congruent"); + errorPrint (STRINGIFY (SCOTCH_dgraphBand) ": communicators are not congruent"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ if (dgraphGhst (grafptr) != 0) { /* Compute ghost edge array if not already present */ - errorPrint ("SCOTCH_dgraphBand: cannot compute ghost edge array"); + errorPrint (STRINGIFY (SCOTCH_dgraphBand) ": cannot compute ghost edge array"); return (1); } cheklocval = 0; bandvnumgstsiz = MAX ((grafptr->vertgstnbr * sizeof (Gnum)), (grafptr->procglbnbr * sizeof (int))); /* TRICK: re-use array for further error collective communications */ - if ((bandvnumgsttax = memAlloc (bandvnumgstsiz)) == NULL) { - errorPrint ("SCOTCH_dgraphBand: out of memory (1)"); - cheklocval = 1; - } -#ifdef SCOTCH_DEBUG_DGRAPH1 /* This communication cannot be covered by a useful one */ - if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, grafptr->proccomm) != MPI_SUCCESS) { - errorPrint ("SCOTCH_dgraphBand: communication error (1)"); - return (1); + if ((bandvnumgsttax = memAlloc (bandvnumgstsiz)) == NULL) + errorPrint (STRINGIFY (SCOTCH_dgraphBand) ": out of memory (1)"); /* Error will be propagated by dgraphBand2*() */ + else { + memSet (bandvnumgsttax, ~0, grafptr->vertgstnbr * sizeof (Gnum)); /* Reset part array */ + bandvnumgsttax -= grafptr->baseval; } -#else /* SCOTCH_DEBUG_DGRAPH1 */ - chekglbval = cheklocval; -#endif /* SCOTCH_DEBUG_DGRAPH1 */ - if (chekglbval != 0) - return (1); - memSet (bandvnumgsttax, ~0, grafptr->vertgstnbr * sizeof (Gnum)); /* Reset part array */ - bandvnumgsttax -= grafptr->baseval; - - if ((((grafptr->flagval & DGRAPHCOMMPTOP) != 0) ? dgraphBandPtop : dgraphBandColl) - (grafptr, fronlocnbr, fronloctab, distval, bandvnumgsttax, &bandvertlvlnum, &bandvertlocnbr, &bandedgelocsiz) != 0) + if ((((grafptr->flagval & DGRAPHCOMMPTOP) != 0) ? dgraphBand2Ptop : dgraphBand2Coll) + (grafptr, fronlocnbr, fronloctab, distval, bandvnumgsttax, &bandvertlvlnum, &bandvertlocnbr, &bandedgelocsiz) != 0) { + if (bandvnumgsttax != NULL) + memFree (bandvnumgsttax + grafptr->baseval); return (1); + } bandvelolocnbr = (veloloctax != NULL) ? bandvertlocnbr : 0; bandedlolocsiz = (edloloctax != NULL) ? bandedgelocsiz : 0; @@ -172,14 +160,14 @@ &bandgrafptr->procngbtab, (size_t) (grafptr->procglbnbr * sizeof (int)), &bandgrafptr->procrcvtab, (size_t) (grafptr->procglbnbr * sizeof (int)), &bandgrafptr->procsndtab, (size_t) (grafptr->procglbnbr * sizeof (int)), NULL) == NULL) { - errorPrint ("SCOTCH_dgraphBand: out of memory (2)"); + errorPrint (STRINGIFY (SCOTCH_dgraphBand) ": out of memory (2)"); cheklocval = 1; } else if (memAllocGroup ((void **) (void *) /* Allocate distributed graph public data */ &bandgrafptr->vertloctax, (size_t) ((bandvertlocnbr + 1) * sizeof (Gnum)), /* Compact vertex array */ &bandvlblloctax, (size_t) (bandvertlocnbr * sizeof (Gnum)), &bandveloloctax, (size_t) (bandvelolocnbr * sizeof (Gnum)), NULL) == NULL) { - errorPrint ("SCOTCH_dgraphBand: out of memory (3)"); + errorPrint (STRINGIFY (SCOTCH_dgraphBand) ": out of memory (3)"); cheklocval = 1; } else if (bandgrafptr->vertloctax -= bandgrafptr->baseval, @@ -188,7 +176,7 @@ (memAllocGroup ((void **) (void *) &bandedgeloctax, (size_t) (bandedgelocsiz * sizeof (Gnum)), &bandedloloctax, (size_t) (bandedlolocsiz * sizeof (Gnum)), NULL) == NULL)) { - errorPrint ("SCOTCH_dgraphBand: out of memory (4)"); + errorPrint (STRINGIFY (SCOTCH_dgraphBand) ": out of memory (4)"); cheklocval = 1; } else { @@ -200,7 +188,7 @@ bandgrafptr->procdsptab[0] = -1; if (MPI_Allgather (&bandgrafptr->procdsptab[0], 1, GNUM_MPI, /* Send received data to dummy array */ bandvnumgsttax + bandgrafptr->baseval, 1, GNUM_MPI, grafptr->proccomm) != MPI_SUCCESS) { - errorPrint ("SCOTCH_dgraphBand: communication error (2)"); + errorPrint (STRINGIFY (SCOTCH_dgraphBand) ": communication error (2)"); return (1); } dgraphExit (bandgrafptr); @@ -211,7 +199,7 @@ bandgrafptr->procdsptab[0] = bandvertlocnbr; if (MPI_Allgather (&bandgrafptr->procdsptab[0], 1, GNUM_MPI, &bandgrafptr->procdsptab[1], 1, GNUM_MPI, grafptr->proccomm) != MPI_SUCCESS) { - errorPrint ("SCOTCH_dgraphBand: communication error (3)"); + errorPrint (STRINGIFY (SCOTCH_dgraphBand) ": communication error (3)"); return (1); } } @@ -244,7 +232,7 @@ } if (dgraphHaloSync (grafptr, (byte *) (bandvnumgsttax + bandgrafptr->baseval), GNUM_MPI) != 0) { /* Share global indexing of halo vertices */ - errorPrint ("SCOTCH_dgraphBand: cannot perform halo exchange"); + errorPrint (STRINGIFY (SCOTCH_dgraphBand) ": cannot perform halo exchange"); return (1); } @@ -276,7 +264,7 @@ edgelocnum < vendloctax[vertlocnum]; edgelocnum ++) { #ifdef SCOTCH_DEBUG_DGRAPH2 if (bandvnumgsttax[edgegsttax[edgelocnum]] == ~0) { /* All ends should belong to the band graph too */ - errorPrint ("SCOTCH_dgraphBand: internal error (1)"); + errorPrint (STRINGIFY (SCOTCH_dgraphBand) ": internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ @@ -316,10 +304,7 @@ memFree (bandvnumgsttax + bandgrafptr->baseval); /* Free useless space */ - if (bandedloloctax != NULL) { /* If graph has edge weights */ - Gnum edgelocnum; - Gnum edgelocnnd; - + if (bandedloloctax != NULL) { /* If graph has edge weights */ for (bandvertlocnum = bandgrafptr->baseval; /* For all vertices that do not belong to the last level */ bandvertlocnum < bandvertlvlnum; bandvertlocnum ++) { Gnum vertlocnum; @@ -346,12 +331,12 @@ bandgrafptr->edgelocsiz = bandedgelocsiz; bandgrafptr->degrglbmax = banddegrlocmax; /* Local maximum degree will be turned into global maximum degree */ if (dgraphBuild4 (bandgrafptr) != 0) { - errorPrint ("SCOTCH_dgraphBand: cannot build band graph"); + errorPrint (STRINGIFY (SCOTCH_dgraphBand) ": cannot build band graph"); return (1); } #ifdef SCOTCH_DEBUG_DGRAPH2 if (dgraphCheck (bandgrafptr) != 0) { - errorPrint ("SCOTCH_dgraphBand: internal error (2)"); + errorPrint (STRINGIFY (SCOTCH_dgraphBand) ": internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_band_f.c scotch-6.0.6/src/libscotch/library_dgraph_band_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_band_f.c 2012-11-30 00:17:44.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_band_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2011,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2011,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,7 +40,7 @@ /** of the libSCOTCH library. **/ /** **/ /** DATES : # Version 6.0 : from : 03 nov 2011 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -66,14 +66,14 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHBAND, scotchfdgraphband, ( \ -SCOTCH_Dgraph * const srcgrafptr, \ -const SCOTCH_Num fronlocnbr, \ -SCOTCH_Num * const fronloctab, \ -const SCOTCH_Num distval, \ -SCOTCH_Dgraph * const bndgrafptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +DGRAPHBAND, dgraphband, ( \ +SCOTCH_Dgraph * const srcgrafptr, \ +const SCOTCH_Num fronlocnbr, \ +SCOTCH_Num * const fronloctab, \ +const SCOTCH_Num distval, \ +SCOTCH_Dgraph * const bndgrafptr, \ +int * const revaptr), \ (srcgrafptr, fronlocnbr, fronloctab, distval, bndgrafptr, revaptr)) { *revaptr = SCOTCH_dgraphBand (srcgrafptr, fronlocnbr, fronloctab, distval, bndgrafptr); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_build.c scotch-6.0.6/src/libscotch/library_dgraph_build.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_build.c 2012-11-30 00:18:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_build.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 5.0 : from : 23 feb 2007 **/ /** to 18 jul 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -100,12 +100,12 @@ #ifdef SCOTCH_DEBUG_LIBRARY1 if (sizeof (SCOTCH_Dgraph) < sizeof (Dgraph)) { - errorPrint ("SCOTCH_dgraphBuild: internal error"); + errorPrint (STRINGIFY (SCOTCH_dgraphBuild) ": internal error"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ if ((baseval < 0) || (baseval > 1)) { - errorPrint ("SCOTCH_dgraphBuild: invalid base parameter"); + errorPrint (STRINGIFY (SCOTCH_dgraphBuild) ": invalid base parameter"); return (1); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_build_f.c scotch-6.0.6/src/libscotch/library_dgraph_build_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_build_f.c 2012-11-30 00:19:41.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_build_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 5.0 : from : 24 feb 2007 **/ /** to 18 jul 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -67,29 +67,29 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHBUILD, scotchfdgraphbuild, ( \ -SCOTCH_Dgraph * const grafptr, \ -const SCOTCH_Num * const baseptr, \ -const SCOTCH_Num * const vertlocptr, \ -const SCOTCH_Num * const vertlocmpt, \ -SCOTCH_Num * const vertloctab, \ -SCOTCH_Num * const vendloctab, \ -SCOTCH_Num * const veloloctab, \ -SCOTCH_Num * const vlblloctab, \ -const SCOTCH_Num * const edgelocptr, \ -const SCOTCH_Num * const edgelocptz, \ -SCOTCH_Num * const edgeloctab, \ -SCOTCH_Num * const edgegsttab, \ -SCOTCH_Num * const edloloctab, \ -int * const revaptr), \ -(grafptr, baseptr, vertlocptr, vertlocmpt, \ - vertloctab, vendloctab, veloloctab, \ - vlblloctab, edgelocptr, edgelocptz, \ - edgeloctab, edgegsttab, edloloctab, \ +SCOTCH_FORTRAN ( \ +DGRAPHBUILD, dgraphbuild, ( \ +SCOTCH_Dgraph * const grafptr, \ +const SCOTCH_Num * const baseval, \ +const SCOTCH_Num * const vertlocnbr, \ +const SCOTCH_Num * const vertlocmax, \ +SCOTCH_Num * const vertloctab, \ +SCOTCH_Num * const vendloctab, \ +SCOTCH_Num * const veloloctab, \ +SCOTCH_Num * const vlblloctab, \ +const SCOTCH_Num * const edgelocnbr, \ +const SCOTCH_Num * const edgelocsiz, \ +SCOTCH_Num * const edgeloctab, \ +SCOTCH_Num * const edgegsttab, \ +SCOTCH_Num * const edloloctab, \ +int * const revaptr), \ +(grafptr, baseval, vertlocnbr, vertlocmax, \ + vertloctab, vendloctab, veloloctab, \ + vlblloctab, edgelocnbr, edgelocsiz, \ + edgeloctab, edgegsttab, edloloctab, \ revaptr)) { - *revaptr = SCOTCH_dgraphBuild (grafptr, *baseptr, *vertlocptr, *vertlocmpt, vertloctab, + *revaptr = SCOTCH_dgraphBuild (grafptr, *baseval, *vertlocnbr, *vertlocmax, vertloctab, vendloctab, veloloctab, vlblloctab, - *edgelocptr, *edgelocptz, edgeloctab, edgegsttab, edloloctab); + *edgelocnbr, *edgelocsiz, edgeloctab, edgegsttab, edloloctab); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_build_grid3d_f.c scotch-6.0.6/src/libscotch/library_dgraph_build_grid3d_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_build_grid3d_f.c 2012-11-30 00:22:29.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_build_grid3d_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** # Version 5.1 : from : 06 jun 2010 **/ /** to 06 jun 2010 **/ /** # Version 6.0 : from : 29 nov 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -70,17 +70,17 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHBUILDGRID3D, scotchfdgraphbuildgrid3d, ( \ -SCOTCH_Dgraph * const grafptr, \ -const SCOTCH_Num * const baseptr, \ -const SCOTCH_Num * const dimxptr, \ -const SCOTCH_Num * const dimyptr, \ -const SCOTCH_Num * const dimzptr, \ -const SCOTCH_Num * const incrptr, \ -const int * const flagptr, \ -int * const revaptr), \ -(grafptr, baseptr, dimxptr, dimyptr, dimzptr, incrptr, flagptr, revaptr)) +SCOTCH_FORTRAN ( \ +DGRAPHBUILDGRID3D, dgraphbuildgrid3d, ( \ +SCOTCH_Dgraph * const grafptr, \ +const SCOTCH_Num * const baseval, \ +const SCOTCH_Num * const dimxval, \ +const SCOTCH_Num * const dimyval, \ +const SCOTCH_Num * const dimzval, \ +const SCOTCH_Num * const incrval, \ +const int * const flagval, \ +int * const revaptr), \ +(grafptr, baseval, dimxval, dimyval, dimzval, incrval, flagval, revaptr)) { - *revaptr = SCOTCH_dgraphBuildGrid3D (grafptr, *baseptr, *dimxptr, *dimyptr, *dimzptr, *incrptr, *flagptr); + *revaptr = SCOTCH_dgraphBuildGrid3D (grafptr, *baseval, *dimxval, *dimyval, *dimzval, *incrval, *flagval); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph.c scotch-6.0.6/src/libscotch/library_dgraph.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph.c 2012-11-29 23:58:29.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2009,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2009,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** # Version 5.1 : from : 26 mar 2009 **/ /** to 17 nov 2010 **/ /** # Version 6.0 : from : 27 nov 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -102,17 +102,17 @@ #ifdef SCOTCH_PTHREAD MPI_Query_thread (&thrdlvlval); if (thrdlvlval < MPI_THREAD_MULTIPLE) { - errorPrint ("SCOTCH_dgraphInit: Scotch compiled with SCOTCH_PTHREAD and program not launched with MPI_THREAD_MULTIPLE"); + errorPrint (STRINGIFY (SCOTCH_dgraphInit) ": Scotch compiled with SCOTCH_PTHREAD and program not launched with MPI_THREAD_MULTIPLE"); return (1); } #endif /* SCOTCH_PTHREAD */ if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { - errorPrint ("SCOTCH_dgraphInit: internal error (1)"); + errorPrint (STRINGIFY (SCOTCH_dgraphInit) ": internal error (1)"); return (1); } if (sizeof (SCOTCH_Dgraph) < sizeof (Dgraph)) { - errorPrint ("SCOTCH_dgraphInit: internal error (2)"); + errorPrint (STRINGIFY (SCOTCH_dgraphInit) ": internal error (2)"); return (1); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_check_f.c scotch-6.0.6/src/libscotch/library_dgraph_check_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_check_f.c 2012-11-30 00:21:06.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_check_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 5.0 : from : 26 aug 2006 **/ /** to 26 aug 2006 **/ /** # Version 6.0 : from : 29 nov 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -68,10 +68,10 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHCHECK, scotchfdgraphcheck, ( \ -const SCOTCH_Dgraph * const grafptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +DGRAPHCHECK, dgraphcheck, ( \ +const SCOTCH_Dgraph * const grafptr, \ +int * const revaptr), \ (grafptr, revaptr)) { *revaptr = SCOTCH_dgraphCheck (grafptr); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_coarsen.c scotch-6.0.6/src/libscotch/library_dgraph_coarsen.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_coarsen.c 2014-09-28 16:41:08.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_coarsen.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2011,2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2011,2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 5.1 : from : 07 aug 2011 **/ /** to 07 aug 2011 **/ /** # Version 6.0 : from : 11 sep 2012 **/ -/** to 28 sep 2014 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -98,7 +98,7 @@ MPI_Comm_compare (((Dgraph * restrict const) coargrafptr)->proccomm, ((Dgraph * restrict const) finegrafptr)->proccomm, &o); if ((o != MPI_IDENT) && (o != MPI_CONGRUENT)) { - errorPrint ("SCOTCH_dgraphCoarsen: communicators are not congruent"); + errorPrint (STRINGIFY (SCOTCH_dgraphCoarsen) ": communicators are not congruent"); return (3); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_coarsen_f.c scotch-6.0.6/src/libscotch/library_dgraph_coarsen_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_coarsen_f.c 2012-11-30 00:23:16.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_coarsen_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2011,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2011,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 5.1 : from : 07 aug 2011 **/ /** to 07 aug 2011 **/ /** # Version 6.0 : from : 12 sep 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -67,16 +67,16 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHCOARSEN, scotchfdgraphcoarsen, ( \ -SCOTCH_Dgraph * const finegrafptr, \ -const SCOTCH_Num * const coarnbrptr, \ -double * const coarratptr, \ -const SCOTCH_Num * const flagvalptr, \ -SCOTCH_Dgraph * const coargrafptr, \ -SCOTCH_Num * const multloctab, \ -int * const revaptr), \ -(finegrafptr, coarnbrptr, coarratptr, flagvalptr, coargrafptr, multloctab, revaptr)) +SCOTCH_FORTRAN ( \ +DGRAPHCOARSEN, dgraphcoarsen, ( \ +SCOTCH_Dgraph * const finegrafptr, \ +const SCOTCH_Num * const coarnbrptr, \ +double * const coarrat, \ +const SCOTCH_Num * const flagval, \ +SCOTCH_Dgraph * const coargrafptr, \ +SCOTCH_Num * const multloctab, \ +int * const revaptr), \ +(finegrafptr, coarnbrptr, coarrat, flagval, coargrafptr, multloctab, revaptr)) { - *revaptr = SCOTCH_dgraphCoarsen (finegrafptr, *coarnbrptr, *coarratptr, *flagvalptr, coargrafptr, multloctab); + *revaptr = SCOTCH_dgraphCoarsen (finegrafptr, *coarnbrptr, *coarrat, *flagval, coargrafptr, multloctab); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_f.c scotch-6.0.6/src/libscotch/library_dgraph_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_f.c 2012-11-30 00:16:42.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007-2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007-2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** # Version 5.1 : from : 27 jul 2008 **/ /** to 15 apr 2010 **/ /** # Version 6.0 : from : 29 nov 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -69,11 +69,11 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHINIT, scotchfdgraphinit, ( \ -SCOTCH_Dgraph * const grafptr, \ -const MPI_Fint * const commptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +DGRAPHINIT, dgraphinit, ( \ +SCOTCH_Dgraph * const grafptr, \ +const MPI_Fint * const commptr, \ +int * const revaptr), \ (grafptr, commptr, revaptr)) { MPI_Comm commdat; @@ -86,9 +86,9 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHEXIT, scotchfdgraphexit, ( \ -SCOTCH_Dgraph * const grafptr), \ +SCOTCH_FORTRAN ( \ +DGRAPHEXIT, dgraphexit, ( \ +SCOTCH_Dgraph * const grafptr), \ (grafptr)) { SCOTCH_dgraphExit (grafptr); @@ -98,13 +98,13 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHSIZE, scotchfdgraphsize, ( \ -const SCOTCH_Dgraph * const grafptr, \ -SCOTCH_Num * const vertglbptr, \ -SCOTCH_Num * const vertlocptr, \ -SCOTCH_Num * const edgeglbptr, \ -SCOTCH_Num * const edgelocptr), \ +SCOTCH_FORTRAN ( \ +DGRAPHSIZE, dgraphsize, ( \ +const SCOTCH_Dgraph * const grafptr, \ +SCOTCH_Num * const vertglbptr, \ +SCOTCH_Num * const vertlocptr, \ +SCOTCH_Num * const edgeglbptr, \ +SCOTCH_Num * const edgelocptr), \ (grafptr, vertglbptr, vertlocptr, edgeglbptr, edgelocptr)) { SCOTCH_dgraphSize (grafptr, vertglbptr, vertlocptr, edgeglbptr, edgelocptr); @@ -114,31 +114,31 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHDATA, scotchfdgraphdata, ( \ -const SCOTCH_Dgraph * const grafptr, \ -const SCOTCH_Num * const indxptr, \ -SCOTCH_Num * const baseptr, \ -SCOTCH_Num * const vertglbptr, \ -SCOTCH_Num * const vertlocptr, \ -SCOTCH_Num * const vertlocptz, \ -SCOTCH_Num * const vertgstptr, \ -SCOTCH_Idx * const vertlocidx, \ -SCOTCH_Idx * const vendlocidx, \ -SCOTCH_Idx * const velolocidx, \ -SCOTCH_Idx * const vlbllocidx, \ -SCOTCH_Num * const edgeglbptr, \ -SCOTCH_Num * const edgelocptr, \ -SCOTCH_Num * const edgelocptz, \ -SCOTCH_Idx * const edgelocidx, \ -SCOTCH_Idx * const edgegstidx, \ -SCOTCH_Idx * const edlolocidx, \ -MPI_Fint * const commptr), \ -(grafptr, indxptr, baseptr, \ - vertglbptr, vertlocptr, vertlocptz, \ - vertgstptr, vertlocidx, vendlocidx, \ - velolocidx, vlbllocidx, edgeglbptr, \ - edgelocptr, edgelocptz, edgelocidx, \ +SCOTCH_FORTRAN ( \ +DGRAPHDATA, dgraphdata, ( \ +const SCOTCH_Dgraph * const grafptr, \ +const SCOTCH_Num * const indxptr, \ +SCOTCH_Num * const baseptr, \ +SCOTCH_Num * const vertglbptr, \ +SCOTCH_Num * const vertlocptr, \ +SCOTCH_Num * const vertlocptz, \ +SCOTCH_Num * const vertgstptr, \ +SCOTCH_Idx * const vertlocidx, \ +SCOTCH_Idx * const vendlocidx, \ +SCOTCH_Idx * const velolocidx, \ +SCOTCH_Idx * const vlbllocidx, \ +SCOTCH_Num * const edgeglbptr, \ +SCOTCH_Num * const edgelocptr, \ +SCOTCH_Num * const edgelocptz, \ +SCOTCH_Idx * const edgelocidx, \ +SCOTCH_Idx * const edgegstidx, \ +SCOTCH_Idx * const edlolocidx, \ +MPI_Fint * const commptr), \ +(grafptr, indxptr, baseptr, \ + vertglbptr, vertlocptr, vertlocptz, \ + vertgstptr, vertlocidx, vendlocidx, \ + velolocidx, vlbllocidx, edgeglbptr, \ + edgelocptr, edgelocptz, edgelocidx, \ edgegstidx, edlolocidx, commptr)) { SCOTCH_Num * vertloctab; /* Pointer to graph arrays */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_gather.c scotch-6.0.6/src/libscotch/library_dgraph_gather.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_gather.c 2012-11-30 00:23:51.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_gather.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 5.0 : from : 12 jul 2007 **/ /** to 17 jul 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -112,7 +112,7 @@ } if (MPI_Allreduce (reduloctab, reduglbtab, 3, GNUM_MPI, MPI_SUM, srcdgrfptr->proccomm) != MPI_SUCCESS) { - errorPrint ("SCOTCH_dgraphGather: communication error"); + errorPrint (STRINGIFY (SCOTCH_dgraphGather) ": communication error"); return (1); } if (reduglbtab[0] == 1) /* If only one single root */ @@ -120,6 +120,6 @@ else if (reduglbtab[0] == srcdgrfptr->procglbnbr) /* If all processes are roots */ return (dgraphGatherAll2 (srcdgrfptr, (Graph *) cgrfptr, reduglbtab[2], -1)); - errorPrint ("SCOTCH_dgraphGather: invalid number of roots"); + errorPrint (STRINGIFY (SCOTCH_dgraphGather) ": invalid number of roots"); return (1); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_gather_f.c scotch-6.0.6/src/libscotch/library_dgraph_gather_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_gather_f.c 2012-11-30 00:24:23.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_gather_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 5.0 : from : 12 jul 2007 **/ /** to 12 jul 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -68,11 +68,11 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHGATHER, scotchfdgraphgather, ( \ -SCOTCH_Dgraph * const dgrfptr, \ -SCOTCH_Graph * const cgrfptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +DGRAPHGATHER, dgraphgather, ( \ +SCOTCH_Dgraph * const dgrfptr, \ +SCOTCH_Graph * const cgrfptr, \ +int * const revaptr), \ (dgrfptr, cgrfptr, revaptr)) { *revaptr = SCOTCH_dgraphGather (dgrfptr, cgrfptr); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_grow.c scotch-6.0.6/src/libscotch/library_dgraph_grow.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_grow.c 2012-11-30 00:24:50.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_grow.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,7 +40,7 @@ /** the libScotch library. **/ /** **/ /** DATES : # Version 6.0 : from : 26 sep 2012 **/ -/** to 29 nov 2012 **/ +/** to 21 may 2018 **/ /** **/ /************************************************************/ @@ -62,7 +62,7 @@ /* */ /**********************************/ -#define DGRAPHBANDGROWNAME dgraphGrow +#define DGRAPHBANDGROWNAME dgraphGrow2 #define DGRAPHBANDGROWEDGE(n) /* No need to count edges */ #define DGRAPHBANDGROWENQ1 /* Color array already set */ #define DGRAPHBANDGROWENQ2 vnumgsttax[vertlocnum] /* Set vertex color */ @@ -102,6 +102,7 @@ const SCOTCH_Num distval, SCOTCH_Num * const partgsttab) { + Gnum * bandpartgsttax; Gnum bandvertlocnbr; /* Not used */ Gnum bandvertlvlnum; /* Not used */ Gnum bandedgelocsiz; /* Not used */ @@ -109,10 +110,12 @@ Dgraph * restrict const grafptr = (Dgraph *) orggrafptr; if (dgraphGhst (grafptr) != 0) { /* Compute ghost edge array if not already present */ - errorPrint ("SCOTCH_dgraphGrow: cannot compute ghost edge array"); + errorPrint (STRINGIFY (SCOTCH_dgraphGrow) ": cannot compute ghost edge array"); return (1); } - return ((((grafptr->flagval & DGRAPHCOMMPTOP) != 0) ? dgraphGrowPtop : dgraphGrowColl) - (grafptr, seedlocnbr, seedloctab, distval, partgsttab - grafptr->baseval, &bandvertlvlnum, &bandvertlocnbr, &bandedgelocsiz)); + bandpartgsttax = (partgsttab != NULL) ? (Gnum *) partgsttab - grafptr->baseval : NULL; + + return ((((grafptr->flagval & DGRAPHCOMMPTOP) != 0) ? dgraphGrow2Ptop : dgraphGrow2Coll) + (grafptr, seedlocnbr, seedloctab, distval, bandpartgsttax, &bandvertlvlnum, &bandvertlocnbr, &bandedgelocsiz)); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_halo_f.c scotch-6.0.6/src/libscotch/library_dgraph_halo_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_halo_f.c 2012-11-30 00:25:45.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_halo_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2009,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2009,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** # Version 5.1 : from : 09 may 2009 **/ /** to 10 may 2009 **/ /** # Version 6.0 : from : 29 nov 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -70,10 +70,10 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHGHST, scotchfdgraphghst, ( \ -SCOTCH_Dgraph * const grafptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +DGRAPHGHST, dgraphghst, ( \ +SCOTCH_Dgraph * const grafptr, \ +int * const revaptr), \ (grafptr, revaptr)) { *revaptr = SCOTCH_dgraphGhst (grafptr); @@ -83,12 +83,12 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHHALO, scotchfdgraphhalo, ( \ -SCOTCH_Dgraph * const grafptr, \ -void * const datatab, \ -MPI_Fint * const typeptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +DGRAPHHALO, dgraphhalo, ( \ +SCOTCH_Dgraph * const grafptr, \ +void * const datatab, \ +MPI_Fint * const typeptr, \ +int * const revaptr), \ (grafptr, datatab, typeptr, revaptr)) { MPI_Datatype typeval; @@ -101,13 +101,13 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHHALOASYNC, scotchfdgraphhaloasync, ( \ -SCOTCH_Dgraph * const grafptr, \ -void * const datatab, \ -MPI_Fint * const typeptr, \ -SCOTCH_DgraphHaloReq * const requptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +DGRAPHHALOASYNC, dgraphhaloasync, ( \ +SCOTCH_Dgraph * const grafptr, \ +void * const datatab, \ +MPI_Fint * const typeptr, \ +SCOTCH_DgraphHaloReq * const requptr, \ +int * const revaptr), \ (grafptr, datatab, typeptr, requptr, revaptr)) { MPI_Datatype typeval; @@ -120,10 +120,10 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHHALOWAIT, scotchfdgraphhalowait, ( \ -SCOTCH_DgraphHaloReq * const requptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +DGRAPHHALOWAIT, dgraphhalowait, ( \ +SCOTCH_DgraphHaloReq * const requptr, \ +int * const revaptr), \ (requptr, revaptr)) { *revaptr = SCOTCH_dgraphHaloWait (requptr); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_induce.c scotch-6.0.6/src/libscotch/library_dgraph_induce.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_induce.c 2012-11-30 00:26:11.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_induce.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,7 +40,7 @@ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 6.0 : from : 30 aug 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /** NOTES : # This code is directly derived from **/ /** the code of dgraphInducePart() and **/ @@ -141,7 +141,7 @@ MPI_Comm_compare (((Dgraph * restrict const) orggrafptr)->proccomm, ((Dgraph * restrict const) indgrafptr)->proccomm, &o); if ((o != MPI_IDENT) && (o != MPI_CONGRUENT)) { - errorPrint ("SCOTCH_dgraphInducePart: communicators are not congruent"); + errorPrint (STRINGIFY (SCOTCH_dgraphInducePart) ": communicators are not congruent"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_induce_f.c scotch-6.0.6/src/libscotch/library_dgraph_induce_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_induce_f.c 2012-11-30 00:26:35.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_induce_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,7 +40,7 @@ /** routines of the libSCOTCH library. **/ /** **/ /** DATES : # Version 6.0 : from : 30 aug 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -66,14 +66,14 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHINDUCEPART, scotchfdgraphinducepart, ( \ -SCOTCH_Dgraph * const orggrafptr, \ -SCOTCH_Num * const orgpartloctab, \ -SCOTCH_Num * const indpartval, \ -SCOTCH_Num * const indvertlocnbr, \ -SCOTCH_Dgraph * const indgrafptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +DGRAPHINDUCEPART, dgraphinducepart, ( \ +SCOTCH_Dgraph * const orggrafptr, \ +SCOTCH_Num * const orgpartloctab, \ +SCOTCH_Num * const indpartval, \ +SCOTCH_Num * const indvertlocnbr, \ +SCOTCH_Dgraph * const indgrafptr, \ +int * const revaptr), \ (orggrafptr, orgpartloctab, indpartval, indvertlocnbr, indgrafptr, revaptr)) { *revaptr = SCOTCH_dgraphInducePart (orggrafptr, orgpartloctab, *indpartval, *indvertlocnbr, indgrafptr); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_io_load.c scotch-6.0.6/src/libscotch/library_dgraph_io_load.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_io_load.c 2012-11-30 00:27:02.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_io_load.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 5.0 : from : 13 may 2007 **/ /** to 13 may 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -88,11 +88,11 @@ GraphFlag srcgrafflag; /* Graph flags */ if ((baseval < -1) || (baseval > 1)) { - errorPrint ("SCOTCH_dgraphLoad: invalid base parameter"); + errorPrint (STRINGIFY (SCOTCH_dgraphLoad) ": invalid base parameter"); return (1); } if ((flagval < 0) || (flagval > 3)) { - errorPrint ("SCOTCH_dgraphLoad: invalid flag parameter"); + errorPrint (STRINGIFY (SCOTCH_dgraphLoad) ": invalid flag parameter"); return (1); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_io_load_f.c scotch-6.0.6/src/libscotch/library_dgraph_io_load_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_io_load_f.c 2012-11-30 00:27:28.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_io_load_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 27 mar 2010 **/ /** # Version 6.0 : from : 29 nov 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -73,14 +73,14 @@ ** block read. */ -FORTRAN ( \ -SCOTCHFDGRAPHLOAD, scotchfdgraphload, ( \ -SCOTCH_Dgraph * const grafptr, \ -int * const fileptr, \ -const SCOTCH_Num * const baseptr, \ -const SCOTCH_Num * const flagptr, \ -int * const revaptr), \ -(grafptr, fileptr, baseptr, flagptr, revaptr)) +SCOTCH_FORTRAN ( \ +DGRAPHLOAD, dgraphload, ( \ +SCOTCH_Dgraph * const grafptr, \ +int * const fileptr, \ +const SCOTCH_Num * const baseval, \ +const SCOTCH_Num * const flagval, \ +int * const revaptr), \ +(grafptr, fileptr, baseval, flagval, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ @@ -90,12 +90,12 @@ stream = NULL; else { if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFDGRAPHLOAD: cannot duplicate handle"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHLOAD)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "r")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFDGRAPHLOAD: cannot open input stream"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHLOAD)) ": cannot open input stream"); close (filenum); *revaptr = 1; return; @@ -103,8 +103,7 @@ setbuf (stream, NULL); /* Do not buffer on input */ } - errorPrint ("SCOTCHFDGRAPHLOAD: not implemented"); - o = SCOTCH_dgraphLoad (grafptr, stream, *baseptr, *flagptr); + o = SCOTCH_dgraphLoad (grafptr, stream, *baseval, *flagval); if (stream != NULL) /* If process has an open stream */ fclose (stream); /* This closes filenum too */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_io_save_f.c scotch-6.0.6/src/libscotch/library_dgraph_io_save_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_io_save_f.c 2012-11-30 00:28:20.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_io_save_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 27 mar 2010 **/ /** # Version 6.0 : from : 29 nov 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -69,11 +69,11 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHSAVE, scotchfdgraphsave, ( \ -SCOTCH_Dgraph * const grafptr, \ -int * const fileptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +DGRAPHSAVE, dgraphsave, ( \ +SCOTCH_Dgraph * const grafptr, \ +int * const fileptr, \ +int * const revaptr), \ (grafptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ @@ -81,13 +81,13 @@ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFDGRAPHSAVE: cannot duplicate handle"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHSAVE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFDGRAPHSAVE: cannot open output stream"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHSAVE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_map.c scotch-6.0.6/src/libscotch/library_dgraph_map.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_map.c 2012-11-30 00:28:47.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_map.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2008-2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2008-2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 5.1 : from : 12 jun 2008 **/ /** to 31 aug 2011 **/ /** # Version 6.0 : from : 14 nov 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -89,7 +89,7 @@ #ifdef SCOTCH_DEBUG_LIBRARY1 if (sizeof (SCOTCH_Dmapping) < sizeof (LibDmapping)) { - errorPrint ("SCOTCH_dgraphMapInit: internal error"); + errorPrint (STRINGIFY (SCOTCH_dgraphMapInit) ": internal error"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ @@ -154,7 +154,7 @@ #ifdef SCOTCH_DEBUG_DGRAPH2 if (dgraphCheck (srcgrafptr) != 0) { - errorPrint ("SCOTCH_dgraphMapCompute: invalid input graph"); + errorPrint (STRINGIFY (SCOTCH_dgraphMapCompute) ": invalid input graph"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ @@ -170,7 +170,7 @@ } mapstratptr = *((Strat **) stratptr); if (mapstratptr->tabl != &kdgraphmapststratab) { - errorPrint ("SCOTCH_dgraphMapCompute: not a parallel graph mapping strategy"); + errorPrint (STRINGIFY (SCOTCH_dgraphMapCompute) ": not a parallel graph mapping strategy"); return (1); } @@ -256,7 +256,7 @@ stratExit (*((Strat **) stratptr)); if ((*((Strat **) stratptr) = stratInit (&kdgraphmapststratab, string)) == NULL) { - errorPrint ("SCOTCH_stratDgraphMap: error in parallel mapping strategy"); + errorPrint (STRINGIFY (SCOTCH_stratDgraphMap) ": error in parallel mapping strategy"); return (1); } @@ -333,7 +333,7 @@ stringSubst (bufftab, "", verttab); if (SCOTCH_stratDgraphMap (stratptr, bufftab) != 0) { - errorPrint ("SCOTCH_stratDgraphMapBuild: error in parallel mapping strategy"); + errorPrint (STRINGIFY (SCOTCH_stratDgraphMapBuild) ": error in parallel mapping strategy"); return (1); } @@ -414,7 +414,7 @@ stringSubst (bufftab, "", verttab); if (SCOTCH_stratDgraphMap (stratptr, bufftab) != 0) { - errorPrint ("SCOTCH_stratDgraphClusterBuild: error in parallel mapping strategy"); + errorPrint (STRINGIFY (SCOTCH_stratDgraphClusterBuild) ": error in parallel mapping strategy"); return (1); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_map_f.c scotch-6.0.6/src/libscotch/library_dgraph_map_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_map_f.c 2012-11-30 00:29:21.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_map_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2008,2010-2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2008,2010-2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 5.1 : from : 28 jun 2008 **/ /** to 31 aug 2011 **/ /** # Version 6.0 : from : 29 nov 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -67,61 +67,61 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHMAPINIT, scotchfdgraphmapinit, ( \ -const SCOTCH_Dgraph * const grafptr, \ -SCOTCH_Dmapping * const mapptr, \ -const SCOTCH_Arch * const archptr, \ -SCOTCH_Num * const termloctab, \ -int * const revaptr), \ -(grafptr, mapptr, archptr, termloctab, revaptr)) +SCOTCH_FORTRAN ( \ +DGRAPHMAPINIT, dgraphmapinit, ( \ +const SCOTCH_Dgraph * const grafptr, \ +SCOTCH_Dmapping * const mappptr, \ +const SCOTCH_Arch * const archptr, \ +SCOTCH_Num * const termloctab, \ +int * const revaptr), \ +(grafptr, mappptr, archptr, termloctab, revaptr)) { - *revaptr = SCOTCH_dgraphMapInit (grafptr, mapptr, archptr, termloctab); + *revaptr = SCOTCH_dgraphMapInit (grafptr, mappptr, archptr, termloctab); } /* ** */ -FORTRAN ( \ -SCOTCHFDGRAPHMAPEXIT, scotchfdgraphmapexit, ( \ -const SCOTCH_Dgraph * const grafptr, \ -SCOTCH_Dmapping * const mapptr), \ -(grafptr, mapptr)) +SCOTCH_FORTRAN ( \ +DGRAPHMAPEXIT, dgraphmapexit, ( \ +const SCOTCH_Dgraph * const grafptr, \ +SCOTCH_Dmapping * const mappptr), \ +(grafptr, mappptr)) { - SCOTCH_dgraphMapExit (grafptr, mapptr); + SCOTCH_dgraphMapExit (grafptr, mappptr); } /* ** */ -FORTRAN ( \ -SCOTCHFDGRAPHMAPSAVE, scotchfdgraphmapsave, ( \ -const SCOTCH_Dgraph * const grafptr, \ -SCOTCH_Dmapping * const mapptr, \ -int * const fileptr, \ -int * const revaptr), \ -(grafptr, mapptr, fileptr, revaptr)) +SCOTCH_FORTRAN ( \ +DGRAPHMAPSAVE, dgraphmapsave, ( \ +const SCOTCH_Dgraph * const grafptr, \ +SCOTCH_Dmapping * const mappptr, \ +int * const fileptr, \ +int * const revaptr), \ +(grafptr, mappptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFDGRAPHMAPSAVE: cannot duplicate handle"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHMAPSAVE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFDGRAPHMAPSAVE: cannot open output stream"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHMAPSAVE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; } - o = SCOTCH_dgraphMapSave (grafptr, mapptr, stream); + o = SCOTCH_dgraphMapSave (grafptr, mappptr, stream); fclose (stream); /* This closes filenum too */ @@ -132,71 +132,72 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHMAPCOMPUTE, scotchfdgraphmapcompute, ( \ -SCOTCH_Dgraph * const grafptr, \ -SCOTCH_Dmapping * const mapptr, \ -SCOTCH_Strat * const stratptr, \ -int * const revaptr), \ -(grafptr, mapptr, stratptr, revaptr)) +SCOTCH_FORTRAN ( \ +DGRAPHMAPCOMPUTE, dgraphmapcompute, ( \ +SCOTCH_Dgraph * const grafptr, \ +SCOTCH_Dmapping * const mappptr, \ +SCOTCH_Strat * const straptr, \ +int * const revaptr), \ +(grafptr, mappptr, straptr, revaptr)) { - *revaptr = SCOTCH_dgraphMapCompute (grafptr, mapptr, stratptr); + *revaptr = SCOTCH_dgraphMapCompute (grafptr, mappptr, straptr); } /* ** */ -FORTRAN ( \ -SCOTCHFDGRAPHMAP, scotchfdgraphmap, ( \ -SCOTCH_Dgraph * const grafptr, \ -const SCOTCH_Arch * const archptr, \ -SCOTCH_Strat * const stratptr, \ -SCOTCH_Num * const termloctab, \ -int * const revaptr), \ -(grafptr, archptr, stratptr, termloctab, revaptr)) +SCOTCH_FORTRAN ( \ +DGRAPHMAP, dgraphmap, ( \ +SCOTCH_Dgraph * const grafptr, \ +const SCOTCH_Arch * const archptr, \ +SCOTCH_Strat * const straptr, \ +SCOTCH_Num * const partloctab, \ +int * const revaptr), \ +(grafptr, archptr, straptr, partloctab, revaptr)) { - *revaptr = SCOTCH_dgraphMap (grafptr, archptr, stratptr, termloctab); + *revaptr = SCOTCH_dgraphMap (grafptr, archptr, straptr, partloctab); } /* ** */ -FORTRAN ( \ -SCOTCHFDGRAPHPART, scotchfdgraphpart, ( \ -SCOTCH_Dgraph * const grafptr, \ -const SCOTCH_Num * const partptr, \ -SCOTCH_Strat * const stratptr, \ -SCOTCH_Num * const termloctab, \ -int * const revaptr), \ -(grafptr, partptr, stratptr, termloctab, revaptr)) +SCOTCH_FORTRAN ( \ +DGRAPHPART, dgraphpart, ( \ +SCOTCH_Dgraph * const grafptr, \ +const SCOTCH_Num * const partnbr, \ +SCOTCH_Strat * const straptr, \ +SCOTCH_Num * const partloctab, \ +int * const revaptr), \ +(grafptr, partnbr, straptr, partloctab, revaptr)) { - *revaptr = SCOTCH_dgraphPart (grafptr, *partptr, stratptr, termloctab); + *revaptr = SCOTCH_dgraphPart (grafptr, *partnbr, straptr, partloctab); } /* String lengths are passed at the very ** end of the argument list. */ -FORTRAN ( \ -SCOTCHFSTRATDGRAPHMAP, scotchfstratdgraphmap, ( \ -SCOTCH_Strat * const stratptr, \ -const char * const string, \ -int * const revaptr, \ -const int strnbr), \ -(stratptr, string, revaptr, strnbr)) +SCOTCH_FORTRAN ( \ +STRATDGRAPHMAP, stratdgraphmap, ( \ +SCOTCH_Strat * const straptr, \ +const char * const string, \ +int * const revaptr, \ +const int strnbr), \ +(straptr, string, revaptr, strnbr)) { char * restrict strtab; /* Pointer to null-terminated string */ if ((strtab = (char *) memAlloc (strnbr + 1)) == NULL) { /* Allocate temporary space */ - errorPrint ("SCOTCHFSTRATDGRAPHMAP: out of memory (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (STRATDGRAPHMAP)) ": out of memory"); *revaptr = 1; + return; } memCpy (strtab, string, strnbr); /* Copy string contents */ strtab[strnbr] = '\0'; /* Terminate string */ - *revaptr = SCOTCH_stratDgraphMap (stratptr, strtab); /* Call original routine */ + *revaptr = SCOTCH_stratDgraphMap (straptr, strtab); /* Call original routine */ memFree (strtab); } @@ -205,33 +206,33 @@ ** */ -FORTRAN ( \ -SCOTCHFSTRATDGRAPHMAPBUILD, scotchfstratdgraphmapbuild, ( \ -SCOTCH_Strat * const stratptr, \ -const SCOTCH_Num * const flagval, \ -const SCOTCH_Num * const procnbr, \ -const SCOTCH_Num * const partnbr, \ -const double * const kbalval, \ -int * const revaptr), \ -(stratptr, flagval, procnbr, partnbr, kbalval, revaptr)) +SCOTCH_FORTRAN ( \ +STRATDGRAPHMAPBUILD, stratdgraphmapbuild, ( \ +SCOTCH_Strat * const straptr, \ +const SCOTCH_Num * const flagval, \ +const SCOTCH_Num * const procnbr, \ +const SCOTCH_Num * const partnbr, \ +const double * const kbalval, \ +int * const revaptr), \ +(straptr, flagval, procnbr, partnbr, kbalval, revaptr)) { - *revaptr = SCOTCH_stratDgraphMapBuild (stratptr, *flagval, *procnbr, *partnbr, *kbalval); + *revaptr = SCOTCH_stratDgraphMapBuild (straptr, *flagval, *procnbr, *partnbr, *kbalval); } /* ** */ -FORTRAN ( \ -SCOTCHFSTRATDGRAPHCLUSTERBUILD, scotchfstratdgraphclusterbuild, ( \ -SCOTCH_Strat * const stratptr, \ -const SCOTCH_Num * const flagval, \ -const SCOTCH_Num * const procnbr, \ -const SCOTCH_Num * const pwgtval, \ -const double * const densval, \ -const double * const bbalval, \ -int * const revaptr), \ -(stratptr, flagval, procnbr, pwgtval, densval, bbalval, revaptr)) +SCOTCH_FORTRAN ( \ +STRATDGRAPHCLUSTERBUILD, stratdgraphclusterbuild, ( \ +SCOTCH_Strat * const straptr, \ +const SCOTCH_Num * const flagval, \ +const SCOTCH_Num * const procnbr, \ +const SCOTCH_Num * const pwgtval, \ +const double * const densval, \ +const double * const bbalval, \ +int * const revaptr), \ +(straptr, flagval, procnbr, pwgtval, densval, bbalval, revaptr)) { - *revaptr = SCOTCH_stratDgraphClusterBuild (stratptr, *flagval, *procnbr, *pwgtval, *densval, *bbalval); + *revaptr = SCOTCH_stratDgraphClusterBuild (straptr, *flagval, *procnbr, *pwgtval, *densval, *bbalval); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_map_view.c scotch-6.0.6/src/libscotch/library_dgraph_map_view.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_map_view.c 2012-11-30 00:29:56.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_map_view.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2008-2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2008-2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 5.1 : from : 26 jul 2008 **/ /** to 11 aug 2010 **/ /** # Version 6.0 : from : 29 nov 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -130,12 +130,12 @@ tgtnbr = archDomSize (&mappptr->m.archdat, &domnfrst); /* Get architecture size */ if (archVar (&mappptr->m.archdat)) { - errorPrint ("SCOTCH_dgraphMapView: not implemented"); + errorPrint (STRINGIFY (SCOTCH_dgraphMapView) ": not implemented"); return (1); } if (dgraphGhst (grafptr) != 0) { /* Compute ghost edge array if not already present */ - errorPrint ("SCOTCH_dgraphMapView: cannot compute ghost edge array"); + errorPrint (STRINGIFY (SCOTCH_dgraphMapView) ": cannot compute ghost edge array"); return (1); } @@ -151,18 +151,18 @@ cheklocval = 1; } if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, grafptr->proccomm) != MPI_SUCCESS) { - errorPrint ("SCOTCH_dgraphMapView: communication error (1)"); + errorPrint (STRINGIFY (SCOTCH_dgraphMapView) ": communication error (1)"); return (1); } if (chekglbval != 0) { if (nmskloctab != NULL) memFree (nmskloctab); - errorPrint ("SCOTCH_dgraphMapView: out of memory"); + errorPrint (STRINGIFY (SCOTCH_dgraphMapView) ": out of memory"); return (1); } if (dmapTerm (&mappptr->m, grafptr, termgsttax) != 0) { - errorPrint ("SCOTCH_dgraphMapView: cannot build local terminal array"); + errorPrint (STRINGIFY (SCOTCH_dgraphMapView) ": cannot build local terminal array"); memFree (nmskloctab); return (1); } @@ -176,7 +176,7 @@ for (vertlocnum = grafptr->baseval; vertlocnum < grafptr->vertlocnnd; vertlocnum ++) { #ifdef SCOTCH_DEBUG_DMAP2 if ((termgsttax[vertlocnum] < -1) || (termgsttax[vertlocnum] >= tgtnbr)) { - errorPrint ("SCOTCH_dgraphMapView: invalid local terminal array"); + errorPrint (STRINGIFY (SCOTCH_dgraphMapView) ": invalid local terminal array"); memFree (nmskloctab); /* Free group leader */ return (1); } @@ -187,7 +187,7 @@ } if (MPI_Allreduce (tgloloctab, tgloglbtab, tgtnbr, GNUM_MPI, MPI_SUM, grafptr->proccomm) != MPI_SUCCESS) { - errorPrint ("SCOTCH_dgraphMapView: communication error (2)"); + errorPrint (STRINGIFY (SCOTCH_dgraphMapView) ": communication error (2)"); memFree (nmskloctab); /* Free group leader */ return (1); } @@ -231,7 +231,7 @@ } if (dgraphHaloWait (&requdat) != 0) { /* Wait for ghost terminal data to be exchanged */ - errorPrint ("SCOTCH_dgraphMapView: cannot complete asynchronous halo exchange"); + errorPrint (STRINGIFY (SCOTCH_dgraphMapView) ": cannot complete asynchronous halo exchange"); memFree (nmskloctab); /* Free group leader */ return (1); } @@ -272,7 +272,7 @@ nmskloctab[0] &= ~1; /* Do not account for unmapped vertices (terminal domain 0 because of "+1") */ if (MPI_Allreduce (nmskloctab, nmskglbtab, nmskidxnbr, MPI_INT, MPI_BOR, grafptr->proccomm) != MPI_SUCCESS) { - errorPrint ("SCOTCH_dgraphMapView: communication error (3)"); + errorPrint (STRINGIFY (SCOTCH_dgraphMapView) ": communication error (3)"); memFree (nmskloctab); /* Free group leader */ return (1); } @@ -344,7 +344,7 @@ commlocdist[256 + 2] = commlocexpan; if (MPI_Allreduce (commlocdist, commglbdist, 256 + 3, GNUM_MPI, MPI_SUM, grafptr->proccomm) != MPI_SUCCESS) { - errorPrint ("SCOTCH_dgraphMapView: communication error (4)"); + errorPrint (STRINGIFY (SCOTCH_dgraphMapView) ": communication error (4)"); memFree (nmskloctab); /* Free group leader */ return (1); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_map_view_f.c scotch-6.0.6/src/libscotch/library_dgraph_map_view_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_map_view_f.c 2012-11-30 00:31:29.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_map_view_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2008,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2008,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 5.1 : from : 27 jul 2008 **/ /** to 27 mar 2010 **/ /** # Version 6.0 : from : 29 nov 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -67,12 +67,12 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHMAPVIEW, scotchfdgraphmapview, ( \ -SCOTCH_Dgraph * const grafptr, \ -const SCOTCH_Dmapping * const mapptr, \ -int * const fileptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +DGRAPHMAPVIEW, dgraphmapview, ( \ +SCOTCH_Dgraph * const grafptr, \ +const SCOTCH_Dmapping * const mapptr, \ +int * const fileptr, \ +int * const revaptr), \ (grafptr, mapptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ @@ -83,12 +83,12 @@ stream = NULL; else { if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFDGRAPHMAPVIEW: cannot duplicate handle"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHMAPVIEW)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFDGRAPHMAPVIEW: cannot open output stream"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHMAPVIEW)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_order.c scotch-6.0.6/src/libscotch/library_dgraph_order.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_order.c 2014-09-28 16:41:08.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_order.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007-2010,2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007-2010,2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** # Version 5.1 : from : 29 mar 2010 **/ /** to 14 aug 2010 **/ /** # Version 6.0 : from : 08 jan 2012 **/ -/** to 28 sep 2014 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -89,7 +89,7 @@ #ifdef SCOTCH_DEBUG_LIBRARY1 if (sizeof (SCOTCH_Dordering) < sizeof (Dorder)) { - errorPrint ("SCOTCH_graphDorderInit: internal error"); + errorPrint (STRINGIFY (SCOTCH_graphDorderInit) ": internal error"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ @@ -174,7 +174,7 @@ #ifdef SCOTCH_DEBUG_DGRAPH2 if (dgraphCheck (srcgrafptr) != 0) { - errorPrint ("SCOTCH_dgraphOrderComputeList: invalid input graph"); + errorPrint (STRINGIFY (SCOTCH_dgraphOrderComputeList) ": invalid input graph"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ @@ -184,7 +184,7 @@ ordstratptr = *((Strat **) stratptr); if (ordstratptr->tabl != &hdgraphorderststratab) { - errorPrint ("SCOTCH_dgraphOrderComputeList: not a distributed ordering strategy"); + errorPrint (STRINGIFY (SCOTCH_dgraphOrderComputeList) ": not a distributed ordering strategy"); return (1); } @@ -206,7 +206,7 @@ /* TODO: Take list into account */ dorderFree (srcordeptr); /* Clean all existing ordering data */ if ((srccblkptr = dorderFrst (srcordeptr)) == NULL) { - errorPrint ("SCOTCH_dgraphOrderComputeList: cannot create root column block"); + errorPrint (STRINGIFY (SCOTCH_dgraphOrderComputeList) ": cannot create root column block"); return (1); } hdgraphOrderSt (&srcgrafdat, srccblkptr, ordstratptr); @@ -236,7 +236,7 @@ stratExit (*((Strat **) stratptr)); if ((*((Strat **) stratptr) = stratInit (&hdgraphorderststratab, string)) == NULL) { - errorPrint ("SCOTCH_stratDgraphOrder: error in ordering strategy"); + errorPrint (STRINGIFY (SCOTCH_stratDgraphOrder) ": error in ordering strategy"); return (1); } @@ -314,7 +314,7 @@ stringSubst (bufftab, "", verttab); if (SCOTCH_stratDgraphOrder (stratptr, bufftab) != 0) { - errorPrint ("SCOTCH_stratDgraphOrderBuild: error in parallel ordering strategy"); + errorPrint (STRINGIFY (SCOTCH_stratDgraphOrderBuild) ": error in parallel ordering strategy"); return (1); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_order_f.c scotch-6.0.6/src/libscotch/library_dgraph_order_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_order_f.c 2012-11-30 00:32:17.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_order_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2008,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2008,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 25 jul 2010 **/ /** # Version 6.0 : from : 08 jan 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -69,11 +69,11 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHORDERINIT, scotchfdgraphorderinit, ( \ -const SCOTCH_Dgraph * const grafptr, \ -SCOTCH_Dordering * const ordeptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +DGRAPHORDERINIT, dgraphorderinit, ( \ +const SCOTCH_Dgraph * const grafptr, \ +SCOTCH_Dordering * const ordeptr, \ +int * const revaptr), \ (grafptr, ordeptr, revaptr)) { *revaptr = SCOTCH_dgraphOrderInit (grafptr, ordeptr); @@ -83,10 +83,10 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHORDEREXIT, scotchfdgraphorderexit, ( \ -const SCOTCH_Dgraph * const grafptr, \ -SCOTCH_Dordering * const ordeptr), \ +SCOTCH_FORTRAN ( \ +DGRAPHORDEREXIT, dgraphorderexit, ( \ +const SCOTCH_Dgraph * const grafptr, \ +SCOTCH_Dordering * const ordeptr), \ (grafptr, ordeptr)) { SCOTCH_dgraphOrderExit (grafptr, ordeptr); @@ -96,12 +96,12 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHORDERSAVE, scotchfdgraphordersave, ( \ -const SCOTCH_Dgraph * const grafptr, \ -const SCOTCH_Dordering * const ordeptr, \ -int * const fileptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +DGRAPHORDERSAVE, dgraphordersave, ( \ +const SCOTCH_Dgraph * const grafptr, \ +SCOTCH_Dordering * const ordeptr, \ +int * const fileptr, \ +int * const revaptr), \ (grafptr, ordeptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ @@ -112,12 +112,12 @@ stream = NULL; else { /* Open stream for root process */ if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFDGRAPHORDERSAVE: cannot duplicate handle"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHORDERSAVE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFDGRAPHORDERSAVE: cannot open output stream"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHORDERSAVE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; @@ -136,56 +136,57 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHORDERCOMPUTE, scotchfdgraphordercompute, ( \ -SCOTCH_Dgraph * const grafptr, \ -SCOTCH_Dordering * const ordeptr, \ -SCOTCH_Strat * const stratptr, \ -int * const revaptr), \ -(grafptr, ordeptr, stratptr, revaptr)) +SCOTCH_FORTRAN ( \ +DGRAPHORDERCOMPUTE, dgraphordercompute, ( \ +SCOTCH_Dgraph * const grafptr, \ +SCOTCH_Dordering * const ordeptr, \ +SCOTCH_Strat * const straptr, \ +int * const revaptr), \ +(grafptr, ordeptr, straptr, revaptr)) { - *revaptr = SCOTCH_dgraphOrderCompute (grafptr, ordeptr, stratptr); + *revaptr = SCOTCH_dgraphOrderCompute (grafptr, ordeptr, straptr); } /* ** */ -FORTRAN ( \ -SCOTCHFDGRAPHORDERCOMPUTELIST, scotchfdgraphordercomputelist, ( \ -SCOTCH_Dgraph * const grafptr, \ -SCOTCH_Dordering * const ordeptr, \ -const SCOTCH_Num * listptr, \ -const SCOTCH_Num * const listtab, \ -SCOTCH_Strat * const stratptr, \ -int * const revaptr), \ -(grafptr, ordeptr, listptr, listtab, stratptr, revaptr)) +SCOTCH_FORTRAN ( \ +DGRAPHORDERCOMPUTELIST, dgraphordercomputelist, ( \ +SCOTCH_Dgraph * const grafptr, \ +SCOTCH_Dordering * const ordeptr, \ +const SCOTCH_Num * listptr, \ +const SCOTCH_Num * const listtab, \ +SCOTCH_Strat * const straptr, \ +int * const revaptr), \ +(grafptr, ordeptr, listptr, listtab, straptr, revaptr)) { - *revaptr = SCOTCH_dgraphOrderComputeList (grafptr, ordeptr, *listptr, listtab, stratptr); + *revaptr = SCOTCH_dgraphOrderComputeList (grafptr, ordeptr, *listptr, listtab, straptr); } /* ** */ -FORTRAN ( \ -SCOTCHFSTRATDGRAPHORDER, scotchfstratdgraphorder, ( \ -SCOTCH_Strat * const stratptr, \ -const char * const string, \ -int * const revaptr, \ -const int strnbr), \ -(stratptr, string, revaptr, strnbr)) +SCOTCH_FORTRAN ( \ +STRATDGRAPHORDER, stratdgraphorder, ( \ +SCOTCH_Strat * const straptr, \ +const char * const string, \ +int * const revaptr, \ +const int strnbr), \ +(straptr, string, revaptr, strnbr)) { char * restrict strtab; /* Pointer to null-terminated string */ if ((strtab = (char *) memAlloc (strnbr + 1)) == NULL) { /* Allocate temporary space */ - errorPrint ("SCOTCHFSTRATDGRAPHORDER: out of memory (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (STRATDGRAPHORDER)) ": out of memory"); *revaptr = 1; + return; } memCpy (strtab, string, strnbr); /* Copy string contents */ strtab[strnbr] = '\0'; /* Terminate string */ - *revaptr = SCOTCH_stratDgraphOrder (stratptr, strtab); /* Call original routine */ + *revaptr = SCOTCH_stratDgraphOrder (straptr, strtab); /* Call original routine */ memFree (strtab); /* Prevent compiler warnings */ } @@ -194,15 +195,15 @@ ** */ -FORTRAN ( \ -SCOTCHFSTRATDGRAPHORDERBUILD, scotchfstratdgraphorderbuild, ( \ -SCOTCH_Strat * const stratptr, \ -const SCOTCH_Num * const flagval, \ -const SCOTCH_Num * const procnbr, \ -const SCOTCH_Num * const levlnbr, \ -const double * const balrat, \ -int * const revaptr), \ -(stratptr, flagval, procnbr, levlnbr, balrat, revaptr)) +SCOTCH_FORTRAN ( \ +STRATDGRAPHORDERBUILD, stratdgraphorderbuild, ( \ +SCOTCH_Strat * const straptr, \ +const SCOTCH_Num * const flagval, \ +const SCOTCH_Num * const procnbr, \ +const SCOTCH_Num * const levlnbr, \ +const double * const bbalval, \ +int * const revaptr), \ +(straptr, flagval, procnbr, levlnbr, bbalval, revaptr)) { - *revaptr = SCOTCH_stratDgraphOrderBuild (stratptr, *flagval, *procnbr, *levlnbr, *balrat); + *revaptr = SCOTCH_stratDgraphOrderBuild (straptr, *flagval, *procnbr, *levlnbr, *bbalval); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_order_gather.c scotch-6.0.6/src/libscotch/library_dgraph_order_gather.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_order_gather.c 2012-11-30 00:33:01.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_order_gather.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 5.0 : from : 21 jul 2007 **/ /** to 04 aug 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -91,7 +91,7 @@ #ifdef SCOTCH_DEBUG_LIBRARY1 if (sizeof (SCOTCH_Ordering) < sizeof (LibOrder)) { - errorPrint ("SCOTCH_dgraphCorderInit: internal error"); + errorPrint (STRINGIFY (SCOTCH_dgraphCorderInit) ": internal error"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_order_gather_f.c scotch-6.0.6/src/libscotch/library_dgraph_order_gather_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_order_gather_f.c 2012-11-30 00:33:31.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_order_gather_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 5.0 : from : 21 jul 2007 **/ /** to 22 jul 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -63,17 +63,17 @@ /* */ /**************************************/ -FORTRAN ( \ -SCOTCHFDGRAPHCORDERINIT, scotchfdgraphcorderinit, ( \ -const SCOTCH_Dgraph * const grafptr, \ -SCOTCH_Ordering * const ordeptr, \ -SCOTCH_Num * const permtab, \ -SCOTCH_Num * const peritab, \ -SCOTCH_Num * const cblkptr, \ -SCOTCH_Num * const rangtab, \ -SCOTCH_Num * const treetab, \ -int * const revaptr), \ -(grafptr, ordeptr, permtab, peritab, \ +SCOTCH_FORTRAN ( \ +DGRAPHCORDERINIT, dgraphcorderinit, ( \ +const SCOTCH_Dgraph * const grafptr, \ +SCOTCH_Ordering * const ordeptr, \ +SCOTCH_Num * const permtab, \ +SCOTCH_Num * const peritab, \ +SCOTCH_Num * const cblkptr, \ +SCOTCH_Num * const rangtab, \ +SCOTCH_Num * const treetab, \ +int * const revaptr), \ +(grafptr, ordeptr, permtab, peritab, \ cblkptr, rangtab, treetab, revaptr)) { *revaptr = SCOTCH_dgraphCorderInit (grafptr, ordeptr, permtab, peritab, cblkptr, rangtab, treetab); @@ -83,10 +83,10 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHCORDEREXIT, scotchfdgraphcorderexit, ( \ -const SCOTCH_Dgraph * const grafptr, \ -SCOTCH_Ordering * const ordeptr), \ +SCOTCH_FORTRAN ( \ +DGRAPHCORDEREXIT, dgraphcorderexit, ( \ +const SCOTCH_Dgraph * const grafptr, \ +SCOTCH_Ordering * const ordeptr), \ (grafptr, ordeptr)) { SCOTCH_dgraphCorderExit (grafptr, ordeptr); @@ -96,12 +96,12 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHORDERGATHER, scotchfdgraphordergather, ( \ -const SCOTCH_Dgraph * const grafptr, \ -const SCOTCH_Dordering * const dordptr, \ -SCOTCH_Ordering * const cordptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +DGRAPHORDERGATHER, dgraphordergather, ( \ +const SCOTCH_Dgraph * const grafptr, \ +SCOTCH_Dordering * const dordptr, \ +SCOTCH_Ordering * const cordptr, \ +int * const revaptr), \ (grafptr, dordptr, cordptr, revaptr)) { *revaptr = SCOTCH_dgraphOrderGather (grafptr, dordptr, cordptr); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_order_io_block_f.c scotch-6.0.6/src/libscotch/library_dgraph_order_io_block_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_order_io_block_f.c 2012-11-30 00:35:42.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_order_io_block_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2008,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2008,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 27 mar 2010 **/ /** # Version 6.0 : from : 29 nov 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -65,12 +65,12 @@ /* */ /**************************************/ -FORTRAN ( \ -SCOTCHFDGRAPHORDERSAVEBLOCK, scotchfdgraphordersaveblock, ( \ -const SCOTCH_Dgraph * const grafptr, \ -const SCOTCH_Dordering * const ordeptr, \ -int * const fileptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +DGRAPHORDERSAVEBLOCK, dgraphordersaveblock, ( \ +const SCOTCH_Dgraph * const grafptr, \ +const SCOTCH_Dordering * const ordeptr, \ +int * const fileptr, \ +int * const revaptr), \ (grafptr, ordeptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ @@ -81,12 +81,12 @@ stream = NULL; else { /* Open stream for root process */ if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFDGRAPHORDERSAVEBLOCK: cannot duplicate handle"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHORDERSAVEBLOCK)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFDGRAPHORDERSAVEBLOCK: cannot open output stream"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHORDERSAVEBLOCK)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_order_io_f.c scotch-6.0.6/src/libscotch/library_dgraph_order_io_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_order_io_f.c 2012-11-30 00:34:34.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_order_io_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 5.0 : from : 26 jul 2007 **/ /** to 18 oct 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -63,28 +63,70 @@ /* */ /**************************************/ -FORTRAN ( \ -SCOTCHFDGRAPHORDERSAVEMAP, scotchfdgraphordersavemap, ( \ -const SCOTCH_Dgraph * const grafptr, \ -const SCOTCH_Dordering * const ordeptr, \ -FILE * const stream, \ -int * const revaptr), \ -(grafptr, ordeptr, stream, revaptr)) +SCOTCH_FORTRAN ( \ +DGRAPHORDERSAVEMAP, dgraphordersavemap, ( \ +const SCOTCH_Dgraph * const grafptr, \ +const SCOTCH_Dordering * const ordeptr, \ +int * const fileptr, \ +int * const revaptr), \ +(grafptr, ordeptr, fileptr, revaptr)) { - *revaptr = SCOTCH_dgraphOrderSaveMap (grafptr, ordeptr, stream); + FILE * stream; /* Stream to build from handle */ + int filenum; /* Duplicated handle */ + int o; + + if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHORDERSAVEMAP)) ": cannot duplicate handle"); + + *revaptr = 1; /* Indicate error */ + return; + } + if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHORDERSAVEMAP)) ": cannot open output stream"); + close (filenum); + *revaptr = 1; + return; + } + + o = SCOTCH_dgraphOrderSaveMap (grafptr, ordeptr, stream); + + fclose (stream); /* This closes filenum too */ + + *revaptr = o; } /* ** */ -FORTRAN ( \ -SCOTCHFDGRAPHORDERSAVETREE, scotchfdgraphordersavetree, ( \ -const SCOTCH_Dgraph * const grafptr, \ -const SCOTCH_Dordering * const ordeptr, \ -FILE * const stream, \ -int * const revaptr), \ -(grafptr, ordeptr, stream, revaptr)) +SCOTCH_FORTRAN ( \ +DGRAPHORDERSAVETREE, dgraphordersavetree, ( \ +const SCOTCH_Dgraph * const grafptr, \ +const SCOTCH_Dordering * const ordeptr, \ +int * const fileptr, \ +int * const revaptr), \ +(grafptr, ordeptr, fileptr, revaptr)) { - *revaptr = SCOTCH_dgraphOrderSaveTree (grafptr, ordeptr, stream); + FILE * stream; /* Stream to build from handle */ + int filenum; /* Duplicated handle */ + int o; + + if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHORDERSAVETREE)) ": cannot duplicate handle"); + + *revaptr = 1; /* Indicate error */ + return; + } + if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHORDERSAVETREE)) ": cannot open output stream"); + close (filenum); + *revaptr = 1; + return; + } + + o = SCOTCH_dgraphOrderSaveTree (grafptr, ordeptr, stream); + + fclose (stream); /* This closes filenum too */ + + *revaptr = o; } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_order_perm_f.c scotch-6.0.6/src/libscotch/library_dgraph_order_perm_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_order_perm_f.c 2012-11-30 00:36:54.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_order_perm_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,7 +43,7 @@ /** DATES : # Version 5.0 : from : 18 oct 2007 **/ /** to 18 oct 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -64,12 +64,12 @@ /* */ /**************************************/ -FORTRAN ( \ -SCOTCHFDGRAPHORDERPERM, scotchfdgraphorderperm, ( \ -const SCOTCH_Dgraph * const grafptr, \ -const SCOTCH_Dordering * const ordeptr, \ -SCOTCH_Num * const permloctab, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +DGRAPHORDERPERM, dgraphorderperm, ( \ +const SCOTCH_Dgraph * const grafptr, \ +const SCOTCH_Dordering * const ordeptr, \ +SCOTCH_Num * const permloctab, \ +int * const revaptr), \ (grafptr, ordeptr, permloctab, revaptr)) { *revaptr = SCOTCH_dgraphOrderPerm (grafptr, ordeptr, permloctab); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_order_tree_dist_f.c scotch-6.0.6/src/libscotch/library_dgraph_order_tree_dist_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_order_tree_dist_f.c 2012-11-30 00:38:12.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_order_tree_dist_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,7 +43,7 @@ /** DATES : # Version 5.1 : from : 30 nov 2007 **/ /** to 30 nov 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -64,11 +64,11 @@ /* */ /**************************************/ -FORTRAN ( \ -SCOTCHFDGRAPHORDERCBLKDIST, scotchfdgraphordercblkdist, ( \ -const SCOTCH_Dgraph * const grafptr, \ -const SCOTCH_Dordering * const ordeptr, \ -SCOTCH_Num * const cblkglbptr), +SCOTCH_FORTRAN ( \ +DGRAPHORDERCBLKDIST, dgraphordercblkdist, ( \ +SCOTCH_Dgraph * const grafptr, \ +SCOTCH_Dordering * const ordeptr, \ +SCOTCH_Num * const cblkglbptr), \ (grafptr, ordeptr, cblkglbptr)) { *cblkglbptr = SCOTCH_dgraphOrderCblkDist (grafptr, ordeptr); @@ -78,13 +78,13 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHORDERTREEDIST, scotchfdgraphordertreedist, ( \ -const SCOTCH_Dgraph * const grafptr, \ -const SCOTCH_Dordering * const ordeptr, \ -SCOTCH_Num * const treeglbtab, \ -SCOTCH_Num * const sizeglbtab, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +DGRAPHORDERTREEDIST, dgraphordertreedist, ( \ +SCOTCH_Dgraph * const grafptr, \ +SCOTCH_Dordering * const ordeptr, \ +SCOTCH_Num * const treeglbtab, \ +SCOTCH_Num * const sizeglbtab, \ +int * const revaptr), \ (grafptr, ordeptr, treeglbtab, sizeglbtab, revaptr)) { *revaptr = SCOTCH_dgraphOrderTreeDist (grafptr, ordeptr, treeglbtab, sizeglbtab); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_redist.c scotch-6.0.6/src/libscotch/library_dgraph_redist.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_redist.c 2012-11-30 00:38:33.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_redist.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,7 +40,7 @@ /** routines. **/ /** **/ /** DATES : # Version 6.0 : from : 28 mar 2012 **/ -/** to : 29 nov 2012 **/ +/** to : 25 apr 2018 **/ /** **/ /************************************************************/ @@ -87,7 +87,7 @@ MPI_Comm_compare (((Dgraph * restrict const) orggrafptr)->proccomm, ((Dgraph * restrict const) redgrafptr)->proccomm, &o); if ((o != MPI_IDENT) && (o != MPI_CONGRUENT)) { - errorPrint ("SCOTCH_dgraphRedist: communicators are not congruent"); + errorPrint (STRINGIFY (SCOTCH_dgraphRedist) ": communicators are not congruent"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_redist_f.c scotch-6.0.6/src/libscotch/library_dgraph_redist_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_redist_f.c 2012-11-30 00:38:53.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_redist_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,7 +40,7 @@ /** routines of the libSCOTCH library. **/ /** **/ /** DATES : # Version 6.0 : from : 28 mar 2012 **/ -/** to : 29 nov 2012 **/ +/** to : 25 apr 2018 **/ /** **/ /************************************************************/ @@ -65,15 +65,15 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHREDIST, scotchfdgraphredist, ( \ -SCOTCH_Dgraph * const srcgrafptr, \ -const SCOTCH_Num * const partloctab, \ -const SCOTCH_Num * const permgsttab, \ -const SCOTCH_Num * const vertlocdlt, \ -const SCOTCH_Num * const edgelocdlt, \ -SCOTCH_Dgraph * const dstgrafptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +DGRAPHREDIST, dgraphredist, ( \ +SCOTCH_Dgraph * const srcgrafptr, \ +const SCOTCH_Num * const partloctab, \ +const SCOTCH_Num * const permgsttab, \ +const SCOTCH_Num * const vertlocdlt, \ +const SCOTCH_Num * const edgelocdlt, \ +SCOTCH_Dgraph * const dstgrafptr, \ +int * const revaptr), \ (srcgrafptr, partloctab, permgsttab, vertlocdlt, edgelocdlt, dstgrafptr, revaptr)) { *revaptr = SCOTCH_dgraphRedist (srcgrafptr, partloctab, permgsttab, *vertlocdlt, *edgelocdlt, dstgrafptr); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_scatter_f.c scotch-6.0.6/src/libscotch/library_dgraph_scatter_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_scatter_f.c 2012-11-30 00:39:50.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_scatter_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 5.0 : from : 16 feb 2007 **/ /** to 12 jul 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -68,11 +68,11 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHSCATTER, scotchfdgraphscatter, ( \ -SCOTCH_Dgraph * const dgrfptr, \ -SCOTCH_Graph * const cgrfptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +DGRAPHSCATTER, dgraphscatter, ( \ +SCOTCH_Dgraph * const dgrfptr, \ +SCOTCH_Graph * const cgrfptr, \ +int * const revaptr), \ (dgrfptr, cgrfptr, revaptr)) { *revaptr = SCOTCH_dgraphScatter (dgrfptr, cgrfptr); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_stat.c scotch-6.0.6/src/libscotch/library_dgraph_stat.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_stat.c 2015-02-24 22:24:21.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_stat.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2008,2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2008,2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 5.0 : from : 23 jun 2007 **/ /** to 03 apr 2008 **/ /** # Version 6.0 : from : 29 nov 2012 **/ -/** to 29 oct 2014 **/ +/** to 21 may 2018 **/ /** **/ /************************************************************/ @@ -240,7 +240,7 @@ } if (MPI_Allreduce (&edlolocsum, &edloglbsum, 1, GNUM_MPI, MPI_SUM, srcgrafptr->proccomm) != MPI_SUCCESS) { - errorPrint ("SCOTCH_dgraphStat: communication error (1)"); + errorPrint (STRINGIFY (SCOTCH_dgraphStat) ": communication error (1)"); return (1); } edloglbavg = (double) edloglbsum / (double) (2 * srcgrafptr->edgeglbnbr); @@ -276,7 +276,7 @@ MPI_Get_address (&srclstadat.velodlt, &srcdisptab[1]); #endif /* ((defined COMMON_MPI_VERSION) && (COMMON_MPI_VERSION <= 100)) */ srcdisptab[1] -= srcdisptab[0]; - srcdisptab[0] -= srcdisptab[0]; + srcdisptab[0] = 0; o = 1; /* Assume something will go wrong */ #if ((defined COMMON_MPI_VERSION) && (COMMON_MPI_VERSION <= 100)) @@ -294,7 +294,7 @@ MPI_Type_free (&srctypedat); } if (o != 0) { - errorPrint ("SCOTCH_dgraphStat: communication error (2)"); + errorPrint (STRINGIFY (SCOTCH_dgraphStat) ": communication error (2)"); return (1); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_stat_f.c scotch-6.0.6/src/libscotch/library_dgraph_stat_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_dgraph_stat_f.c 2012-11-30 00:40:45.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_dgraph_stat_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 5.0 : from : 24 jun 2007 **/ /** to 24 jun 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ -/** to 29 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -67,28 +67,28 @@ ** */ -FORTRAN ( \ -SCOTCHFDGRAPHSTAT, scotchfdgraphstat, ( \ -const SCOTCH_Dgraph * const grafptr, \ -SCOTCH_Num * const velominptr, \ -SCOTCH_Num * const velomaxptr, \ -SCOTCH_Num * const velosumptr, \ -double * veloavgptr, \ -double * velodltptr, \ -SCOTCH_Num * const degrminptr, \ -SCOTCH_Num * const degrmaxptr, \ -double * degravgptr, \ -double * degrdltptr, \ -SCOTCH_Num * const edlominptr, \ -SCOTCH_Num * const edlomaxptr, \ -SCOTCH_Num * const edlosumptr, \ -double * edloavgptr, \ -double * edlodltptr, \ -int * const revaptr), \ -(grafptr, velominptr, velomaxptr, velosumptr, \ - veloavgptr, velodltptr, degrminptr, \ - degrmaxptr, degravgptr, degrdltptr, \ - edlominptr, edlomaxptr, edlosumptr, \ +SCOTCH_FORTRAN ( \ +DGRAPHSTAT, Dgraphstat, ( \ +const SCOTCH_Dgraph * const grafptr, \ +SCOTCH_Num * const velominptr, \ +SCOTCH_Num * const velomaxptr, \ +SCOTCH_Num * const velosumptr, \ +double * veloavgptr, \ +double * velodltptr, \ +SCOTCH_Num * const degrminptr, \ +SCOTCH_Num * const degrmaxptr, \ +double * degravgptr, \ +double * degrdltptr, \ +SCOTCH_Num * const edlominptr, \ +SCOTCH_Num * const edlomaxptr, \ +SCOTCH_Num * const edlosumptr, \ +double * edloavgptr, \ +double * edlodltptr, \ +int * const revaptr), \ +(grafptr, velominptr, velomaxptr, velosumptr, \ + veloavgptr, velodltptr, degrminptr, \ + degrmaxptr, degravgptr, degrdltptr, \ + edlominptr, edlomaxptr, edlosumptr, \ edloavgptr, edlodltptr, revaptr)) { *revaptr = SCOTCH_dgraphStat (grafptr, diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_f.h scotch-6.0.6/src/libscotch/library_f.h --- scotch-6.0.4.dfsg1/src/libscotch/library_f.h 2014-09-28 16:41:08.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_f.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -!* Copyright 2004,2007,2009,2010,2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +!* Copyright 2004,2007,2009,2010,2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS !* !* This file is part of the Scotch software package for static mapping, !* graph partitioning and sparse matrix ordering. @@ -49,7 +49,7 @@ !* # Version 5.1 : from : 26 mar 2009 ** !* to 12 feb 2011 ** !* # Version 6.0 : from : 22 oct 2011 ** -!* to 28 sep 2014 ** +!* to 10 jul 2018 ** !* ** !*********************************************************** @@ -61,8 +61,8 @@ INTEGER SCOTCH_COARSENFOLDDUP INTEGER SCOTCH_COARSENNOMERGE PARAMETER (SCOTCH_COARSENNONE = 0) - PARAMETER (SCOTCH_COARSENFOLD = 4096) - PARAMETER (SCOTCH_COARSENFOLDDUP = 12288) + PARAMETER (SCOTCH_COARSENFOLD = 256) + PARAMETER (SCOTCH_COARSENFOLDDUP = 768) PARAMETER (SCOTCH_COARSENNOMERGE = 16384) !* Flag definitions for the strategy @@ -80,18 +80,21 @@ INTEGER SCOTCH_STRATLEVELMIN INTEGER SCOTCH_STRATLEAFSIMPLE INTEGER SCOTCH_STRATSEPASIMPLE - PARAMETER (SCOTCH_STRATDEFAULT = 0) - PARAMETER (SCOTCH_STRATQUALITY = 1) - PARAMETER (SCOTCH_STRATSPEED = 2) - PARAMETER (SCOTCH_STRATBALANCE = 4) - PARAMETER (SCOTCH_STRATSAFETY = 8) - PARAMETER (SCOTCH_STRATSCALABILITY = 16) - PARAMETER (SCOTCH_STRATRECURSIVE = 256) - PARAMETER (SCOTCH_STRATREMAP = 512) - PARAMETER (SCOTCH_STRATLEVELMAX = 4096) - PARAMETER (SCOTCH_STRATLEVELMIN = 8192) - PARAMETER (SCOTCH_STRATLEAFSIMPLE = 16384) - PARAMETER (SCOTCH_STRATSEPASIMPLE = 32768) + INTEGER SCOTCH_STRATDISCONNECTED + + PARAMETER (SCOTCH_STRATDEFAULT = 0) + PARAMETER (SCOTCH_STRATQUALITY = 1) + PARAMETER (SCOTCH_STRATSPEED = 2) + PARAMETER (SCOTCH_STRATBALANCE = 4) + PARAMETER (SCOTCH_STRATSAFETY = 8) + PARAMETER (SCOTCH_STRATSCALABILITY = 16) + PARAMETER (SCOTCH_STRATRECURSIVE = 256) + PARAMETER (SCOTCH_STRATREMAP = 512) + PARAMETER (SCOTCH_STRATLEVELMAX = 4096) + PARAMETER (SCOTCH_STRATLEVELMIN = 8192) + PARAMETER (SCOTCH_STRATLEAFSIMPLE = 16384) + PARAMETER (SCOTCH_STRATSEPASIMPLE = 32768) + PARAMETER (SCOTCH_STRATDISCONNECTED = 65536) !* Size definitions for the SCOTCH opaque !* structures. These structures must be diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_geom.c scotch-6.0.6/src/libscotch/library_geom.c --- scotch-6.0.4.dfsg1/src/libscotch/library_geom.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_geom.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,6 +45,8 @@ /** to 19 jan 2004 **/ /** # Version 5.1 : from : 17 nov 2010 **/ /** to 17 nov 2010 **/ +/** # Version 6.0 : from : 25 apr 2018 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -94,11 +96,11 @@ SCOTCH_Geom * const geomptr) { if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { - errorPrint ("SCOTCH_geomInit: internal error (1)"); + errorPrint (STRINGIFY (SCOTCH_geomInit) ": internal error (1)"); return (1); } if (sizeof (SCOTCH_Geom) < sizeof (Geom)) { - errorPrint ("SCOTCH_geomInit: internal error (2)"); + errorPrint (STRINGIFY (SCOTCH_geomInit) ": internal error (2)"); return (1); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_geom_f.c scotch-6.0.6/src/libscotch/library_geom_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_geom_f.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_geom_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to 22 dec 2005 **/ /** # Version 5.1 : from : 15 apr 2010 **/ /** to 15 apr 2010 **/ +/** # Version 6.0 : from : 11 apr 2018 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -67,10 +69,10 @@ ** */ -FORTRAN ( \ -SCOTCHFGEOMINIT, scotchfgeominit, ( \ -SCOTCH_Geom * const geomptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +GEOMINIT, geominit, ( \ +SCOTCH_Geom * const geomptr, \ +int * const revaptr), \ (geomptr, revaptr)) { *revaptr = SCOTCH_geomInit (geomptr); @@ -80,9 +82,9 @@ ** */ -FORTRAN ( \ -SCOTCHFGEOMEXIT, scotchfgeomexit, ( \ -SCOTCH_Geom * const geomptr), \ +SCOTCH_FORTRAN ( \ +GEOMEXIT, geomexit, ( \ +SCOTCH_Geom * const geomptr), \ (geomptr)) { SCOTCH_geomExit (geomptr); @@ -92,12 +94,12 @@ ** */ -FORTRAN ( \ -SCOTCHFGEOMDATA, scotchfgeomdata, ( \ -const SCOTCH_Geom * const geomptr, \ -const double * const indxptr, \ -SCOTCH_Num * const dimnptr, \ -SCOTCH_Idx * const geomidx), \ +SCOTCH_FORTRAN ( \ +GEOMDATA, geomdata, ( \ +const SCOTCH_Geom * const geomptr, \ +const double * const indxptr, \ +SCOTCH_Num * const dimnptr, \ +SCOTCH_Idx * const geomidx), \ (geomptr, indxptr, dimnptr, geomidx)) { double * geomtab; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_base_f.c scotch-6.0.6/src/libscotch/library_graph_base_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_base_f.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_base_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 4.0 : from : 22 apr 2004 **/ /** to 23 apr 2004 **/ +/** # Version 6.0 : from : 20 apr 2018 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -65,11 +67,11 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHBASE, scotchfgraphbase, ( \ -SCOTCH_Graph * const grafptr, \ -const SCOTCH_Num * const basenew, \ -SCOTCH_Num * const baseold), \ +SCOTCH_FORTRAN ( \ +GRAPHBASE, graphbase, ( \ +SCOTCH_Graph * const grafptr, \ +const SCOTCH_Num * const basenew, \ +SCOTCH_Num * const baseold), \ (grafptr, basenew, baseold)) { *baseold = SCOTCH_graphBase (grafptr, *basenew); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph.c scotch-6.0.6/src/libscotch/library_graph.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph.c 2012-12-04 06:10:42.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2008,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -50,7 +50,7 @@ /** # Version 5.1 : from : 17 nov 2010 **/ /** to 17 nov 2010 **/ /** # Version 6.0 : from : 04 dec 2012 **/ -/** to 04 dec 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -100,11 +100,11 @@ SCOTCH_Graph * const grafptr) { if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { - errorPrint ("SCOTCH_graphInit: internal error (1)"); + errorPrint (STRINGIFY (SCOTCH_graphInit) ": internal error (1)"); return (1); } if (sizeof (SCOTCH_Graph) < sizeof (Graph)) { - errorPrint ("SCOTCH_graphInit: internal error (2)"); + errorPrint (STRINGIFY (SCOTCH_graphInit) ": internal error (2)"); return (1); } @@ -160,11 +160,11 @@ GraphFlag srcgrafflag; /* Graph flags */ if ((baseval < -1) || (baseval > 1)) { - errorPrint ("SCOTCH_graphLoad: invalid base parameter"); + errorPrint (STRINGIFY (SCOTCH_graphLoad) ": invalid base parameter"); return (1); } if ((flagval < 0) || (flagval > 3)) { - errorPrint ("SCOTCH_graphLoad: invalid flag parameter"); + errorPrint (STRINGIFY (SCOTCH_graphLoad) ": invalid flag parameter"); return (1); } @@ -217,12 +217,12 @@ #ifdef SCOTCH_DEBUG_LIBRARY1 if (sizeof (SCOTCH_Graph) < sizeof (Graph)) { - errorPrint ("SCOTCH_graphBuild: internal error"); + errorPrint (STRINGIFY (SCOTCH_graphBuild) ": internal error"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ if ((baseval < 0) || (baseval > 1)) { - errorPrint ("SCOTCH_graphBuild: invalid base parameter"); + errorPrint (STRINGIFY (SCOTCH_graphBuild) ": invalid base parameter"); return (1); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_check_f.c scotch-6.0.6/src/libscotch/library_graph_check_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_check_f.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_check_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to 15 nov 2001 **/ /** # Version 4.0 : from : 11 dec 2001 **/ /** to 22 apr 2004 **/ +/** # Version 6.0 : from : 20 apr 2018 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -67,10 +69,10 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHCHECK, scotchfgraphcheck, ( \ -const SCOTCH_Graph * const grafptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +GRAPHCHECK, graphcheck, ( \ +const SCOTCH_Graph * const grafptr, \ +int * const revaptr), \ (grafptr, revaptr)) { *revaptr = SCOTCH_graphCheck (grafptr); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_coarsen.c scotch-6.0.6/src/libscotch/library_graph_coarsen.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_coarsen.c 2015-03-01 09:14:02.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_coarsen.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2011,2012,2014,2015 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2011,2012,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 5.1 : from : 07 aug 2011 **/ /** to 07 aug 2011 **/ /** # Version 6.0 : from : 06 sep 2011 **/ -/** to 28 feb 2014 **/ +/** to 23 apr 2018 **/ /** **/ /************************************************************/ @@ -83,19 +83,49 @@ int SCOTCH_graphCoarsen ( -const SCOTCH_Graph * restrict const finegrafptr, /* Fine graph structure to fill */ -SCOTCH_Graph * restrict const coargrafptr, /* Coarse graph */ -SCOTCH_Num * restrict const coarmulttab, /* Pointer to multinode array */ -const SCOTCH_Num coarnbr, /* Minimum number of coarse vertices */ -const double coarval) /* Maximum contraction ratio */ +const SCOTCH_Graph * restrict const finegrafptr, /* Fine graph structure to fill */ +const SCOTCH_Num coarvertnbr, /* Minimum number of coarse vertices */ +const double coarval, /* Maximum contraction ratio */ +const SCOTCH_Num flagval, /* Flag value */ +SCOTCH_Graph * restrict const coargrafptr, /* Coarse graph */ +SCOTCH_Num * restrict const coarmulttab) /* Pointer to multinode array to fill */ { GraphCoarsenMulti * restrict coarmultptr; /* Un-based pointer to created, grouped multinode array */ - int o; intRandInit (); /* Check that random number generator is initialized */ coarmultptr = (GraphCoarsenMulti *) coarmulttab; /* Indicate multinode array is user-provided */ return (graphCoarsen ((const Graph * restrict const) finegrafptr, (Graph * restrict const) coargrafptr, - &coarmultptr, coarnbr, coarval, NULL, NULL, 0, NULL)); + NULL, &coarmultptr, coarvertnbr, coarval, flagval & GRAPHCOARSENNOMERGE, + NULL, NULL, 0, NULL)); +} + +/*+ This routine computes a matching of a (coarse) +*** graph, unless the would-be coarse graph is smaller +*** than some threshold size or the coarsening ratio is +*** above some other threshold. +*** If the matching is computed, both a multinode and +*** a coarse-to-fine vertex arrays are created. +*** It returns: +*** - 0 : if the matching has been coarsened. +*** - 1 : if the graph could not be matched. +*** - 2 : on error. ++*/ + +int +SCOTCH_graphCoarsenMatch ( +const SCOTCH_Graph * restrict const finegrafptr, /* Fine graph structure to fill */ +SCOTCH_Num * restrict const coarvertptr, /* Minimum number of coarse vertices */ +const double coarval, /* Maximum contraction ratio */ +const SCOTCH_Num flagval, /* Flag value */ +SCOTCH_Num * restrict const finematetab) /* Mating array to fill */ +{ + Gnum * restrict finemateptr; + + intRandInit (); /* Check that random number generator is initialized */ + finemateptr = finematetab; /* Slot will not be modified but preserve "const" of finematetab */ + return (graphCoarsenMatch ((const Graph * restrict const) finegrafptr, &finemateptr, + coarvertptr, coarval, flagval & GRAPHCOARSENNOMERGE, + NULL, NULL, 0, NULL)); } /*+ This routine creates a coarse graph from the @@ -109,16 +139,15 @@ int SCOTCH_graphCoarsenBuild ( const SCOTCH_Graph * restrict const finegrafptr, /* Fine graph structure to fill */ -SCOTCH_Graph * restrict const coargrafptr, /* Coarse graph */ -SCOTCH_Num * restrict const coarmulttab, /* Pointer to user-provided multinode array */ const SCOTCH_Num coarvertnbr, /* Number of coarse vertices */ -SCOTCH_Num * restrict const finematetab) /* Mating array */ +SCOTCH_Num * restrict const finematetab, /* Mating array */ +SCOTCH_Graph * restrict const coargrafptr, /* Coarse graph */ +SCOTCH_Num * restrict const coarmulttab) /* Pointer to user-provided multinode array */ { GraphCoarsenMulti * restrict coarmultptr; /* Un-based pointer to created, grouped multinode array */ - int o; intRandInit (); /* Check that random number generator is initialized */ coarmultptr = (GraphCoarsenMulti *) coarmulttab; /* Indicate multinode array is user-provided */ return (graphCoarsenBuild ((const Graph * restrict const) finegrafptr, (Graph * restrict const) coargrafptr, - &coarmultptr, coarvertnbr, finematetab)); + finematetab, &coarmultptr, coarvertnbr)); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_coarsen_f.c scotch-6.0.6/src/libscotch/library_graph_coarsen_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_coarsen_f.c 2015-03-01 09:14:02.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_coarsen_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2011,2015 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2011,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 5.1 : from : 07 aug 2011 **/ /** to 07 aug 2011 **/ /** # Version 6.0 : from : 28 feb 2015 **/ -/** to 28 feb 2015 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -67,32 +67,50 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHCOARSEN, scotchfgraphcoarsen, ( \ -SCOTCH_Graph * const finegrafptr, \ -SCOTCH_Graph * const coargrafptr, \ -SCOTCH_Num * const coarmulttab, \ -SCOTCH_Num * const coarnbrptr, \ -double * const coarratptr, \ -int * const revaptr), \ -(finegrafptr, coargrafptr, coarmulttab, coarnbrptr, coarratptr, revaptr)) +SCOTCH_FORTRAN ( \ +GRAPHCOARSEN, graphcoarsen, ( \ +SCOTCH_Graph * const finegrafptr, \ +const SCOTCH_Num * const coarvertptr, \ +const double * const coarnbr, \ +const SCOTCH_Num * const flagval, \ +SCOTCH_Graph * const coargrafptr, \ +SCOTCH_Num * const coarmulttab, \ +int * const revaptr), \ +(finegrafptr, coarvertptr, coarnbr, flagval, coargrafptr, coarmulttab, revaptr)) { - *revaptr = SCOTCH_graphCoarsen (finegrafptr, coargrafptr, coarmulttab, *coarnbrptr, *coarratptr); + *revaptr = SCOTCH_graphCoarsen (finegrafptr, *coarvertptr, *coarnbr, *flagval, coargrafptr, coarmulttab); } /* ** */ -FORTRAN ( \ -SCOTCHFGRAPHCOARSENBUILD, scotchfgraphcoarsenbuild, ( \ -SCOTCH_Graph * const finegrafptr, \ -SCOTCH_Graph * const coargrafptr, \ -SCOTCH_Num * const coarmulttab, \ -SCOTCH_Num * const coarnbrptr, \ -SCOTCH_Num * const finematetab, \ -int * const revaptr), \ -(finegrafptr, coargrafptr, coarmulttab, coarnbrptr, finematetab, revaptr)) +SCOTCH_FORTRAN ( \ +GRAPHCOARSENMATCH, graphcoarsenmatch, ( \ +SCOTCH_Graph * const finegrafptr, \ +SCOTCH_Num * const coarvertptr, \ +const double * const coarnbr, \ +const SCOTCH_Num * const flagval, \ +SCOTCH_Num * const finematetab, \ +int * const revaptr), \ +(finegrafptr, coarvertptr, coarnbr, flagval, finematetab, revaptr)) { - *revaptr = SCOTCH_graphCoarsenBuild (finegrafptr, coargrafptr, coarmulttab, *coarnbrptr, finematetab); + *revaptr = SCOTCH_graphCoarsenMatch (finegrafptr, coarvertptr, *coarnbr, *flagval, finematetab); +} + +/* +** +*/ + +SCOTCH_FORTRAN ( \ +GRAPHCOARSENBUILD, graphcoarsenbuild, ( \ +SCOTCH_Graph * const finegrafptr, \ +SCOTCH_Num * const coarvertptr, \ +SCOTCH_Num * const finematetab, \ +SCOTCH_Graph * const coargrafptr, \ +SCOTCH_Num * const coarmulttab, \ +int * const revaptr), \ +(finegrafptr, coarvertptr, finematetab, coargrafptr, coarmulttab, revaptr)) +{ + *revaptr = SCOTCH_graphCoarsenBuild (finegrafptr, *coarvertptr, finematetab, coargrafptr, coarmulttab); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_color.c scotch-6.0.6/src/libscotch/library_graph_color.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_color.c 2014-08-19 17:27:59.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_color.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,7 +40,7 @@ /** library. **/ /** **/ /** DATES : # Version 6.0 : from : 02 jan 2012 **/ -/** to 19 aug 2014 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -103,7 +103,7 @@ if (memAllocGroup ((void **) (void *) &queutax, (size_t) (vertnbr * sizeof (Gnum)), &randtax, (size_t) (vertnbr * sizeof (Gnum)), NULL) == NULL) { - errorPrint ("SCOTCH_graphColor: out of memory"); + errorPrint (STRINGIFY (SCOTCH_graphColor) ": out of memory"); return (1); } queutax -= baseval; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_color_f.c scotch-6.0.6/src/libscotch/library_graph_color_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_color_f.c 2012-01-02 14:06:24.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_color_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,7 +40,7 @@ /** library. **/ /** **/ /** DATES : # Version 6.0 : from : 02 jan 2012 **/ -/** to 02 jan 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -65,14 +65,14 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHCOLOR, scotchfgraphcolor, ( \ -const SCOTCH_Graph * const grafptr, \ -SCOTCH_Num * const colotab, \ -SCOTCH_Num * const coloptr, \ -const SCOTCH_Num * const flagptr, \ -int * const revaptr), \ -(grafptr, colotab, coloptr, flagptr, revaptr)) +SCOTCH_FORTRAN ( \ +GRAPHCOLOR, graphcolor, ( \ +const SCOTCH_Graph * const grafptr, \ +SCOTCH_Num * const colotab, \ +SCOTCH_Num * const coloptr, \ +const SCOTCH_Num * const flagval, \ +int * const revaptr), \ +(grafptr, colotab, coloptr, flagval, revaptr)) { - *revaptr = SCOTCH_graphColor (grafptr, colotab, coloptr, *flagptr); + *revaptr = SCOTCH_graphColor (grafptr, colotab, coloptr, *flagval); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_diam.c scotch-6.0.6/src/libscotch/library_graph_diam.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_diam.c 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_diam.c 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,78 @@ +/* Copyright 2017,2018 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : library_graph_diam.c **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : This module is the API for the source **/ +/** graph handling routines of the **/ +/** libSCOTCH library. **/ +/** **/ +/** DATES : # Version 6.0 : from : 26 jan 2017 **/ +/** to 22 apr 2018 **/ +/** **/ +/************************************************************/ + +/* +** The defines and includes. +*/ + +#define LIBRARY + +#include "module.h" +#include "common.h" +#include "graph.h" +#include "scotch.h" + +/************************************/ +/* */ +/* These routines are the C API for */ +/* the graph handling routines. */ +/* */ +/************************************/ + +/* This routine returns the vertex-traversal +** pseudo-diameter of the given graph. +** It returns: +* - [0; GNUMMAX[ : graph pseudo-diameter. +** - GNUMMAX : disconnected graph. +** - < 0 : on error. +*/ + +SCOTCH_Num +SCOTCH_graphDiamPV ( +const SCOTCH_Graph * const grafptr) +{ + return ((SCOTCH_Num) graphDiamPV ((Graph * const) grafptr)); +} diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_diam_f.c scotch-6.0.6/src/libscotch/library_graph_diam_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_diam_f.c 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_diam_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,75 @@ +/* Copyright 2017,2018 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : library_graph_diam_f.c **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : This file contains the Fortran API for **/ +/** the source graph handling routines of **/ +/** the libSCOTCH library. **/ +/** **/ +/** DATES : # Version 6.0 : from : 26 jan 2017 **/ +/** to 29 may 2018 **/ +/** **/ +/************************************************************/ + +/* +** The defines and includes. +*/ + +#define LIBRARY + +#include "module.h" +#include "common.h" +#include "scotch.h" + +/**************************************/ +/* */ +/* These routines are the Fortran API */ +/* for the graph handling routines. */ +/* */ +/**************************************/ + +/* +** +*/ + +SCOTCH_FORTRAN ( \ +GRAPHDIAMPV, graphdiampv, ( \ +SCOTCH_Graph * const grafptr, \ +SCOTCH_Num * const diamptr), \ +(grafptr, diamptr)) +{ + *diamptr = SCOTCH_graphDiamPV (grafptr); +} diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_f.c scotch-6.0.6/src/libscotch/library_graph_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_f.c 2011-10-22 08:08:59.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -47,6 +47,8 @@ /** to 11 jul 2007 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 15 apr 2010 **/ +/** # Version 6.0 : from : 20 apr 2018 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -71,10 +73,10 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHINIT, scotchfgraphinit, ( \ -SCOTCH_Graph * const grafptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +GRAPHINIT, graphinit, ( \ +SCOTCH_Graph * const grafptr, \ +int * const revaptr), \ (grafptr, revaptr)) { *revaptr = SCOTCH_graphInit (grafptr); @@ -84,9 +86,9 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHEXIT, scotchfgraphexit, ( \ -SCOTCH_Graph * const grafptr), \ +SCOTCH_FORTRAN ( \ +GRAPHEXIT, graphexit, ( \ +SCOTCH_Graph * const grafptr), \ (grafptr)) { SCOTCH_graphExit (grafptr); @@ -96,9 +98,9 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHFREE, scotchfgraphfree, ( \ -SCOTCH_Graph * const grafptr), \ +SCOTCH_FORTRAN ( \ +GRAPHFREE, graphfree, ( \ +SCOTCH_Graph * const grafptr), \ (grafptr)) { SCOTCH_graphFree (grafptr); @@ -112,33 +114,33 @@ ** block read. */ -FORTRAN ( \ -SCOTCHFGRAPHLOAD, scotchfgraphload, ( \ -SCOTCH_Graph * const grafptr, \ -int * const fileptr, \ -const SCOTCH_Num * const baseptr, \ -const SCOTCH_Num * const flagptr, \ -int * const revaptr), \ -(grafptr, fileptr, baseptr, flagptr, revaptr)) +SCOTCH_FORTRAN ( \ +GRAPHLOAD, graphload, ( \ +SCOTCH_Graph * const grafptr, \ +int * const fileptr, \ +const SCOTCH_Num * const baseval, \ +const SCOTCH_Num * const flagval, \ +int * const revaptr), \ +(grafptr, fileptr, baseval, flagval, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFGRAPHLOAD: cannot duplicate handle"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHLOAD)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "r")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFGRAPHLOAD: cannot open input stream"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHLOAD)) ": cannot open input stream"); close (filenum); *revaptr = 1; return; } setbuf (stream, NULL); /* Do not buffer on input */ - o = SCOTCH_graphLoad (grafptr, stream, *baseptr, *flagptr); + o = SCOTCH_graphLoad (grafptr, stream, *baseval, *flagval); fclose (stream); /* This closes filenum too */ @@ -149,11 +151,11 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHSAVE, scotchfgraphsave, ( \ -const SCOTCH_Graph * const grafptr, \ -int * const fileptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +GRAPHSAVE, graphsave, ( \ +const SCOTCH_Graph * const grafptr, \ +int * const fileptr, \ +int * const revaptr), \ (grafptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ @@ -161,13 +163,13 @@ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFGRAPHSAVE: cannot duplicate handle"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHSAVE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFGRAPHSAVE: cannot open output stream"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHSAVE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; @@ -184,36 +186,36 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHBUILD, scotchfgraphbuild, ( \ -SCOTCH_Graph * const grafptr, \ -const SCOTCH_Num * const baseptr, \ -const SCOTCH_Num * const vertptr, \ -const SCOTCH_Num * const verttab, \ -const SCOTCH_Num * const vendtab, \ -const SCOTCH_Num * const velotab, \ -const SCOTCH_Num * const vlbltab, \ -const SCOTCH_Num * const edgeptr, \ -const SCOTCH_Num * const edgetab, \ -const SCOTCH_Num * const edlotab, \ -int * const revaptr), \ -(grafptr, baseptr, vertptr, verttab, vendtab, \ - velotab, vlbltab, edgeptr, edgetab, edlotab, \ +SCOTCH_FORTRAN ( \ +GRAPHBUILD, graphbuild, ( \ +SCOTCH_Graph * const grafptr, \ +const SCOTCH_Num * const baseval, \ +const SCOTCH_Num * const vertnbr, \ +const SCOTCH_Num * const verttab, \ +const SCOTCH_Num * const vendtab, \ +const SCOTCH_Num * const velotab, \ +const SCOTCH_Num * const vlbltab, \ +const SCOTCH_Num * const edgenbr, \ +const SCOTCH_Num * const edgetab, \ +const SCOTCH_Num * const edlotab, \ +int * const revaptr), \ +(grafptr, baseval, vertnbr, verttab, vendtab, \ + velotab, vlbltab, edgenbr, edgetab, edlotab, \ revaptr)) { - *revaptr = SCOTCH_graphBuild (grafptr, *baseptr, *vertptr, verttab, vendtab, - velotab, vlbltab, *edgeptr, edgetab, edlotab); + *revaptr = SCOTCH_graphBuild (grafptr, *baseval, *vertnbr, verttab, vendtab, + velotab, vlbltab, *edgenbr, edgetab, edlotab); } /* ** */ -FORTRAN ( \ -SCOTCHFGRAPHSIZE, scotchfgraphsize, ( \ -const SCOTCH_Graph * const grafptr, \ -SCOTCH_Num * const vertptr, \ -SCOTCH_Num * const edgeptr), \ +SCOTCH_FORTRAN ( \ +GRAPHSIZE, graphsize, ( \ +const SCOTCH_Graph * const grafptr, \ +SCOTCH_Num * const vertptr, \ +SCOTCH_Num * const edgeptr), \ (grafptr, vertptr, edgeptr)) { SCOTCH_graphSize (grafptr, vertptr, edgeptr); @@ -223,21 +225,21 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHDATA, scotchfgraphdata, ( \ -const SCOTCH_Graph * const grafptr, \ -const SCOTCH_Num * const indxptr, \ -SCOTCH_Num * const baseptr, \ -SCOTCH_Num * const vertptr, \ -SCOTCH_Idx * const vertidx, \ -SCOTCH_Idx * const vendidx, \ -SCOTCH_Idx * const veloidx, \ -SCOTCH_Idx * const vlblidx, \ -SCOTCH_Num * const edgeptr, \ -SCOTCH_Idx * const edgeidx, \ -SCOTCH_Idx * const edloidx), \ -(grafptr, indxptr, baseptr, \ - vertptr, vertidx, vendidx, veloidx, vlblidx, \ +SCOTCH_FORTRAN ( \ +GRAPHDATA, graphdata, ( \ +const SCOTCH_Graph * const grafptr, \ +const SCOTCH_Num * const indxptr, \ +SCOTCH_Num * const baseptr, \ +SCOTCH_Num * const vertptr, \ +SCOTCH_Idx * const vertidx, \ +SCOTCH_Idx * const vendidx, \ +SCOTCH_Idx * const veloidx, \ +SCOTCH_Idx * const vlblidx, \ +SCOTCH_Num * const edgeptr, \ +SCOTCH_Idx * const edgeidx, \ +SCOTCH_Idx * const edloidx), \ +(grafptr, indxptr, baseptr, \ + vertptr, vertidx, vendidx, veloidx, vlblidx, \ edgeptr, edgeidx, edloidx)) { SCOTCH_Num * verttab; /* Pointer to graph arrays */ @@ -261,27 +263,27 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHSTAT, scotchfgraphstat, ( \ -const SCOTCH_Graph * const grafptr, \ -SCOTCH_Num * const velominptr, \ -SCOTCH_Num * const velomaxptr, \ -SCOTCH_Num * const velosumptr, \ -double * veloavgptr, \ -double * velodltptr, \ -SCOTCH_Num * const degrminptr, \ -SCOTCH_Num * const degrmaxptr, \ -double * degravgptr, \ -double * degrdltptr, \ -SCOTCH_Num * const edlominptr, \ -SCOTCH_Num * const edlomaxptr, \ -SCOTCH_Num * const edlosumptr, \ -double * edloavgptr, \ -double * edlodltptr), \ -(grafptr, velominptr, velomaxptr, velosumptr, \ - veloavgptr, velodltptr, degrminptr, \ - degrmaxptr, degravgptr, degrdltptr, \ - edlominptr, edlomaxptr, edlosumptr, \ +SCOTCH_FORTRAN ( \ +GRAPHSTAT, graphstat, ( \ +const SCOTCH_Graph * const grafptr, \ +SCOTCH_Num * const velominptr, \ +SCOTCH_Num * const velomaxptr, \ +SCOTCH_Num * const velosumptr, \ +double * veloavgptr, \ +double * velodltptr, \ +SCOTCH_Num * const degrminptr, \ +SCOTCH_Num * const degrmaxptr, \ +double * degravgptr, \ +double * degrdltptr, \ +SCOTCH_Num * const edlominptr, \ +SCOTCH_Num * const edlomaxptr, \ +SCOTCH_Num * const edlosumptr, \ +double * edloavgptr, \ +double * edlodltptr), \ +(grafptr, velominptr, velomaxptr, velosumptr, \ + veloavgptr, velodltptr, degrminptr, \ + degrmaxptr, degravgptr, degrdltptr, \ + edlominptr, edlomaxptr, edlosumptr, \ edloavgptr, edlodltptr)) { SCOTCH_graphStat (grafptr, diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_induce.c scotch-6.0.6/src/libscotch/library_graph_induce.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_induce.c 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_induce.c 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,115 @@ +/* Copyright 2018 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : library_graph_induce.c **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : This module is the API for the source **/ +/** graph handling routines of the **/ +/** libSCOTCH library. **/ +/** **/ +/** DATES : # Version 6.0 : from : 14 jan 2018 **/ +/** to 21 apr 2018 **/ +/** **/ +/************************************************************/ + +/* +** The defines and includes. +*/ + +#define LIBRARY + +#include "module.h" +#include "common.h" +#include "graph.h" +#include "scotch.h" + +/************************************/ +/* */ +/* These routines are the C API for */ +/* the graph handling routines. */ +/* */ +/************************************/ + +/* This routine builds the graph induced +** by the original graph and the list of +** selected vertices. +** The induced vnumtab array is the list +** array if the original graph does not have +** a vnumtab, or the proper subset of the +** original vnumtab else. +** It returns: +** - 0 : on success. +** - !0 : on error. +*/ + +int +SCOTCH_graphInduceList ( +const SCOTCH_Graph * restrict const orggrafptr, +const SCOTCH_Num vnumnbr, +const SCOTCH_Num * restrict const vnumtab, +SCOTCH_Graph * restrict const indgrafptr) +{ + return (graphInduceList ((const Graph * restrict const) orggrafptr, + (const Gnum) vnumnbr, + (const Gnum * restrict const) vnumtab, + (Graph * const) indgrafptr)); +} + +/* This routine builds the graph induced +** by the original graph and the vector +** of selected vertices. +** The induced vnumtab array is the list of +** selected vertices if the original graph +** does not have a vnumtab, or the proper +** subset of the original vnumtab else. +** It returns: +** - 0 : on success. +** - !0 : on error. +*/ + +int +SCOTCH_graphInducePart ( +const SCOTCH_Graph * restrict const orggrafptr, +const SCOTCH_Num vnumnbr, +const SCOTCH_GraphPart2 * restrict const parttab, +const SCOTCH_GraphPart2 partval, +SCOTCH_Graph * restrict const indgrafptr) +{ + return (graphInducePart ((const Graph * restrict const) orggrafptr, + ((GraphPart * restrict const) parttab) - ((const Graph * const) orggrafptr)->baseval, + (const Gnum) vnumnbr, + (const GraphPart) partval, + (Graph * restrict const) indgrafptr)); +} diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_induce_f.c scotch-6.0.6/src/libscotch/library_graph_induce_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_induce_f.c 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_induce_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,95 @@ +/* Copyright 2018 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : library_graph_diam_f.c **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : This file contains the Fortran API for **/ +/** the source graph handling routines of **/ +/** the libSCOTCH library. **/ +/** **/ +/** DATES : # Version 6.0 : from : 14 jan 2018 **/ +/** to 25 apr 2018 **/ +/** **/ +/************************************************************/ + +/* +** The defines and includes. +*/ + +#define LIBRARY + +#include "module.h" +#include "common.h" +#include "scotch.h" + +/**************************************/ +/* */ +/* These routines are the Fortran API */ +/* for the graph handling routines. */ +/* */ +/**************************************/ + +/* +** +*/ + +SCOTCH_FORTRAN ( \ +GRAPHINDUCELIST, graphinducelist, ( \ +SCOTCH_Graph * restrict const orggrafptr, \ +const SCOTCH_Num vnumnbr, \ +const SCOTCH_Num * restrict const vnumtab, \ +SCOTCH_Graph * restrict const indgrafptr, \ +int * const revaptr), \ +(orggrafptr, vnumnbr, vnumtab, indgrafptr, revaptr)) +{ + *revaptr = SCOTCH_graphInduceList (orggrafptr, vnumnbr, vnumtab, indgrafptr); +} + +/* +** +*/ + +SCOTCH_FORTRAN ( \ +GRAPHINDUCEPART, graphinducepart, ( \ +SCOTCH_Graph * restrict const orggrafptr, \ +const SCOTCH_Num vnumnbr, \ +const SCOTCH_GraphPart2 * restrict const parttab, \ +const SCOTCH_GraphPart2 partval, \ +SCOTCH_Graph * restrict const indgrafptr, \ +int * const revaptr), \ +(orggrafptr, vnumnbr, parttab, partval, indgrafptr, revaptr)) +{ + *revaptr = SCOTCH_graphInducePart (orggrafptr, vnumnbr, parttab, partval, indgrafptr); +} diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_io_chac_f.c scotch-6.0.6/src/libscotch/library_graph_io_chac_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_io_chac_f.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_io_chac_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to 23 nov 2005 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 27 mar 2010 **/ +/** # Version 6.0 : from : 20 apr 2018 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -67,15 +69,15 @@ ** end of the argument list. */ -FORTRAN ( \ -SCOTCHFGRAPHGEOMLOADCHAC, scotchfgraphgeomloadchac, ( \ -SCOTCH_Graph * const grafptr, \ -SCOTCH_Geom * const geomptr, \ -const int * const filegrfptr, \ -const int * const filegeoptr, \ -const char * const dataptr, /* No use */ \ -int * const revaptr, \ -const int datanbr), \ +SCOTCH_FORTRAN ( \ +GRAPHGEOMLOADCHAC, graphgeomloadchac, ( \ +SCOTCH_Graph * const grafptr, \ +SCOTCH_Geom * const geomptr, \ +const int * const filegrfptr, \ +const int * const filegeoptr, \ +const char * const dataptr, /* No use */ \ +int * const revaptr, \ +const int datanbr), \ (grafptr, geomptr, filegrfptr, filegeoptr, dataptr, revaptr, datanbr)) { FILE * filegrfstream; /* Streams to build from handles */ @@ -85,25 +87,25 @@ int o; if ((filegrfnum = dup (*filegrfptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFGRAPHGEOMLOADCHAC: cannot duplicate handle (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADCHAC)) ": cannot duplicate handle (1)"); *revaptr = 1; /* Indicate error */ return; } if ((filegeonum = dup (*filegeoptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFGRAPHGEOMLOADCHAC: cannot duplicate handle (2)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADCHAC)) ": cannot duplicate handle (2)"); close (filegrfnum); *revaptr = 1; /* Indicate error */ return; } if ((filegrfstream = fdopen (filegrfnum, "r")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFGRAPHGEOMLOADCHAC: cannot open input stream (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADCHAC)) ": cannot open input stream (1)"); close (filegrfnum); close (filegeonum); *revaptr = 1; return; } if ((filegeostream = fdopen (filegeonum, "r")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFGRAPHGEOMLOADCHAC: cannot open input stream (2)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADCHAC)) ": cannot open input stream (2)"); fclose (filegrfstream); close (filegeonum); *revaptr = 1; @@ -122,15 +124,15 @@ ** end of the argument list. */ -FORTRAN ( \ -SCOTCHFGRAPHGEOMSAVECHAC, scotchfgraphgeomsavechac, ( \ -const SCOTCH_Graph * const grafptr, \ -const SCOTCH_Geom * const geomptr, \ -const int * const filegrfptr, \ -const int * const filegeoptr, \ -const char * const dataptr, /* No use */ \ -int * const revaptr, \ -const int datanbr), \ +SCOTCH_FORTRAN ( \ +GRAPHGEOMSAVECHAC, graphgeomsavechac, ( \ +const SCOTCH_Graph * const grafptr, \ +const SCOTCH_Geom * const geomptr, \ +const int * const filegrfptr, \ +const int * const filegeoptr, \ +const char * const dataptr, /* No use */ \ +int * const revaptr, \ +const int datanbr), \ (grafptr, geomptr, filegrfptr, filegeoptr, dataptr, revaptr, datanbr)) { FILE * filegrfstream; /* Streams to build from handles */ @@ -140,25 +142,25 @@ int o; if ((filegrfnum = dup (*filegrfptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFGRAPHGEOMSAVECHAC: cannot duplicate handle (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMSAVECHAC)) ": cannot duplicate handle (1)"); *revaptr = 1; /* Indicate error */ return; } if ((filegeonum = dup (*filegeoptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFGRAPHGEOMSAVECHAC: cannot duplicate handle (2)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMSAVECHAC)) ": cannot duplicate handle (2)"); close (filegrfnum); *revaptr = 1; /* Indicate error */ return; } if ((filegrfstream = fdopen (filegrfnum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFGRAPHGEOMSAVECHAC: cannot open output stream (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMSAVECHAC)) ": cannot open output stream (1)"); close (filegrfnum); close (filegeonum); *revaptr = 1; return; } if ((filegeostream = fdopen (filegeonum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFGRAPHGEOMSAVECHAC: cannot open output stream (2)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMSAVECHAC)) ": cannot open output stream (2)"); fclose (filegrfstream); close (filegeonum); *revaptr = 1; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_io_habo_f.c scotch-6.0.6/src/libscotch/library_graph_io_habo_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_io_habo_f.c 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_io_habo_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to 23 nov 2005 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 27 mar 2010 **/ +/** # Version 6.0 : from : 20 apr 2018 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -67,15 +69,15 @@ ** end of the argument list. */ -FORTRAN ( \ -SCOTCHFGRAPHGEOMLOADHABO, scotchfgraphgeomloadhabo, ( \ -SCOTCH_Graph * const grafptr, \ -SCOTCH_Geom * const geomptr, \ -const int * const filegrfptr, \ -const int * const filegeoptr, \ -const char * const dataptr, /* No use */ \ -int * const revaptr, \ -const int datanbr), \ +SCOTCH_FORTRAN ( \ +GRAPHGEOMLOADHABO, graphgeomloadhabo, ( \ +SCOTCH_Graph * const grafptr, \ +SCOTCH_Geom * const geomptr, \ +const int * const filegrfptr, \ +const int * const filegeoptr, \ +const char * const dataptr, /* No use */ \ +int * const revaptr, \ +const int datanbr), \ (grafptr, geomptr, filegrfptr, filegeoptr, dataptr, revaptr, datanbr)) { FILE * filegrfstream; /* Streams to build from handles */ @@ -85,25 +87,25 @@ int o; if ((filegrfnum = dup (*filegrfptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFGRAPHGEOMLOADHABO: cannot duplicate handle (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADHABO)) ": cannot duplicate handle (1)"); *revaptr = 1; /* Indicate error */ return; } if ((filegeonum = dup (*filegeoptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFGRAPHGEOMLOADHABO: cannot duplicate handle (2)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADHABO)) ": cannot duplicate handle (2)"); close (filegrfnum); *revaptr = 1; /* Indicate error */ return; } if ((filegrfstream = fdopen (filegrfnum, "r")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFGRAPHGEOMLOADHABO: cannot open input stream (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADHABO)) ": cannot open input stream (1)"); close (filegrfnum); close (filegeonum); *revaptr = 1; return; } if ((filegeostream = fdopen (filegeonum, "r")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFGRAPHGEOMLOADHABO: cannot open input stream (2)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADHABO)) ": cannot open input stream (2)"); fclose (filegrfstream); close (filegeonum); *revaptr = 1; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_io_mmkt_f.c scotch-6.0.6/src/libscotch/library_graph_io_mmkt_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_io_mmkt_f.c 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_io_mmkt_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2008,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2008,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to 14 mar 2008 **/ /** # Version 5.1 : from : 11 oct 2008 **/ /** to 27 mar 2010 **/ +/** # Version 6.0 : from : 20 apr 2018 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -67,15 +69,15 @@ ** end of the argument list. */ -FORTRAN ( \ -SCOTCHFGRAPHGEOMLOADMMKT, scotchfgraphgeomloadmmkt, ( \ -SCOTCH_Graph * const grafptr, \ -SCOTCH_Geom * const geomptr, \ -const int * const filegrfptr, \ -const int * const filegeoptr, \ -const char * const dataptr, /* No use */ \ -int * const revaptr, \ -const int datanbr), \ +SCOTCH_FORTRAN ( \ +GRAPHGEOMLOADMMKT, graphgeomloadmmkt, ( \ +SCOTCH_Graph * const grafptr, \ +SCOTCH_Geom * const geomptr, \ +const int * const filegrfptr, \ +const int * const filegeoptr, \ +const char * const dataptr, /* No use */ \ +int * const revaptr, \ +const int datanbr), \ (grafptr, geomptr, filegrfptr, filegeoptr, dataptr, revaptr, datanbr)) { FILE * filegrfstream; /* Streams to build from handles */ @@ -85,25 +87,25 @@ int o; if ((filegrfnum = dup (*filegrfptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFGRAPHGEOMLOADMMKT: cannot duplicate handle (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADMMKT)) ": cannot duplicate handle (1)"); *revaptr = 1; /* Indicate error */ return; } if ((filegeonum = dup (*filegeoptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFGRAPHGEOMLOADMMKT: cannot duplicate handle (2)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADMMKT)) ": cannot duplicate handle (2)"); close (filegrfnum); *revaptr = 1; /* Indicate error */ return; } if ((filegrfstream = fdopen (filegrfnum, "r")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFGRAPHGEOMLOADMMKT: cannot open input stream (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADMMKT)) ": cannot open input stream (1)"); close (filegrfnum); close (filegeonum); *revaptr = 1; return; } if ((filegeostream = fdopen (filegeonum, "r")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFGRAPHGEOMLOADMMKT: cannot open input stream (2)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADMMKT)) ": cannot open input stream (2)"); fclose (filegrfstream); close (filegeonum); *revaptr = 1; @@ -122,15 +124,15 @@ ** end of the argument list. */ -FORTRAN ( \ -SCOTCHFGRAPHGEOMSAVEMMKT, scotchfgraphgeomsavemmkt, ( \ -const SCOTCH_Graph * const grafptr, \ -const SCOTCH_Geom * const geomptr, \ -const int * const filegrfptr, \ -const int * const filegeoptr, \ -const char * const dataptr, /* No use */ \ -int * const revaptr, \ -const int datanbr), \ +SCOTCH_FORTRAN ( \ +GRAPHGEOMSAVEMMKT, graphgeomsavemmkt, ( \ +const SCOTCH_Graph * const grafptr, \ +const SCOTCH_Geom * const geomptr, \ +const int * const filegrfptr, \ +const int * const filegeoptr, \ +const char * const dataptr, /* No use */ \ +int * const revaptr, \ +const int datanbr), \ (grafptr, geomptr, filegrfptr, filegeoptr, dataptr, revaptr, datanbr)) { FILE * filegrfstream; /* Streams to build from handles */ @@ -140,25 +142,25 @@ int o; if ((filegrfnum = dup (*filegrfptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFGRAPHGEOMSAVEMMKT: cannot duplicate handle (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMSAVEMMKT)) ": cannot duplicate handle (1)"); *revaptr = 1; /* Indicate error */ return; } if ((filegeonum = dup (*filegeoptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFGRAPHGEOMSAVEMMKT: cannot duplicate handle (2)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMSAVEMMKT)) ": cannot duplicate handle (2)"); close (filegrfnum); *revaptr = 1; /* Indicate error */ return; } if ((filegrfstream = fdopen (filegrfnum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFGRAPHGEOMSAVEMMKT: cannot open output stream (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMSAVEMMKT)) ": cannot open output stream (1)"); close (filegrfnum); close (filegeonum); *revaptr = 1; return; } if ((filegeostream = fdopen (filegeonum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFGRAPHGEOMSAVEMMKT: cannot open output stream (2)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMSAVEMMKT)) ": cannot open output stream (2)"); fclose (filegrfstream); close (filegeonum); *revaptr = 1; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_io_scot_f.c scotch-6.0.6/src/libscotch/library_graph_io_scot_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_io_scot_f.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_io_scot_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to 23 nov 2005 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 27 mar 2010 **/ +/** # Version 6.0 : from : 20 apr 2018 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -67,15 +69,15 @@ ** end of the argument list. */ -FORTRAN ( \ -SCOTCHFGRAPHGEOMLOADSCOT, scotchfgraphgeomloadscot, ( \ -SCOTCH_Graph * const grafptr, \ -SCOTCH_Geom * const geomptr, \ -const int * const filegrfptr, \ -const int * const filegeoptr, \ -const char * const dataptr, /* No use */ \ -int * const revaptr, \ -const int datanbr), \ +SCOTCH_FORTRAN ( \ +GRAPHGEOMLOADSCOT, graphgeomloadscot, ( \ +SCOTCH_Graph * const grafptr, \ +SCOTCH_Geom * const geomptr, \ +const int * const filegrfptr, \ +const int * const filegeoptr, \ +const char * const dataptr, /* No use */ \ +int * const revaptr, \ +const int datanbr), \ (grafptr, geomptr, filegrfptr, filegeoptr, dataptr, revaptr, datanbr)) { FILE * filegrfstream; /* Streams to build from handles */ @@ -85,25 +87,25 @@ int o; if ((filegrfnum = dup (*filegrfptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFGRAPHGEOMLOADSCOT: cannot duplicate handle (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADSCOT)) ": cannot duplicate handle (1)"); *revaptr = 1; /* Indicate error */ return; } if ((filegeonum = dup (*filegeoptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFGRAPHGEOMLOADSCOT: cannot duplicate handle (2)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADSCOT)) ": cannot duplicate handle (2)"); close (filegrfnum); *revaptr = 1; /* Indicate error */ return; } if ((filegrfstream = fdopen (filegrfnum, "r")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFGRAPHGEOMLOADSCOT: cannot open input stream (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADSCOT)) ": cannot open input stream (1)"); close (filegrfnum); close (filegeonum); *revaptr = 1; return; } if ((filegeostream = fdopen (filegeonum, "r")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFGRAPHGEOMLOADSCOT: cannot open input stream (2)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADSCOT)) ": cannot open input stream (2)"); fclose (filegrfstream); close (filegeonum); *revaptr = 1; @@ -122,15 +124,15 @@ ** end of the argument list. */ -FORTRAN ( \ -SCOTCHFGRAPHGEOMSAVESCOT, scotchfgraphgeomsavescot, ( \ -const SCOTCH_Graph * const grafptr, \ -const SCOTCH_Geom * const geomptr, \ -const int * const filegrfptr, \ -const int * const filegeoptr, \ -const char * const dataptr, /* No use */ \ -int * const revaptr, \ -const int datanbr), \ +SCOTCH_FORTRAN ( \ +GRAPHGEOMSAVESCOT, graphgeomsavescot, ( \ +const SCOTCH_Graph * const grafptr, \ +const SCOTCH_Geom * const geomptr, \ +const int * const filegrfptr, \ +const int * const filegeoptr, \ +const char * const dataptr, /* No use */ \ +int * const revaptr, \ +const int datanbr), \ (grafptr, geomptr, filegrfptr, filegeoptr, dataptr, revaptr, datanbr)) { FILE * filegrfstream; /* Streams to build from handles */ @@ -140,25 +142,25 @@ int o; if ((filegrfnum = dup (*filegrfptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFGRAPHGEOMSAVESCOT: cannot duplicate handle (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMSAVESCOT)) ": cannot duplicate handle (1)"); *revaptr = 1; /* Indicate error */ return; } if ((filegeonum = dup (*filegeoptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFGRAPHGEOMSAVESCOT: cannot duplicate handle (2)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMSAVESCOT)) ": cannot duplicate handle (2)"); close (filegrfnum); *revaptr = 1; /* Indicate error */ return; } if ((filegrfstream = fdopen (filegrfnum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFGRAPHGEOMSAVESCOT: cannot open output stream (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMSAVESCOT)) ": cannot open output stream (1)"); close (filegrfnum); close (filegeonum); *revaptr = 1; return; } if ((filegeostream = fdopen (filegeonum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFGRAPHGEOMSAVESCOT: cannot open output stream (2)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMSAVESCOT)) ": cannot open output stream (2)"); fclose (filegrfstream); close (filegeonum); *revaptr = 1; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_map.c scotch-6.0.6/src/libscotch/library_graph_map.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_map.c 2015-02-24 22:26:00.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_map.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -50,7 +50,7 @@ /** # Version 5.1 : from : 29 oct 2007 **/ /** to 24 jul 2011 **/ /** # Version 6.0 : from : 03 mar 2011 **/ -/** to 29 oct 2014 **/ +/** to 15 may 2018 **/ /** **/ /************************************************************/ @@ -103,7 +103,7 @@ lmapptr->archptr = (Arch *) archptr; if (parttab == NULL) { if ((lmapptr->parttab = (Gnum *) memAlloc (lmapptr->grafptr->vertnbr * sizeof (Gnum))) == NULL) { - errorPrint ("SCOTCH_graphMapInit: out of memory"); + errorPrint (STRINGIFY (SCOTCH_graphMapInit) ": out of memory"); return (1); } memSet (lmapptr->parttab, 0, lmapptr->grafptr->vertnbr * sizeof (Anum)); /* All vertices mapped to first domain */ @@ -154,7 +154,7 @@ SCOTCH_Mapping * const mapoptr, /*+ Old mapping +*/ const double emraval, /*+ Edge migration ratio +*/ const SCOTCH_Num * vmlotab, /*+ Vertex migration cost array +*/ -const Gnum vfixnbr, /*+ Number of fixed vertices in part array +*/ +const SCOTCH_Num vfixnbr, /*+ Number of fixed vertices in part array +*/ SCOTCH_Strat * const straptr) /*+ Mapping strategy +*/ { Kgraph mapgrafdat; /* Effective mapping graph */ @@ -162,14 +162,10 @@ LibMapping * restrict lmapptr; Anum * pfixtax; Gnum baseval; - Anum * parttax; /* Partition array */ Anum * parotax; /* Old partition array */ Gnum crloval; /* Coefficient load for regular edges */ Gnum cmloval; /* Coefficient load for migration edges */ const Gnum * vmlotax; /* Vertex migration cost array */ - Gnum vertnum; - Gnum vertnnd; - Gnum vertnbr; int o; lmapptr = (LibMapping *) mappptr; @@ -202,18 +198,18 @@ #endif /* SCOTCH_DEBUG_LIBRARY1 */ baseval = lmapptr->grafptr->baseval; - vertnbr = lmapptr->grafptr->vertnbr; if (vfixnbr != 0) { /* We have fixed vertices */ #ifdef SCOTCH_DEBUG_LIBRARY1 - ArchDom domndat; - Gnum vertnum; + ArchDom domndat; + Gnum vertnbr; + Gnum vertnum; if (lmapptr->parttab == NULL) { /* We must have fixed vertex information */ errorPrint ("graphMapCompute2: missing output mapping part array"); return (1); } - for (vertnum = 0; vertnum < vertnbr; vertnum ++) { + for (vertnum = 0, vertnbr = lmapptr->grafptr->vertnbr; vertnum < vertnbr; vertnum ++) { if ((lmapptr->parttab[vertnum] >= 0) && (archDomTerm (lmapptr->archptr, &domndat, lmapptr->parttab[vertnum]) != 0)) { errorPrint ("graphMapCompute2: invalid fixed partition"); @@ -232,6 +228,7 @@ Gnum denoval; #ifdef SCOTCH_DEBUG_LIBRARY1 ArchDom domndat; + Gnum vertnbr; Gnum vertnum; #endif /* SCOTCH_DEBUG_LIBRARY1 */ @@ -245,7 +242,7 @@ errorPrint ("graphMapCompute2: output and old mappings must correspond to same architecture"); return (1); } - for (vertnum = 0; vertnum < vertnbr; vertnum ++) { + for (vertnum = 0, vertnbr = lmapptr->grafptr->vertnbr; vertnum < vertnbr; vertnum ++) { if ((lmaoptr->parttab[vertnum] >= 0) && (archDomTerm (lmapptr->archptr, &domndat, lmaoptr->parttab[vertnum]) != 0)) { errorPrint ("graphMapCompute2: invalid old partition"); @@ -617,7 +614,7 @@ stratExit (*((Strat **) straptr)); if ((*((Strat **) straptr) = stratInit (&kgraphmapststratab, string)) == NULL) { - errorPrint ("SCOTCH_stratGraphMap: error in mapping strategy"); + errorPrint (STRINGIFY (SCOTCH_stratGraphMap) ": error in mapping strategy"); return (1); } @@ -643,7 +640,6 @@ char kbaltab[64]; char kmovtab[64]; char mvrttab[64]; - Gunum parttmp; /* "Unsigned" so that ">>" will always insert "0"s */ const char * difkptr; const char * difsptr; const char * exasptr; @@ -686,7 +682,7 @@ stringSubst (bufftab, "", bbaltab); if (SCOTCH_stratGraphMap (straptr, bufftab) != 0) { - errorPrint ("SCOTCH_stratGraphMapBuild: error in sequential mapping strategy"); + errorPrint (STRINGIFY (SCOTCH_stratGraphMapBuild) ": error in sequential mapping strategy"); return (1); } @@ -740,7 +736,7 @@ stringSubst (bufftab, "", pwgttab); if (SCOTCH_stratGraphMap (straptr, bufftab) != 0) { - errorPrint ("SCOTCH_stratGraphClusterBuild: error in sequential mapping strategy"); + errorPrint (STRINGIFY (SCOTCH_stratGraphClusterBuild) ": error in sequential mapping strategy"); return (1); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_map_f.c scotch-6.0.6/src/libscotch/library_graph_map_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_map_f.c 2012-11-23 19:37:06.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_map_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010-2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2010-2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -47,7 +47,7 @@ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 31 aug 2011 **/ /** # Version 6.0 : from : 17 apr 2011 **/ -/** to 23 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -71,14 +71,15 @@ /* ** */ + /* TODO update fortran interface... */ -FORTRAN ( \ -SCOTCHFGRAPHMAPINIT, scotchfgraphmapinit, ( \ -const SCOTCH_Graph * const grafptr, \ -SCOTCH_Mapping * const mappptr, \ -const SCOTCH_Arch * const archptr, \ -SCOTCH_Num * const mapptab, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +GRAPHMAPINIT, graphmapinit, ( \ +const SCOTCH_Graph * const grafptr, \ +SCOTCH_Mapping * const mappptr, \ +const SCOTCH_Arch * const archptr, \ +SCOTCH_Num * const mapptab, \ +int * const revaptr), \ (grafptr, mappptr, archptr, mapptab, revaptr)) { *revaptr = SCOTCH_graphMapInit (grafptr, mappptr, archptr, mapptab); @@ -88,10 +89,10 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHMAPEXIT, scotchfgraphmapexit, ( \ -const SCOTCH_Graph * const grafptr, \ -SCOTCH_Mapping * const mappptr), \ +SCOTCH_FORTRAN ( \ +GRAPHMAPEXIT, graphmapexit, ( \ +const SCOTCH_Graph * const grafptr, \ +SCOTCH_Mapping * const mappptr), \ (grafptr, mappptr)) { SCOTCH_graphMapExit (grafptr, mappptr); @@ -101,12 +102,12 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHMAPCOMPUTE, scotchfgraphmapcompute, ( \ -SCOTCH_Graph * const grafptr, \ -SCOTCH_Mapping * const mappptr, \ -SCOTCH_Strat * const straptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +GRAPHMAPCOMPUTE, graphmapcompute, ( \ +SCOTCH_Graph * const grafptr, \ +SCOTCH_Mapping * const mappptr, \ +SCOTCH_Strat * const straptr, \ +int * const revaptr), \ (grafptr, mappptr, straptr, revaptr)) { *revaptr = SCOTCH_graphMapCompute (grafptr, mappptr, straptr); @@ -116,12 +117,12 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHMAPFIXEDCOMPUTE, scotchfgraphmapfixedcompute, ( \ -SCOTCH_Graph * const grafptr, \ -SCOTCH_Mapping * const mappptr, \ -SCOTCH_Strat * const straptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +GRAPHMAPFIXEDCOMPUTE, graphmapfixedcompute, ( \ +SCOTCH_Graph * const grafptr, \ +SCOTCH_Mapping * const mappptr, \ +SCOTCH_Strat * const straptr, \ +int * const revaptr), \ (grafptr, mappptr, straptr, revaptr)) { *revaptr = SCOTCH_graphMapFixedCompute (grafptr, mappptr, straptr); @@ -131,15 +132,15 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHREMAPCOMPUTE, scotchfgraphremapcompute, ( \ -SCOTCH_Graph * const grafptr, \ -SCOTCH_Mapping * const mappptr, \ -SCOTCH_Mapping * const mapoptr, \ -const double * const emraptr, \ -const SCOTCH_Num * const vmlotab, \ -SCOTCH_Strat * const straptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +GRAPHREMAPCOMPUTE, graphremapcompute, ( \ +SCOTCH_Graph * const grafptr, \ +SCOTCH_Mapping * const mappptr, \ +SCOTCH_Mapping * const mapoptr, \ +const double * const emraptr, \ +const SCOTCH_Num * const vmlotab, \ +SCOTCH_Strat * const straptr, \ +int * const revaptr), \ (grafptr, mappptr, mapoptr, emraptr, vmlotab, straptr, revaptr)) { *revaptr = SCOTCH_graphRemapCompute (grafptr, mappptr, mapoptr, *emraptr, vmlotab, straptr); @@ -149,15 +150,15 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHREMAPFIXEDCOMPUTE, scotchfgraphremapfixedcompute, ( \ -SCOTCH_Graph * const grafptr, \ -SCOTCH_Mapping * const mappptr, \ -SCOTCH_Mapping * const mapoptr, \ -const double * const emraptr, \ -const SCOTCH_Num * const vmlotab, \ -SCOTCH_Strat * const straptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +GRAPHREMAPFIXEDCOMPUTE, graphremapfixedcompute, ( \ +SCOTCH_Graph * const grafptr, \ +SCOTCH_Mapping * const mappptr, \ +SCOTCH_Mapping * const mapoptr, \ +const double * const emraptr, \ +const SCOTCH_Num * const vmlotab, \ +SCOTCH_Strat * const straptr, \ +int * const revaptr), \ (grafptr, mappptr, mapoptr, emraptr, vmlotab, straptr, revaptr)) { *revaptr = SCOTCH_graphRemapFixedCompute (grafptr, mappptr, mapoptr, *emraptr, vmlotab, straptr); @@ -167,13 +168,13 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHMAP, scotchfgraphmap, ( \ -SCOTCH_Graph * const grafptr, \ -const SCOTCH_Arch * const archptr, \ -SCOTCH_Strat * const straptr, \ -SCOTCH_Num * const parttab, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +GRAPHMAP, graphmap, ( \ +SCOTCH_Graph * const grafptr, \ +const SCOTCH_Arch * const archptr, \ +SCOTCH_Strat * const straptr, \ +SCOTCH_Num * const parttab, \ +int * const revaptr), \ (grafptr, archptr, straptr, parttab, revaptr)) { *revaptr = SCOTCH_graphMap (grafptr, archptr, straptr, parttab); @@ -183,13 +184,13 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHMAPFIXED, scotchfgraphmapfixed, ( \ -SCOTCH_Graph * const grafptr, \ -const SCOTCH_Arch * const archptr, \ -SCOTCH_Strat * const straptr, \ -SCOTCH_Num * const parttab, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +GRAPHMAPFIXED, graphmapfixed, ( \ +SCOTCH_Graph * const grafptr, \ +const SCOTCH_Arch * const archptr, \ +SCOTCH_Strat * const straptr, \ +SCOTCH_Num * const parttab, \ +int * const revaptr), \ (grafptr, archptr, straptr, parttab, revaptr)) { *revaptr = SCOTCH_graphMapFixed (grafptr, archptr, straptr, parttab); @@ -199,16 +200,16 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHREMAP, scotchfgraphremap, ( \ -SCOTCH_Graph * const grafptr, \ -const SCOTCH_Arch * const archptr, \ -SCOTCH_Num * const parotab, \ -const double * const emraptr, \ -const SCOTCH_Num * const vmlotab, \ -SCOTCH_Strat * const straptr, \ -SCOTCH_Num * const parttab, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +GRAPHREMAP, graphremap, ( \ +SCOTCH_Graph * const grafptr, \ +const SCOTCH_Arch * const archptr, \ +SCOTCH_Num * const parotab, \ +const double * const emraptr, \ +const SCOTCH_Num * const vmlotab, \ +SCOTCH_Strat * const straptr, \ +SCOTCH_Num * const parttab, \ +int * const revaptr), \ (grafptr, archptr, parotab, emraptr, vmlotab, straptr, parttab, revaptr)) { *revaptr = SCOTCH_graphRemap (grafptr, archptr, parotab, *emraptr, vmlotab, straptr, parttab); @@ -218,16 +219,16 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHREMAPFIXED, scotchfgraphremapfixed, ( \ -SCOTCH_Graph * const grafptr, \ -const SCOTCH_Arch * const archptr, \ -SCOTCH_Num * const parotab, \ -const double * const emraptr, \ -const SCOTCH_Num * const vmlotab, \ -SCOTCH_Strat * const straptr, \ -SCOTCH_Num * const parttab, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +GRAPHREMAPFIXED, graphremapfixed, ( \ +SCOTCH_Graph * const grafptr, \ +const SCOTCH_Arch * const archptr, \ +SCOTCH_Num * const parotab, \ +const double * const emraptr, \ +const SCOTCH_Num * const vmlotab, \ +SCOTCH_Strat * const straptr, \ +SCOTCH_Num * const parttab, \ +int * const revaptr), \ (grafptr, archptr, parotab, emraptr, vmlotab, straptr, parttab, revaptr)) { *revaptr = SCOTCH_graphRemapFixed (grafptr, archptr, parotab, *emraptr, vmlotab, straptr, parttab); @@ -237,94 +238,95 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHPART, scotchfgraphpart, ( \ -SCOTCH_Graph * const grafptr, \ -const SCOTCH_Num * const partptr, \ -SCOTCH_Strat * const straptr, \ -SCOTCH_Num * const mapptab, \ -int * const revaptr), \ -(grafptr, partptr, straptr, mapptab, revaptr)) +SCOTCH_FORTRAN ( \ +GRAPHPART, graphpart, ( \ +SCOTCH_Graph * const grafptr, \ +const SCOTCH_Num * const partptr, \ +SCOTCH_Strat * const straptr, \ +SCOTCH_Num * const parttab, \ +int * const revaptr), \ +(grafptr, partptr, straptr, parttab, revaptr)) { - *revaptr = SCOTCH_graphPart (grafptr, *partptr, straptr, mapptab); + *revaptr = SCOTCH_graphPart (grafptr, *partptr, straptr, parttab); } /* ** */ -FORTRAN ( \ -SCOTCHFGRAPHPARTFIXED, scotchfgraphpartfixed, ( \ -SCOTCH_Graph * const grafptr, \ -const SCOTCH_Num * const partptr, \ -SCOTCH_Strat * const straptr, \ -SCOTCH_Num * const mapptab, \ -int * const revaptr), \ -(grafptr, partptr, straptr, mapptab, revaptr)) +SCOTCH_FORTRAN ( \ +GRAPHPARTFIXED, graphpartfixed, ( \ +SCOTCH_Graph * const grafptr, \ +const SCOTCH_Num * const partptr, \ +SCOTCH_Strat * const straptr, \ +SCOTCH_Num * const parttab, \ +int * const revaptr), \ +(grafptr, partptr, straptr, parttab, revaptr)) { - *revaptr = SCOTCH_graphPartFixed (grafptr, *partptr, straptr, mapptab); + *revaptr = SCOTCH_graphPartFixed (grafptr, *partptr, straptr, parttab); } /* ** */ -FORTRAN ( \ -SCOTCHFGRAPHREPART, scotchfgraphrepart, ( \ -SCOTCH_Graph * const grafptr, \ -const SCOTCH_Num * const partptr, \ -SCOTCH_Num * const parotab, \ -const double * const emraptr, \ -const SCOTCH_Num * const vmlotab, \ -SCOTCH_Strat * const straptr, \ -SCOTCH_Num * const mapptab, \ -int * const revaptr), \ -(grafptr, partptr, parotab, emraptr, vmlotab, straptr, mapptab, revaptr)) +SCOTCH_FORTRAN ( \ +GRAPHREPART, graphrepart, ( \ +SCOTCH_Graph * const grafptr, \ +const SCOTCH_Num * const partptr, \ +SCOTCH_Num * const parotab, \ +const double * const emraptr, \ +const SCOTCH_Num * const vmlotab, \ +SCOTCH_Strat * const straptr, \ +SCOTCH_Num * const parttab, \ +int * const revaptr), \ +(grafptr, partptr, parotab, emraptr, vmlotab, straptr, parttab, revaptr)) { - *revaptr = SCOTCH_graphRepart (grafptr, *partptr, parotab, *emraptr, vmlotab, straptr, mapptab); + *revaptr = SCOTCH_graphRepart (grafptr, *partptr, parotab, *emraptr, vmlotab, straptr, parttab); } /* ** */ -FORTRAN ( \ -SCOTCHFGRAPHREPARTFIXED, scotchfgraphrepartfixed, ( \ -SCOTCH_Graph * const grafptr, \ -const SCOTCH_Num * const partptr, \ -SCOTCH_Num * const parotab, \ -const double * const emraptr, \ -const SCOTCH_Num * const vmlotab, \ -SCOTCH_Strat * const straptr, \ -SCOTCH_Num * const mapptab, \ -int * const revaptr), \ -(grafptr, partptr, parotab, emraptr, vmlotab, straptr, mapptab, revaptr)) +SCOTCH_FORTRAN ( \ +GRAPHREPARTFIXED, graphrepartfixed, ( \ +SCOTCH_Graph * const grafptr, \ +const SCOTCH_Num * const partptr, \ +SCOTCH_Num * const parotab, \ +const double * const emraptr, \ +const SCOTCH_Num * const vmlotab, \ +SCOTCH_Strat * const straptr, \ +SCOTCH_Num * const parttab, \ +int * const revaptr), \ +(grafptr, partptr, parotab, emraptr, vmlotab, straptr, parttab, revaptr)) { - *revaptr = SCOTCH_graphRepartFixed (grafptr, *partptr, parotab, *emraptr, vmlotab, straptr, mapptab); + *revaptr = SCOTCH_graphRepartFixed (grafptr, *partptr, parotab, *emraptr, vmlotab, straptr, parttab); } /* String lengths are passed at the very ** end of the argument list. */ -FORTRAN ( \ -SCOTCHFSTRATGRAPHMAP, scotchfstratgraphmap, ( \ -SCOTCH_Strat * const stratptr, \ -const char * const string, \ -int * const revaptr, \ -const int strnbr), \ -(stratptr, string, revaptr, strnbr)) +SCOTCH_FORTRAN ( \ +STRATGRAPHMAP, stratgraphmap, ( \ +SCOTCH_Strat * const straptr, \ +const char * const string, \ +int * const revaptr, \ +const int strnbr), \ +(straptr, string, revaptr, strnbr)) { char * restrict strtab; /* Pointer to null-terminated string */ if ((strtab = (char *) memAlloc (strnbr + 1)) == NULL) { /* Allocate temporary space */ - errorPrint ("SCOTCHFSTRATGRAPHMAP: out of memory (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (STRATGRAPHMAP)) ": out of memory"); *revaptr = 1; + return; } memCpy (strtab, string, strnbr); /* Copy string contents */ strtab[strnbr] = '\0'; /* Terminate string */ - *revaptr = SCOTCH_stratGraphMap (stratptr, strtab); /* Call original routine */ + *revaptr = SCOTCH_stratGraphMap (straptr, strtab); /* Call original routine */ memFree (strtab); } @@ -333,31 +335,31 @@ ** */ -FORTRAN ( \ -SCOTCHFSTRATGRAPHMAPBUILD, scotchfstratgraphmapbuild, ( \ -SCOTCH_Strat * const stratptr, \ -const SCOTCH_Num * const flagval, \ -const SCOTCH_Num * const partnbr, \ -const double * const kbalptr, \ -int * const revaptr), \ -(stratptr, flagval, partnbr, kbalptr, revaptr)) +SCOTCH_FORTRAN ( \ +STRATGRAPHMAPBUILD, stratgraphmapbuild, ( \ +SCOTCH_Strat * const straptr, \ +const SCOTCH_Num * const flagval, \ +const SCOTCH_Num * const partnbr, \ +const double * const kbalval, \ +int * const revaptr), \ +(straptr, flagval, partnbr, kbalval, revaptr)) { - *revaptr = SCOTCH_stratGraphMapBuild (stratptr, *flagval, *partnbr, *kbalptr); + *revaptr = SCOTCH_stratGraphMapBuild (straptr, *flagval, *partnbr, *kbalval); } /* ** */ -FORTRAN ( \ -SCOTCHFSTRATGRAPHCLUSTERBUILD, scotchfstratgraphclusterbuild, ( \ -SCOTCH_Strat * const stratptr, \ -const SCOTCH_Num * const flagval, \ -const SCOTCH_Num * const pwgtval, \ -const double * const densval, \ -const double * const bbalptr, \ -int * const revaptr), \ -(stratptr, flagval, pwgtval, densval, bbalptr, revaptr)) +SCOTCH_FORTRAN ( \ +STRATGRAPHCLUSTERBUILD, stratgraphclusterbuild, ( \ +SCOTCH_Strat * const straptr, \ +const SCOTCH_Num * const flagval, \ +const SCOTCH_Num * const pwgtval, \ +const double * const densval, \ +const double * const bbalval, \ +int * const revaptr), \ +(straptr, flagval, pwgtval, densval, bbalval, revaptr)) { - *revaptr = SCOTCH_stratGraphClusterBuild (stratptr, *flagval, *pwgtval, *densval, *bbalptr); + *revaptr = SCOTCH_stratGraphClusterBuild (straptr, *flagval, *pwgtval, *densval, *bbalval); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_map_io.c scotch-6.0.6/src/libscotch/library_graph_map_io.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_map_io.c 2012-11-23 19:32:43.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_map_io.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2011,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2011,2012,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,7 +40,7 @@ /** of the libSCOTCH library. **/ /** **/ /** DATES : # Version 6.0 : from : 16 apr 2011 **/ -/** to 23 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -79,92 +79,110 @@ SCOTCH_Num * const parttab, /*+ Array to load +*/ FILE * const stream) /*+ Input stream +*/ { + Gnum vertsortnbr; /* Number of vertex sort slots to allocate */ VertSort * vertsorttab; /* Pointer to graph sorting array */ - int vertsortflag; /* Flag set if graph data sorted by label */ VertSort * mappsorttab; /* Pointer to mapping data sorting array */ int mappsortflag; /* Flag set if mapping data sorted by label */ + Gnum mappsortlabl; /* Old label value */ Gnum mappsortval; Gnum mappfileval; Gnum mappfilenbr; /* Number of mapping pairs in file */ Gnum mappfilenum; /* Counter of mapping pairs in file */ - Gnum * mappfiletab; /* Pointer to mapping data read from file */ Graph * grafptr; - Gnum vertnum; - Gnum i, j; + Gnum vertnbr; grafptr = (Graph *) actgrafptr; - memSet (parttab, ~0, grafptr->vertnbr * sizeof (Anum)); /* Pre-initialize the partition array */ + vertnbr = grafptr->vertnbr; + memSet (parttab, ~0, vertnbr * sizeof (Anum)); /* Pre-initialize the partition array */ - if ((fscanf (stream, GNUMSTRING,&mappfileval) != 1) || /* Read number of mapping pairs */ + if ((fscanf (stream, GNUMSTRING, &mappfileval) != 1) || /* Read number of mapping pairs */ (mappfileval < 1)) { - errorPrint ("SCOTCH_graphTabLoad: bad input (1)"); + errorPrint (STRINGIFY (SCOTCH_graphTabLoad) ": bad input (1)"); return (1); } mappfilenbr = (Gnum) mappfileval; + if (mappfilenbr <= 0) /* If nothing to do */ + return (0); + + vertsortnbr = (grafptr->vlbltax != NULL) ? vertnbr : 0; if (memAllocGroup ((void **) (void *) /* Allocate temporary data */ - &mappfiletab, (size_t) (mappfilenbr * sizeof (Gnum)), - &mappsorttab, (size_t) (mappfilenbr * sizeof (VertSort)), - &vertsorttab, (size_t) (grafptr->vertnbr * sizeof (VertSort)), NULL) == NULL) { - errorPrint ("SCOTCH_graphTabLoad: out of memory (1)"); - return (1); + &mappsorttab, (size_t) (mappfilenbr * sizeof (VertSort)), + &vertsorttab, (size_t) (vertsortnbr * sizeof (VertSort)), NULL) == NULL) { + errorPrint (STRINGIFY (SCOTCH_graphTabLoad) ": out of memory (1)"); + return (1); } mappsortflag = 1; /* Assume mapping data sorted */ + mappsortlabl = GNUMMIN; for (mappfilenum = 0; mappfilenum < mappfilenbr; mappfilenum ++) { if (fscanf (stream, GNUMSTRING GNUMSTRING, &mappsortval, &mappfileval) != 2) { - errorPrint ("SCOTCH_graphTabLoad: bad input (2)"); - memFree (mappfiletab); /* Free group leader */ + errorPrint (STRINGIFY (SCOTCH_graphTabLoad) ": bad input (2)"); + memFree (mappsorttab); /* Free group leader */ return (1); } mappsorttab[mappfilenum].labl = mappsortval; - mappsorttab[mappfilenum].num = mappfilenum; - mappfiletab[mappfilenum] = mappfileval; + mappsorttab[mappfilenum].num = mappfileval; - if ((mappfilenum > 0) && /* Check if mapping data sorted */ - (mappsorttab[mappfilenum].labl < mappsorttab[mappfilenum - 1].labl)) - mappsortflag = 0; /* Mapping data not sorted */ + if (mappsortval < mappsortlabl) /* Check if mapping data sorted */ + mappsortflag = 0; /* Mapping data not sorted */ + mappsortlabl = mappsortval; } - if (mappsortflag != 1) /* If mapping data not sorted */ - intSort2asc1 (mappsorttab, mappfilenbr); /* Sort area by ascending labels */ + if (mappsortflag != 1) /* If mapping data not sorted */ + intSort2asc1 (mappsorttab, mappfilenbr); /* Sort area by ascending labels */ + for (mappfilenum = 1; mappfilenum < mappfilenbr; mappfilenum ++) { /* Check mapping data integrity */ if (mappsorttab[mappfilenum].labl == mappsorttab[mappfilenum - 1].labl) { - errorPrint ("SCOTCH_graphTabLoad: duplicate vertex label"); - memFree (mappfiletab); /* Free group leader */ + errorPrint (STRINGIFY (SCOTCH_graphTabLoad) ": duplicate vertex label"); + memFree (mappsorttab); /* Free group leader */ return (1); } } - if (grafptr->vlbltax != NULL) { /* If graph has vertex labels */ - vertsortflag = 1; /* Assume graph data sorted */ - for (vertnum = 0; vertnum < grafptr->vertnbr; vertnum ++) { - vertsorttab[vertnum].labl = grafptr->vlbltax[vertnum]; - vertsorttab[vertnum].num = vertnum; - if ((vertnum > 0) && /* Check if graph data sorted */ - (vertsorttab[vertnum].labl < vertsorttab[vertnum - 1].labl)) - vertsortflag = 0; /* Graph data not sorted */ + if (grafptr->vlbltax != NULL) { /* If graph has vertex labels */ + int vertsortflag; /* Flag set if graph data sorted by label */ + Gnum vertsortlabl; /* Old label value */ + Gnum vertsortnum; + + vertsortflag = 1; /* Assume graph data sorted */ + vertsortlabl = GNUMMIN; + for (vertsortnum = 0; vertsortnum < vertnbr; vertsortnum ++) { + vertsorttab[vertsortnum].labl = grafptr->vlbltax[vertsortnum]; + vertsorttab[vertsortnum].num = vertsortnum; + + if (vertsorttab[vertsortnum].labl < vertsortlabl) /* Check if graph data sorted */ + vertsortflag = 0; /* Graph data not sorted */ + vertsortlabl = vertsorttab[vertsortnum].labl; } - if (vertsortflag != 1) /* If graph data not sorted */ - intSort2asc1 (vertsorttab, grafptr->vertnbr); /* Sort sort area by ascending labels */ - } - else { /* Graph does not have vertex labels */ - for (vertnum = 0; vertnum < grafptr->vertnbr; vertnum ++) { - vertsorttab[vertnum].labl = vertnum + mappsorttab[0].labl; /* Use first index as base value */ - vertsorttab[vertnum].num = vertnum; + if (vertsortflag != 1) /* If graph label data not sorted */ + intSort2asc1 (vertsorttab, vertnbr); /* Sort sort area by ascending labels */ + + for (vertsortnum = 0, mappfilenum = 0; vertsortnum < vertnbr; vertsortnum ++) { /* For all vertices in graph */ + while (mappsorttab[mappfilenum].labl < vertsorttab[vertsortnum].labl) { + mappfilenum ++; /* Search mapping vertex with same label */ + if (mappfilenum >= mappfilenbr) /* If all mapping data processed */ + goto end; /* Exit main loop */ + } + if (mappsorttab[mappfilenum].labl == vertsorttab[vertsortnum].labl) /* If label match found */ + ((Anum *) parttab)[vertsorttab[vertsortnum].num] = mappsorttab[mappfilenum ++].num; } +end: ; } + else { /* Graph does not have vertex labels */ + const Gnum baseval = grafptr->baseval; - for (vertnum = 0, mappfilenum = 0; vertnum < grafptr->vertnbr; vertnum ++) { /* For all vertices in graph */ - while ((mappfilenum < mappfilenbr) && (mappsorttab[mappfilenum].labl < vertsorttab[vertnum].labl)) - mappfilenum ++; /* Search mapping vertex with same label */ - if ((mappfilenum >= mappfilenbr) || (mappsorttab[mappfilenum].labl > vertsorttab[vertnum].labl)) /* If label does not exist */ - continue; /* This vertex has no related mapping data */ - ((Anum *) parttab)[vertsorttab[vertnum].num] = mappfiletab[mappsorttab[mappfilenum ++].num]; + for (mappfilenum = 0; mappfilenum < mappfilenbr; mappfilenum ++) { /* For all mapping pairs */ + Gnum vertnum; /* Vertex index to which mapping label is applied */ + + vertnum = mappsorttab[mappfilenum].labl - baseval; + if ((vertnum >= 0) && (vertnum < vertnbr)) /* If valid vertex label */ + ((Anum *) parttab)[vertnum] = (Anum) mappsorttab[mappfilenum].num; + } } - memFree (mappfiletab); /* Free group leader */ + memFree (mappsorttab); /* Free group leader */ return (0); } @@ -190,14 +208,14 @@ lmapptr = (LibMapping *) mappptr; #ifdef SCOTCH_DEBUG_GRAPH2 if (grafptr != lmapptr->grafptr) { - errorPrint ("SCOTCH_graphMapLoad: mapping structure must derive from graph"); + errorPrint (STRINGIFY (SCOTCH_graphMapLoad) ": mapping structure must derive from graph"); return (1); } #endif /* SCOTCH_DEBUG_GRAPH2 */ if (lmapptr->parttab == NULL) { /* Allocate array if necessary */ if ((lmapptr->parttab = (Gnum *) memAlloc (grafptr->vertnbr * sizeof (Gnum))) == NULL) { - errorPrint ("SCOTCH_graphMapLoad: out of memory"); + errorPrint (STRINGIFY (SCOTCH_graphMapLoad) ": out of memory"); return (1); } lmapptr->flagval |= LIBMAPPINGFREEPART; /* As the array was not allocated by the user, it will be freed */ @@ -229,7 +247,7 @@ lmapptr = (LibMapping *) mappptr; #ifdef SCOTCH_DEBUG_GRAPH2 if (grafptr != lmapptr->grafptr) { - errorPrint ("SCOTCH_graphMapSave: mapping structure must derive from graph"); + errorPrint (STRINGIFY (SCOTCH_graphMapSave) ": mapping structure must derive from graph"); return (1); } #endif /* SCOTCH_DEBUG_GRAPH2 */ @@ -239,7 +257,7 @@ if (fprintf (stream, GNUMSTRING "\n", (Gnum) grafptr->vertnbr) == EOF) { - errorPrint ("SCOTCH_graphMapSave: bad output (1)"); + errorPrint (STRINGIFY (SCOTCH_graphMapSave) ": bad output (1)"); return (1); } @@ -248,7 +266,7 @@ if (fprintf (stream, GNUMSTRING "\t" GNUMSTRING "\n", (Gnum) ((vlbltax != NULL) ? vlbltax[vertnum] : vertnum), (Gnum) parttab[vertnum - baseval]) == EOF) { - errorPrint ("SCOTCH_graphMapSave: bad output (2)"); + errorPrint (STRINGIFY (SCOTCH_graphMapSave) ": bad output (2)"); return (1); } } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_map_io_f.c scotch-6.0.6/src/libscotch/library_graph_map_io_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_map_io_f.c 2012-11-23 19:07:47.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_map_io_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,7 +40,7 @@ /** library. **/ /** **/ /** DATES : # Version 6.0 : from : 03 jul 2012 **/ -/** to 23 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -61,26 +61,25 @@ /* */ /**************************************/ -FORTRAN ( \ -SCOTCHFGRAPHTABLOAD, scotchfgraphtabload, ( \ -const SCOTCH_Graph * const grafptr, \ -SCOTCH_Num * const parttab, \ -const int * const fileptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +GRAPHTABLOAD, graphtabload, ( \ +const SCOTCH_Graph * const grafptr, \ +SCOTCH_Num * const parttab, \ +const int * const fileptr, \ +int * const revaptr), \ (grafptr, parttab, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ - int filegeonum; int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFGRAPHTABLOAD: cannot duplicate handle"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHTABLOAD)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "r")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFGRAPHTABLOAD: cannot open input stream"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHTABLOAD)) ": cannot open input stream"); close (filenum); *revaptr = 1; return; @@ -97,12 +96,12 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHMAPLOAD, scotchfgraphmapload, ( \ -const SCOTCH_Graph * const grafptr, \ -SCOTCH_Mapping * const mappptr, \ -const int * const fileptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +GRAPHMAPLOAD, graphmapload, ( \ +const SCOTCH_Graph * const grafptr, \ +SCOTCH_Mapping * const mappptr, \ +const int * const fileptr, \ +int * const revaptr), \ (grafptr, mappptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ @@ -110,12 +109,12 @@ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFGRAPHMAPLOAD: cannot duplicate handle"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHMAPLOAD)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "r")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFGRAPHMAPLOAD: cannot open input stream"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHMAPLOAD)) ": cannot open input stream"); close (filenum); *revaptr = 1; return; @@ -132,12 +131,12 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHMAPSAVE, scotchfgraphmapsave, ( \ -const SCOTCH_Graph * const grafptr, \ -SCOTCH_Mapping * const mappptr, \ -int * const fileptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +GRAPHMAPSAVE, graphmapsave, ( \ +const SCOTCH_Graph * const grafptr, \ +SCOTCH_Mapping * const mappptr, \ +const int * const fileptr, \ +int * const revaptr), \ (grafptr, mappptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ @@ -145,13 +144,13 @@ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFGRAPHMAPSAVE: cannot duplicate handle"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHMAPSAVE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFGRAPHMAPSAVE: cannot open output stream"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHMAPSAVE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_map_view.c scotch-6.0.6/src/libscotch/library_graph_map_view.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_map_view.c 2015-03-01 10:26:17.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_map_view.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2011,2015 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2011,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -52,7 +52,7 @@ /** # Version 5.1 : from : 27 jul 2008 **/ /** to 11 aug 2010 **/ /** # Version 6.0 : from : 03 mar 2011 **/ -/** to 01 mar 2015 **/ +/** to 15 may 2018 **/ /** **/ /************************************************************/ @@ -104,7 +104,6 @@ const Arch * restrict archptr; LibMapping * restrict lmapptr; LibMapping * restrict lmaoptr; - Mapping mappdat; Anum * restrict parttax; /* Part array */ Anum * restrict parotax; /* Old part array */ MappingSort * restrict domntab; /* Pointer to domain sort array */ @@ -152,7 +151,7 @@ #ifdef SCOTCH_DEBUG_LIBRARY1 if (sizeof (SCOTCH_Mapping) < sizeof (LibMapping)) { - errorPrint ("SCOTCH_graphMapView: internal error"); + errorPrint (STRINGIFY (SCOTCH_graphMapView) ": internal error"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ @@ -162,7 +161,7 @@ #ifdef SCOTCH_DEBUG_LIBRARY1 if ((Graph *) libgrafptr != grafptr) { - errorPrint ("SCOTCH_graphMapView: input graph must be the same as mapping graph"); + errorPrint (STRINGIFY (SCOTCH_graphMapView) ": input graph must be the same as mapping graph"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ @@ -187,7 +186,7 @@ #ifdef SCOTCH_DEBUG_LIBRARY1 if (lmapptr->parttab == NULL) { - errorPrint ("SCOTCH_graphMapView: the mapping given in input must contain a valid partition array"); + errorPrint (STRINGIFY (SCOTCH_graphMapView) ": the mapping given in input must contain a valid partition array"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ @@ -197,7 +196,7 @@ if (memAllocGroup ((void **) (void *) &domntab, (size_t) ((grafptr->vertnbr + 1) * sizeof (MappingSort)), &nghbtab, (size_t) ((grafptr->vertnbr + 2) * sizeof (Anum)), NULL) == NULL) { - errorPrint ("SCOTCH_graphMapView: out of memory"); + errorPrint (STRINGIFY (SCOTCH_graphMapView) ": out of memory"); return (1); } @@ -251,7 +250,7 @@ if (mapnbr > tgtnbr) { /* If more subdomains than architecture size */ #ifdef SCOTCH_DEBUG_MAP2 if (! archVar (archptr)) { /* If not a variable-sized architecture */ - errorPrint ("SCOTCH_graphMapView: invalid mapping"); + errorPrint (STRINGIFY (SCOTCH_graphMapView) ": invalid mapping"); memFree (domntab); /* Free group leader */ return (1); } @@ -276,7 +275,6 @@ nghbmin = ANUMMAX; nghbmax = 0; nghbsum = 0; - nghbnbr = 0; nghbtab[0] = -2; for (vertnum = 0; domntab[vertnum].labl != ARCHDOMNOTTERM; vertnum ++) { Gnum edgenum; @@ -311,8 +309,8 @@ #ifdef SCOTCH_DEBUG_MAP2 if (nghbnbr >= (grafptr->vertnbr + 1)) { - errorPrint ("SCOTCH_graphMapView: internal error"); - return (1); + errorPrint (STRINGIFY (SCOTCH_graphMapView) ": internal error"); + return (1); } #endif /* SCOTCH_DEBUG_MAP2 */ @@ -576,7 +574,6 @@ int diamflag; /* Flag set if diameter changed */ Gnum diambase; /* Base distance for connected components */ Gnum diamdist; /* Current diameter distance */ - Gnum diamnum; /* Vertex which achieves diameter */ Gnum passnum; /* Pass number */ const Gnum * restrict verttax; /* Based access to vertex array */ const Gnum * restrict vendtax; /* Based access to vertex end array */ @@ -595,9 +592,10 @@ vendtax = grafptr->vendtax; vexxtax -= grafptr->baseval; - diamnum = 0; /* Start distances from zero */ - diamdist = 0; + diamdist = 0; /* Start distances from zero */ for (passnum = 1, rootnum = grafptr->baseval; ; passnum ++) { /* For all connected components */ + Gnum diamnum; /* Vertex which achieves diameter */ + while ((rootnum < grafptr->vertnbr) && ((vexxtax[rootnum].passnum != 0) || /* Find first unallocated vertex */ (parttax[rootnum] != partval))) diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_map_view_f.c scotch-6.0.6/src/libscotch/library_graph_map_view_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_map_view_f.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_map_view_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to 21 nov 2005 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 27 mar 2010 **/ +/** # Version 6.0 : from : 20 apr 2018 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -67,32 +69,32 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHMAPVIEW, scotchfgraphmapview, ( \ -const SCOTCH_Graph * const grafptr, \ -const SCOTCH_Mapping * const mapptr, \ -int * const fileptr, \ -int * const revaptr), \ -(grafptr, mapptr, fileptr, revaptr)) +SCOTCH_FORTRAN ( \ +GRAPHMAPVIEW, graphmapview, ( \ +const SCOTCH_Graph * const grafptr, \ +const SCOTCH_Mapping * const mappptr, \ +const int * const fileptr, \ +int * const revaptr), \ +(grafptr, mappptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFGRAPHMAPVIEW: cannot duplicate handle"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHMAPVIEW)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFGRAPHMAPVIEW: cannot open output stream"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHMAPVIEW)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; } - o = SCOTCH_graphMapView (grafptr, mapptr, stream); + o = SCOTCH_graphMapView (grafptr, mappptr, stream); fclose (stream); /* This closes filenum too */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_map_view.h scotch-6.0.6/src/libscotch/library_graph_map_view.h --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_map_view.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_map_view.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,6 +40,8 @@ /** **/ /** DATES : # Version 5.0 : from : 04 feb 2007 **/ /** to 04 feb 2007 **/ +/** # Version 6.0 : from : 06 jun 2018 **/ +/** to 06 jun 2018 **/ /** **/ /************************************************************/ @@ -68,13 +70,9 @@ ** The function prototypes. */ -#ifndef LIBRARY_GRAPH_MAP_VIEW -#define static -#endif - +#ifdef LIBRARY_GRAPH_MAP_VIEW static Gnum graphMapView3 (const Graph * const, const Anum * const, const Anum); - -#undef static +#endif /* LIBRARY_GRAPH_MAP_VIEW */ /* ** The macro definitions. diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_order.c scotch-6.0.6/src/libscotch/library_graph_order.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_order.c 2015-02-24 22:27:52.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_order.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010,2012-2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010,2012-2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -50,7 +50,7 @@ /** # Version 5.1 : from : 30 oct 2007 **/ /** to 14 aug 2010 **/ /** # Version 6.0 : from : 08 jan 2012 **/ -/** to 15 nov 2014 **/ +/** to 10 jul 2018 **/ /** **/ /************************************************************/ @@ -100,7 +100,7 @@ #ifdef SCOTCH_DEBUG_LIBRARY1 if (sizeof (SCOTCH_Ordering) < sizeof (LibOrder)) { - errorPrint ("SCOTCH_graphOrderInit: internal error"); + errorPrint (STRINGIFY (SCOTCH_graphOrderInit) ": internal error"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ @@ -254,13 +254,13 @@ #ifdef SCOTCH_DEBUG_LIBRARY1 if ((listnbr < 0) || (listnbr > srcgrafptr->vertnbr)) { - errorPrint ("SCOTCH_graphOrderComputeList: invalid parameters (1)"); + errorPrint (STRINGIFY (SCOTCH_graphOrderComputeList) ": invalid parameters (1)"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ #ifdef SCOTCH_DEBUG_LIBRARY2 if (graphCheck (srcgrafptr) != 0) { - errorPrint ("SCOTCH_graphOrderComputeList: invalid input graph"); + errorPrint (STRINGIFY (SCOTCH_graphOrderComputeList) ": invalid input graph"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY2 */ @@ -275,7 +275,7 @@ ordstratptr = *((Strat **) stratptr); if (ordstratptr->tabl != &hgraphorderststratab) { - errorPrint ("SCOTCH_graphOrderComputeList: not an ordering strategy"); + errorPrint (STRINGIFY (SCOTCH_graphOrderComputeList) ": not an ordering strategy"); return (1); } @@ -287,7 +287,7 @@ halgrafdat.vnhdtax = halgrafdat.s.vendtax; /* End of non-halo vertices */ halgrafdat.vnlosum = halgrafdat.s.velosum; /* Sum of node vertex weights */ halgrafdat.enohnbr = halgrafdat.s.edgenbr; /* No halo present */ - halgrafdat.enohsum = halgrafdat.s.edlosum; + halgrafdat.enlosum = halgrafdat.s.edlosum; halgrafdat.levlnum = 0; /* No nested dissection yet */ if (listnbr == srcgrafptr->vertnbr) { /* If work on full graph */ @@ -295,14 +295,13 @@ cblkptr = &libordeptr->o.cblktre; } else { - VertList listdat; Gnum * restrict peritax; Gnum listnum; Gnum vertnum; Gnum halonum; if ((cblkptr = (OrderCblk *) memAlloc (2 * sizeof (OrderCblk))) == NULL) { - errorPrint ("SCOTCH_graphOrderComputeList: out of memory"); + errorPrint (STRINGIFY (SCOTCH_graphOrderComputeList) ": out of memory"); return (1); } libordeptr->o.treenbr = 3; @@ -327,7 +326,7 @@ #ifdef SCOTCH_DEBUG_LIBRARY2 if ((listtab[listnum] < srcgrafptr->baseval) || (listtab[listnum] >= srcgrafptr->vertnnd)) { - errorPrint ("SCOTCH_graphOrderComputeList: invalid parameters (2)"); + errorPrint (STRINGIFY (SCOTCH_graphOrderComputeList) ": invalid parameters (2)"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY2 */ @@ -339,15 +338,13 @@ } #ifdef SCOTCH_DEBUG_LIBRARY2 if (halonum != (listnbr + srcgrafptr->baseval - 1)) { - errorPrint ("SCOTCH_graphOrderComputeList: internal error"); + errorPrint (STRINGIFY (SCOTCH_graphOrderComputeList) ": internal error"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY2 */ - listdat.vnumnbr = listnbr; - listdat.vnumtab = (Gnum * const) listtab; - if (hgraphInduceList (&halgrafdat, &listdat, srcgrafptr->vertnbr - listnbr, &halgraftmp) != 0) { - errorPrint ("SCOTCH_graphOrderComputeList: cannot create induced subgraph"); + if (hgraphInduceList (&halgrafdat, listnbr, (Gnum * const) listtab, srcgrafptr->vertnbr - listnbr, &halgraftmp) != 0) { + errorPrint (STRINGIFY (SCOTCH_graphOrderComputeList) ": cannot create induced subgraph"); return (1); } halgrafptr = &halgraftmp; @@ -470,7 +467,7 @@ stratExit (*((Strat **) stratptr)); if ((*((Strat **) stratptr) = stratInit (&hgraphorderststratab, string)) == NULL) { - errorPrint ("SCOTCH_stratGraphOrder: error in ordering strategy"); + errorPrint (STRINGIFY (SCOTCH_stratGraphOrder) ": error in ordering strategy"); return (1); } @@ -502,7 +499,8 @@ sprintf (bbaltab, "%lf", balrat); sprintf (levltab, GNUMSTRING, levlnbr); - strcpy (bufftab, "c{rat=0.7,cpr=n{sep=/()?m{rat=0.7,vert=100,low=h{pass=10},asc=b{width=3,bnd=f{bal=},org=(|h{pass=10})f{bal=}}};,ole=,ose=},unc=n{sep=/()?m{rat=0.7,vert=100,low=h{pass=10},asc=b{width=3,bnd=f{bal=},org=(|h{pass=10})f{bal=}}};,ole=,ose=}}"); + sprintf (bufftab, (((flagval & SCOTCH_STRATDISCONNECTED) != 0) ? "o{strat=%s}" : "%s"), + "c{rat=0.7,cpr=n{sep=/()?m{rat=0.7,vert=100,low=h{pass=10},asc=b{width=3,bnd=f{bal=},org=(|h{pass=10})f{bal=}}};,ole=,ose=},unc=n{sep=/()?m{rat=0.7,vert=100,low=h{pass=10},asc=b{width=3,bnd=f{bal=},org=(|h{pass=10})f{bal=}}};,ole=,ose=}}"); switch (flagval & (SCOTCH_STRATLEVELMIN | SCOTCH_STRATLEVELMAX)) { case SCOTCH_STRATLEVELMIN : @@ -539,7 +537,7 @@ stringSubst (bufftab, "", bbaltab); if (SCOTCH_stratGraphOrder (stratptr, bufftab) != 0) { - errorPrint ("SCOTCH_stratGraphOrderBuild: error in sequential ordering strategy"); + errorPrint (STRINGIFY (SCOTCH_stratGraphOrderBuild) ": error in sequential ordering strategy"); return (1); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_order_f.c scotch-6.0.6/src/libscotch/library_graph_order_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_order_f.c 2012-01-08 12:30:09.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_order_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -48,7 +48,7 @@ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 25 jul 2010 **/ /** # Version 6.0 : from : 08 jan 2012 **/ -/** to 08 jan 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -73,17 +73,17 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHORDERINIT, scotchfgraphorderinit, ( \ -const SCOTCH_Graph * const grafptr, \ -SCOTCH_Ordering * const ordeptr, \ -SCOTCH_Num * const permtab, \ -SCOTCH_Num * const peritab, \ -SCOTCH_Num * const cblkptr, \ -SCOTCH_Num * const rangtab, \ -SCOTCH_Num * const treetab, \ -int * const revaptr), \ -(grafptr, ordeptr, permtab, peritab, \ +SCOTCH_FORTRAN ( \ +GRAPHORDERINIT, graphorderinit, ( \ +const SCOTCH_Graph * const grafptr, \ +SCOTCH_Ordering * const ordeptr, \ +SCOTCH_Num * const permtab, \ +SCOTCH_Num * const peritab, \ +SCOTCH_Num * const cblkptr, \ +SCOTCH_Num * const rangtab, \ +SCOTCH_Num * const treetab, \ +int * const revaptr), \ +(grafptr, ordeptr, permtab, peritab, \ cblkptr, rangtab, treetab, revaptr)) { *revaptr = SCOTCH_graphOrderInit (grafptr, ordeptr, permtab, peritab, cblkptr, rangtab, treetab); @@ -93,10 +93,10 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHORDEREXIT, scotchfgraphorderexit, ( \ -const SCOTCH_Graph * const grafptr, \ -SCOTCH_Ordering * const ordeptr), \ +SCOTCH_FORTRAN ( \ +GRAPHORDEREXIT, graphorderexit, ( \ +const SCOTCH_Graph * const grafptr, \ +SCOTCH_Ordering * const ordeptr), \ (grafptr, ordeptr)) { SCOTCH_graphOrderExit (grafptr, ordeptr); @@ -106,12 +106,12 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHORDERSAVE, scotchfgraphordersave, ( \ -const SCOTCH_Graph * const grafptr, \ -const SCOTCH_Ordering * const ordeptr, \ -int * const fileptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +GRAPHORDERSAVE, graphordersave, ( \ +const SCOTCH_Graph * const grafptr, \ +const SCOTCH_Ordering * const ordeptr, \ +int * const fileptr, \ +int * const revaptr), \ (grafptr, ordeptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ @@ -119,13 +119,12 @@ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFGRAPHORDERSAVE: cannot duplicate handle"); - + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHORDERSAVE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFGRAPHORDERSAVE: cannot open output stream"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHORDERSAVE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; @@ -142,12 +141,12 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHORDERSAVEMAP, scotchfgraphordersavemap, ( \ -const SCOTCH_Graph * const grafptr, \ -const SCOTCH_Ordering * const ordeptr, \ -int * const fileptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +GRAPHORDERSAVEMAP, graphordersavemap, ( \ +const SCOTCH_Graph * const grafptr, \ +const SCOTCH_Ordering * const ordeptr, \ +int * const fileptr, \ +int * const revaptr), \ (grafptr, ordeptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ @@ -155,13 +154,13 @@ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFGRAPHORDERSAVEMAP: cannot duplicate handle"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHORDERSAVEMAP)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFGRAPHORDERSAVEMAP: cannot open output stream"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHORDERSAVEMAP)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; @@ -178,12 +177,12 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHORDERSAVETREE, scotchfgraphordersavetree, ( \ -const SCOTCH_Graph * const grafptr, \ -const SCOTCH_Ordering * const ordeptr, \ -int * const fileptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +GRAPHORDERSAVETREE, graphordersavetree, ( \ +const SCOTCH_Graph * const grafptr, \ +const SCOTCH_Ordering * const ordeptr, \ +int * const fileptr, \ +int * const revaptr), \ (grafptr, ordeptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ @@ -191,13 +190,13 @@ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFGRAPHORDERSAVETREE: cannot duplicate handle"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHORDERSAVETREE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFGRAPHORDERSAVETREE: cannot open output stream"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHORDERSAVETREE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; @@ -214,85 +213,85 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHORDERCOMPUTE, scotchfgraphordercompute, ( \ -SCOTCH_Graph * const grafptr, \ -SCOTCH_Ordering * const ordeptr, \ -SCOTCH_Strat * const stratptr, \ -int * const revaptr), \ -(grafptr, ordeptr, stratptr, revaptr)) +SCOTCH_FORTRAN ( \ +GRAPHORDERCOMPUTE, graphordercompute, ( \ +SCOTCH_Graph * const grafptr, \ +SCOTCH_Ordering * const ordeptr, \ +SCOTCH_Strat * const straptr, \ +int * const revaptr), \ +(grafptr, ordeptr, straptr, revaptr)) { - *revaptr = SCOTCH_graphOrderCompute (grafptr, ordeptr, stratptr); + *revaptr = SCOTCH_graphOrderCompute (grafptr, ordeptr, straptr); } /* ** */ -FORTRAN ( \ -SCOTCHFGRAPHORDERCOMPUTELIST, scotchfgraphordercomputelist, ( \ -SCOTCH_Graph * const grafptr, \ -SCOTCH_Ordering * const ordeptr, \ -const SCOTCH_Num * listptr, \ -const SCOTCH_Num * const listtab, \ -SCOTCH_Strat * const stratptr, \ -int * const revaptr), \ -(grafptr, ordeptr, listptr, listtab, stratptr, revaptr)) +SCOTCH_FORTRAN ( \ +GRAPHORDERCOMPUTELIST, graphordercomputelist, ( \ +SCOTCH_Graph * const grafptr, \ +SCOTCH_Ordering * const ordeptr, \ +const SCOTCH_Num * listptr, \ +const SCOTCH_Num * const listtab, \ +SCOTCH_Strat * const straptr, \ +int * const revaptr), \ +(grafptr, ordeptr, listptr, listtab, straptr, revaptr)) { - *revaptr = SCOTCH_graphOrderComputeList (grafptr, ordeptr, *listptr, listtab, stratptr); + *revaptr = SCOTCH_graphOrderComputeList (grafptr, ordeptr, *listptr, listtab, straptr); } /* ** */ -FORTRAN ( \ -SCOTCHFGRAPHORDER, scotchfgraphorder, ( \ -SCOTCH_Graph * const grafptr, \ -SCOTCH_Strat * const stratptr, \ -SCOTCH_Num * const permtab, \ -SCOTCH_Num * const peritab, \ -SCOTCH_Num * const cblkptr, \ -SCOTCH_Num * const rangtab, \ -SCOTCH_Num * const treetab, \ -int * const revaptr), \ -(grafptr, stratptr, permtab, peritab, \ +SCOTCH_FORTRAN ( \ +GRAPHORDER, graphorder, ( \ +SCOTCH_Graph * const grafptr, \ +SCOTCH_Strat * const straptr, \ +SCOTCH_Num * const permtab, \ +SCOTCH_Num * const peritab, \ +SCOTCH_Num * const cblkptr, \ +SCOTCH_Num * const rangtab, \ +SCOTCH_Num * const treetab, \ +int * const revaptr), \ +(grafptr, straptr, permtab, peritab, \ cblkptr, rangtab, treetab, revaptr)) { - *revaptr = SCOTCH_graphOrder (grafptr, stratptr, permtab, peritab, cblkptr, rangtab, treetab); + *revaptr = SCOTCH_graphOrder (grafptr, straptr, permtab, peritab, cblkptr, rangtab, treetab); } /* ** */ -FORTRAN ( \ -SCOTCHFGRAPHORDERLIST, scotchfgraphorderlist, ( \ -SCOTCH_Graph * const grafptr, \ -const SCOTCH_Num * const listptr, \ -const SCOTCH_Num * const listtab, \ -SCOTCH_Strat * const stratptr, \ -SCOTCH_Num * const permtab, \ -SCOTCH_Num * const peritab, \ -SCOTCH_Num * const cblkptr, \ -SCOTCH_Num * const rangtab, \ -SCOTCH_Num * const treetab, \ -int * const revaptr), \ -(grafptr, listptr, listtab, stratptr, \ +SCOTCH_FORTRAN ( \ +GRAPHORDERLIST, graphorderlist, ( \ +SCOTCH_Graph * const grafptr, \ +const SCOTCH_Num * listptr, \ +const SCOTCH_Num * const listtab, \ +SCOTCH_Strat * const straptr, \ +SCOTCH_Num * const permtab, \ +SCOTCH_Num * const peritab, \ +SCOTCH_Num * const cblkptr, \ +SCOTCH_Num * const rangtab, \ +SCOTCH_Num * const treetab, \ +int * const revaptr), \ +(grafptr, listptr, listtab, straptr, \ permtab, peritab, cblkptr, rangtab, treetab, revaptr)) { - *revaptr = SCOTCH_graphOrderList (grafptr, *listptr, listtab, stratptr, permtab, peritab, cblkptr, rangtab, treetab); + *revaptr = SCOTCH_graphOrderList (grafptr, *listptr, listtab, straptr, permtab, peritab, cblkptr, rangtab, treetab); } /* ** */ -FORTRAN ( \ -SCOTCHFGRAPHORDERCHECK, scotchfgraphordercheck, ( \ -const SCOTCH_Graph * const grafptr, \ -const SCOTCH_Ordering * const ordeptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +GRAPHORDERCHECK, graphordercheck, ( \ +const SCOTCH_Graph * const grafptr, \ +const SCOTCH_Ordering * const ordeptr, \ +int * const revaptr), \ (grafptr, ordeptr, revaptr)) { *revaptr = SCOTCH_graphOrderCheck (grafptr, ordeptr); @@ -302,24 +301,25 @@ ** */ -FORTRAN ( \ -SCOTCHFSTRATGRAPHORDER, scotchfstratgraphorder, ( \ -SCOTCH_Strat * const stratptr, \ -const char * const string, \ -int * const revaptr, \ -const int strnbr), \ -(stratptr, string, revaptr, strnbr)) +SCOTCH_FORTRAN ( \ +STRATGRAPHORDER, stratgraphorder, ( \ +SCOTCH_Strat * const straptr, \ +const char * const string, \ +int * const revaptr, \ +const int strnbr), \ +(straptr, string, revaptr, strnbr)) { char * restrict strtab; /* Pointer to null-terminated string */ if ((strtab = (char *) memAlloc (strnbr + 1)) == NULL) { /* Allocate temporary space */ - errorPrint ("SCOTCHFSTRATGRAPHORDER: out of memory (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (STRATGRAPHORDER)) ": out of memory"); *revaptr = 1; + return; } memCpy (strtab, string, strnbr); /* Copy string contents */ strtab[strnbr] = '\0'; /* Terminate string */ - *revaptr = SCOTCH_stratGraphOrder (stratptr, strtab); /* Call original routine */ + *revaptr = SCOTCH_stratGraphOrder (straptr, strtab); /* Call original routine */ memFree (strtab); /* Prevent compiler warnings */ } @@ -328,14 +328,14 @@ ** */ -FORTRAN ( \ -SCOTCHFSTRATGRAPHORDERBUILD, scotchfstratgraphorderbuild, ( \ -SCOTCH_Strat * const stratptr, \ -const SCOTCH_Num * const flagval, \ -const SCOTCH_Num * const levlnbr, \ -const double * const balrat, \ -int * const revaptr), \ -(stratptr, flagval, levlnbr, balrat, revaptr)) +SCOTCH_FORTRAN ( \ +STRATGRAPHORDERBUILD, stratgraphorderbuild, ( \ +SCOTCH_Strat * const straptr, \ +const SCOTCH_Num * const flagval, \ +const SCOTCH_Num * const levlnbr, \ +const double * const kbalval, \ +int * const revaptr), \ +(straptr, flagval, levlnbr, kbalval, revaptr)) { - *revaptr = SCOTCH_stratGraphOrderBuild (stratptr, *levlnbr, *flagval, *balrat); + *revaptr = SCOTCH_stratGraphOrderBuild (straptr, *levlnbr, *flagval, *kbalval); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_part_ovl.c scotch-6.0.6/src/libscotch/library_graph_part_ovl.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_part_ovl.c 2014-09-20 14:46:34.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_part_ovl.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2010,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2010,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,7 +40,7 @@ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 6.0 : from : 28 may 2010 **/ -/** to 20 sep 2014 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -89,7 +89,7 @@ partstraptr = *((Strat **) straptr); if (partstraptr->tabl != &wgraphpartststratab) { - errorPrint ("SCOTCH_graphPartOvl: not a graph partitioning with overlap strategy"); + errorPrint (STRINGIFY (SCOTCH_graphPartOvl) ": not a graph partitioning with overlap strategy"); return (1); } @@ -99,7 +99,7 @@ grafdat.parttax = ((Gnum *) parttab) - grafdat.s.baseval; /* Directly use given part array */ grafdat.levlnum = 0; if (wgraphAlloc (&grafdat) != 0) { /* Always allocate graph data when calling */ - errorPrint ("SCOTCH_graphPartOvl: out of memory"); + errorPrint (STRINGIFY (SCOTCH_graphPartOvl) ": out of memory"); return (1); } @@ -126,7 +126,7 @@ stratExit (*((Strat **) straptr)); if ((*((Strat **) straptr) = stratInit (&wgraphpartststratab, string)) == NULL) { - errorPrint ("SCOTCH_stratGraphPartOvl: error in sequential overlap partitioning strategy"); + errorPrint (STRINGIFY (SCOTCH_stratGraphPartOvl) ": error in sequential overlap partitioning strategy"); return (1); } @@ -157,7 +157,7 @@ stringSubst (bufftab, "", kbaltab); if (SCOTCH_stratGraphPartOvl (straptr, bufftab) != 0) { - errorPrint ("SCOTCH_stratGraphPartOvlBuild: error in sequential overlap partitioning strategy"); + errorPrint (STRINGIFY (SCOTCH_stratGraphPartOvlBuild) ": error in sequential overlap partitioning strategy"); return (1); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_graph_part_ovl_f.c scotch-6.0.6/src/libscotch/library_graph_part_ovl_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_graph_part_ovl_f.c 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_graph_part_ovl_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2010 ENSEIRB, INRIA & CNRS +/* Copyright 2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -40,7 +40,7 @@ /** overlap of the libSCOTCH library. **/ /** **/ /** DATES : # Version 6.0 : from : 29 may 2010 **/ -/** to 17 oct 2010 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -65,13 +65,13 @@ ** */ -FORTRAN ( \ -SCOTCHFGRAPHPARTOVL, scotchfgraphpartovl, ( \ -SCOTCH_Graph * const grafptr, \ -const SCOTCH_Num * const partptr, \ -SCOTCH_Strat * const straptr, \ -SCOTCH_Num * const parttab, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +GRAPHPARTOVL, graphpartovl, ( \ +SCOTCH_Graph * const grafptr, \ +const SCOTCH_Num * const partptr, \ +SCOTCH_Strat * const straptr, \ +SCOTCH_Num * const parttab, \ +int * const revaptr), \ (grafptr, partptr, straptr, parttab, revaptr)) { *revaptr = SCOTCH_graphPartOvl (grafptr, *partptr, straptr, parttab); @@ -81,19 +81,20 @@ ** end of the argument list. */ -FORTRAN ( \ -SCOTCHFSTRATGRAPHPARTOVL, scotchfstratgraphpartovl, ( \ -SCOTCH_Strat * const straptr, \ -const char * const string, \ -int * const revaptr, \ -const int strnbr), \ +SCOTCH_FORTRAN ( \ +STRATGRAPHPARTOVL, stratgraphpartovl, ( \ +SCOTCH_Strat * const straptr, \ +const char * const string, \ +int * const revaptr, \ +const int strnbr), \ (straptr, string, revaptr, strnbr)) { char * restrict strtab; /* Pointer to null-terminated string */ if ((strtab = (char *) memAlloc (strnbr + 1)) == NULL) { /* Allocate temporary space */ - errorPrint ("SCOTCHFSTRATGRAPHPARTOVL: out of memory (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (STRATGRAPHPARTOVL)) ": out of memory"); *revaptr = 1; + return; } memCpy (strtab, string, strnbr); /* Copy string contents */ strtab[strnbr] = '\0'; /* Terminate string */ @@ -107,14 +108,14 @@ ** */ -FORTRAN ( \ -SCOTCHFSTRATGRAPHPARTOVLBUILD, scotchfstratgraphpartovlbuild, ( \ -SCOTCH_Strat * const straptr, \ -const SCOTCH_Num * const flagptr, \ -const SCOTCH_Num * const partptr, \ -const double * const balrptr, \ -int * const revaptr), \ -(straptr, flagptr, partptr, balrptr, revaptr)) +SCOTCH_FORTRAN ( \ +STRATGRAPHPARTOVLBUILD, stratgraphpartovlbuild, ( \ +SCOTCH_Strat * const straptr, \ +const SCOTCH_Num * const flagval, \ +const SCOTCH_Num * const partnbr, \ +const double * const kbalval, \ +int * const revaptr), \ +(straptr, flagval, partnbr, kbalval, revaptr)) { - *revaptr = SCOTCH_stratGraphPartOvlBuild (straptr, *flagptr, *partptr, *balrptr); /* Call original routine */ + *revaptr = SCOTCH_stratGraphPartOvlBuild (straptr, *flagval, *partnbr, *kbalval); /* Call original routine */ } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library.h scotch-6.0.6/src/libscotch/library.h --- scotch-6.0.4.dfsg1/src/libscotch/library.h 2015-03-01 09:14:02.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007-2012,2014,2015 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007-2012,2014-2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -54,7 +54,7 @@ /** # Version 5.1 : from : 30 nov 2007 **/ /** to : 07 aug 2011 **/ /** # Version 6.0 : from : 12 sep 2008 **/ -/** to 28 feb 2015 **/ +/** to 10 jul 2018 **/ /** **/ /************************************************************/ @@ -65,12 +65,6 @@ ** The type and structure definitions. */ -/*+ Version flags. +*/ - -#define SCOTCH_VERSION DUMMYVERSION -#define SCOTCH_RELEASE DUMMYRELEASE -#define SCOTCH_PATCHLEVEL DUMMYPATCHLEVEL - /*+ Integer type. +*/ typedef DUMMYIDX SCOTCH_Idx; @@ -80,33 +74,56 @@ #define SCOTCH_NUMMAX DUMMYMAXINT #define SCOTCH_NUMSTRING DUMMYNUMSTRING +/*+ Version flags. +*/ + +#if ((! defined SCOTCH_H_UNIQUE) && (! defined SCOTCH_RENAME_ALL)) +#define SCOTCH_VERSION DUMMYVERSION +#define SCOTCH_RELEASE DUMMYRELEASE +#define SCOTCH_PATCHLEVEL DUMMYPATCHLEVEL +#else /* ((! defined SCOTCH_H_UNIQUE) && (! defined SCOTCH_RENAME_ALL)) */ +#if ((SCOTCH_VERSION != DUMMYVERSION) || (SCOTCH_RELEASE != DUMMYRELEASE) || (SCOTCH_PATCHLEVEL != DUMMYPATCHLEVEL)) +#ifndef SCOTCH_WARNING_RENAME_UNSAFE +#define SCOTCH_WARNING_RENAME_UNSAFE +#endif /* SCOTCH_WARNING_RENAME_UNSAFE */ +#endif /* ((SCOTCH_VERSION != DUMMYVERSION) || (SCOTCH_RELEASE != DUMMYRELEASE) || (SCOTCH_PATCHLEVEL != DUMMYPATCHLEVEL)) */ +#endif /* SCOTCH_H_UNIQUE */ + /*+ Coarsening flags +*/ +#ifndef SCOTCH_COARSENNONE #define SCOTCH_COARSENNONE 0x0000 #define SCOTCH_COARSENFOLD 0x0100 #define SCOTCH_COARSENFOLDDUP 0x0300 #define SCOTCH_COARSENNOMERGE 0x4000 +#endif /* SCOTCH_COARSENNONE */ /*+ Strategy string parametrization values +*/ -#define SCOTCH_STRATDEFAULT 0x0000 -#define SCOTCH_STRATQUALITY 0x0001 -#define SCOTCH_STRATSPEED 0x0002 -#define SCOTCH_STRATBALANCE 0x0004 -#define SCOTCH_STRATSAFETY 0x0008 -#define SCOTCH_STRATSCALABILITY 0x0010 -#define SCOTCH_STRATRECURSIVE 0x0100 -#define SCOTCH_STRATREMAP 0x0200 -#define SCOTCH_STRATLEVELMAX 0x1000 -#define SCOTCH_STRATLEVELMIN 0x2000 -#define SCOTCH_STRATLEAFSIMPLE 0x4000 -#define SCOTCH_STRATSEPASIMPLE 0x8000 +#ifndef SCOTCH_STRATDEFAULT +#define SCOTCH_STRATDEFAULT 0x00000 +#define SCOTCH_STRATQUALITY 0x00001 +#define SCOTCH_STRATSPEED 0x00002 +#define SCOTCH_STRATBALANCE 0x00004 +#define SCOTCH_STRATSAFETY 0x00008 +#define SCOTCH_STRATSCALABILITY 0x00010 +#define SCOTCH_STRATRECURSIVE 0x00100 +#define SCOTCH_STRATREMAP 0x00200 +#define SCOTCH_STRATLEVELMAX 0x01000 +#define SCOTCH_STRATLEVELMIN 0x02000 +#define SCOTCH_STRATLEAFSIMPLE 0x04000 +#define SCOTCH_STRATSEPASIMPLE 0x08000 +#define SCOTCH_STRATDISCONNECTED 0x10000 +#endif /* SCOTCH_STRATDEFAULT */ /*+ Opaque objects. The dummy sizes of these objects, computed at compile-time by program "dummysizes", are given as double values for proper padding +*/ +#ifndef SCOTCH_H_UNIQUE +typedef unsigned char SCOTCH_GraphPart2; +#endif /* SCOTCH_H_UNIQUE */ + typedef struct { double dummy[DUMMYSIZEARCH]; } SCOTCH_Arch; @@ -149,6 +166,8 @@ int SCOTCH_archLoad (SCOTCH_Arch * const, FILE * const); int SCOTCH_archSave (const SCOTCH_Arch * const, FILE * const); int SCOTCH_archBuild (SCOTCH_Arch * const, const SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Strat * const); +int SCOTCH_archBuild0 (SCOTCH_Arch * const, const SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Strat * const); +int SCOTCH_archBuild2 (SCOTCH_Arch * const, const SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_Num * const); char * SCOTCH_archName (const SCOTCH_Arch * const); SCOTCH_Num SCOTCH_archSize (const SCOTCH_Arch * const); int SCOTCH_archVar (const SCOTCH_Arch * const); @@ -157,9 +176,13 @@ int SCOTCH_archHcub (SCOTCH_Arch * const, const SCOTCH_Num); int SCOTCH_archMesh2 (SCOTCH_Arch * const, const SCOTCH_Num, const SCOTCH_Num); int SCOTCH_archMesh3 (SCOTCH_Arch * const, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num); +int SCOTCH_archMeshX (SCOTCH_Arch * const, const SCOTCH_Num, const SCOTCH_Num * const); +int SCOTCH_archSub (SCOTCH_Arch * const, SCOTCH_Arch * const, const SCOTCH_Num, const SCOTCH_Num * const); + int SCOTCH_archTleaf (SCOTCH_Arch * const, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Num * const); int SCOTCH_archTorus2 (SCOTCH_Arch * const, const SCOTCH_Num, const SCOTCH_Num); int SCOTCH_archTorus3 (SCOTCH_Arch * const, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num); +int SCOTCH_archTorusX (SCOTCH_Arch * const, const SCOTCH_Num, const SCOTCH_Num * const); int SCOTCH_archVcmplt (SCOTCH_Arch * const); int SCOTCH_archVhcub (SCOTCH_Arch * const); @@ -179,14 +202,16 @@ int SCOTCH_graphLoad (SCOTCH_Graph * const, FILE * const, const SCOTCH_Num, const SCOTCH_Num); int SCOTCH_graphSave (const SCOTCH_Graph * const, FILE * const); int SCOTCH_graphBuild (SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Num * const); -int SCOTCH_graphCoarsen (const SCOTCH_Graph * const, SCOTCH_Graph * const, SCOTCH_Num * const, const SCOTCH_Num, const double); -int SCOTCH_graphCoarsenBuild (const SCOTCH_Graph * const, SCOTCH_Graph * const, SCOTCH_Num * const, const SCOTCH_Num, SCOTCH_Num * const); -int SCOTCH_graphColor (const SCOTCH_Graph * const, SCOTCH_Num * const, SCOTCH_Num * const, const SCOTCH_Num); -SCOTCH_Num SCOTCH_graphBase (SCOTCH_Graph * const, const SCOTCH_Num baseval); +SCOTCH_Num SCOTCH_graphBase (SCOTCH_Graph * const, const SCOTCH_Num); int SCOTCH_graphCheck (const SCOTCH_Graph * const); -void SCOTCH_graphSize (const SCOTCH_Graph * const, SCOTCH_Num * const, SCOTCH_Num * const); +int SCOTCH_graphCoarsen (const SCOTCH_Graph * const, const SCOTCH_Num, const double, const SCOTCH_Num, SCOTCH_Graph * const, SCOTCH_Num * const); +int SCOTCH_graphCoarsenMatch (const SCOTCH_Graph * const, SCOTCH_Num * const, const double, const SCOTCH_Num, SCOTCH_Num * const); +int SCOTCH_graphCoarsenBuild (const SCOTCH_Graph * const, const SCOTCH_Num, SCOTCH_Num * const, SCOTCH_Graph * const, SCOTCH_Num * const); +int SCOTCH_graphColor (const SCOTCH_Graph * const, SCOTCH_Num * const, SCOTCH_Num * const, const SCOTCH_Num); void SCOTCH_graphData (const SCOTCH_Graph * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num * const, SCOTCH_Num ** const, SCOTCH_Num ** const); +void SCOTCH_graphSize (const SCOTCH_Graph * const, SCOTCH_Num * const, SCOTCH_Num * const); void SCOTCH_graphStat (const SCOTCH_Graph * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const); +SCOTCH_Num SCOTCH_graphDiamPV (const SCOTCH_Graph * const); int SCOTCH_graphGeomLoadChac (SCOTCH_Graph * const, SCOTCH_Geom * const, FILE * const, FILE * const, const char * const); int SCOTCH_graphGeomLoadHabo (SCOTCH_Graph * const, SCOTCH_Geom * const, FILE * const, FILE * const, const char * const); int SCOTCH_graphGeomLoadMmkt (SCOTCH_Graph * const, SCOTCH_Geom * const, FILE * const, FILE * const, const char * const); @@ -194,6 +219,8 @@ int SCOTCH_graphGeomSaveChac (const SCOTCH_Graph * const, const SCOTCH_Geom * const, FILE * const, FILE * const, const char * const); int SCOTCH_graphGeomSaveMmkt (const SCOTCH_Graph * const, const SCOTCH_Geom * const, FILE * const, FILE * const, const char * const); int SCOTCH_graphGeomSaveScot (const SCOTCH_Graph * const, const SCOTCH_Geom * const, FILE * const, FILE * const, const char * const); +int SCOTCH_graphInduceList (const SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_Num * const, SCOTCH_Graph * const); +int SCOTCH_graphInducePart (const SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_GraphPart2 * const, const SCOTCH_GraphPart2, SCOTCH_Graph * const); int SCOTCH_graphMapInit (const SCOTCH_Graph * const, SCOTCH_Mapping * const, const SCOTCH_Arch * const, SCOTCH_Num * const); void SCOTCH_graphMapExit (const SCOTCH_Graph * const, SCOTCH_Mapping * const); @@ -266,6 +293,9 @@ SCOTCH_Ordering * SCOTCH_orderAlloc (void); +int SCOTCH_randomLoad (FILE *); +int SCOTCH_randomSave (FILE *); +void SCOTCH_randomProc (int); void SCOTCH_randomReset (void); void SCOTCH_randomSeed (SCOTCH_Num); @@ -291,4 +321,5 @@ } #endif /* __cplusplus */ +#define SCOTCH_H_UNIQUE /* For symbols that need only be defined once */ #endif /* SCOTCH_H */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_memory_f.c scotch-6.0.6/src/libscotch/library_memory_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_memory_f.c 2014-09-23 19:26:17.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_memory_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,7 +41,7 @@ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 6.0 : from : 23 sep 2014 **/ -/** to 23 sep 2014 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -66,9 +66,9 @@ ** */ -FORTRAN ( \ -SCOTCHFNUMSIZEOF, scotchfnumsizeof, ( \ -int * const sizeptr), \ +SCOTCH_FORTRAN ( \ +NUMSIZEOF, numsizeof, ( \ +int * const sizeptr), \ (sizeptr)) { *sizeptr = SCOTCH_numSizeof (); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_mesh.c scotch-6.0.6/src/libscotch/library_mesh.c --- scotch-6.0.4.dfsg1/src/libscotch/library_mesh.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_mesh.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to 11 may 2004 **/ /** # Version 5.1 : from : 17 nov 2010 **/ /** to 17 nov 2010 **/ +/** # Version 6.0 : from : 25 apr 2018 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -92,11 +94,11 @@ SCOTCH_Mesh * const meshptr) { if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { - errorPrint ("SCOTCH_meshInit: internal error (1)"); + errorPrint (STRINGIFY (SCOTCH_meshInit) ": internal error (1)"); return (1); } if (sizeof (SCOTCH_Mesh) < sizeof (Mesh)) { - errorPrint ("SCOTCH_meshInit: internal error (2)"); + errorPrint (STRINGIFY (SCOTCH_meshInit) ": internal error (2)"); return (1); } @@ -134,7 +136,7 @@ const SCOTCH_Num baseval) { if ((baseval < -1) || (baseval > 1)) { - errorPrint ("SCOTCH_meshLoad: invalid base parameter"); + errorPrint (STRINGIFY (SCOTCH_meshLoad) ": invalid base parameter"); return (1); } @@ -187,19 +189,19 @@ #ifdef SCOTCH_DEBUG_LIBRARY1 if (sizeof (SCOTCH_Mesh) < sizeof (Mesh)) { - errorPrint ("SCOTCH_meshBuild: internal error (1)"); + errorPrint (STRINGIFY (SCOTCH_meshBuild) ": internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ if ((velmbas < 0) || (vnodbas < 0) || ((velmbas > 1) && (vnodbas > 1))) { - errorPrint ("SCOTCH_meshBuild: invalid base parameters"); + errorPrint (STRINGIFY (SCOTCH_meshBuild) ": invalid base parameters"); return (1); } if (((velmbas + velmnbr) != vnodbas) && ((vnodbas + vnodnbr) != velmbas)) { - errorPrint ("SCOTCH_meshBuild: invalid element or node range"); + errorPrint (STRINGIFY (SCOTCH_meshBuild) ": invalid element or node range"); return (1); } @@ -269,7 +271,7 @@ #ifdef SCOTCH_DEBUG_LIBRARY1 if (meshCheck (srcmeshptr) != 0) { - errorPrint ("SCOTCH_meshBuild: internal error (2)"); + errorPrint (STRINGIFY (SCOTCH_meshBuild) ": internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_mesh_f.c scotch-6.0.6/src/libscotch/library_mesh_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_mesh_f.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_mesh_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to 13 dec 2005 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 15 apr 2010 **/ +/** # Version 6.0 : from : 20 apr 2018 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -67,10 +69,10 @@ ** */ -FORTRAN ( \ -SCOTCHFMESHINIT, scotchfmeshinit, ( \ -SCOTCH_Mesh * const meshptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +MESHINIT, meshinit, ( \ +SCOTCH_Mesh * const meshptr, \ +int * const revaptr), \ (meshptr, revaptr)) { *revaptr = SCOTCH_meshInit (meshptr); @@ -80,9 +82,9 @@ ** */ -FORTRAN ( \ -SCOTCHFMESHEXIT, scotchfmeshexit, ( \ -SCOTCH_Mesh * const meshptr), \ +SCOTCH_FORTRAN ( \ +MESHEXIT, meshexit, ( \ +SCOTCH_Mesh * const meshptr), \ (meshptr)) { SCOTCH_meshExit (meshptr); @@ -96,12 +98,12 @@ ** block read. */ -FORTRAN ( \ -SCOTCHFMESHLOAD, scotchfmeshload, ( \ -SCOTCH_Mesh * const meshptr, \ -int * const fileptr, \ -const SCOTCH_Num * const baseptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +MESHLOAD, meshload, ( \ +SCOTCH_Mesh * const meshptr, \ +int * const fileptr, \ +const SCOTCH_Num * const baseptr, \ +int * const revaptr), \ (meshptr, fileptr, baseptr, revaptr)) { FILE * stream; /* Stream to build from handle */ @@ -109,12 +111,12 @@ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFMESHLOAD: cannot duplicate handle"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHLOAD)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "r")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFMESHLOAD: cannot open input stream"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHLOAD)) ": cannot open input stream"); close (filenum); *revaptr = 1; return; @@ -132,11 +134,11 @@ ** */ -FORTRAN ( \ -SCOTCHFMESHSAVE, scotchfmeshsave, ( \ -const SCOTCH_Mesh * const meshptr, \ -int * const fileptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +MESHSAVE, meshsave, ( \ +const SCOTCH_Mesh * const meshptr, \ +int * const fileptr, \ +int * const revaptr), \ (meshptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ @@ -144,13 +146,13 @@ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFMESHSAVE: cannot duplicate handle"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHSAVE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFMESHSAVE: cannot open output stream"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHSAVE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; @@ -167,23 +169,23 @@ ** */ -FORTRAN ( \ -SCOTCHFMESHBUILD, scotchfmeshbuild, ( \ -SCOTCH_Mesh * const meshptr, \ -const SCOTCH_Num * const velmbas, \ -const SCOTCH_Num * const vnodbas, \ -const SCOTCH_Num * const velmnbr, \ -const SCOTCH_Num * const vnodnbr, \ -const SCOTCH_Num * const verttab, \ -const SCOTCH_Num * const vendtab, \ -const SCOTCH_Num * const velotab, \ -const SCOTCH_Num * const vnlotab, \ -const SCOTCH_Num * const vlbltab, \ -const SCOTCH_Num * const edgenbr, \ -const SCOTCH_Num * const edgetab, \ -int * const revaptr), \ -(meshptr, velmbas, vnodbas, velmnbr, vnodnbr, \ - verttab, vendtab, velotab, vnlotab, vlbltab, \ +SCOTCH_FORTRAN ( \ +MESHBUILD, meshbuild, ( \ +SCOTCH_Mesh * const meshptr, \ +const SCOTCH_Num * const velmbas, \ +const SCOTCH_Num * const vnodbas, \ +const SCOTCH_Num * const velmnbr, \ +const SCOTCH_Num * const vnodnbr, \ +const SCOTCH_Num * const verttab, \ +const SCOTCH_Num * const vendtab, \ +const SCOTCH_Num * const velotab, \ +const SCOTCH_Num * const vnlotab, \ +const SCOTCH_Num * const vlbltab, \ +const SCOTCH_Num * const edgenbr, \ +const SCOTCH_Num * const edgetab, \ +int * const revaptr), \ +(meshptr, velmbas, vnodbas, velmnbr, vnodnbr, \ + verttab, vendtab, velotab, vnlotab, vlbltab, \ edgenbr, edgetab, revaptr)) { *revaptr = SCOTCH_meshBuild (meshptr, *velmnbr, *vnodnbr, *velmbas, *vnodbas, @@ -195,10 +197,10 @@ ** */ -FORTRAN ( \ -SCOTCHFMESHCHECK, scotchfmeshcheck, ( \ -const SCOTCH_Mesh * const meshptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +MESHCHECK, meshcheck, ( \ +const SCOTCH_Mesh * const meshptr, \ +int * const revaptr), \ (meshptr, revaptr)) { *revaptr = SCOTCH_meshCheck (meshptr); @@ -208,12 +210,12 @@ ** */ -FORTRAN ( \ -SCOTCHFMESHSIZE, scotchfmeshsize, ( \ -const SCOTCH_Mesh * const meshptr, \ -SCOTCH_Num * const velmnbr, \ -SCOTCH_Num * const vnodnbr, \ -SCOTCH_Num * const edgenbr), \ +SCOTCH_FORTRAN ( \ +MESHSIZE, meshsize, ( \ +const SCOTCH_Mesh * const meshptr, \ +SCOTCH_Num * const velmnbr, \ +SCOTCH_Num * const vnodnbr, \ +SCOTCH_Num * const edgenbr), \ (meshptr, velmnbr, vnodnbr, edgenbr)) { SCOTCH_meshSize (meshptr, velmnbr, vnodnbr, edgenbr); @@ -223,22 +225,22 @@ ** */ -FORTRAN ( \ -SCOTCHFMESHDATA, scotchfmeshdata, ( \ -const SCOTCH_Mesh * const meshptr, \ -const SCOTCH_Num * const indxptr, \ -SCOTCH_Num * const velmbas, \ -SCOTCH_Num * const vnodbas, \ -SCOTCH_Num * const velmnbr, \ -SCOTCH_Num * const vnodnbr, \ -SCOTCH_Idx * const vertidx, \ -SCOTCH_Idx * const vendidx, \ -SCOTCH_Idx * const veloidx, \ -SCOTCH_Idx * const vnloidx, \ -SCOTCH_Idx * const vlblidx, \ -SCOTCH_Num * const edgenbr, \ -SCOTCH_Idx * const edgeidx, \ -SCOTCH_Num * const degrnbr), \ +SCOTCH_FORTRAN ( \ +MESHDATA, meshdata, ( \ +const SCOTCH_Mesh * const meshptr, \ +const SCOTCH_Num * const indxptr, \ +SCOTCH_Num * const velmbas, \ +SCOTCH_Num * const vnodbas, \ +SCOTCH_Num * const velmnbr, \ +SCOTCH_Num * const vnodnbr, \ +SCOTCH_Idx * const vertidx, \ +SCOTCH_Idx * const vendidx, \ +SCOTCH_Idx * const veloidx, \ +SCOTCH_Idx * const vnloidx, \ +SCOTCH_Idx * const vlblidx, \ +SCOTCH_Num * const edgenbr, \ +SCOTCH_Idx * const edgeidx, \ +SCOTCH_Num * const degrnbr), \ (meshptr, indxptr, velmbas, vnodbas, velmnbr, vnodnbr, \ vertidx, vendidx, veloidx, vnloidx, vlblidx, \ edgenbr, edgeidx, degrnbr)) diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_mesh_graph_f.c scotch-6.0.6/src/libscotch/library_mesh_graph_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_mesh_graph_f.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_mesh_graph_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 4.0 : from : 21 jan 2004 **/ /** to 21 jan 2004 **/ +/** # Version 6.0 : from : 20 apr 2018 **/ +/** to 28 apr 2018 **/ /** **/ /************************************************************/ @@ -65,11 +67,11 @@ ** */ -FORTRAN ( \ -SCOTCHFMESHGRAPH, scotchfmeshgraph, ( \ -const SCOTCH_Mesh * const meshptr, \ -SCOTCH_Graph * const grafptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +MESHGRAPH, meshgraph, ( \ +const SCOTCH_Mesh * const meshptr, \ +SCOTCH_Graph * const grafptr, \ +int * const revaptr), \ (meshptr, grafptr, revaptr)) { *revaptr = SCOTCH_meshGraph (meshptr, grafptr); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_mesh_io_habo_f.c scotch-6.0.6/src/libscotch/library_mesh_io_habo_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_mesh_io_habo_f.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_mesh_io_habo_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to 24 nov 2005 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 27 mar 2010 **/ +/** # Version 6.0 : from : 20 apr 2018 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -67,15 +69,15 @@ ** end of the argument list. */ -FORTRAN ( \ -SCOTCHFMESHGEOMLOADHABO, scotchfmeshgeomloadhabo, ( \ -SCOTCH_Mesh * const meshptr, \ -SCOTCH_Geom * const geomptr, \ -const int * const filegrfptr, \ -const int * const filegeoptr, \ -const char * const dataptr, /* No use */ \ -int * const revaptr, \ -const int datanbr), \ +SCOTCH_FORTRAN ( \ +MESHGEOMLOADHABO, meshgeomloadhabo, ( \ +SCOTCH_Mesh * const meshptr, \ +SCOTCH_Geom * const geomptr, \ +const int * const filegrfptr, \ +const int * const filegeoptr, \ +const char * const dataptr, /* No use */ \ +int * const revaptr, \ +const int datanbr), \ (meshptr, geomptr, filegrfptr, filegeoptr, dataptr, revaptr, datanbr)) { FILE * filegrfstream; /* Streams to build from handles */ @@ -85,25 +87,25 @@ int o; if ((filegrfnum = dup (*filegrfptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFMESHGEOMLOADHABO: cannot duplicate handle (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHGEOMLOADHABO)) ": cannot duplicate handle (1)"); *revaptr = 1; /* Indicate error */ return; } if ((filegeonum = dup (*filegeoptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFMESHGEOMLOADHABO: cannot duplicate handle (2)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHGEOMLOADHABO)) ": cannot duplicate handle (2)"); close (filegrfnum); *revaptr = 1; /* Indicate error */ return; } if ((filegrfstream = fdopen (filegrfnum, "r")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFMESHGEOMLOADHABO: cannot open input stream (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHGEOMLOADHABO)) ": cannot open input stream (1)"); close (filegrfnum); close (filegeonum); *revaptr = 1; return; } if ((filegeostream = fdopen (filegeonum, "r")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFMESHGEOMLOADHABO: cannot open input stream (2)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHGEOMLOADHABO)) ": cannot open input stream (2)"); fclose (filegrfstream); close (filegeonum); *revaptr = 1; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_mesh_io_scot_f.c scotch-6.0.6/src/libscotch/library_mesh_io_scot_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_mesh_io_scot_f.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_mesh_io_scot_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to 24 nov 2005 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 27 mar 2010 **/ +/** # Version 6.0 : from : 20 apr 2018 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -67,15 +69,15 @@ ** end of the argument list. */ -FORTRAN ( \ -SCOTCHFMESHGEOMLOADSCOT, scotchfmeshgeomloadscot, ( \ -SCOTCH_Mesh * const meshptr, \ -SCOTCH_Geom * const geomptr, \ -const int * const filegrfptr, \ -const int * const filegeoptr, \ -const char * const dataptr, /* No use */ \ -int * const revaptr, \ -const int datanbr), \ +SCOTCH_FORTRAN ( \ +MESHGEOMLOADSCOT, meshgeomloadscot, ( \ +SCOTCH_Mesh * const meshptr, \ +SCOTCH_Geom * const geomptr, \ +const int * const filegrfptr, \ +const int * const filegeoptr, \ +const char * const dataptr, /* No use */ \ +int * const revaptr, \ +const int datanbr), \ (meshptr, geomptr, filegrfptr, filegeoptr, dataptr, revaptr, datanbr)) { FILE * filegrfstream; /* Streams to build from handles */ @@ -85,25 +87,25 @@ int o; if ((filegrfnum = dup (*filegrfptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFMESHGEOMLOADSCOT: cannot duplicate handle (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHGEOMLOADSCOT)) ": cannot duplicate handle (1)"); *revaptr = 1; /* Indicate error */ return; } if ((filegeonum = dup (*filegeoptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFMESHGEOMLOADSCOT: cannot duplicate handle (2)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHGEOMLOADSCOT)) ": cannot duplicate handle (2)"); close (filegrfnum); *revaptr = 1; /* Indicate error */ return; } if ((filegrfstream = fdopen (filegrfnum, "r")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFMESHGEOMLOADSCOT: cannot open input stream (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHGEOMLOADSCOT)) ": cannot open input stream (1)"); close (filegrfnum); close (filegeonum); *revaptr = 1; return; } if ((filegeostream = fdopen (filegeonum, "r")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFMESHGEOMLOADSCOT: cannot open input stream (2)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHGEOMLOADSCOT)) ": cannot open input stream (2)"); fclose (filegrfstream); close (filegeonum); *revaptr = 1; @@ -122,15 +124,15 @@ ** end of the argument list. */ -FORTRAN ( \ -SCOTCHFMESHGEOMSAVESCOT, scotchfmeshgeomsavescot, ( \ -const SCOTCH_Mesh * const meshptr, \ -const SCOTCH_Geom * const geomptr, \ -const int * const filegrfptr, \ -const int * const filegeoptr, \ -const char * const dataptr, /* No use */ \ -int * const revaptr, \ -const int datanbr), \ +SCOTCH_FORTRAN ( \ +MESHGEOMSAVESCOT, meshgeomsavescot, ( \ +const SCOTCH_Mesh * const meshptr, \ +const SCOTCH_Geom * const geomptr, \ +const int * const filegrfptr, \ +const int * const filegeoptr, \ +const char * const dataptr, /* No use */ \ +int * const revaptr, \ +const int datanbr), \ (meshptr, geomptr, filegrfptr, filegeoptr, dataptr, revaptr, datanbr)) { FILE * filegrfstream; /* Streams to build from handles */ @@ -140,25 +142,25 @@ int o; if ((filegrfnum = dup (*filegrfptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFMESHGEOMSAVESCOT: cannot duplicate handle (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHGEOMSAVESCOT)) ": cannot duplicate handle (1)"); *revaptr = 1; /* Indicate error */ return; } if ((filegeonum = dup (*filegeoptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFMESHGEOMSAVESCOT: cannot duplicate handle (2)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHGEOMSAVESCOT)) ": cannot duplicate handle (2)"); close (filegrfnum); *revaptr = 1; /* Indicate error */ return; } if ((filegrfstream = fdopen (filegrfnum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFMESHGEOMSAVESCOT: cannot open output stream (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHGEOMSAVESCOT)) ": cannot open output stream (1)"); close (filegrfnum); close (filegeonum); *revaptr = 1; return; } if ((filegeostream = fdopen (filegeonum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFMESHGEOMSAVESCOT: cannot open output stream (2)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHGEOMSAVESCOT)) ": cannot open output stream (2)"); fclose (filegrfstream); close (filegeonum); *revaptr = 1; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_mesh_order.c scotch-6.0.6/src/libscotch/library_mesh_order.c --- scotch-6.0.4.dfsg1/src/libscotch/library_mesh_order.c 2012-11-14 19:27:03.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_mesh_order.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -50,7 +50,7 @@ /** # Version 5.1 : from : 29 mar 2010 **/ /** to 14 aug 2010 **/ /** # Version 6.0 : from : 14 nov 2012 **/ -/** to 14 nov 2012 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -101,7 +101,7 @@ #ifdef SCOTCH_DEBUG_LIBRARY1 if (sizeof (SCOTCH_Ordering) < sizeof (LibOrder)) { - errorPrint ("SCOTCH_meshOrderInit: internal error"); + errorPrint (STRINGIFY (SCOTCH_meshOrderInit) ": internal error"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ @@ -225,7 +225,7 @@ #ifdef SCOTCH_DEBUG_MESH2 if (meshCheck (srcmeshptr) != 0) { - errorPrint ("SCOTCH_meshOrderComputeList: invalid input mesh"); + errorPrint (STRINGIFY (SCOTCH_meshOrderComputeList) ": invalid input mesh"); return (1); } #endif /* SCOTCH_DEBUG_MESH2 */ @@ -235,7 +235,7 @@ ordstratptr = *((Strat **) stratptr); if (ordstratptr->tabl != &hmeshorderststratab) { - errorPrint ("SCOTCH_meshOrderComputeList: not a mesh ordering strategy"); + errorPrint (STRINGIFY (SCOTCH_meshOrderComputeList) ": not a mesh ordering strategy"); return (1); } @@ -256,7 +256,7 @@ (srclistdat.vnumnbr == srcmeshdat.m.vnodnbr)) ? NULL : &srclistdat; /* Is the list really necessary */ if (srclistptr != NULL) { - errorPrint ("SCOTCH_meshOrderComputeList: node lists not yet implemented"); + errorPrint (STRINGIFY (SCOTCH_meshOrderComputeList) ": node lists not yet implemented"); return (1); } @@ -373,7 +373,7 @@ stratExit (*((Strat **) stratptr)); if ((*((Strat **) stratptr) = stratInit (&hmeshorderststratab, string)) == NULL) { - errorPrint ("SCOTCH_stratMeshOrder: error in ordering strategy"); + errorPrint (STRINGIFY (SCOTCH_stratMeshOrder) ": error in ordering strategy"); return (1); } @@ -402,7 +402,7 @@ stringSubst (bufftab, "", bbaltab); if (SCOTCH_stratMeshOrder (stratptr, bufftab) != 0) { - errorPrint ("SCOTCH_stratMeshOrderBuild: error in sequential ordering strategy"); + errorPrint (STRINGIFY (SCOTCH_stratMeshOrderBuild) ": error in sequential ordering strategy"); return (1); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_mesh_order_f.c scotch-6.0.6/src/libscotch/library_mesh_order_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_mesh_order_f.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_mesh_order_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,6 +45,8 @@ /** to 04 aug 2007 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 25 jul 2010 **/ +/** # Version 6.0 : from : 20 apr 2018 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -69,17 +71,17 @@ ** */ -FORTRAN ( \ -SCOTCHFMESHORDERINIT, scotchfmeshorderinit, ( \ -const SCOTCH_Mesh * const meshptr, \ -SCOTCH_Ordering * const ordeptr, \ -SCOTCH_Num * const permtab, \ -SCOTCH_Num * const peritab, \ -SCOTCH_Num * const cblkptr, \ -SCOTCH_Num * const rangtab, \ -SCOTCH_Num * const treetab, \ -int * const revaptr), \ -(meshptr, ordeptr, permtab, peritab, \ +SCOTCH_FORTRAN ( \ +MESHORDERINIT, meshorderinit, ( \ +const SCOTCH_Mesh * const meshptr, \ +SCOTCH_Ordering * const ordeptr, \ +SCOTCH_Num * const permtab, \ +SCOTCH_Num * const peritab, \ +SCOTCH_Num * const cblkptr, \ +SCOTCH_Num * const rangtab, \ +SCOTCH_Num * const treetab, \ +int * const revaptr), \ +(meshptr, ordeptr, permtab, peritab, \ cblkptr, rangtab, treetab, revaptr)) { *revaptr = SCOTCH_meshOrderInit (meshptr, ordeptr, permtab, peritab, cblkptr, rangtab, treetab); @@ -89,10 +91,10 @@ ** */ -FORTRAN ( \ -SCOTCHFMESHORDEREXIT, scotchfmeshorderexit, ( \ -const SCOTCH_Mesh * const meshptr, \ -SCOTCH_Ordering * const ordeptr), \ +SCOTCH_FORTRAN ( \ +MESHORDEREXIT, meshorderexit, ( \ +const SCOTCH_Mesh * const meshptr, \ +SCOTCH_Ordering * const ordeptr), \ (meshptr, ordeptr)) { SCOTCH_meshOrderExit (meshptr, ordeptr); @@ -102,12 +104,12 @@ ** */ -FORTRAN ( \ -SCOTCHFMESHORDERSAVE, scotchfmeshordersave, ( \ -const SCOTCH_Mesh * const meshptr, \ -const SCOTCH_Ordering * const ordeptr, \ -int * const fileptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +MESHORDERSAVE, meshordersave, ( \ +const SCOTCH_Mesh * const meshptr, \ +SCOTCH_Ordering * const ordeptr, \ +int * const fileptr, \ +int * const revaptr), \ (meshptr, ordeptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ @@ -115,13 +117,13 @@ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFMESHORDERSAVE: cannot duplicate handle"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHORDERSAVE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFMESHORDERSAVE: cannot open output stream"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHORDERSAVE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; @@ -138,12 +140,12 @@ ** */ -FORTRAN ( \ -SCOTCHFMESHORDERSAVEMAP, scotchfmeshordersavemap, ( \ -const SCOTCH_Mesh * const meshptr, \ -const SCOTCH_Ordering * const ordeptr, \ -int * const fileptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +MESHORDERSAVEMAP, meshordersavemap, ( \ +const SCOTCH_Mesh * const meshptr, \ +SCOTCH_Ordering * const ordeptr, \ +int * const fileptr, \ +int * const revaptr), \ (meshptr, ordeptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ @@ -151,13 +153,13 @@ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFMESHORDERSAVEMAP: cannot duplicate handle"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHORDERSAVEMAP)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFMESHORDERSAVEMAP: cannot open output stream"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHORDERSAVEMAP)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; @@ -174,12 +176,12 @@ ** */ -FORTRAN ( \ -SCOTCHFMESHORDERSAVETREE, scotchfmeshordersavetree, ( \ -const SCOTCH_Mesh * const meshptr, \ -const SCOTCH_Ordering * const ordeptr, \ -int * const fileptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +MESHORDERSAVETREE, meshordersavetree, ( \ +const SCOTCH_Mesh * const meshptr, \ +SCOTCH_Ordering * const ordeptr, \ +int * const fileptr, \ +int * const revaptr), \ (meshptr, ordeptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ @@ -187,13 +189,13 @@ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFMESHORDERSAVETREE: cannot duplicate handle"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHORDERSAVETREE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFMESHORDERSAVETREE: cannot open output stream"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHORDERSAVETREE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; @@ -210,85 +212,85 @@ ** */ -FORTRAN ( \ -SCOTCHFMESHORDERCOMPUTE, scotchfmeshordercompute, ( \ -SCOTCH_Mesh * const meshptr, \ -SCOTCH_Ordering * const ordeptr, \ -SCOTCH_Strat * const stratptr, \ -int * const revaptr), \ -(meshptr, ordeptr, stratptr, revaptr)) +SCOTCH_FORTRAN ( \ +MESHORDERCOMPUTE, meshordercompute, ( \ +SCOTCH_Mesh * const meshptr, \ +SCOTCH_Ordering * const ordeptr, \ +SCOTCH_Strat * const straptr, \ +int * const revaptr), \ +(meshptr, ordeptr, straptr, revaptr)) { - *revaptr = SCOTCH_meshOrderCompute (meshptr, ordeptr, stratptr); + *revaptr = SCOTCH_meshOrderCompute (meshptr, ordeptr, straptr); } /* ** */ -FORTRAN ( \ -SCOTCHFMESHORDERCOMPUTELIST, scotchfmeshordercomputelist, ( \ -SCOTCH_Mesh * const meshptr, \ -SCOTCH_Ordering * const ordeptr, \ -const SCOTCH_Num * listptr, \ -const SCOTCH_Num * const listtab, \ -SCOTCH_Strat * const stratptr, \ -int * const revaptr), \ -(meshptr, ordeptr, listptr, listtab, stratptr, revaptr)) +SCOTCH_FORTRAN ( \ +MESHORDERCOMPUTELIST, meshordercomputelist, ( \ +SCOTCH_Mesh * const meshptr, \ +SCOTCH_Ordering * const ordeptr, \ +const SCOTCH_Num * listptr, \ +const SCOTCH_Num * const listtab, \ +SCOTCH_Strat * const straptr, \ +int * const revaptr), \ +(meshptr, ordeptr, listptr, listtab, straptr, revaptr)) { - *revaptr = SCOTCH_meshOrderComputeList (meshptr, ordeptr, *listptr, listtab, stratptr); + *revaptr = SCOTCH_meshOrderComputeList (meshptr, ordeptr, *listptr, listtab, straptr); } /* ** */ -FORTRAN ( \ -SCOTCHFMESHORDER, scotchfmeshorder, ( \ -SCOTCH_Mesh * const meshptr, \ -SCOTCH_Strat * const stratptr, \ -SCOTCH_Num * const permtab, \ -SCOTCH_Num * const peritab, \ -SCOTCH_Num * const cblkptr, \ -SCOTCH_Num * const rangtab, \ -SCOTCH_Num * const treetab, \ -int * const revaptr), \ -(meshptr, stratptr, permtab, peritab, \ +SCOTCH_FORTRAN ( \ +MESHORDER, meshorder, ( \ +SCOTCH_Mesh * const meshptr, \ +SCOTCH_Strat * const straptr, \ +SCOTCH_Num * const permtab, \ +SCOTCH_Num * const peritab, \ +SCOTCH_Num * const cblkptr, \ +SCOTCH_Num * const rangtab, \ +SCOTCH_Num * const treetab, \ +int * const revaptr), \ +(meshptr, straptr, permtab, peritab, \ cblkptr, rangtab, treetab, revaptr)) { - *revaptr = SCOTCH_meshOrder (meshptr, stratptr, permtab, peritab, cblkptr, rangtab, treetab); + *revaptr = SCOTCH_meshOrder (meshptr, straptr, permtab, peritab, cblkptr, rangtab, treetab); } /* ** */ -FORTRAN ( \ -SCOTCHFMESHORDERLIST, scotchfmeshorderlist, ( \ -SCOTCH_Mesh * const meshptr, \ -const SCOTCH_Num * const listptr, \ -const SCOTCH_Num * const listtab, \ -SCOTCH_Strat * const stratptr, \ -SCOTCH_Num * const permtab, \ -SCOTCH_Num * const peritab, \ -SCOTCH_Num * const cblkptr, \ -SCOTCH_Num * const rangtab, \ -SCOTCH_Num * const treetab, \ -int * const revaptr), \ -(meshptr, listptr, listtab, stratptr, \ +SCOTCH_FORTRAN ( \ +MESHORDERLIST, meshorderlist, ( \ +SCOTCH_Mesh * const meshptr, \ +const SCOTCH_Num * listptr, \ +const SCOTCH_Num * const listtab, \ +SCOTCH_Strat * const straptr, \ +SCOTCH_Num * const permtab, \ +SCOTCH_Num * const peritab, \ +SCOTCH_Num * const cblkptr, \ +SCOTCH_Num * const rangtab, \ +SCOTCH_Num * const treetab, \ +int * const revaptr), \ +(meshptr, listptr, listtab, straptr, \ permtab, peritab, cblkptr, rangtab, treetab, revaptr)) { - *revaptr = SCOTCH_meshOrderList (meshptr, *listptr, listtab, stratptr, permtab, peritab, cblkptr, rangtab, treetab); + *revaptr = SCOTCH_meshOrderList (meshptr, *listptr, listtab, straptr, permtab, peritab, cblkptr, rangtab, treetab); } /* ** */ -FORTRAN ( \ -SCOTCHFMESHORDERCHECK, scotchfmeshordercheck, ( \ -const SCOTCH_Mesh * const meshptr, \ -SCOTCH_Ordering * const ordeptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +MESHORDERCHECK, meshordercheck, ( \ +const SCOTCH_Mesh * const meshptr, \ +SCOTCH_Ordering * const ordeptr, \ +int * const revaptr), \ (meshptr, ordeptr, revaptr)) { *revaptr = SCOTCH_meshOrderCheck (meshptr, ordeptr); @@ -298,24 +300,25 @@ ** */ -FORTRAN ( \ -SCOTCHFSTRATMESHORDER, scotchfstratmeshorder, ( \ -SCOTCH_Strat * const stratptr, \ -const char * const string, \ -int * const revaptr, \ -const int strnbr), \ -(stratptr, string, revaptr, strnbr)) +SCOTCH_FORTRAN ( \ +STRATMESHORDER, stratmeshorder, ( \ +SCOTCH_Strat * const straptr, \ +const char * const string, \ +int * const revaptr, \ +const int strnbr), \ +(straptr, string, revaptr, strnbr)) { char * restrict strtab; /* Pointer to null-terminated string */ if ((strtab = (char *) memAlloc (strnbr + 1)) == NULL) { /* Allocate temporary space */ - errorPrint ("SCOTCHFSTRATMESHORDER: out of memory (1)"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (STRATMESHORDER)) ": out of memory"); *revaptr = 1; + return; } memCpy (strtab, string, strnbr); /* Copy string contents */ strtab[strnbr] = '\0'; /* Terminate string */ - *revaptr = SCOTCH_stratMeshOrder (stratptr, strtab); /* Call original routine */ + *revaptr = SCOTCH_stratMeshOrder (straptr, strtab); /* Call original routine */ memFree (strtab); /* Prevent compiler warnings */ } @@ -324,13 +327,13 @@ ** */ -FORTRAN ( \ -SCOTCHFSTRATMESHORDERBUILD, scotchfstratmeshorderbuild, ( \ -SCOTCH_Strat * const stratptr, \ -const SCOTCH_Num * const flagval, \ -const double * const balrat, \ -int * const revaptr), \ -(stratptr, flagval, balrat, revaptr)) +SCOTCH_FORTRAN ( \ +STRATMESHORDERBUILD, stratmeshorderbuild, ( \ +SCOTCH_Strat * const straptr, \ +const SCOTCH_Num * const flagval, \ +const double * const balrat, \ +int * const revaptr), \ +(straptr, flagval, balrat, revaptr)) { - *revaptr = SCOTCH_stratMeshOrderBuild (stratptr, *flagval, *balrat); + *revaptr = SCOTCH_stratMeshOrderBuild (straptr, *flagval, *balrat); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_parser.c scotch-6.0.6/src/libscotch/library_parser.c --- scotch-6.0.4.dfsg1/src/libscotch/library_parser.c 2014-01-07 00:52:54.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_parser.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -48,7 +48,7 @@ /** # Version 4.0 : from : 23 dec 2001 **/ /** to : 23 dec 2001 **/ /** # Version 6.0 : from : 07 jan 2014 **/ -/** to 07 jan 2014 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -81,7 +81,7 @@ SCOTCH_Strat * const stratptr) { if (sizeof (SCOTCH_Strat) < sizeof (Strat *)) { - errorPrint ("SCOTCH_stratInit: internal error (1)"); + errorPrint (STRINGIFY (SCOTCH_stratInit) ": internal error (1)"); return (1); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_parser_f.c scotch-6.0.6/src/libscotch/library_parser_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_parser_f.c 2014-01-07 00:48:56.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_parser_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2010,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 27 mar 2010 **/ /** # Version 6.0 : from : 07 jan 2014 **/ -/** to 07 jan 2014 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -66,10 +66,10 @@ /* */ /***************************************/ -FORTRAN ( \ -SCOTCHFSTRATINIT, scotchfstratinit, ( \ -SCOTCH_Strat * const stratptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +STRATINIT, stratinit, ( \ +SCOTCH_Strat * const stratptr, \ +int * const revaptr), \ (stratptr, revaptr)) { *revaptr = SCOTCH_stratInit (stratptr); @@ -79,9 +79,9 @@ ** */ -FORTRAN ( \ -SCOTCHFSTRATEXIT, scotchfstratexit, ( \ -SCOTCH_Strat * const stratptr), \ +SCOTCH_FORTRAN ( \ +STRATEXIT, stratexit, ( \ +SCOTCH_Strat * const stratptr), \ (stratptr)) { SCOTCH_stratExit (stratptr); @@ -91,9 +91,9 @@ ** */ -FORTRAN ( \ -SCOTCHFSTRATFREE, scotchfstratfree, ( \ -SCOTCH_Strat * const stratptr), \ +SCOTCH_FORTRAN ( \ +STRATFREE, stratfree, ( \ +SCOTCH_Strat * const stratptr), \ (stratptr)) { SCOTCH_stratFree (stratptr); @@ -103,11 +103,11 @@ ** */ -FORTRAN ( \ -SCOTCHFSTRATSAVE, scotchfstratsave, ( \ -const SCOTCH_Strat * const stratptr, \ -int * const fileptr, \ -int * const revaptr), \ +SCOTCH_FORTRAN ( \ +STRATSAVE, stratsave, ( \ +SCOTCH_Strat * const stratptr, \ +int * const fileptr, \ +int * const revaptr), \ (stratptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ @@ -115,13 +115,13 @@ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ - errorPrint ("SCOTCHFSTRATSAVE: cannot duplicate handle"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (STRATSAVE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ - errorPrint ("SCOTCHFSTRATSAVE: cannot open output stream"); + errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (STRATSAVE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_pt.h scotch-6.0.6/src/libscotch/library_pt.h --- scotch-6.0.4.dfsg1/src/libscotch/library_pt.h 2012-12-01 11:18:40.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_pt.h 2018-07-14 15:24:49.000000000 +0000 @@ -54,7 +54,7 @@ /** # Version 5.1 : from : 30 nov 2007 **/ /** to : 07 aug 2011 **/ /** # Version 6.0 : from : 12 sep 2008 **/ -/** to 01 dec 2012 **/ +/** to 29 apr 2018 **/ /** **/ /************************************************************/ @@ -79,6 +79,16 @@ #define SCOTCH_DUMMYPTFLAG #endif /* SCOTCH_PTSCOTCH */ +/*+ Version flags. +*/ + +#ifdef SCOTCH_VERSION +#if ((SCOTCH_VERSION != DUMMYVERSION) || (SCOTCH_RELEASE != DUMMYRELEASE) || (SCOTCH_PATCHLEVEL != DUMMYPATCHLEVEL)) +#ifndef SCOTCH_WARNING_RENAME_UNSAFE +#define SCOTCH_WARNING_RENAME_UNSAFE +#endif /* SCOTCH_WARNING_RENAME_UNSAFE */ +#endif /* ((SCOTCH_VERSION != DUMMYVERSION) || (SCOTCH_RELEASE != DUMMYRELEASE) || (SCOTCH_PATCHLEVEL != DUMMYPATCHLEVEL)) */ +#endif /* SCOTCH_VERSION */ + /*+ Opaque objects. The dummy sizes of these objects, computed at compile-time by program "dummysizes", are given as double values for diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_random.c scotch-6.0.6/src/libscotch/library_random.c --- scotch-6.0.4.dfsg1/src/libscotch/library_random.c 2014-10-13 08:09:47.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_random.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2012,2014,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,7 +41,7 @@ /** DATES : # Version 4.0 : from : 15 jan 2005 **/ /** to 15 jun 2005 **/ /** # Version 6.0 : from : 08 oct 2012 **/ -/** to 03 oct 2014 **/ +/** to 19 mar 2016 **/ /** **/ /************************************************************/ @@ -62,6 +62,34 @@ /* */ /************************************/ +/*+ This routine loads a random state. +*** It returns: +*** - 0 : if state successfully loaded. +*** - 1 : state cannot be loaded. +*** - 2 : on error. ++*/ + +int +SCOTCH_randomLoad ( +FILE * stream) +{ + return (intRandLoad (stream)); +} + +/*+ This routine saves the random state. +*** It returns: +*** - 0 : if state successfully saved. +*** - 1 : state cannot be saved. +*** - 2 : on error. ++*/ + +int +SCOTCH_randomSave ( +FILE * stream) +{ + return (intRandSave (stream)); +} + /*+ This routine sets the process number that *** is used to generate a different seed across *** all processes. @@ -88,8 +116,8 @@ intRandReset (); } -/*+ This routine resets the random generator -*** to simulate a start from scratch. +/*+ This routine sets the value of the +*** random seed. *** It returns: *** - void : in all cases. +*/ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_random_f.c scotch-6.0.6/src/libscotch/library_random_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_random_f.c 2014-10-13 08:09:47.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_random_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 4.0 : from : 21 nov 2005 **/ /** to 23 nov 2005 **/ /** # Version 6.0 : from : 08 oct 2012 **/ -/** to 03 oct 2014 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -67,9 +67,9 @@ ** */ -FORTRAN ( \ -SCOTCHFRANDOMPROC, scotchfrandomproc, ( \ -const int * const procnum), \ +SCOTCH_FORTRAN ( \ +RANDOMPROC, randomproc, ( \ +const int * const procnum), \ (procnum)) { SCOTCH_randomProc (*procnum); @@ -79,8 +79,8 @@ ** */ -FORTRAN ( \ -SCOTCHFRANDOMRESET, scotchfrandomreset, (), \ +SCOTCH_FORTRAN ( \ +RANDOMRESET, randomreset, (), \ ()) { SCOTCH_randomReset (); @@ -90,9 +90,9 @@ ** */ -FORTRAN ( \ -SCOTCHFRANDOMSEED, scotchfrandomseed, ( \ -const SCOTCH_Num * const seedptr), \ +SCOTCH_FORTRAN ( \ +RANDOMSEED, randomseed, ( \ +const SCOTCH_Num * const seedptr), \ (seedptr)) { SCOTCH_randomSeed (*seedptr); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_version.c scotch-6.0.6/src/libscotch/library_version.c --- scotch-6.0.4.dfsg1/src/libscotch/library_version.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_version.c 2018-07-14 15:24:49.000000000 +0000 @@ -76,7 +76,7 @@ int * const relaptr, int * const patcptr) { - *versptr = SCOTCH_VERSION; - *relaptr = SCOTCH_RELEASE; - *patcptr = SCOTCH_PATCHLEVEL; + *versptr = SCOTCH_VERSION_NUM; + *relaptr = SCOTCH_RELEASE_NUM; + *patcptr = SCOTCH_PATCHLEVEL_NUM; } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/library_version_f.c scotch-6.0.6/src/libscotch/library_version_f.c --- scotch-6.0.4.dfsg1/src/libscotch/library_version_f.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/library_version_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2010 ENSEIRB, INRIA & CNRS +/* Copyright 2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 5.1 : from : 16 nov 2010 **/ /** to 16 nov 2010 **/ +/** # Version 6.0 : from : 20 apr 2018 **/ +/** to 25 apr 2018 **/ /** **/ /************************************************************/ @@ -65,11 +67,11 @@ ** */ -FORTRAN ( \ -SCOTCHFVERSION, scotchfversion, ( \ -int * const versptr, \ -int * const relaptr, \ -int * const patcptr), \ +SCOTCH_FORTRAN ( \ +VERSION, version, ( \ +int * const versptr, \ +int * const relaptr, \ +int * const patcptr), \ (versptr, relaptr, patcptr)) { SCOTCH_version (versptr, relaptr, patcptr); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/Makefile scotch-6.0.6/src/libscotch/Makefile --- scotch-6.0.4.dfsg1/src/libscotch/Makefile 2014-09-23 19:28:28.000000000 +0000 +++ scotch-6.0.6/src/libscotch/Makefile 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -## Copyright 2004,2007-2013 IPB, Universite de Bordeaux, INRIA & CNRS +## Copyright 2004,2007-2018 IPB, Universite de Bordeaux, INRIA & CNRS ## ## This file is part of the Scotch software package for static mapping, ## graph partitioning and sparse matrix ordering. @@ -40,10 +40,10 @@ include ../Makefile.inc %$(OBJ) : %.c - $(CC) $(CFLAGS) $(CLIBFLAGS) -c $(<) -o $(@) + $(CC) $(CFLAGS) $(CLIBFLAGS) -c $(<) -o $(@) -DSCOTCH_VERSION_NUM=$(VERSION) -DSCOTCH_RELEASE_NUM=$(RELEASE) -DSCOTCH_PATCHLEVEL_NUM=$(PATCHLEVEL) %$(EXE) : %.c - $(CC) $(CFLAGS) -DSCOTCH_VERSION=$(VERSION) -DSCOTCH_RELEASE=$(RELEASE) -DSCOTCH_PATCHLEVEL=$(PATCHLEVEL) $(<) -o $(@) $(LDFLAGS) + $(CC) $(CFLAGS) -DSCOTCH_VERSION_NUM=$(VERSION) -DSCOTCH_RELEASE_NUM=$(RELEASE) -DSCOTCH_PATCHLEVEL_NUM=$(PATCHLEVEL) $(<) -o $(@) $(LDFLAGS) ## ## Project rules. @@ -229,12 +229,15 @@ LIBSCOTCHDEPS = arch$(OBJ) \ arch_build$(OBJ) \ + arch_build2$(OBJ) \ arch_cmplt$(OBJ) \ arch_cmpltw$(OBJ) \ arch_deco$(OBJ) \ + arch_deco2$(OBJ) \ arch_dist$(OBJ) \ arch_hcub$(OBJ) \ arch_mesh$(OBJ) \ + arch_sub$(OBJ) \ arch_tleaf$(OBJ) \ arch_torus$(OBJ) \ arch_vcmplt$(OBJ) \ @@ -254,7 +257,7 @@ common$(OBJ) \ common_file$(OBJ) \ common_file_compress$(OBJ) \ - common_file_uncompress$(OBJ) \ + common_file_decompress$(OBJ) \ common_integer$(OBJ) \ common_memory$(OBJ) \ common_string$(OBJ) \ @@ -267,7 +270,10 @@ graph_base$(OBJ) \ graph_band$(OBJ) \ graph_check$(OBJ) \ + graph_clone$(OBJ) \ graph_coarsen$(OBJ) \ + graph_diam$(OBJ) \ + graph_ielo$(OBJ) \ graph_induce$(OBJ) \ graph_io$(OBJ) \ graph_io_chac$(OBJ) \ @@ -283,6 +289,7 @@ hgraph_check$(OBJ) \ hgraph_induce$(OBJ) \ hgraph_order_bl$(OBJ) \ + hgraph_order_cc$(OBJ) \ hgraph_order_cp$(OBJ) \ hgraph_order_gp$(OBJ) \ hgraph_order_hd$(OBJ) \ @@ -338,6 +345,10 @@ library_graph_coarsen_f$(OBJ) \ library_graph_color$(OBJ) \ library_graph_color_f$(OBJ) \ + library_graph_diam$(OBJ) \ + library_graph_diam_f$(OBJ) \ + library_graph_induce$(OBJ) \ + library_graph_induce_f$(OBJ) \ library_graph_io_chac$(OBJ) \ library_graph_io_chac_f$(OBJ) \ library_graph_io_habo$(OBJ) \ @@ -449,7 +460,7 @@ common_file_compress.h $(CC) $(CFLAGS) $(CLIBFLAGS) -c $(<) -DSCOTCH_COMMON_RENAME -o $(@) -common_file_uncompress$(OBJ) : common_file_uncompress.c \ +common_file_decompress$(OBJ) : common_file_decompress.c \ module.h \ common.h \ common_file.h \ @@ -485,13 +496,16 @@ arch$(OBJ) : arch.c \ module.h \ common.h \ + graph.h \ arch.h \ arch_cmplt.h \ arch_cmpltw.h \ arch_deco.h \ + arch_deco2.h \ arch_dist.h \ arch_hcub.h \ arch_mesh.h \ + arch_sub.h \ arch_tleaf.h \ arch_torus.h \ arch_vcmplt.h \ @@ -510,6 +524,17 @@ bgraph_bipart_st.h \ arch_build.h +arch_build2$(OBJ) : arch_build2.c \ + module.h \ + common.h \ + graph.h \ + arch.h \ + arch$(OBJ) \ + arch_sub.h \ + arch_deco2.h \ + graph_coarsen.h \ + arch_build2.h + arch_cmplt$(OBJ) : arch_cmplt.c \ module.h \ common.h \ @@ -526,8 +551,16 @@ module.h \ common.h \ arch.h \ + arch_deco2.h \ arch_deco.h +arch_deco2$(OBJ) : arch_deco2.c \ + module.h \ + common.h \ + graph.h \ + arch.h \ + arch_deco2.h + arch_dist$(OBJ) : arch_dist.c \ module.h \ common.h \ @@ -543,6 +576,7 @@ arch_mesh$(OBJ) : arch_mesh.c \ module.h \ common.h \ + graph.h \ arch.h \ arch_mesh.h @@ -552,10 +586,19 @@ arch.h \ arch_tleaf.h +arch_sub$(OBJ) : arch_sub.c \ + module.h \ + common.h \ + graph.h \ + arch.h \ + graph_coarsen.h \ + arch_sub.h + arch_torus$(OBJ) : arch_torus.c \ module.h \ common.h \ arch.h \ + arch_mesh.h \ arch_torus.h arch_vcpmlt$(OBJ) : arch_vcmplt.c \ @@ -816,6 +859,7 @@ dgraph_allreduce.h dgraph_band$(OBJ) : dgraph_band.c \ + dgraph_band_grow.c \ module.h \ common.h \ dgraph.h @@ -1064,6 +1108,11 @@ common.h \ graph.h +graph_clone$(OBJ) : graph_clone.c \ + module.h \ + common.h \ + graph.h + graph_coarsen$(OBJ) : graph_coarsen.c \ graph_coarsen_edge.c \ module.h \ @@ -1071,6 +1120,18 @@ graph.h \ graph_coarsen.h +graph_diam$(OBJ) : graph_diam.c \ + module.h \ + common.h \ + graph.h \ + fibo.h \ + graph_diam.h + +graph_ielo$(OBJ) : graph_ielo.c \ + module.h \ + common.h \ + graph.h + graph_induce$(OBJ) : graph_induce.c \ module.h \ common.h \ @@ -1260,6 +1321,16 @@ hgraph.h \ hgraph_order_bl.h +hgraph_order_cc$(OBJ) : hgraph_order_cc.c \ + module.h \ + common.h \ + parser.h \ + graph.h \ + order.h \ + hgraph.h \ + hgraph_order_cc.h \ + hgraph_order_st.h + hgraph_order_cp$(OBJ) : hgraph_order_cp.c \ module.h \ common.h \ @@ -1765,6 +1836,14 @@ graph.h \ arch$(OBJ) \ arch_cmplt.h \ + arch_cmpltw.h \ + arch_hcub.h \ + arch_mesh.h \ + arch_sub.h \ + arch_tleaf.h \ + arch_torus.h \ + arch_vcmplt.h \ + arch_vhcub.h \ scotch.h library_arch_f$(OBJ) : library_arch_f.c \ @@ -1874,6 +1953,7 @@ ptscotch.h library_dgraph_grow$(OBJ) : library_dgraph_grow.c \ + dgraph_band_grow.c \ module.h \ common.h \ dgraph.h \ @@ -2170,6 +2250,28 @@ common.h \ scotch.h +library_graph_diam$(OBJ) : library_graph_diam.c \ + module.h \ + common.h \ + graph.h \ + scotch.h + +library_graph_diam_f$(OBJ) : library_graph_diam_f.c \ + module.h \ + common.h \ + scotch.h + +library_graph_induce$(OBJ) : library_graph_induce.c \ + module.h \ + common.h \ + graph.h \ + scotch.h + +library_graph_induce_f$(OBJ) : library_graph_induce_f.c \ + module.h \ + common.h \ + scotch.h + library_graph_io_chac$(OBJ) : library_graph_io_chac.c \ module.h \ common.h \ @@ -2937,30 +3039,30 @@ mapping.h \ order.h \ parser.h - $(CCD) $(CFLAGS) -DSCOTCH_VERSION=$(VERSION) -DSCOTCH_RELEASE=$(RELEASE) -DSCOTCH_PATCHLEVEL=$(PATCHLEVEL) $(<) -o $(@) $(LDFLAGS) + $(CCD) $(CFLAGS) -DSCOTCH_VERSION_NUM=$(VERSION) -DSCOTCH_RELEASE_NUM=$(RELEASE) -DSCOTCH_PATCHLEVEL_NUM=$(PATCHLEVEL) $(<) -o $(@) $(LDFLAGS) ptdummysizes$(EXE) : dummysizes.c \ module.h \ common.h \ dgraph.h \ dorder.h - $(CCD) $(CFLAGS) -DSCOTCH_VERSION=$(VERSION) -DSCOTCH_RELEASE=$(RELEASE) -DSCOTCH_PATCHLEVEL=$(PATCHLEVEL) $(<) -o $(@) $(LDFLAGS) + $(CCD) $(CFLAGS) -DSCOTCH_VERSION_NUM=$(VERSION) -DSCOTCH_RELEASE_NUM=$(RELEASE) -DSCOTCH_PATCHLEVEL_NUM=$(PATCHLEVEL) $(<) -o $(@) $(LDFLAGS) scotch.h : dummysizes$(EXE) \ library.h - ./dummysizes$(EXE) library.h scotch.h + ./dummysizes$(EXE) "-s$(SCOTCH_NAME_SUFFIX)" library.h scotch.h scotchf.h : dummysizes$(EXE) \ library_f.h - ./dummysizes$(EXE) library_f.h scotchf.h + ./dummysizes$(EXE) "-s$(SCOTCH_NAME_SUFFIX)" library_f.h scotchf.h ptscotch.h : ptdummysizes$(EXE) \ library_pt.h - ./ptdummysizes$(EXE) library_pt.h ptscotch.h + ./ptdummysizes$(EXE) "-s$(SCOTCH_NAME_SUFFIX)" library_pt.h ptscotch.h ptscotchf.h : ptdummysizes$(EXE) \ library_pt_f.h - ./ptdummysizes$(EXE) library_pt_f.h ptscotchf.h + ./ptdummysizes$(EXE) "-s$(SCOTCH_NAME_SUFFIX)" library_pt_f.h ptscotchf.h libscotch$(LIB) : $(LIBSCOTCHDEPS) $(AR) $(ARFLAGS) $(@) $(?) diff -Nru scotch-6.0.4.dfsg1/src/libscotch/mapping.c scotch-6.0.6/src/libscotch/mapping.c --- scotch-6.0.4.dfsg1/src/libscotch/mapping.c 2014-09-16 06:56:56.000000000 +0000 +++ scotch-6.0.6/src/libscotch/mapping.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007-2009,2011,2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007-2009,2011,2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -65,7 +65,7 @@ /** # Version 5.1 : from : 25 jun 2008 **/ /** to 28 apr 2009 **/ /** # Version 6.0 : from : 04 mar 2011 **/ -/** to 16 sep 2014 **/ +/** to 26 fev 2018 **/ /** **/ /************************************************************/ @@ -280,7 +280,6 @@ Mapping * restrict const mappptr, /*+ Mapping to set +*/ const Mapping * restrict const mapoptr) /*+ Old mapping +*/ { - ArchDom * domntab; Anum domnnbr; Gnum baseval; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/mapping.h scotch-6.0.6/src/libscotch/mapping.h --- scotch-6.0.4.dfsg1/src/libscotch/mapping.h 2014-09-14 21:25:24.000000000 +0000 +++ scotch-6.0.6/src/libscotch/mapping.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -64,7 +64,7 @@ /** # Version 5.1 : from : 25 jun 2008 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 03 mar 2011 **/ -/** to 14 sep 2014 **/ +/** to 06 jun 2018 **/ /** **/ /** NOTES : # While Anum and Gnum are different **/ /** types, because architectures are **/ @@ -133,11 +133,6 @@ /* ** The function prototypes. */ -void mapExit (Mapping * const); - -#ifndef MAPPING -#define static -#endif void mapInit (Mapping * restrict const, const Graph * restrict const, const Arch * restrict const, const ArchDom * restrict const); void mapInit2 (Mapping * restrict const, const Graph * restrict const, const Arch * restrict const, const ArchDom * restrict const, const Anum, const Anum); @@ -155,8 +150,6 @@ int mapSave (const Mapping * restrict const, FILE * restrict const); int mapView (const Mapping * restrict const, const Graph * restrict const, FILE * const); -#undef static - /* ** The macro definitions. */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/mesh_coarsen.h scotch-6.0.6/src/libscotch/mesh_coarsen.h --- scotch-6.0.4.dfsg1/src/libscotch/mesh_coarsen.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/mesh_coarsen.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 4.0 : from : 19 oct 2003 **/ /** to 04 feb 2004 **/ +/** # Version 6.0 : from : 06 jun 2018 **/ +/** to 06 jun 2018 **/ /** **/ /************************************************************/ @@ -110,12 +112,8 @@ ** The function prototypes. */ -#ifndef MESH_COARSEN -#define static -#endif - -int meshCoarsen (const Mesh * restrict const, Mesh * restrict const, Gnum * restrict * const, const Gnum, const double, const MeshCoarsenType); - +#ifdef MESH_COARSEN static void meshCoarsenMatchNg (const Mesh * restrict const, MeshCoarsenMult * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const); +#endif /* MESH_COARSEN */ -#undef static +int meshCoarsen (const Mesh * restrict const, Mesh * restrict const, Gnum * restrict * const, const Gnum, const double, const MeshCoarsenType); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/mesh_graph.c scotch-6.0.6/src/libscotch/mesh_graph.c --- scotch-6.0.4.dfsg1/src/libscotch/mesh_graph.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/mesh_graph.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2009 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2009,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,6 +42,8 @@ /** to 05 may 2004 **/ /** # Version 5.1 : from : 19 nov 2009 **/ /** to 19 nov 2009 **/ +/** # Version 6.0 : from : 15 aug 2016 **/ +/** to 13 feb 2018 **/ /** **/ /** NOTES : # From a given mesh is created a graph, **/ /** such that all vertices of the graph **/ @@ -117,8 +119,9 @@ grafptr->verttax -= grafptr->baseval; grafptr->vendtax = grafptr->verttax + 1; - if (meshptr->vnlotax != NULL) /* Keep node part of mesh vertex load array as graph vertex load array */ - grafptr->velotax = meshptr->vnlotax + meshptr->vnodbas - grafptr->baseval; /* Since GRAPHVERTGROUP, no problem on graphFree */ + grafptr->velotax = (meshptr->vnlotax != NULL) /* Keep node part of mesh vertex load array as graph vertex load array */ + ? meshptr->vnlotax + meshptr->vnodbas - grafptr->baseval /* Since GRAPHVERTGROUP, no problem on graphFree */ + : NULL; grafptr->velosum = meshptr->vnlosum; @@ -197,9 +200,12 @@ } grafptr->verttax[vertnum] = edgenum; /* Set end of vertex array */ + grafptr->edlosum = grafptr->edgenbr = edgenum - grafptr->baseval; grafptr->degrmax = degrmax; + memFree (hashtab); + #ifdef SCOTCH_DEBUG_MESH2 if (graphCheck (grafptr) != 0) { errorPrint ("meshGraph: internal error"); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/mesh.h scotch-6.0.6/src/libscotch/mesh.h --- scotch-6.0.4.dfsg1/src/libscotch/mesh.h 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/mesh.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,6 +42,8 @@ /** to 11 may 2004 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to 04 nov 2010 **/ +/** # Version 6.0 : from : 06 jun 2018 **/ +/** to 06 jun 2018 **/ /** **/ /************************************************************/ @@ -125,10 +127,6 @@ ** The function prototypes. */ -#ifndef MESH -#define static -#endif - int meshInit (Mesh * const); void meshExit (Mesh * const); void meshFree (Mesh * const); @@ -147,5 +145,3 @@ int meshGeomLoadScot (Mesh * restrict const, Geom * restrict const, FILE * const, FILE * const, const char * const); int meshGeomSaveScot (const Mesh * restrict const, const Geom * restrict const, FILE * const, FILE * const, const char * const); #endif /* GEOM_H */ - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/mesh_io.h scotch-6.0.6/src/libscotch/mesh_io.h --- scotch-6.0.4.dfsg1/src/libscotch/mesh_io.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/mesh_io.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 4.0 : from : 14 nov 2002 **/ /** to 14 nov 2002 **/ +/** # Version 6.0 : from : 06 jun 2018 **/ +/** to 06 jun 2018 **/ /** **/ /************************************************************/ @@ -48,10 +50,4 @@ ** The function prototypes. */ -#ifndef MESH_IO -#define static -#endif - int meshLoad2 (const Gnum, const Gnum, const Gnum * const, const Gnum * const, Gnum * const, const Gnum, const Gnum * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/mesh_io_habo.c scotch-6.0.6/src/libscotch/mesh_io_habo.c --- scotch-6.0.4.dfsg1/src/libscotch/mesh_io_habo.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/mesh_io_habo.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 4.0 : from : 19 jan 2004 **/ /** to 20 jan 2004 **/ +/** # Version 6.0 : from : 15 may 2018 **/ +/** to 15 may 2018 **/ /** **/ /************************************************************/ @@ -71,23 +73,22 @@ FILE * const filegeoptr, /* No use */ const char * const dataptr) /* No use */ { - long habmattag; /* Matrix tag number in file */ - long habmatnum; /* Current matrix number */ - char habmatbuf[4][84]; /* Matrix header line buffers */ - char habmattype[4]; /* Matrix type */ - long habcrdnbr; /* Total number of data lines */ - long habrhsnbr; /* Number of right hand side lines */ - int habcolsiz; /* Size of column type */ - int habnzrsiz; /* Size of non-zero type */ - Gnum habevlnbr; /* Number of element matrix values (not uesd) */ - Gnum habvixnbr; /* Number of element matrix variable indices */ - Gnum habeltnbr; /* Number of elements */ - Gnum habvarnbr; /* Number of variables, that is, nodes */ - Gnum velmnum; /* Number of current element vertex */ - Gnum vnodnum; /* Number of current node vertex */ - Gnum edgenum; /* Number of current edge (arc) */ - Gnum edgesum; /* Accumulated number of edges in node part */ - Gnum degrmax; /* Maximum degree */ + long habmattag; /* Matrix tag number in file */ + long habmatnum; /* Current matrix number */ + char habmatbuf[4][84]; /* Matrix header line buffers */ + char habmattype[3]; /* Matrix type */ + long habcrdnbr; /* Total number of data lines */ + long habrhsnbr; /* Number of right hand side lines */ + int habcolsiz; /* Size of column type */ + int habnzrsiz; /* Size of non-zero type */ + Gnum habvixnbr; /* Number of element matrix variable indices */ + Gnum habeltnbr; /* Number of elements */ + Gnum habvarnbr; /* Number of variables, that is, nodes */ + Gnum velmnum; /* Number of current element vertex */ + Gnum vnodnum; /* Number of current node vertex */ + Gnum edgenum; /* Number of current edge (arc) */ + Gnum edgesum; /* Accumulated number of edges in node part */ + Gnum degrmax; /* Maximum degree */ int c; if (((habmattag = atol (dataptr)) == 0) && /* Get tag value */ @@ -109,11 +110,13 @@ habrhsnbr = atol (&habmatbuf[1][56]); habmatbuf[1][14] = '\0'; habcrdnbr = atol (&habmatbuf[1][00]); - habmattype[0] = toupper (habmatbuf[2][0]); habmattype[1] = toupper (habmatbuf[2][1]); habmattype[2] = toupper (habmatbuf[2][2]); +#if 0 /* Not used */ + habmattype[0] = toupper (habmatbuf[2][0]); habmatbuf[2][70] = '\0'; - habevlnbr = (Gnum) atol (&habmatbuf[2][57]); /* NELTVL */ + habevlnbr = (Gnum) atol (&habmatbuf[2][57]); /* NELTVL: number of element matrix values (not used) */ +#endif habmatbuf[2][56] = '\0'; habvixnbr = (Gnum) atol (&habmatbuf[2][43]); /* VARIX */ habmatbuf[2][42] = '\0'; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/module.h scotch-6.0.6/src/libscotch/module.h --- scotch-6.0.4.dfsg1/src/libscotch/module.h 2015-03-01 10:25:51.000000000 +0000 +++ scotch-6.0.6/src/libscotch/module.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007-2015 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007-2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -51,7 +51,7 @@ /** # Version 5.1 : from : 25 oct 2007 **/ /** to 20 feb 2011 **/ /** # Version 6.0 : from : 12 sep 2008 **/ -/** to 01 mar 2015 **/ +/** to 14 jul 2018 **/ /** **/ /************************************************************/ @@ -61,9 +61,85 @@ ** Version string. */ -#define SCOTCH_VERSION_STRING SCOTCH_VERSION_STRING2(SCOTCH_VERSION) "." SCOTCH_VERSION_STRING2(SCOTCH_RELEASE) "." SCOTCH_VERSION_STRING2(SCOTCH_PATCHLEVEL) -#define SCOTCH_VERSION_STRING2(x) SCOTCH_VERSION_STRING3(x) -#define SCOTCH_VERSION_STRING3(x) #x +#define SCOTCH_VERSION_STRING STRINGIFY (SCOTCH_VERSION) "." STRINGIFY (SCOTCH_RELEASE) "." STRINGIFY (SCOTCH_PATCHLEVEL) + +/* +** Handling of determinism. +*/ + +#ifdef SCOTCH_DETERMINISTIC +#ifndef COMMON_RANDOM_FIXED_SEED +#define COMMON_RANDOM_FIXED_SEED +#endif /* COMMON_RANDOM_FIXED_SEED */ +#endif /* SCOTCH_DETERMINISTIC */ + +/* +** Handling of parallelism. +*/ + +#ifdef SCOTCH_PTSCOTCH +#define COMMON_MPI +#endif /* SCOTCH_PTSCOTCH */ + +/* +** Thread management. +*/ + +/*+ Old versions of Scotch used COMMON_PTHREAD + as an alias for COMMON_PTHREAD_FILE. Maintain + that semantics. +*/ + +#ifdef COMMON_PTHREAD +#ifndef COMMON_PTHREAD_FILE +#define COMMON_PTHREAD_FILE +#endif /* COMMON_PTHREAD_FILE */ +#endif /* COMMON_PTHREAD */ + +/*+ Enable the new semantics of COMMON_PTHREAD_FILE. +*/ + +#ifdef COMMON_PTHREAD_FILE +#ifndef COMMON_PTHREAD +#define COMMON_PTHREAD +#endif /* COMMON_PTHREAD */ +#ifndef COMMON_PTHREAD_MEMORY +#define COMMON_PTHREAD_MEMORY +#endif /* COMMON_PTHREAD_MEMORY */ +#endif /* COMMON_PTHREAD_FILE */ + +/*+ Enable thread management from SCOTCH_PTHREAD. +*/ + +#ifdef SCOTCH_PTHREAD +#ifndef COMMON_PTHREAD +#define COMMON_PTHREAD +#endif /* COMMON_PTHREAD */ +#ifndef COMMON_PTHREAD_MEMORY +#define COMMON_PTHREAD_MEMORY +#endif /* COMMON_PTHREAD_MEMORY */ +#endif /* SCOTCH_PTHREAD */ + +/*+ Handle number of threads. +*/ + +#ifdef SCOTCH_PTHREAD +#ifndef SCOTCH_PTHREAD_NUMBER +#define SCOTCH_PTHREAD_NUMBER 1 +#endif /* SCOTCH_PTHREAD_NUMBER */ + +#else /* SCOTCH_PTHREAD */ + +#ifdef SCOTCH_PTHREAD_NUMBER +#undef SCOTCH_PTHREAD_NUMBER +#endif /* SCOTCH_PTHREAD_NUMBER */ +#define SCOTCH_PTHREAD_NUMBER 1 + +#endif /* SCOTCH_PTHREAD */ + +/*+ Handle old semantics of thread affinity. */ + +#ifdef SCOTCH_PTHREAD_AFFINITY_LINUX +#ifndef COMMON_PTHREAD_AFFINITY_LINUX +#define COMMON_PTHREAD_AFFINITY_LINUX +#endif /* COMMON_PTHREAD_AFFINITY_LINUX */ +#endif /* SCOTCH_PTHREAD_AFFINITY_LINUX */ /* ** Debug values. @@ -136,700 +212,1038 @@ ** Function renaming. */ -#if ((! defined SCOTCH_COMMON_EXTERNAL) || (defined SCOTCH_COMMON_RENAME)) -#define memCur SCOTCH_memCur -#define memMax SCOTCH_memMax - -#define clockGet _SCOTCHclockGet +#ifndef SCOTCH_NAME_SUFFIX +#define SCOTCH_NAME_SUFFIX +#else /* SCOTCH_NAME_SUFFIX */ +#ifndef SCOTCH_RENAME +#define SCOTCH_RENAME +#endif /* SCOTCH_RENAME */ +#ifndef SCOTCH_RENAME_PUBLIC +#define SCOTCH_RENAME_PUBLIC +#endif /* SCOTCH_RENAME_PUBLIC */ +#endif /* SCOTCH_NAME_SUFFIX */ +#ifndef SCOTCH_NAME_SUFFIXFL +#define SCOTCH_NAME_SUFFIXFL SCOTCH_NAME_SUFFIX +#define SCOTCH_NAME_SUFFIXFU SCOTCH_NAME_SUFFIX +#else /* SCOTCH_NAME_SUFFIXFL */ +#ifndef SCOTCH_RENAME +#define SCOTCH_RENAME +#endif /* SCOTCH_RENAME */ +#ifndef SCOTCH_RENAME_PUBLIC +#define SCOTCH_RENAME_PUBLIC +#endif /* SCOTCH_RENAME_PUBLIC */ +#endif /* SCOTCH_NAME_SUFFIXFL */ +#define SCOTCH_NAME_PREFIX_INTERN _SCOTCH +#define SCOTCH_NAME_PREFIX_PUBLICFL scotchf +#define SCOTCH_NAME_PREFIX_PUBLICFU SCOTCHF + +#define SCOTCH_NAME_GLUE2(n,s) n##s +#define SCOTCH_NAME_GLUE3(p,n,s) p##n##s +#define SCOTCH_NAME_MACRO2(n,s) SCOTCH_NAME_GLUE2 (n,s) +#define SCOTCH_NAME_MACRO3(p,n,s) SCOTCH_NAME_GLUE3 (p,n,s) +#define SCOTCH_NAME_INTERN(f) SCOTCH_NAME_MACRO3 (SCOTCH_NAME_PREFIX_INTERN,f,SCOTCH_NAME_SUFFIX) +#define SCOTCH_NAME_PUBLIC(f) SCOTCH_NAME_MACRO2 (f,SCOTCH_NAME_SUFFIX) +#define SCOTCH_NAME_PUBLICFL(f) SCOTCH_NAME_MACRO3 (SCOTCH_NAME_PREFIX_PUBLICFL,f,SCOTCH_NAME_SUFFIXFL) +#define SCOTCH_NAME_PUBLICFU(f) SCOTCH_NAME_MACRO3 (SCOTCH_NAME_PREFIX_PUBLICFU,f,SCOTCH_NAME_SUFFIXFU) +#define SCOTCH_FORTRAN(nu,nl,pl,pc) FORTRAN (SCOTCH_NAME_PUBLICFU(nu),SCOTCH_NAME_PUBLICFL(nl),pl,pc) + +#ifdef SCOTCH_RENAME_ALL +#define SCOTCH_VERSION SCOTCH_NAME_PUBLIC (SCOTCH_VERSION) +#define SCOTCH_RELEASE SCOTCH_NAME_PUBLIC (SCOTCH_RELEASE) +#define SCOTCH_PATCHLEVEL SCOTCH_NAME_PUBLIC (SCOTCH_PATCHLEVEL) +#define SCOTCH_COARSENNONE SCOTCH_NAME_PUBLIC (SCOTCH_COARSENNONE) +#define SCOTCH_COARSENFOLD SCOTCH_NAME_PUBLIC (SCOTCH_COARSENFOLD) +#define SCOTCH_COARSENFOLDDUP SCOTCH_NAME_PUBLIC (SCOTCH_COARSENFOLDDUP) +#define SCOTCH_COARSENNOMERGE SCOTCH_NAME_PUBLIC (SCOTCH_COARSENNOMERGE) +#define SCOTCH_STRATDEFAULT SCOTCH_NAME_PUBLIC (SCOTCH_STRATDEFAULT) +#define SCOTCH_STRATQUALITY SCOTCH_NAME_PUBLIC (SCOTCH_STRATQUALITY) +#define SCOTCH_STRATSPEED SCOTCH_NAME_PUBLIC (SCOTCH_STRATSPEED) +#define SCOTCH_STRATBALANCE SCOTCH_NAME_PUBLIC (SCOTCH_STRATBALANCE) +#define SCOTCH_STRATSAFETY SCOTCH_NAME_PUBLIC (SCOTCH_STRATSAFETY) +#define SCOTCH_STRATSCALABILITY SCOTCH_NAME_PUBLIC (SCOTCH_STRATSCALABILITY) +#define SCOTCH_STRATRECURSIVE SCOTCH_NAME_PUBLIC (SCOTCH_STRATRECURSIVE) +#define SCOTCH_STRATREMAP SCOTCH_NAME_PUBLIC (SCOTCH_STRATREMAP) +#define SCOTCH_STRATLEVELMAX SCOTCH_NAME_PUBLIC (SCOTCH_STRATLEVELMAX) +#define SCOTCH_STRATLEVELMIN SCOTCH_NAME_PUBLIC (SCOTCH_STRATLEVELMIN) +#define SCOTCH_STRATLEAFSIMPLE SCOTCH_NAME_PUBLIC (SCOTCH_STRATLEAFSIMPLE) +#define SCOTCH_STRATSEPASIMPLE SCOTCH_NAME_PUBLIC (SCOTCH_STRATSEPASIMPLE) +#endif /* SCOTCH_RENAME_ALL */ -#define commonStubDummy _SCOTCHcommonStubDummy +#ifdef SCOTCH_RENAME +#define SCOTCH_Arch SCOTCH_NAME_PUBLIC (SCOTCH_Arch) +#define SCOTCH_Geom SCOTCH_NAME_PUBLIC (SCOTCH_Geom) +#define SCOTCH_Graph SCOTCH_NAME_PUBLIC (SCOTCH_Graph) +#define SCOTCH_Idx SCOTCH_NAME_PUBLIC (SCOTCH_Idx) +#define SCOTCH_Mesh SCOTCH_NAME_PUBLIC (SCOTCH_Mesh) +#define SCOTCH_Mapping SCOTCH_NAME_PUBLIC (SCOTCH_Mapping) +#define SCOTCH_Num SCOTCH_NAME_PUBLIC (SCOTCH_Num) +#define SCOTCH_Ordering SCOTCH_NAME_PUBLIC (SCOTCH_Ordering) +#define SCOTCH_Strat SCOTCH_NAME_PUBLIC (SCOTCH_Strat) +#endif /* SCOTCH_RENAME */ -#define errorPrint SCOTCH_errorPrint -#define errorPrintW SCOTCH_errorPrintW -#define errorProg SCOTCH_errorProg - -#define fileBlockClose _SCOTCHfileBlockClose -#define fileBlockOpen _SCOTCHfileBlockOpen -#define fileBlockOpenDist _SCOTCHfileBlockOpenDist -#define fileCompress _SCOTCHfileCompress -#define fileCompressType _SCOTCHfileCompressType -#define fileUncompress _SCOTCHfileUncompress -#define fileUncompressType _SCOTCHfileUncompressType -#define fileNameDistExpand _SCOTCHfileNameDistExpand - -#define intLoad _SCOTCHintLoad -#define intSave _SCOTCHintSave -#define intAscn _SCOTCHintAscn -#define intGcd _SCOTCHintGcd -#define intPerm _SCOTCHintPerm -#define intRandInit _SCOTCHintRandInit -#define intRandProc _SCOTCHintRandProc -#define intRandReset _SCOTCHintRandReset -#define intRandSeed _SCOTCHintRandSeed +#if ((! defined SCOTCH_COMMON_EXTERNAL) || (defined SCOTCH_COMMON_RENAME)) +#define errorPrint SCOTCH_NAME_MACRO2 (SCOTCH_, errorPrint) /* Same name whatever the suffix is since external library */ +#define errorPrintW SCOTCH_NAME_MACRO2 (SCOTCH_, errorPrintW) +#define errorProg SCOTCH_NAME_MACRO2 (SCOTCH_, errorProg) + +#define memCur SCOTCH_NAME_MACRO2 (SCOTCH_, memCur) +#define memMax SCOTCH_NAME_MACRO2 (SCOTCH_, memMax) + +#define clockGet SCOTCH_NAME_INTERN (clockGet) + +#define commonStubDummy SCOTCH_NAME_INTERN (commonStubDummy) + +#define fileBlockInit SCOTCH_NAME_INTERN (fileBlockInit) +#define fileBlockClose SCOTCH_NAME_INTERN (fileBlockClose) +#define fileBlockOpen SCOTCH_NAME_INTERN (fileBlockOpen) +#define fileBlockOpenDist SCOTCH_NAME_INTERN (fileBlockOpenDist) +#define fileCompress SCOTCH_NAME_INTERN (fileCompress) +#define fileCompressType SCOTCH_NAME_INTERN (fileCompressType) +#define fileDecompress SCOTCH_NAME_INTERN (fileDecompress) +#define fileDecompressType SCOTCH_NAME_INTERN (fileDecompressType) +#define fileNameDistExpand SCOTCH_NAME_INTERN (fileNameDistExpand) + +#define intLoad SCOTCH_NAME_INTERN (intLoad) +#define intSave SCOTCH_NAME_INTERN (intSave) +#define intAscn SCOTCH_NAME_INTERN (intAscn) +#define intGcd SCOTCH_NAME_INTERN (intGcd) +#define intPerm SCOTCH_NAME_INTERN (intPerm) +#define intRandInit SCOTCH_NAME_INTERN (intRandInit) +#define intRandLoad SCOTCH_NAME_INTERN (intRandLoad) +#define intRandSave SCOTCH_NAME_INTERN (intRandSave) +#define intRandProc SCOTCH_NAME_INTERN (intRandProc) +#define intRandReset SCOTCH_NAME_INTERN (intRandReset) +#define intRandSeed SCOTCH_NAME_INTERN (intRandSeed) #ifndef COMMON_RANDOM_SYSTEM -#define intRandVal _SCOTCHintRandVal +#define intRandVal SCOTCH_NAME_INTERN (intRandVal) #endif /* COMMON_RANDOM_SYSTEM */ -#define intSort1asc1 _SCOTCHintSort1asc1 -#define intSort2asc1 _SCOTCHintSort2asc1 -#define intSort2asc2 _SCOTCHintSort2asc2 -#define intSort3asc1 _SCOTCHintSort3asc1 -#define intSort3asc2 _SCOTCHintSort3asc2 - -#define memAllocGroup _SCOTCHmemAllocGroup -#define memAllocRecord _SCOTCHmemAllocRecord -#define memCheck _SCOTCHmemCheck -#define memCheckExists _SCOTCHmemCheckExists -#define memCheckSize _SCOTCHmemCheckSize -#define memCheckToggle _SCOTCHmemCheckToggle -#define memCheckWatch _SCOTCHmemCheckWatch -#define memFreeRecord _SCOTCHmemFreeRecord -#define memReallocGroup _SCOTCHmemReallocGroup -#define memReallocRecord _SCOTCHmemReallocRecord -#define memOffset _SCOTCHmemOffset +#define intSort1asc1 SCOTCH_NAME_INTERN (intSort1asc1) +#define intSort2asc1 SCOTCH_NAME_INTERN (intSort2asc1) +#define intSort2asc2 SCOTCH_NAME_INTERN (intSort2asc2) +#define intSort3asc1 SCOTCH_NAME_INTERN (intSort3asc1) +#define intSort3asc2 SCOTCH_NAME_INTERN (intSort3asc2) + +#define memAllocGroup SCOTCH_NAME_INTERN (memAllocGroup) +#define memAllocRecord SCOTCH_NAME_INTERN (memAllocRecord) +#define memCheck SCOTCH_NAME_INTERN (memCheck) +#define memCheckExists SCOTCH_NAME_INTERN (memCheckExists) +#define memCheckSize SCOTCH_NAME_INTERN (memCheckSize) +#define memCheckToggle SCOTCH_NAME_INTERN (memCheckToggle) +#define memCheckWatch SCOTCH_NAME_INTERN (memCheckWatch) +#define memFreeRecord SCOTCH_NAME_INTERN (memFreeRecord) +#define memReallocGroup SCOTCH_NAME_INTERN (memReallocGroup) +#define memReallocRecord SCOTCH_NAME_INTERN (memReallocRecord) +#define memOffset SCOTCH_NAME_INTERN (memOffset) -#define stringSubst _SCOTCHstringSubst +#define stringSubst SCOTCH_NAME_INTERN (stringSubst) -#define usagePrint _SCOTCHusagePrint +#define usagePrint SCOTCH_NAME_INTERN (usagePrint) #endif /* ((! defined SCOTCH_COMMON_EXTERNAL) || (defined SCOTCH_COMMON_RENAME)) */ #ifdef SCOTCH_RENAME -#define archInit _SCOTCHarchInit -#define archExit _SCOTCHarchExit -#define archFree _SCOTCHarchFree -#define archLoad _SCOTCHarchLoad -#define archSave _SCOTCHarchSave -/* #define archName _SCOTCHarchName Already a macro */ -#define archClass _SCOTCHarchClass -#define archClassTab _SCOTCHarchClassTab -#define archDomLoad _SCOTCHarchDomLoad -#define archDomSave _SCOTCHarchDomSave +#define archInit SCOTCH_NAME_INTERN (archInit) +#define archExit SCOTCH_NAME_INTERN (archExit) +#define archFree SCOTCH_NAME_INTERN (archFree) +#define archLoad SCOTCH_NAME_INTERN (archLoad) +#define archSave SCOTCH_NAME_INTERN (archSave) +/* #define archName SCOTCH_NAME_INTERN (archName) Already a macro */ +#define archClass SCOTCH_NAME_INTERN (archClass) +#define archClass2 SCOTCH_NAME_INTERN (archClass2) +#define archClassTab SCOTCH_NAME_INTERN (archClassTab) +#define archDomLoad SCOTCH_NAME_INTERN (archDomLoad) +#define archDomSave SCOTCH_NAME_INTERN (archDomSave) #ifdef SCOTCH_DEBUG_ARCH2 /* If already redefined */ -#define archDomNum _SCOTCHarchDomNum -#define archDomDist _SCOTCHarchDomDist -#define archDomFrst _SCOTCHarchDomFrst -#define archDomIncl _SCOTCHarchDomIncl -#define archDomSize _SCOTCHarchDomSize -#define archDomTerm _SCOTCHarchDomTerm -#define archDomWght _SCOTCHarchDomWght -#define archDomBipart _SCOTCHarchDomBipart +#define archDomNum SCOTCH_NAME_INTERN (archDomNum) +#define archDomDist SCOTCH_NAME_INTERN (archDomDist) +#define archDomFrst SCOTCH_NAME_INTERN (archDomFrst) +#define archDomIncl SCOTCH_NAME_INTERN (archDomIncl) +#define archDomSize SCOTCH_NAME_INTERN (archDomSize) +#define archDomTerm SCOTCH_NAME_INTERN (archDomTerm) +#define archDomWght SCOTCH_NAME_INTERN (archDomWght) +#define archDomBipart SCOTCH_NAME_INTERN (archDomBipart) #endif /* SCOTCH_DEBUG_ARCH2 */ -#define archDomMpiType _SCOTCHarchDomMpiType -#define archBuild _SCOTCHarchBuild -#define archCmpltArchLoad _SCOTCHarchCmpltArchLoad -#define archCmpltArchSave _SCOTCHarchCmpltArchSave -#define archCmpltDomNum _SCOTCHarchCmpltDomNum -#define archCmpltDomTerm _SCOTCHarchCmpltDomTerm -#define archCmpltDomSize _SCOTCHarchCmpltDomSize -/* #define archCmpltDomWght _SCOTCHarchCmpltDomWght Already a macro */ -#define archCmpltDomDist _SCOTCHarchCmpltDomDist -#define archCmpltDomFrst _SCOTCHarchCmpltDomFrst -#define archCmpltDomIncl _SCOTCHarchCmpltDomIncl -#define archCmpltDomLoad _SCOTCHarchCmpltDomLoad -#define archCmpltDomSave _SCOTCHarchCmpltDomSave -#define archCmpltDomBipart _SCOTCHarchCmpltDomBipart -#define archCmpltDomMpiType _SCOTCHarchCmpltDomMpiType -#define archCmpltwArchBuild _SCOTCHarchCmpltwArchBuild -#define archCmpltwArchFree _SCOTCHarchCmpltwArchFree -#define archCmpltwArchLoad _SCOTCHarchCmpltwArchLoad -#define archCmpltwArchSave _SCOTCHarchCmpltwArchSave -#define archCmpltwDomNum _SCOTCHarchCmpltwDomNum -#define archCmpltwDomTerm _SCOTCHarchCmpltwDomTerm -#define archCmpltwDomSize _SCOTCHarchCmpltwDomSize -#define archCmpltwDomWght _SCOTCHarchCmpltwDomWght -#define archCmpltwDomDist _SCOTCHarchCmpltwDomDist -#define archCmpltwDomFrst _SCOTCHarchCmpltwDomFrst -#define archCmpltwDomIncl _SCOTCHarchCmpltwDomIncl -#define archCmpltwDomLoad _SCOTCHarchCmpltwDomLoad -#define archCmpltwDomSave _SCOTCHarchCmpltwDomSave -#define archCmpltwDomBipart _SCOTCHarchCmpltwDomBipart -#define archCmpltwDomMpiType _SCOTCHarchCmpltwDomMpiType -#define archDecoArchBuild _SCOTCHarchDecoArchBuild -#define archDecoArchFree _SCOTCHarchDecoArchFree -#define archDecoArchLoad _SCOTCHarchDecoArchLoad -#define archDecoArchSave _SCOTCHarchDecoArchSave -#define archDecoDomNum _SCOTCHarchDecoDomNum -#define archDecoDomTerm _SCOTCHarchDecoDomTerm -#define archDecoDomSize _SCOTCHarchDecoDomSize -#define archDecoDomWght _SCOTCHarchDecoDomWght -#define archDecoDomDist _SCOTCHarchDecoDomDist -#define archDecoDomFrst _SCOTCHarchDecoDomFrst -#define archDecoDomIncl _SCOTCHarchDecoDomIncl -#define archDecoDomLoad _SCOTCHarchDecoDomLoad -#define archDecoDomSave _SCOTCHarchDecoDomSave -#define archDecoDomBipart _SCOTCHarchDecoDomBipart -#define archDecoDomMpiType _SCOTCHarchDecoDomMpiType -#define archDistArchLoad _SCOTCHarchDistArchLoad -#define archDistArchSave _SCOTCHarchDistArchSave -#define archDistArchBuild _SCOTCHarchDistArchBuild -#define archDistDomNum _SCOTCHarchDistDomNum -#define archDistDomTerm _SCOTCHarchDistDomTerm -#define archDistDomSize _SCOTCHarchDistDomSize -#define archDistDomWght _SCOTCHarchDistDomWght -#define archDistDomDist _SCOTCHarchDistDomDist -#define archDistDomFrst _SCOTCHarchDistDomFrst -#define archDistDomIncl _SCOTCHarchDistDomIncl -#define archDistDomLoad _SCOTCHarchDistDomLoad -#define archDistDomSave _SCOTCHarchDistDomSave -#define archDistDomBipart _SCOTCHarchDistDomBipart -#define archDistDomMpiType _SCOTCHarchDistDomMpiType -#define archHcubArchLoad _SCOTCHarchHcubArchLoad -#define archHcubArchSave _SCOTCHarchHcubArchSave -#define archHcubDomNum _SCOTCHarchHcubDomNum -#define archHcubDomTerm _SCOTCHarchHcubDomTerm -#define archHcubDomSize _SCOTCHarchHcubDomSize -/* #define archHcubDomWght _SCOTCHarchHcubDomWght Already a macro */ -#define archHcubDomDist _SCOTCHarchHcubDomDist -#define archHcubDomFrst _SCOTCHarchHcubDomFrst -#define archHcubDomIncl _SCOTCHarchHcubDomIncl -#define archHcubDomLoad _SCOTCHarchHcubDomLoad -#define archHcubDomSave _SCOTCHarchHcubDomSave -#define archHcubDomBipart _SCOTCHarchHcubDomBipart -#define archHcubDomMpiType _SCOTCHarchHcubDomMpiType -#define archLtleafArchLoad _SCOTCHarchLtleafArchLoad -#define archLtleafArchSave _SCOTCHarchLtleafArchSave -#define archLtleafDomNum _SCOTCHarchLtleafDomNum -#define archLtleafDomTerm _SCOTCHarchLtleafDomTerm -#define archTleafArchLoad _SCOTCHarchTleafArchLoad -#define archTleafArchFree _SCOTCHarchTleafArchFree -#define archTleafArchSave _SCOTCHarchTleafArchSave -#define archTleafDomNum _SCOTCHarchTleafDomNum -#define archTleafDomTerm _SCOTCHarchTleafDomTerm -#define archTleafDomSize _SCOTCHarchTleafDomSize -/* #define archTleafDomWght _SCOTCHarchTleafDomWght Already a macro */ -#define archTleafDomDist _SCOTCHarchTleafDomDist -#define archTleafDomFrst _SCOTCHarchTleafDomFrst -#define archTleafDomIncl _SCOTCHarchTleafDomIncl -#define archTleafDomLoad _SCOTCHarchTleafDomLoad -#define archTleafDomSave _SCOTCHarchTleafDomSave -#define archTleafDomBipart _SCOTCHarchTleafDomBipart -#define archTleafDomMpiType _SCOTCHarchTleafDomMpiType -#define archMesh2ArchLoad _SCOTCHarchMesh2ArchLoad -#define archMesh2ArchSave _SCOTCHarchMesh2ArchSave -#define archMesh2DomNum _SCOTCHarchMesh2DomNum -#define archMesh2DomTerm _SCOTCHarchMesh2DomTerm -#define archMesh2DomSize _SCOTCHarchMesh2DomSize -/* #define archMesh2DomWght _SCOTCHarchMesh2DomWght Already a macro */ -#define archMesh2DomDist _SCOTCHarchMesh2DomDist -#define archMesh2DomFrst _SCOTCHarchMesh2DomFrst -#define archMesh2DomIncl _SCOTCHarchMesh2DomIncl -#define archMesh2DomLoad _SCOTCHarchMesh2DomLoad -#define archMesh2DomSave _SCOTCHarchMesh2DomSave -#define archMesh2DomBipart _SCOTCHarchMesh2DomBipart -#define archMesh2DomBipartO _SCOTCHarchMesh2DomBipartO -#define archMesh2DomBipartU _SCOTCHarchMesh2DomBipartU -#define archMesh2DomMpiType _SCOTCHarchMesh2DomMpiType -#define archMesh3ArchLoad _SCOTCHarchMesh3ArchLoad -#define archMesh3ArchSave _SCOTCHarchMesh3ArchSave -#define archMesh3DomNum _SCOTCHarchMesh3DomNum -#define archMesh3DomTerm _SCOTCHarchMesh3DomTerm -#define archMesh3DomSize _SCOTCHarchMesh3DomSize -/* #define archMesh3DomWght _SCOTCHarchMesh3DomWght Already a macro */ -#define archMesh3DomDist _SCOTCHarchMesh3DomDist -#define archMesh3DomFrst _SCOTCHarchMesh3DomFrst -#define archMesh3DomIncl _SCOTCHarchMesh3DomIncl -#define archMesh3DomLoad _SCOTCHarchMesh3DomLoad -#define archMesh3DomSave _SCOTCHarchMesh3DomSave -#define archMesh3DomBipart _SCOTCHarchMesh3DomBipart -#define archMesh3DomMpiType _SCOTCHarchMesh3DomMpiType -#define archTermArchLoad _SCOTCHarchTermArchLoad -#define archTermArchSave _SCOTCHarchTermArchSave -#define archTermDomNum _SCOTCHarchTermDomNum -#define archTermDomTerm _SCOTCHarchTermDomTerm -#define archTermDomSize _SCOTCHarchTermDomSize -/* #define archTermDomWght _SCOTCHarchTermDomWght Already a macro */ -#define archTermDomDist _SCOTCHarchTermDomDist -#define archTermDomFrst _SCOTCHarchTermDomFrst -#define archTermDomIncl _SCOTCHarchTermDomIncl -#define archTermDomLoad _SCOTCHarchTermDomLoad -#define archTermDomSave _SCOTCHarchTermDomSave -#define archTermDomBipart _SCOTCHarchTermDomBipart -#define archTermDomMpiType _SCOTCHarchTermDomMpiType -#define archTorus2ArchLoad _SCOTCHarchTorus2ArchLoad -#define archTorus2ArchSave _SCOTCHarchTorus2ArchSave -#define archTorus2DomNum _SCOTCHarchTorus2DomNum -#define archTorus2DomTerm _SCOTCHarchTorus2DomTerm -#define archTorus2DomSize _SCOTCHarchTorus2DomSize -/* #define archTorus2DomWght _SCOTCHarchTorus2DomWght Already a macro */ -#define archTorus2DomDist _SCOTCHarchTorus2DomDist -/* #define archTorus2DomFrst _SCOTCHarchTorus2DomFrst Already a macro */ -#define archTorus2DomIncl _SCOTCHarchTorus2DomIncl -#define archTorus2DomBipart _SCOTCHarchTorus2DomBipart -/* #define archTorus2DomLoad _SCOTCHarchTorus2DomLoad Already a macro */ -/* #define archTorus2DomSave _SCOTCHarchTorus2DomSave Already a macro */ -#define archTorus2DomBipart _SCOTCHarchTorus2DomBipart -/* #define archTorus2DomMpiType _SCOTCHarchTorus2DomMpiTypeA lready a macro */ -#define archTorus3ArchLoad _SCOTCHarchTorus3ArchLoad -#define archTorus3ArchSave _SCOTCHarchTorus3ArchSave -#define archTorus3DomNum _SCOTCHarchTorus3DomNum -#define archTorus3DomTerm _SCOTCHarchTorus3DomTerm -#define archTorus3DomSize _SCOTCHarchTorus3DomSize -/* #define archTorus3DomWght _SCOTCHarchTorus3DomWght Already a macro */ -#define archTorus3DomDist _SCOTCHarchTorus3DomDist -/* #define archTorus3DomFrst _SCOTCHarchTorus3DomFrst Already a macro */ -#define archTorus3DomIncl _SCOTCHarchTorus3DomIncl -/* #define archTorus3DomLoad _SCOTCHarchTorus3DomLoad Already a macro */ -/* #define archTorus3DomSave _SCOTCHarchTorus3DomSave Already a macro */ -#define archTorus3DomBipart _SCOTCHarchTorus3DomBipart -/* #define archTorus3DomMpiType _SCOTCHarchTorus3DomMpiType Already a macro */ -#define archTorusXArchLoad _SCOTCHarchTorusXArchLoad -#define archTorusXArchSave _SCOTCHarchTorusXArchSave -#define archTorusXDomNum _SCOTCHarchTorusXDomNum -#define archTorusXDomTerm _SCOTCHarchTorusXDomTerm -#define archTorusXDomSize _SCOTCHarchTorusXDomSize -/* #define archTorusXDomWght _SCOTCHarchTorusXDomWght Already a macro */ -#define archTorusXDomDist _SCOTCHarchTorusXDomDist -#define archTorusXDomFrst _SCOTCHarchTorusXDomFrst -#define archTorusXDomIncl _SCOTCHarchTorusXDomIncl -#define archTorusXDomLoad _SCOTCHarchTorusXDomLoad -#define archTorusXDomSave _SCOTCHarchTorusXDomSave -#define archTorusXDomBipart _SCOTCHarchTorusXDomBipart -#define archTorusXDomMpiType _SCOTCHarchTorusXDomMpiType -/* #define archVcmpltArchLoad _SCOTCHarchVcmpltArchLoad Already a macro */ -/* #define archVcmpltArchSave _SCOTCHarchVcmpltArchSave Already a macro */ -#define archVcmpltDomNum _SCOTCHarchVcmpltDomNum -#define archVcmpltDomTerm _SCOTCHarchVcmpltDomTerm -#define archVcmpltDomSize _SCOTCHarchVcmpltDomSize -/* #define archVcmpltDomWght _SCOTCHarchVcmpltDomWght Already a macro */ -#define archVcmpltDomDist _SCOTCHarchVcmpltDomDist -#define archVcmpltDomFrst _SCOTCHarchVcmpltDomFrst -#define archVcmpltDomIncl _SCOTCHarchVcmpltDomIncl -#define archVcmpltDomBipart _SCOTCHarchVcmpltDomBipart -#define archVcmpltDomLoad _SCOTCHarchVcmpltDomLoad -#define archVcmpltDomSave _SCOTCHarchVcmpltDomSave -#define archVcmpltDomBipart _SCOTCHarchVcmpltDomBipart -#define archVcmpltDomMpiType _SCOTCHarchVcmpltDomMpiType -/* #define archVhcubArchLoad _SCOTCHarchVhcubArchLoad Already a macro */ -/* #define archVhcubArchSave _SCOTCHarchVhcubArchSave Already a macro */ -#define archVhcubDomNum _SCOTCHarchVhcubDomNum -#define archVhcubDomTerm _SCOTCHarchVhcubDomTerm -#define archVhcubDomSize _SCOTCHarchVhcubDomSize -/* #define archVhcubDomWght _SCOTCHarchVhcubDomWght Already a macro */ -#define archVhcubDomDist _SCOTCHarchVhcubDomDist -#define archVhcubDomFrst _SCOTCHarchVhcubDomFrst -#define archVhcubDomIncl _SCOTCHarchVhcubDomIncl -#define archVhcubDomLoad _SCOTCHarchVhcubDomLoad -#define archVhcubDomSave _SCOTCHarchVhcubDomSave -#define archVhcubDomBipart _SCOTCHarchVhcubDomBipart -#define archVhcubDomMpiType _SCOTCHarchVhcubDomMpiType - -#define bdgraphInit _SCOTCHbdgraphInit -#define bdgraphInit2 _SCOTCHbdgraphInit2 -#define bdgraphExit _SCOTCHbdgraphExit -#define bdgraphZero _SCOTCHbdgraphZero -#define bdgraphbipartststratab _SCOTCHbdgraphbipartststratab -#define bdgraphCheck _SCOTCHbdgraphCheck -#define bdgraphGatherAll _SCOTCHbdgraphGatherAll -#define bdgraphBipartBd _SCOTCHbdgraphBipartBd -#define bdgraphBipartDf _SCOTCHbdgraphBipartDf -#define bdgraphBipartEx _SCOTCHbdgraphBipartEx -#define bdgraphBipartMl _SCOTCHbdgraphBipartMl -#define bdgraphBipartSq _SCOTCHbdgraphBipartSq -#define bdgraphBipartSt _SCOTCHbdgraphBipartSt -#define bdgraphBipartZr _SCOTCHbdgraphBipartZr -#define bdgraphStoreInit _SCOTCHbdgraphStoreInit -#define bdgraphStoreExit _SCOTCHbdgraphStoreExit -#define bdgraphStoreSave _SCOTCHbdgraphStoreSave -#define bdgraphStoreUpdt _SCOTCHbdgraphStoreUpdt - -#define bgraphbipartststratab _SCOTCHbgraphbipartststratab -#define bgraphInit _SCOTCHbgraphInit -#define bgraphInit2 _SCOTCHbgraphInit2 -#define bgraphInit3 _SCOTCHbgraphInit3 -#define bgraphInit4 _SCOTCHbgraphInit4 -#define bgraphInit5 _SCOTCHbgraphInit5 -#define bgraphExit _SCOTCHbgraphExit -#define bgraphCheck _SCOTCHbgraphCheck -#define bgraphSwal _SCOTCHbgraphSwal -#define bgraphZero _SCOTCHbgraphZero -#define bgraphBipartBd _SCOTCHbgraphBipartBd -#define bgraphBipartDf _SCOTCHbgraphBipartDf -#define bgraphBipartDf2 _SCOTCHbgraphBipartDf2 -#define bgraphBipartDfJoin _SCOTCHbgraphBipartDfJoin -#define bgraphBipartEx _SCOTCHbgraphBipartEx -#define bgraphBipartFm _SCOTCHbgraphBipartFm -#define bgraphBipartGg _SCOTCHbgraphBipartGg -#define bgraphBipartGp _SCOTCHbgraphBipartGp -#define bgraphBipartMl _SCOTCHbgraphBipartMl -#define bgraphBipartSt _SCOTCHbgraphBipartSt -#define bgraphBipartZr _SCOTCHbgraphBipartZr -#define bgraphStoreInit _SCOTCHbgraphStoreInit -#define bgraphStoreExit _SCOTCHbgraphStoreExit -#define bgraphStoreSave _SCOTCHbgraphStoreSave -#define bgraphStoreUpdt _SCOTCHbgraphStoreUpdt +#define archDomMpiType SCOTCH_NAME_INTERN (archDomMpiType) +#define archBuild SCOTCH_NAME_INTERN (archBuild) +#define archCmpltArchLoad SCOTCH_NAME_INTERN (archCmpltArchLoad) +#define archCmpltArchSave SCOTCH_NAME_INTERN (archCmpltArchSave) +#define archCmpltMatchInit SCOTCH_NAME_INTERN (archCmpltMatchInit) +#define archCmpltMatchExit SCOTCH_NAME_INTERN (archCmpltMatchExit) +#define archCmpltMatchMate SCOTCH_NAME_INTERN (archCmpltMatchMate) +#define archCmpltDomNum SCOTCH_NAME_INTERN (archCmpltDomNum) +#define archCmpltDomTerm SCOTCH_NAME_INTERN (archCmpltDomTerm) +#define archCmpltDomSize SCOTCH_NAME_INTERN (archCmpltDomSize) +/* #define archCmpltDomWght SCOTCH_NAME_INTERN (archCmpltDomWght) Already a macro */ +#define archCmpltDomDist SCOTCH_NAME_INTERN (archCmpltDomDist) +#define archCmpltDomFrst SCOTCH_NAME_INTERN (archCmpltDomFrst) +#define archCmpltDomIncl SCOTCH_NAME_INTERN (archCmpltDomIncl) +#define archCmpltDomLoad SCOTCH_NAME_INTERN (archCmpltDomLoad) +#define archCmpltDomSave SCOTCH_NAME_INTERN (archCmpltDomSave) +#define archCmpltDomBipart SCOTCH_NAME_INTERN (archCmpltDomBipart) +#define archCmpltDomMpiType SCOTCH_NAME_INTERN (archCmpltDomMpiType) +#define archCmpltwArchBuild SCOTCH_NAME_INTERN (archCmpltwArchBuild) +#define archCmpltwArchFree SCOTCH_NAME_INTERN (archCmpltwArchFree) +#define archCmpltwArchLoad SCOTCH_NAME_INTERN (archCmpltwArchLoad) +#define archCmpltwArchSave SCOTCH_NAME_INTERN (archCmpltwArchSave) +#define archCmpltwDomNum SCOTCH_NAME_INTERN (archCmpltwDomNum) +#define archCmpltwDomTerm SCOTCH_NAME_INTERN (archCmpltwDomTerm) +#define archCmpltwDomSize SCOTCH_NAME_INTERN (archCmpltwDomSize) +#define archCmpltwDomWght SCOTCH_NAME_INTERN (archCmpltwDomWght) +#define archCmpltwDomDist SCOTCH_NAME_INTERN (archCmpltwDomDist) +#define archCmpltwDomFrst SCOTCH_NAME_INTERN (archCmpltwDomFrst) +#define archCmpltwDomIncl SCOTCH_NAME_INTERN (archCmpltwDomIncl) +#define archCmpltwDomLoad SCOTCH_NAME_INTERN (archCmpltwDomLoad) +#define archCmpltwDomSave SCOTCH_NAME_INTERN (archCmpltwDomSave) +#define archCmpltwDomBipart SCOTCH_NAME_INTERN (archCmpltwDomBipart) +#define archCmpltwDomMpiType SCOTCH_NAME_INTERN (archCmpltwDomMpiType) +#define archDecoArchBuild SCOTCH_NAME_INTERN (archDecoArchBuild) +#define archDecoArchBuild2 SCOTCH_NAME_INTERN (archDecoArchBuild2) +#define archDecoArchFree SCOTCH_NAME_INTERN (archDecoArchFree) +#define archDecoArchLoad SCOTCH_NAME_INTERN (archDecoArchLoad) +#define archDecoArchSave SCOTCH_NAME_INTERN (archDecoArchSave) +#define archDecoDomNum SCOTCH_NAME_INTERN (archDecoDomNum) +#define archDecoDomTerm SCOTCH_NAME_INTERN (archDecoDomTerm) +#define archDecoDomSize SCOTCH_NAME_INTERN (archDecoDomSize) +#define archDecoDomWght SCOTCH_NAME_INTERN (archDecoDomWght) +#define archDecoDomDist SCOTCH_NAME_INTERN (archDecoDomDist) +#define archDecoDomFrst SCOTCH_NAME_INTERN (archDecoDomFrst) +#define archDecoDomIncl SCOTCH_NAME_INTERN (archDecoDomIncl) +#define archDecoDomLoad SCOTCH_NAME_INTERN (archDecoDomLoad) +#define archDecoDomSave SCOTCH_NAME_INTERN (archDecoDomSave) +#define archDecoDomBipart SCOTCH_NAME_INTERN (archDecoDomBipart) +#define archDecoDomMpiType SCOTCH_NAME_INTERN (archDecoDomMpiType) +#define archDeco2ArchBuild SCOTCH_NAME_INTERN (archDeco2ArchBuild) +#define archDeco2ArchFree SCOTCH_NAME_INTERN (archDeco2ArchFree) +#define archDeco2ArchLoad2 SCOTCH_NAME_INTERN (archDeco2ArchLoad2) +#define archDeco2ArchSave SCOTCH_NAME_INTERN (archDeco2ArchSave) +#define archDeco2DomNum SCOTCH_NAME_INTERN (archDeco2DomNum) +#define archDeco2DomTerm SCOTCH_NAME_INTERN (archDeco2DomTerm) +#define archDeco2DomSize SCOTCH_NAME_INTERN (archDeco2DomSize) +#define archDeco2DomWght SCOTCH_NAME_INTERN (archDeco2DomWght) +#define archDeco2DomDist SCOTCH_NAME_INTERN (archDeco2DomDist) +#define archDeco2DomFrst SCOTCH_NAME_INTERN (archDeco2DomFrst) +#define archDeco2DomIncl SCOTCH_NAME_INTERN (archDeco2DomIncl) +#define archDeco2DomLoad SCOTCH_NAME_INTERN (archDeco2DomLoad) +#define archDeco2DomSave SCOTCH_NAME_INTERN (archDeco2DomSave) +#define archDeco2DomBipart SCOTCH_NAME_INTERN (archDeco2DomBipart) +#define archDeco2DomMpiType SCOTCH_NAME_INTERN (archDeco2DomMpiType) +#define archDeco2MatchInit SCOTCH_NAME_INTERN (archDeco2MatchInit) +#define archDistArchLoad SCOTCH_NAME_INTERN (archDistArchLoad) +#define archDistArchSave SCOTCH_NAME_INTERN (archDistArchSave) +#define archDistArchBuild SCOTCH_NAME_INTERN (archDistArchBuild) +#define archDistDomNum SCOTCH_NAME_INTERN (archDistDomNum) +#define archDistDomTerm SCOTCH_NAME_INTERN (archDistDomTerm) +#define archDistDomSize SCOTCH_NAME_INTERN (archDistDomSize) +#define archDistDomWght SCOTCH_NAME_INTERN (archDistDomWght) +#define archDistDomDist SCOTCH_NAME_INTERN (archDistDomDist) +#define archDistDomFrst SCOTCH_NAME_INTERN (archDistDomFrst) +#define archDistDomIncl SCOTCH_NAME_INTERN (archDistDomIncl) +#define archDistDomLoad SCOTCH_NAME_INTERN (archDistDomLoad) +#define archDistDomSave SCOTCH_NAME_INTERN (archDistDomSave) +#define archDistDomBipart SCOTCH_NAME_INTERN (archDistDomBipart) +#define archDistDomMpiType SCOTCH_NAME_INTERN (archDistDomMpiType) +#define archHcubArchLoad SCOTCH_NAME_INTERN (archHcubArchLoad) +#define archHcubArchSave SCOTCH_NAME_INTERN (archHcubArchSave) +#define archHcubMatchInit SCOTCH_NAME_INTERN (archHcubMatchInit) +#define archHcubMatchExit SCOTCH_NAME_INTERN (archHcubMatchExit) +#define archHcubMatchMate SCOTCH_NAME_INTERN (archHcubMatchMate) +#define archHcubDomNum SCOTCH_NAME_INTERN (archHcubDomNum) +#define archHcubDomTerm SCOTCH_NAME_INTERN (archHcubDomTerm) +#define archHcubDomSize SCOTCH_NAME_INTERN (archHcubDomSize) +/* #define archHcubDomWght SCOTCH_NAME_INTERN (archHcubDomWght) Already a macro */ +#define archHcubDomDist SCOTCH_NAME_INTERN (archHcubDomDist) +#define archHcubDomFrst SCOTCH_NAME_INTERN (archHcubDomFrst) +#define archHcubDomIncl SCOTCH_NAME_INTERN (archHcubDomIncl) +#define archHcubDomLoad SCOTCH_NAME_INTERN (archHcubDomLoad) +#define archHcubDomSave SCOTCH_NAME_INTERN (archHcubDomSave) +#define archHcubDomBipart SCOTCH_NAME_INTERN (archHcubDomBipart) +#define archHcubDomMpiType SCOTCH_NAME_INTERN (archHcubDomMpiType) +#define archLtleafArchLoad SCOTCH_NAME_INTERN (archLtleafArchLoad) +#define archLtleafArchSave SCOTCH_NAME_INTERN (archLtleafArchSave) +#define archLtleafDomNum SCOTCH_NAME_INTERN (archLtleafDomNum) +#define archLtleafDomTerm SCOTCH_NAME_INTERN (archLtleafDomTerm) +#define archMesh2ArchLoad SCOTCH_NAME_INTERN (archMesh2ArchLoad) +#define archMesh2ArchSave SCOTCH_NAME_INTERN (archMesh2ArchSave) +#define archMesh2DomNum SCOTCH_NAME_INTERN (archMesh2DomNum) +#define archMesh2DomTerm SCOTCH_NAME_INTERN (archMesh2DomTerm) +#define archMesh2DomSize SCOTCH_NAME_INTERN (archMesh2DomSize) +/* #define archMesh2DomWght SCOTCH_NAME_INTERN (archMesh2DomWght) Already a macro */ +#define archMesh2DomDist SCOTCH_NAME_INTERN (archMesh2DomDist) +/* #define archMesh2DomFrst SCOTCH_NAME_INTERN (archMesh2DomFrst) Already a macro */ +#define archMesh2DomIncl SCOTCH_NAME_INTERN (archMesh2DomIncl) +/* #define archMesh2DomLoad SCOTCH_NAME_INTERN (archMesh2DomLoad) Already a macro */ +/* #define archMesh2DomSave SCOTCH_NAME_INTERN (archMesh2DomSave) Already a macro */ +#define archMesh2DomBipart SCOTCH_NAME_INTERN (archMesh2DomBipart) +#define archMesh2DomBipartO SCOTCH_NAME_INTERN (archMesh2DomBipartO) +#define archMesh2DomBipartU SCOTCH_NAME_INTERN (archMesh2DomBipartU) +#define archMesh2DomMpiType SCOTCH_NAME_INTERN (archMesh2DomMpiType) +#define archMesh3ArchLoad SCOTCH_NAME_INTERN (archMesh3ArchLoad) +#define archMesh3ArchSave SCOTCH_NAME_INTERN (archMesh3ArchSave) +#define archMesh3DomNum SCOTCH_NAME_INTERN (archMesh3DomNum) +#define archMesh3DomTerm SCOTCH_NAME_INTERN (archMesh3DomTerm) +#define archMesh3DomSize SCOTCH_NAME_INTERN (archMesh3DomSize) +/* #define archMesh3DomWght SCOTCH_NAME_INTERN (archMesh3DomWght) Already a macro */ +#define archMesh3DomDist SCOTCH_NAME_INTERN (archMesh3DomDist) +/* #define archMesh3DomFrst SCOTCH_NAME_INTERN (archMesh3DomFrst) Already a macro */ +#define archMesh3DomIncl SCOTCH_NAME_INTERN (archMesh3DomIncl) +/* #define archMesh3DomLoad SCOTCH_NAME_INTERN (archMesh3DomLoad) Already a macro */ +/* #define archMesh3DomSave SCOTCH_NAME_INTERN (archMesh3DomSave) Already a macro */ +#define archMesh3DomBipart SCOTCH_NAME_INTERN (archMesh3DomBipart) +#define archMesh3DomMpiType SCOTCH_NAME_INTERN (archMesh3DomMpiType) +#define archMeshXArchLoad SCOTCH_NAME_INTERN (archMeshXArchLoad) +#define archMeshXArchSave SCOTCH_NAME_INTERN (archMeshXArchSave) +#define archMeshXMatchInit SCOTCH_NAME_INTERN (archMeshXMatchInit) +#define archMeshXMatchExit SCOTCH_NAME_INTERN (archMeshXMatchExit) +#define archMeshXMatchMate SCOTCH_NAME_INTERN (archMeshXMatchMate) +#define archMeshXDomNum SCOTCH_NAME_INTERN (archMeshXDomNum) +#define archMeshXDomTerm SCOTCH_NAME_INTERN (archMeshXDomTerm) +#define archMeshXDomSize SCOTCH_NAME_INTERN (archMeshXDomSize) +/* #define archMeshXDomWght SCOTCH_NAME_INTERN (archMeshXDomWght) Already a macro */ +#define archMeshXDomDist SCOTCH_NAME_INTERN (archMeshXDomDist) +#define archMeshXDomFrst SCOTCH_NAME_INTERN (archMeshXDomFrst) +#define archMeshXDomIncl SCOTCH_NAME_INTERN (archMeshXDomIncl) +#define archMeshXDomLoad SCOTCH_NAME_INTERN (archMeshXDomLoad) +#define archMeshXDomSave SCOTCH_NAME_INTERN (archMeshXDomSave) +#define archMeshXDomBipart SCOTCH_NAME_INTERN (archMeshXDomBipart) +#define archMeshXDomMpiType SCOTCH_NAME_INTERN (archMeshXDomMpiType) +#define archSubArchLoad SCOTCH_NAME_INTERN (archSubArchLoad) +#define archSubArchSave SCOTCH_NAME_INTERN (archSubArchSave) +#define archSubArchFree SCOTCH_NAME_INTERN (archSubArchFree) +#define archSubArchBuild SCOTCH_NAME_INTERN (archSubArchBuild) +#define archSubArchBuild2 SCOTCH_NAME_INTERN (archSubArchBuild2) +#define archSubMatchInit SCOTCH_NAME_INTERN (archSubMatchInit) +#define archSubMatchExit SCOTCH_NAME_INTERN (archSubMatchExit) +#define archSubMatchMate SCOTCH_NAME_INTERN (archSubMatchMate) +#define archSubDomNum SCOTCH_NAME_INTERN (archSubDomNum) +#define archSubDomTerm SCOTCH_NAME_INTERN (archSubDomTerm) +#define archSubDomSize SCOTCH_NAME_INTERN (archSubDomSize) +#define archSubDomWght SCOTCH_NAME_INTERN (archSubDomWght) +#define archSubDomDist SCOTCH_NAME_INTERN (archSubDomDist) +#define archSubDomFrst SCOTCH_NAME_INTERN (archSubDomFrst) +#define archSubDomIncl SCOTCH_NAME_INTERN (archSubDomIncl) +#define archSubDomLoad SCOTCH_NAME_INTERN (archSubDomLoad) +#define archSubDomSave SCOTCH_NAME_INTERN (archSubDomSave) +#define archSubDomBipart SCOTCH_NAME_INTERN (archSubDomBipart) +#define archSubDomMpiType SCOTCH_NAME_INTERN (archSubDomMpiType) +#define archTermArchLoad SCOTCH_NAME_INTERN (archTermArchLoad) +#define archTermArchSave SCOTCH_NAME_INTERN (archTermArchSave) +#define archTermDomNum SCOTCH_NAME_INTERN (archTermDomNum) +#define archTermDomTerm SCOTCH_NAME_INTERN (archTermDomTerm) +#define archTermDomSize SCOTCH_NAME_INTERN (archTermDomSize) +/* #define archTermDomWght SCOTCH_NAME_INTERN (archTermDomWght) Already a macro */ +#define archTermDomDist SCOTCH_NAME_INTERN (archTermDomDist) +#define archTermDomFrst SCOTCH_NAME_INTERN (archTermDomFrst) +#define archTermDomIncl SCOTCH_NAME_INTERN (archTermDomIncl) +#define archTermDomLoad SCOTCH_NAME_INTERN (archTermDomLoad) +#define archTermDomSave SCOTCH_NAME_INTERN (archTermDomSave) +#define archTermDomBipart SCOTCH_NAME_INTERN (archTermDomBipart) +#define archTermDomMpiType SCOTCH_NAME_INTERN (archTermDomMpiType) +#define archTleafArchLoad SCOTCH_NAME_INTERN (archTleafArchLoad) +#define archTleafArchFree SCOTCH_NAME_INTERN (archTleafArchFree) +#define archTleafArchSave SCOTCH_NAME_INTERN (archTleafArchSave) +#define archTleafMatchInit SCOTCH_NAME_INTERN (archTleafMatchInit) +#define archTleafMatchExit SCOTCH_NAME_INTERN (archTleafMatchExit) +#define archTleafMatchMate SCOTCH_NAME_INTERN (archTleafMatchMate) +#define archTleafDomNum SCOTCH_NAME_INTERN (archTleafDomNum) +#define archTleafDomTerm SCOTCH_NAME_INTERN (archTleafDomTerm) +#define archTleafDomSize SCOTCH_NAME_INTERN (archTleafDomSize) +/* #define archTleafDomWght SCOTCH_NAME_INTERN (archTleafDomWght) Already a macro */ +#define archTleafDomDist SCOTCH_NAME_INTERN (archTleafDomDist) +#define archTleafDomFrst SCOTCH_NAME_INTERN (archTleafDomFrst) +#define archTleafDomIncl SCOTCH_NAME_INTERN (archTleafDomIncl) +#define archTleafDomLoad SCOTCH_NAME_INTERN (archTleafDomLoad) +#define archTleafDomSave SCOTCH_NAME_INTERN (archTleafDomSave) +#define archTleafDomBipart SCOTCH_NAME_INTERN (archTleafDomBipart) +#define archTleafDomMpiType SCOTCH_NAME_INTERN (archTleafDomMpiType) +/* #define archTorus2ArchLoad SCOTCH_NAME_INTERN (archTorus2ArchLoad) Already a macro */ +/* #define archTorus2ArchSave SCOTCH_NAME_INTERN (archTorus2ArchSave) Already a macro */ +/* #define archTorus2ArchFree SCOTCH_NAME_INTERN (archTorus2ArchFree) Already a macro */ +/* #define archTorus2MatchInit SCOTCH_NAME_INTERN (archTorus2MatchInit) Already a macro */ +/* #define archTorus2MatchExit SCOTCH_NAME_INTERN (archTorus2MatchExit) Already a macro */ +/* #define archTorus2MatchMate SCOTCH_NAME_INTERN (archTorus2MatchMate) Already a macro */ +/* #define archTorus2DomNum SCOTCH_NAME_INTERN (archTorus2DomNum) Already a macro */ +/* #define archTorus2DomTerm SCOTCH_NAME_INTERN (archTorus2DomTerm) Already a macro */ +/* #define archTorus2DomSize SCOTCH_NAME_INTERN (archTorus2DomSize) Already a macro */ +/* #define archTorus2DomWght SCOTCH_NAME_INTERN (archTorus2DomWght) Already a macro */ +#define archTorus2DomDist SCOTCH_NAME_INTERN (archTorus2DomDist) +/* #define archTorus2DomFrst SCOTCH_NAME_INTERN (archTorus2DomFrst) Already a macro */ +/* #define archTorus2DomIncl SCOTCH_NAME_INTERN (archTorus2DomIncl) Already a macro */ +/* #define archTorus2DomLoad SCOTCH_NAME_INTERN (archTorus2DomLoad) Already a macro */ +/* #define archTorus2DomSave SCOTCH_NAME_INTERN (archTorus2DomSave) Already a macro */ +/* #define archTorus2DomBipart SCOTCH_NAME_INTERN (archTorus2DomBipart) Already a macro */ +/* #define archTorus2DomMpiType SCOTCH_NAME_INTERN (archTorus2DomMpiType) Already a macro */ +/* #define archTorus3ArchLoad SCOTCH_NAME_INTERN (archTorus3ArchLoad) Already a macro */ +/* #define archTorus3ArchSave SCOTCH_NAME_INTERN (archTorus3ArchSave) Already a macro */ +/* #define archTorus3DomNum SCOTCH_NAME_INTERN (archTorus3DomNum) Already a macro */ +/* #define archTorus3DomTerm SCOTCH_NAME_INTERN (archTorus3DomTerm) Already a macro */ +/* #define archTorus3DomSize SCOTCH_NAME_INTERN (archTorus3DomSize) Already a macro */ +/* #define archTorus3DomWght SCOTCH_NAME_INTERN (archTorus3DomWght) Already a macro */ +#define archTorus3DomDist SCOTCH_NAME_INTERN (archTorus3DomDist) +/* #define archTorus3DomFrst SCOTCH_NAME_INTERN (archTorus3DomFrst) Already a macro */ +/* #define archTorus3DomIncl SCOTCH_NAME_INTERN (archTorus3DomIncl) Already a macro */ +/* #define archTorus3DomLoad SCOTCH_NAME_INTERN (archTorus3DomLoad) Already a macro */ +/* #define archTorus3DomSave SCOTCH_NAME_INTERN (archTorus3DomSave) Already a macro */ +/* #define archTorus3DomBipart SCOTCH_NAME_INTERN (archTorus3DomBipart) Already a macro */ +/* #define archTorus3DomMpiType SCOTCH_NAME_INTERN (archTorus3DomMpiType) Already a macro */ +/* #define archTorusXArchLoad SCOTCH_NAME_INTERN (archTorusXArchLoad) Already a macro */ +/* #define archTorusXArchSave SCOTCH_NAME_INTERN (archTorusXArchSave) Already a macro */ +/* #define archTorusXDomNum SCOTCH_NAME_INTERN (archTorusXDomNum) Already a macro */ +/* #define archTorusXDomTerm SCOTCH_NAME_INTERN (archTorusXDomTerm) Already a macro */ +/* #define archTorusXDomSize SCOTCH_NAME_INTERN (archTorusXDomSize) Already a macro */ +/* #define archTorusXDomWght SCOTCH_NAME_INTERN (archTorusXDomWght) Already a macro */ +#define archTorusXDomDist SCOTCH_NAME_INTERN (archTorusXDomDist) +/* #define archTorusXDomFrst SCOTCH_NAME_INTERN (archTorusXDomFrst) Already a macro */ +/* #define archTorusXDomIncl SCOTCH_NAME_INTERN (archTorusXDomIncl) Already a macro */ +/* #define archTorusXDomLoad SCOTCH_NAME_INTERN (archTorusXDomLoad) Already a macro */ +/* #define archTorusXDomSave SCOTCH_NAME_INTERN (archTorusXDomSave) Already a macro */ +/* #define archTorusXDomBipart SCOTCH_NAME_INTERN (archTorusXDomBipart) Already a macro */ +/* #define archTorusXDomMpiType SCOTCH_NAME_INTERN (archTorusXDomMpiType) Already a macro */ +/* #define archVcmpltArchLoad SCOTCH_NAME_INTERN (archVcmpltArchLoad) Already a macro */ +/* #define archVcmpltArchSave SCOTCH_NAME_INTERN (archVcmpltArchSave) Already a macro */ +#define archVcmpltDomNum SCOTCH_NAME_INTERN (archVcmpltDomNum) +#define archVcmpltDomTerm SCOTCH_NAME_INTERN (archVcmpltDomTerm) +#define archVcmpltDomSize SCOTCH_NAME_INTERN (archVcmpltDomSize) +/* #define archVcmpltDomWght SCOTCH_NAME_INTERN (archVcmpltDomWght) Already a macro */ +#define archVcmpltDomDist SCOTCH_NAME_INTERN (archVcmpltDomDist) +#define archVcmpltDomFrst SCOTCH_NAME_INTERN (archVcmpltDomFrst) +#define archVcmpltDomIncl SCOTCH_NAME_INTERN (archVcmpltDomIncl) +#define archVcmpltDomBipart SCOTCH_NAME_INTERN (archVcmpltDomBipart) +#define archVcmpltDomLoad SCOTCH_NAME_INTERN (archVcmpltDomLoad) +#define archVcmpltDomSave SCOTCH_NAME_INTERN (archVcmpltDomSave) +#define archVcmpltDomBipart SCOTCH_NAME_INTERN (archVcmpltDomBipart) +#define archVcmpltDomMpiType SCOTCH_NAME_INTERN (archVcmpltDomMpiType) +/* #define archVhcubArchLoad SCOTCH_NAME_INTERN (archVhcubArchLoad) Already a macro */ +/* #define archVhcubArchSave SCOTCH_NAME_INTERN (archVhcubArchSave) Already a macro */ +#define archVhcubDomNum SCOTCH_NAME_INTERN (archVhcubDomNum) +#define archVhcubDomTerm SCOTCH_NAME_INTERN (archVhcubDomTerm) +#define archVhcubDomSize SCOTCH_NAME_INTERN (archVhcubDomSize) +/* #define archVhcubDomWght SCOTCH_NAME_INTERN (archVhcubDomWght) Already a macro */ +#define archVhcubDomDist SCOTCH_NAME_INTERN (archVhcubDomDist) +#define archVhcubDomFrst SCOTCH_NAME_INTERN (archVhcubDomFrst) +#define archVhcubDomIncl SCOTCH_NAME_INTERN (archVhcubDomIncl) +#define archVhcubDomLoad SCOTCH_NAME_INTERN (archVhcubDomLoad) +#define archVhcubDomSave SCOTCH_NAME_INTERN (archVhcubDomSave) +#define archVhcubDomBipart SCOTCH_NAME_INTERN (archVhcubDomBipart) +#define archVhcubDomMpiType SCOTCH_NAME_INTERN (archVhcubDomMpiType) + +#define bdgraphInit SCOTCH_NAME_INTERN (bdgraphInit) +#define bdgraphInit2 SCOTCH_NAME_INTERN (bdgraphInit2) +#define bdgraphExit SCOTCH_NAME_INTERN (bdgraphExit) +#define bdgraphZero SCOTCH_NAME_INTERN (bdgraphZero) +#define bdgraphbipartststratab SCOTCH_NAME_INTERN (bdgraphbipartststratab) +#define bdgraphCheck SCOTCH_NAME_INTERN (bdgraphCheck) +#define bdgraphGatherAll SCOTCH_NAME_INTERN (bdgraphGatherAll) +#define bdgraphBipartBd SCOTCH_NAME_INTERN (bdgraphBipartBd) +#define bdgraphBipartDf SCOTCH_NAME_INTERN (bdgraphBipartDf) +#define bdgraphBipartEx SCOTCH_NAME_INTERN (bdgraphBipartEx) +#define bdgraphBipartMl SCOTCH_NAME_INTERN (bdgraphBipartMl) +#define bdgraphBipartSq SCOTCH_NAME_INTERN (bdgraphBipartSq) +#define bdgraphBipartSt SCOTCH_NAME_INTERN (bdgraphBipartSt) +#define bdgraphBipartZr SCOTCH_NAME_INTERN (bdgraphBipartZr) +#define bdgraphStoreInit SCOTCH_NAME_INTERN (bdgraphStoreInit) +#define bdgraphStoreExit SCOTCH_NAME_INTERN (bdgraphStoreExit) +#define bdgraphStoreSave SCOTCH_NAME_INTERN (bdgraphStoreSave) +#define bdgraphStoreUpdt SCOTCH_NAME_INTERN (bdgraphStoreUpdt) + +#define bgraphbipartststratab SCOTCH_NAME_INTERN (bgraphbipartststratab) +#define bgraphInit SCOTCH_NAME_INTERN (bgraphInit) +#define bgraphInit2 SCOTCH_NAME_INTERN (bgraphInit2) +#define bgraphInit3 SCOTCH_NAME_INTERN (bgraphInit3) +#define bgraphInit4 SCOTCH_NAME_INTERN (bgraphInit4) +#define bgraphInit5 SCOTCH_NAME_INTERN (bgraphInit5) +#define bgraphExit SCOTCH_NAME_INTERN (bgraphExit) +#define bgraphCheck SCOTCH_NAME_INTERN (bgraphCheck) +#define bgraphSwal SCOTCH_NAME_INTERN (bgraphSwal) +#define bgraphZero SCOTCH_NAME_INTERN (bgraphZero) +#define bgraphBipartBd SCOTCH_NAME_INTERN (bgraphBipartBd) +#define bgraphBipartDf SCOTCH_NAME_INTERN (bgraphBipartDf) +#define bgraphBipartDf2 SCOTCH_NAME_INTERN (bgraphBipartDf2) +#define bgraphBipartDfJoin SCOTCH_NAME_INTERN (bgraphBipartDfJoin) +#define bgraphBipartEx SCOTCH_NAME_INTERN (bgraphBipartEx) +#define bgraphBipartFm SCOTCH_NAME_INTERN (bgraphBipartFm) +#define bgraphBipartGg SCOTCH_NAME_INTERN (bgraphBipartGg) +#define bgraphBipartGp SCOTCH_NAME_INTERN (bgraphBipartGp) +#define bgraphBipartMl SCOTCH_NAME_INTERN (bgraphBipartMl) +#define bgraphBipartSt SCOTCH_NAME_INTERN (bgraphBipartSt) +#define bgraphBipartZr SCOTCH_NAME_INTERN (bgraphBipartZr) +#define bgraphStoreInit SCOTCH_NAME_INTERN (bgraphStoreInit) +#define bgraphStoreExit SCOTCH_NAME_INTERN (bgraphStoreExit) +#define bgraphStoreSave SCOTCH_NAME_INTERN (bgraphStoreSave) +#define bgraphStoreUpdt SCOTCH_NAME_INTERN (bgraphStoreUpdt) #if ((defined INTSIZE64) || (defined COMM)) -#define commAllgatherv _SCOTCHcommAllgatherv -#define commGatherv _SCOTCHcommGatherv -#define commScatterv _SCOTCHcommScatterv +#define commAllgatherv SCOTCH_NAME_INTERN (commAllgatherv) +#define commGatherv SCOTCH_NAME_INTERN (commGatherv) +#define commScatterv SCOTCH_NAME_INTERN (commScatterv) #endif /* ((defined INTSIZE64) || (defined COMM)) */ -#define dgraphAllreduceMaxSum2 _SCOTCHdgraphAllreduceMaxSum2 -#define dgraphBuild _SCOTCHdgraphBuild -#define dgraphBuild2 _SCOTCHdgraphBuild2 -#define dgraphBuild3 _SCOTCHdgraphBuild3 -#define dgraphBuild4 _SCOTCHdgraphBuild4 -#define dgraphBuildGrid3D _SCOTCHdgraphBuildGrid3D -#define dgraphBuildHcub _SCOTCHdgraphBuildHcub -#define dgraphCheck _SCOTCHdgraphCheck -#define dgraphBand _SCOTCHdgraphBand -#define dgraphBandColl _SCOTCHdgraphBandColl -#define dgraphBandPtop _SCOTCHdgraphBandPtop -#define dgraphCoarsen _SCOTCHdgraphCoarsen -#define dgraphExit _SCOTCHdgraphExit -#define dgraphFold _SCOTCHdgraphFold -#define dgraphFold2 _SCOTCHdgraphFold2 -#define dgraphFoldComm _SCOTCHdgraphFoldComm -#define dgraphFoldDup _SCOTCHdgraphFoldDup -#define dgraphFree _SCOTCHdgraphFree -#define dgraphGather _SCOTCHdgraphGather -#define dgraphGatherAll _SCOTCHdgraphGatherAll -#define dgraphGatherAll2 _SCOTCHdgraphGatherAll2 -/* #define dgraphGhst _SCOTCHdgraphGhst Already a macro */ -/* #define dgraphGhstReplace _SCOTCHdgraphGhstReplace Already a macro */ -#define dgraphGhst2 _SCOTCHdgraphGhst2 -#define dgraphGrow _SCOTCHdgraphGrow /* Used before macro replacement */ -#define dgraphGrowColl _SCOTCHdgraphGrowColl -#define dgraphGrowPtop _SCOTCHdgraphGrowPtop -#define dgraphHaloSync _SCOTCHdgraphHaloSync -#define dgraphHaloAsync _SCOTCHdgraphHaloAsync -#define dgraphHaloWait _SCOTCHdgraphHaloWait -#define dgraphHaloCheck _SCOTCHdgraphHaloCheck -#define dgraphInduceList _SCOTCHdgraphInduceList -#define dgraphInducePart _SCOTCHdgraphInducePart -#define dgraphInduce2 _SCOTCHdgraphInduce2 -#define dgraphInit _SCOTCHdgraphInit -#define dgraphLoad _SCOTCHdgraphLoad -#define dgraphMatchInit _SCOTCHdgraphMatchInit -#define dgraphMatchExit _SCOTCHdgraphMatchExit -#define dgraphMatchSync _SCOTCHdgraphMatchSync -#define dgraphMatchSyncColl _SCOTCHdgraphMatchSyncColl -#define dgraphMatchSyncPtop _SCOTCHdgraphMatchSyncPtop -#define dgraphMatchCheck _SCOTCHdgraphMatchCheck -#define dgraphMatchHl _SCOTCHdgraphMatchHl -#define dgraphMatchHy _SCOTCHdgraphMatchHy -#define dgraphMatchLc _SCOTCHdgraphMatchLc -#define dgraphMatchLy _SCOTCHdgraphMatchLy -#define dgraphMatchSc _SCOTCHdgraphMatchSc -#define dgraphRedist _SCOTCHdgraphRedist -#define dgraphSave _SCOTCHdgraphSave -#define dgraphScatter _SCOTCHdgraphScatter -#define dgraphView _SCOTCHdgraphView - -#define dmapInit _SCOTCHdmapInit -#define dmapExit _SCOTCHdmapExit -#define dmapAdd _SCOTCHdmapAdd -#define dmapTerm _SCOTCHdmapTerm -#define dmapSave _SCOTCHdmapSave - -#define dorderDispose _SCOTCHdorderDispose -#define dorderExit _SCOTCHdorderExit -#define dorderFree _SCOTCHdorderFree -#define dorderFrst _SCOTCHdorderFrst -#define dorderGather _SCOTCHdorderGather -#define dorderGatherTree _SCOTCHdorderGatherTree -#define dorderInit _SCOTCHdorderInit -#define dorderNew _SCOTCHdorderNew -#define dorderNewSequ _SCOTCHdorderNewSequ -#define dorderNewSequIndex _SCOTCHdorderNewSequIndex -#define dorderPerm _SCOTCHdorderPerm -#define dorderSave _SCOTCHdorderSave -#define dorderSaveBlock _SCOTCHdorderSaveBlock -#define dorderSaveMap _SCOTCHdorderSaveMap -#define dorderSaveTree _SCOTCHdorderSaveTree -#define dorderSaveTree2 _SCOTCHdorderSaveTree2 -#define dorderCblkDist _SCOTCHdorderCblkDist -#define dorderTreeDist _SCOTCHdorderTreeDist - -#define fiboTreeCheck _SCOTCHfiboTreeCheck -#define fiboTreeConsolidate _SCOTCHfiboTreeConsolidate -/* #define fiboTreeAdd _SCOTCHfiboTreeAdd Already a macro */ -#define fiboTreeDel _SCOTCHfiboTreeDel -#define fiboTreeExit _SCOTCHfiboTreeExit -#define fiboTreeFree _SCOTCHfiboTreeFree -#define fiboTreeInit _SCOTCHfiboTreeInit -#define fiboTreeMin _SCOTCHfiboTreeMin - -#define gainTablAddLin _SCOTCHgainTablAddLin -#define gainTablAddLog _SCOTCHgainTablAddLog -#define gainTablCheck _SCOTCHgainTablCheck +#define dgraphAllreduceMaxSum2 SCOTCH_NAME_INTERN (dgraphAllreduceMaxSum2) +#define dgraphBuild SCOTCH_NAME_INTERN (dgraphBuild) +#define dgraphBuild2 SCOTCH_NAME_INTERN (dgraphBuild2) +#define dgraphBuild3 SCOTCH_NAME_INTERN (dgraphBuild3) +#define dgraphBuild4 SCOTCH_NAME_INTERN (dgraphBuild4) +#define dgraphBuildGrid3D SCOTCH_NAME_INTERN (dgraphBuildGrid3D) +#define dgraphBuildHcub SCOTCH_NAME_INTERN (dgraphBuildHcub) +#define dgraphCheck SCOTCH_NAME_INTERN (dgraphCheck) +#define dgraphBand SCOTCH_NAME_INTERN (dgraphBand) +#define dgraphBand2Coll SCOTCH_NAME_INTERN (dgraphBand2Coll) +#define dgraphBand2Ptop SCOTCH_NAME_INTERN (dgraphBand2Ptop) +#define dgraphCoarsen SCOTCH_NAME_INTERN (dgraphCoarsen) +#define dgraphExit SCOTCH_NAME_INTERN (dgraphExit) +#define dgraphFold SCOTCH_NAME_INTERN (dgraphFold) +#define dgraphFold2 SCOTCH_NAME_INTERN (dgraphFold2) +#define dgraphFoldComm SCOTCH_NAME_INTERN (dgraphFoldComm) +#define dgraphFoldDup SCOTCH_NAME_INTERN (dgraphFoldDup) +#define dgraphFree SCOTCH_NAME_INTERN (dgraphFree) +#define dgraphGather SCOTCH_NAME_INTERN (dgraphGather) +#define dgraphGatherAll SCOTCH_NAME_INTERN (dgraphGatherAll) +#define dgraphGatherAll2 SCOTCH_NAME_INTERN (dgraphGatherAll2) +/* #define dgraphGhst SCOTCH_NAME_INTERN (dgraphGhst) Already a macro */ +/* #define dgraphGhstReplace SCOTCH_NAME_INTERN (dgraphGhstReplace) Already a macro */ +#define dgraphGhst2 SCOTCH_NAME_INTERN (dgraphGhst2) +#define dgraphGrow SCOTCH_NAME_INTERN (dgraphGrow) /* Used before macro replacement */ +#define dgraphGrow2Coll SCOTCH_NAME_INTERN (dgraphGrow2Coll) +#define dgraphGrow2Ptop SCOTCH_NAME_INTERN (dgraphGrow2Ptop) +#define dgraphHaloSync SCOTCH_NAME_INTERN (dgraphHaloSync) +#define dgraphHaloAsync SCOTCH_NAME_INTERN (dgraphHaloAsync) +#define dgraphHaloWait SCOTCH_NAME_INTERN (dgraphHaloWait) +#define dgraphHaloCheck SCOTCH_NAME_INTERN (dgraphHaloCheck) +#define dgraphInduceList SCOTCH_NAME_INTERN (dgraphInduceList) +#define dgraphInducePart SCOTCH_NAME_INTERN (dgraphInducePart) +#define dgraphInducePart2 SCOTCH_NAME_INTERN (dgraphInducePart2) +#define dgraphInduce2 SCOTCH_NAME_INTERN (dgraphInduce2) +#define dgraphInit SCOTCH_NAME_INTERN (dgraphInit) +#define dgraphLoad SCOTCH_NAME_INTERN (dgraphLoad) +#define dgraphMatchInit SCOTCH_NAME_INTERN (dgraphMatchInit) +#define dgraphMatchExit SCOTCH_NAME_INTERN (dgraphMatchExit) +#define dgraphMatchSync SCOTCH_NAME_INTERN (dgraphMatchSync) +#define dgraphMatchSyncColl SCOTCH_NAME_INTERN (dgraphMatchSyncColl) +#define dgraphMatchSyncPtop SCOTCH_NAME_INTERN (dgraphMatchSyncPtop) +#define dgraphMatchCheck SCOTCH_NAME_INTERN (dgraphMatchCheck) +#define dgraphMatchHl SCOTCH_NAME_INTERN (dgraphMatchHl) +#define dgraphMatchHy SCOTCH_NAME_INTERN (dgraphMatchHy) +#define dgraphMatchLc SCOTCH_NAME_INTERN (dgraphMatchLc) +#define dgraphMatchLy SCOTCH_NAME_INTERN (dgraphMatchLy) +#define dgraphMatchSc SCOTCH_NAME_INTERN (dgraphMatchSc) +#define dgraphRedist SCOTCH_NAME_INTERN (dgraphRedist) +#define dgraphSave SCOTCH_NAME_INTERN (dgraphSave) +#define dgraphScatter SCOTCH_NAME_INTERN (dgraphScatter) +#define dgraphView SCOTCH_NAME_INTERN (dgraphView) + +#define dmapInit SCOTCH_NAME_INTERN (dmapInit) +#define dmapExit SCOTCH_NAME_INTERN (dmapExit) +#define dmapAdd SCOTCH_NAME_INTERN (dmapAdd) +#define dmapTerm SCOTCH_NAME_INTERN (dmapTerm) +#define dmapSave SCOTCH_NAME_INTERN (dmapSave) + +#define dorderDispose SCOTCH_NAME_INTERN (dorderDispose) +#define dorderExit SCOTCH_NAME_INTERN (dorderExit) +#define dorderFree SCOTCH_NAME_INTERN (dorderFree) +#define dorderFrst SCOTCH_NAME_INTERN (dorderFrst) +#define dorderGather SCOTCH_NAME_INTERN (dorderGather) +#define dorderGatherTree SCOTCH_NAME_INTERN (dorderGatherTree) +#define dorderInit SCOTCH_NAME_INTERN (dorderInit) +#define dorderNew SCOTCH_NAME_INTERN (dorderNew) +#define dorderNewSequ SCOTCH_NAME_INTERN (dorderNewSequ) +#define dorderNewSequIndex SCOTCH_NAME_INTERN (dorderNewSequIndex) +#define dorderPerm SCOTCH_NAME_INTERN (dorderPerm) +#define dorderSave SCOTCH_NAME_INTERN (dorderSave) +#define dorderSaveBlock SCOTCH_NAME_INTERN (dorderSaveBlock) +#define dorderSaveMap SCOTCH_NAME_INTERN (dorderSaveMap) +#define dorderSaveTree SCOTCH_NAME_INTERN (dorderSaveTree) +#define dorderSaveTree2 SCOTCH_NAME_INTERN (dorderSaveTree2) +#define dorderCblkDist SCOTCH_NAME_INTERN (dorderCblkDist) +#define dorderTreeDist SCOTCH_NAME_INTERN (dorderTreeDist) + +#define fiboHeapCheck SCOTCH_NAME_INTERN (fiboHeapCheck) +#define fiboHeapConsolidate SCOTCH_NAME_INTERN (fiboHeapConsolidate) +/* #define fiboHeapAdd SCOTCH_NAME_INTERN (fiboHeapAdd) Already a macro */ +#define fiboHeapDecrease SCOTCH_NAME_INTERN (fiboHeapDecrease) +#define fiboHeapDel SCOTCH_NAME_INTERN (fiboHeapDel) +#define fiboHeapExit SCOTCH_NAME_INTERN (fiboHeapExit) +#define fiboHeapFree SCOTCH_NAME_INTERN (fiboHeapFree) +#define fiboHeapInit SCOTCH_NAME_INTERN (fiboHeapInit) +/* #define fiboHeapMin SCOTCH_NAME_INTERN (fiboHeapMin) Already a macro */ + +#define gainTablAddLin SCOTCH_NAME_INTERN (gainTablAddLin) +#define gainTablAddLog SCOTCH_NAME_INTERN (gainTablAddLog) +#define gainTablCheck SCOTCH_NAME_INTERN (gainTablCheck) #ifdef SCOTCH_DEBUG_GAIN1 /* If not already redefined as accelerated macro */ -#define gainTablDel _SCOTCHgainTablDel +#define gainTablDel SCOTCH_NAME_INTERN (gainTablDel) #endif /* SCOTCH_DEBUG_GAIN1 */ -#define gainTablExit _SCOTCHgainTablExit -#define gainTablFree _SCOTCHgainTablFree -#define gainTablFrst _SCOTCHgainTablFrst -#define gainTablInit _SCOTCHgainTablInit -#define gainTablNext _SCOTCHgainTablNext - -#define geomExit _SCOTCHgeomExit -#define geomInit _SCOTCHgeomInit - -#define graphInit _SCOTCHgraphInit -#define graphExit _SCOTCHgraphExit -#define graphFree _SCOTCHgraphFree -#define graphLoad _SCOTCHgraphLoad -#define graphLoad2 _SCOTCHgraphLoad2 -#define graphSave _SCOTCHgraphSave -#define graphBand _SCOTCHgraphBand -#define graphBase _SCOTCHgraphBase -#define graphCheck _SCOTCHgraphCheck -#define graphCoarsen _SCOTCHgraphCoarsen -#define graphInduceList _SCOTCHgraphInduceList -#define graphInducePart _SCOTCHgraphInducePart -#define graphMatch _SCOTCHgraphMatch -#define graphMatchInit _SCOTCHgraphMatchInit -#define graphGeomLoadChac _SCOTCHgraphGeomLoadChac -#define graphGeomLoadHabo _SCOTCHgraphGeomLoadHabo -#define graphGeomLoadMmkt _SCOTCHgraphGeomLoadMmkt -#define graphGeomLoadScot _SCOTCHgraphGeomLoadScot -#define graphGeomSaveChac _SCOTCHgraphGeomSaveChac -#define graphGeomSaveScot _SCOTCHgraphGeomSaveScot -#define graphGeomSaveMmkt _SCOTCHgraphGeomSaveMmkt -#define graphPtscotch _SCOTCHgraphPtscotch - -#define hallOrderHdHalmd _SCOTCHhallOrderHdHalmd -#define hallOrderHfR2hamdf4 _SCOTCHhallOrderHfR2hamdf4 -#define hallOrderHxBuild _SCOTCHhallOrderHxBuild -#define hallOrderHxTree _SCOTCHhallOrderHxTree - -#define hdgraphorderststratab _SCOTCHhdgraphorderststratab -#define hdgraphInit _SCOTCHhdgraphInit -#define hdgraphExit _SCOTCHhdgraphExit -#define hdgraphCheck _SCOTCHhdgraphCheck -#define hdgraphFold _SCOTCHhdgraphFold -#define hdgraphFold2 _SCOTCHhdgraphFold2 -#define hdgraphGather _SCOTCHhdgraphGather -#define hdgraphInduceList _SCOTCHhdgraphInduceList -#define hdgraphOrderNd _SCOTCHhdgraphOrderNd -#define hdgraphOrderSi _SCOTCHhdgraphOrderSi -#define hdgraphOrderSq _SCOTCHhdgraphOrderSq -#define hdgraphOrderSq2 _SCOTCHhdgraphOrderSq2 -#define hdgraphOrderSt _SCOTCHhdgraphOrderSt - -#define hgraphorderststratab _SCOTCHhgraphorderststratab -#define hgraphInit _SCOTCHhgraphInit -#define hgraphExit _SCOTCHhgraphExit -#define hgraphFree _SCOTCHhgraphFree -#define hgraphInduceList _SCOTCHhgraphInduceList -#define hgraphCheck _SCOTCHhgraphCheck -#define hgraphOrderBl _SCOTCHhgraphOrderBl -#define hgraphOrderCp _SCOTCHhgraphOrderCp -#define hgraphOrderGp _SCOTCHhgraphOrderGp -#define hgraphOrderHd _SCOTCHhgraphOrderHd -#define hgraphOrderHf _SCOTCHhgraphOrderHf -#define hgraphOrderHxFill _SCOTCHhgraphOrderHxFill -#define hgraphOrderKp _SCOTCHhgraphOrderKp -#define hgraphOrderNd _SCOTCHhgraphOrderNd -#define hgraphOrderSi _SCOTCHhgraphOrderSi -#define hgraphOrderSt _SCOTCHhgraphOrderSt -#define hgraphUnhalo _SCOTCHhgraphUnhalo - -#define hmeshorderststratab _SCOTCHhmeshorderststratab -#define hmeshExit _SCOTCHhmeshExit -#define hmeshBase _SCOTCHhmeshBase -#define hmeshCheck _SCOTCHhmeshCheck -#define hmeshInducePart _SCOTCHhmeshInducePart -#define hmeshHgraph _SCOTCHhmeshHgraph -#define hmeshMesh _SCOTCHhmeshMesh -#define hmeshOrderBl _SCOTCHhmeshOrderBl -#define hmeshOrderCp _SCOTCHhmeshOrderCp -#define hmeshOrderGp _SCOTCHhmeshOrderGp -#define hmeshOrderGr _SCOTCHhmeshOrderGr -#define hmeshOrderHd _SCOTCHhmeshOrderHd -#define hmeshOrderHf _SCOTCHhmeshOrderHf -#define hmeshOrderHxFill _SCOTCHhmeshOrderHxFill -#define hmeshOrderNd _SCOTCHhmeshOrderNd -#define hmeshOrderSi _SCOTCHhmeshOrderSi -#define hmeshOrderSt _SCOTCHhmeshOrderSt - -#define kdgraphmapststratab _SCOTCHkdgraphmapststratab -#define kdgraphInit _SCOTCHkdgraphInit -#define kdgraphExit _SCOTCHkdgraphExit -#define kdgraphGather _SCOTCHkdgraphGather -#define kdgraphMapRb _SCOTCHkdgraphMapRb -#define kdgraphMapRbAdd2 _SCOTCHkdgraphMapRbAdd2 -#define kdgraphMapRbAddBoth _SCOTCHkdgraphMapRbAddBoth -#define kdgraphMapRbAddOne _SCOTCHkdgraphMapRbAddOne -#define kdgraphMapRbAddPart _SCOTCHkdgraphMapRbAddPart -#define kdgraphMapRbMap _SCOTCHkdgraphMapRbMap -#define kdgraphMapRbPart _SCOTCHkdgraphMapRbPart -#define kdgraphMapSt _SCOTCHkdgraphMapSt - -#define kgraphmapststratab _SCOTCHkgraphmapststratab -#define kgraphInit _SCOTCHkgraphInit -#define kgraphExit _SCOTCHkgraphExit -#define kgraphCheck _SCOTCHkgraphCheck -#define kgraphBand _SCOTCHkgraphBand -#define kgraphCost _SCOTCHkgraphCost -#define kgraphFron _SCOTCHkgraphFron -#define kgraphFrst _SCOTCHkgraphFrst -#define kgraphMapBd _SCOTCHkgraphMapBd -#define kgraphMapCp _SCOTCHkgraphMapCp -#define kgraphMapDf _SCOTCHkgraphMapDf -#define kgraphMapEx _SCOTCHkgraphMapEx -#define kgraphMapFm _SCOTCHkgraphMapFm -#define kgraphMapMl _SCOTCHkgraphMapMl -#define kgraphMapRb _SCOTCHkgraphMapRb -#define kgraphMapRbMap _SCOTCHkgraphMapRbMap -#define kgraphMapRbBgraph _SCOTCHkgraphMapRbBgraph -#define kgraphMapRbPart _SCOTCHkgraphMapRbPart -#define kgraphMapRbVfloBuild _SCOTCHkgraphMapRbVfloBuild -#define kgraphMapRbVfloMerge _SCOTCHkgraphMapRbVfloMerge -#define kgraphMapRbVfloSplit _SCOTCHkgraphMapRbVfloSplit -#define kgraphMapSt _SCOTCHkgraphMapSt -#define kgraphStoreInit _SCOTCHkgraphStoreInit -#define kgraphStoreExit _SCOTCHkgraphStoreExit -#define kgraphStoreSave _SCOTCHkgraphStoreSave -#define kgraphStoreUpdt _SCOTCHkgraphStoreUpdt - -#define listInit _SCOTCHlistInit -#define listExit _SCOTCHlistExit -#define listAlloc _SCOTCHlistAlloc -#define listFree _SCOTCHlistFree -#define listLoad _SCOTCHlistLoad -#define listSave _SCOTCHlistSave -#define listSort _SCOTCHlistSort -#define listCopy _SCOTCHlistCopy - -#define mapInit _SCOTCHmapInit -#define mapInit2 _SCOTCHmapInit2 -#define mapExit _SCOTCHmapExit -#define mapAlloc _SCOTCHmapAlloc -#define mapBuild _SCOTCHmapBuild -#define mapCopy _SCOTCHmapCopy -#define mapFree _SCOTCHmapFree -#define mapFrst _SCOTCHmapFrst -#define mapLoad _SCOTCHmapLoad -#define mapMerge _SCOTCHmapMerge -#define mapResize _SCOTCHmapResize -#define mapResize2 _SCOTCHmapResize2 -#define mapSave _SCOTCHmapSave -#define mapTerm _SCOTCHmapTerm - -#define meshInit _SCOTCHmeshInit -#define meshExit _SCOTCHmeshExit -#define meshFree _SCOTCHmeshFree -#define meshLoad _SCOTCHmeshLoad -#define meshSave _SCOTCHmeshSave -#define meshBase _SCOTCHmeshBase -#define meshGraph _SCOTCHmeshGraph -#define meshCoarsen _SCOTCHmeshCoarsen -#define meshInduceList _SCOTCHmeshInduceList -#define meshInducePart _SCOTCHmeshInducePart -#define meshInduceSepa _SCOTCHmeshInduceSepa -#define meshCheck _SCOTCHmeshCheck -#define meshGeomLoadHabo _SCOTCHmeshGeomLoadHabo -#define meshGeomLoadScot _SCOTCHmeshGeomLoadScot -#define meshGeomSaveScot _SCOTCHmeshGeomSaveScot - -#define orderInit _SCOTCHorderInit -#define orderExit _SCOTCHorderExit -#define orderLoad _SCOTCHorderLoad -#define orderSave _SCOTCHorderSave -#define orderSaveMap _SCOTCHorderSaveMap -#define orderSaveTree _SCOTCHorderSaveTree -#define orderCheck _SCOTCHorderCheck -#define orderPeri _SCOTCHorderPeri -#define orderRang _SCOTCHorderRang -#define orderTree _SCOTCHorderTree - -#define parsermethtokentab _SCOTCHparsermethtokentab -#define parserparamcurr _SCOTCHparserparamcurr -#define parserstratcurr _SCOTCHparserstratcurr -#define parserstrattab _SCOTCHparserstrattab - -#define stratdummy _SCOTCHstratdummy -#define stratInit _SCOTCHstratInit -#define stratExit _SCOTCHstratExit -#define stratSave _SCOTCHstratSave -#define stratCondEval _SCOTCHstratCondEval -#define stratCondExit _SCOTCHstratCondExit -#define stratCondSave _SCOTCHstratCondSave -#define stratParserInit _SCOTCHstratParserInit -#define stratParserInput _SCOTCHstratParserInput -#define stratParserLex _SCOTCHstratParserLex -#define stratParserRemain _SCOTCHstratParserRemain -#define stratParserSelect _SCOTCHstratParserSelect -#define stratParserError _SCOTCHstratParserError -#define stratParserParse _SCOTCHstratParserParse -#define stratParserParse2 _SCOTCHstratParserParse2 -#define stratTestEval _SCOTCHstratTestEval -#define stratTestExit _SCOTCHstratTestExit -#define stratTestSave _SCOTCHstratTestSave - -#define threadLaunch _SCOTCHthreadLaunch -#define threadReduce _SCOTCHthreadReduce -#define threadScan _SCOTCHthreadScan - -#define vdgraphseparateststratab _SCOTCHvdgraphseparateststratab -#define vdgraphCheck _SCOTCHvdgraphCheck -#define vdgraphExit _SCOTCHvdgraphExit -#define vdgraphGatherAll _SCOTCHvdgraphGatherAll -#define vdgraphInit _SCOTCHvdgraphInit -#define vdgraphSeparateBd _SCOTCHvdgraphSeparateBd -#define vdgraphSeparateDf _SCOTCHvdgraphSeparateDf -#define vdgraphSeparateMl _SCOTCHvdgraphSeparateMl -#define vdgraphSeparateSq _SCOTCHvdgraphSeparateSq -#define vdgraphSeparateSt _SCOTCHvdgraphSeparateSt -#define vdgraphSeparateZr _SCOTCHvdgraphSeparateZr -#define vdgraphStoreExit _SCOTCHvdgraphStoreExit -#define vdgraphStoreInit _SCOTCHvdgraphStoreInit -#define vdgraphStoreSave _SCOTCHvdgraphStoreSave -#define vdgraphStoreUpdt _SCOTCHvdgraphStoreUpdt -#define vdgraphZero _SCOTCHvdgraphZero - -#define vgraphseparateststratab _SCOTCHvgraphseparateststratab -#define vgraphInit _SCOTCHvgraphInit -#define vgraphExit _SCOTCHvgraphExit -#define vgraphCheck _SCOTCHvgraphCheck -#define vgraphZero _SCOTCHvgraphZero -#define vgraphSeparateBd _SCOTCHvgraphSeparateBd -#define vgraphSeparateDf _SCOTCHvgraphSeparateDf -#define vgraphSeparateEs _SCOTCHvgraphSeparateEs -#define vgraphSeparateFm _SCOTCHvgraphSeparateFm -#define vgraphSeparateGg _SCOTCHvgraphSeparateGg -#define vgraphSeparateGp _SCOTCHvgraphSeparateGp -#define vgraphSeparateMl _SCOTCHvgraphSeparateMl -#define vgraphSeparateMt _SCOTCHvgraphSeparateMt -#define vgraphSeparateSt _SCOTCHvgraphSeparateSt -#define vgraphSeparateTh _SCOTCHvgraphSeparateTh -#define vgraphSeparateVw _SCOTCHvgraphSeparateVw -#define vgraphSeparateZr _SCOTCHvgraphSeparateZr -#define vgraphStoreInit _SCOTCHvgraphStoreInit -#define vgraphStoreExit _SCOTCHvgraphStoreExit -#define vgraphStoreSave _SCOTCHvgraphStoreSave -#define vgraphStoreUpdt _SCOTCHvgraphStoreUpdt - -#define vmeshseparateststratab _SCOTCHvmeshseparateststratab -#define vmeshExit _SCOTCHvmeshExit -#define vmeshCheck _SCOTCHvmeshCheck -#define vmeshZero _SCOTCHvmeshZero -#define vmeshSeparateFm _SCOTCHvmeshSeparateFm -#define vmeshSeparateGg _SCOTCHvmeshSeparateGg -#define vmeshSeparateGr _SCOTCHvmeshSeparateGr -#define vmeshSeparateMl _SCOTCHvmeshSeparateMl -#define vmeshSeparateSt _SCOTCHvmeshSeparateSt -#define vmeshSeparateZr _SCOTCHvmeshSeparateZr -#define vmeshStoreInit _SCOTCHvmeshStoreInit -#define vmeshStoreExit _SCOTCHvmeshStoreExit -#define vmeshStoreSave _SCOTCHvmeshStoreSave -#define vmeshStoreUpdt _SCOTCHvmeshStoreUpdt - -#define wgraphpartststratab _SCOTCHwgraphpartststratab -#define wgraphAlloc _SCOTCHwgraphAlloc -#define wgraphInit _SCOTCHwgraphInit -#define wgraphExit _SCOTCHwgraphExit -#define wgraphCheck _SCOTCHwgraphCheck -#define wgraphZero _SCOTCHwgraphZero -#define wgraphPartFm _SCOTCHwgraphPartFm -#define wgraphPartGg _SCOTCHwgraphPartGg -#define wgraphPartGp _SCOTCHwgraphPartGp -#define wgraphPartMl _SCOTCHwgraphPartMl -#define wgraphPartRb _SCOTCHwgraphPartRb -#define wgraphPartSt _SCOTCHwgraphPartSt -#define wgraphPartZr _SCOTCHwgraphPartZr -#define wgraphStoreInit _SCOTCHwgraphStoreInit -#define wgraphStoreExit _SCOTCHwgraphStoreExit -#define wgraphStoreSave _SCOTCHwgraphStoreSave -#define wgraphStoreUpdt _SCOTCHwgraphStoreUpdt +#define gainTablExit SCOTCH_NAME_INTERN (gainTablExit) +#define gainTablFree SCOTCH_NAME_INTERN (gainTablFree) +#define gainTablFrst SCOTCH_NAME_INTERN (gainTablFrst) +#define gainTablInit SCOTCH_NAME_INTERN (gainTablInit) +#define gainTablNext SCOTCH_NAME_INTERN (gainTablNext) + +#define geomExit SCOTCH_NAME_INTERN (geomExit) +#define geomInit SCOTCH_NAME_INTERN (geomInit) + +#define graphInit SCOTCH_NAME_INTERN (graphInit) +#define graphExit SCOTCH_NAME_INTERN (graphExit) +#define graphFree SCOTCH_NAME_INTERN (graphFree) +#define graphLoad SCOTCH_NAME_INTERN (graphLoad) +#define graphLoad2 SCOTCH_NAME_INTERN (graphLoad2) +#define graphSave SCOTCH_NAME_INTERN (graphSave) +#define graphBand SCOTCH_NAME_INTERN (graphBand) +#define graphBase SCOTCH_NAME_INTERN (graphBase) +#define graphCheck SCOTCH_NAME_INTERN (graphCheck) +#define graphClone SCOTCH_NAME_INTERN (graphClone) +#define graphCoarsen SCOTCH_NAME_INTERN (graphCoarsen) +#define graphCoarsenBuild SCOTCH_NAME_INTERN (graphCoarsenBuild) +#define graphCoarsenMatch SCOTCH_NAME_INTERN (graphCoarsenMatch) +#define graphDiamPV SCOTCH_NAME_INTERN (graphDiamPV) +#define graphIelo SCOTCH_NAME_INTERN (graphIelo) +#define graphInduceList SCOTCH_NAME_INTERN (graphInduceList) +#define graphInducePart SCOTCH_NAME_INTERN (graphInducePart) +#define graphMatch SCOTCH_NAME_INTERN (graphMatch) +#define graphMatchInit SCOTCH_NAME_INTERN (graphMatchInit) +#define graphMatchNone SCOTCH_NAME_INTERN (graphMatchNone) +#define graphGeomLoadChac SCOTCH_NAME_INTERN (graphGeomLoadChac) +#define graphGeomLoadHabo SCOTCH_NAME_INTERN (graphGeomLoadHabo) +#define graphGeomLoadMmkt SCOTCH_NAME_INTERN (graphGeomLoadMmkt) +#define graphGeomLoadScot SCOTCH_NAME_INTERN (graphGeomLoadScot) +#define graphGeomSaveChac SCOTCH_NAME_INTERN (graphGeomSaveChac) +#define graphGeomSaveScot SCOTCH_NAME_INTERN (graphGeomSaveScot) +#define graphGeomSaveMmkt SCOTCH_NAME_INTERN (graphGeomSaveMmkt) +#define graphPtscotch SCOTCH_NAME_INTERN (graphPtscotch) + +#define hallOrderHdHalmd SCOTCH_NAME_INTERN (hallOrderHdHalmd) +#define hallOrderHfR2hamdf4 SCOTCH_NAME_INTERN (hallOrderHfR2hamdf4) +#define hallOrderHxBuild SCOTCH_NAME_INTERN (hallOrderHxBuild) +#define hallOrderHxTree SCOTCH_NAME_INTERN (hallOrderHxTree) + +#define hdgraphorderststratab SCOTCH_NAME_INTERN (hdgraphorderststratab) +#define hdgraphInit SCOTCH_NAME_INTERN (hdgraphInit) +#define hdgraphExit SCOTCH_NAME_INTERN (hdgraphExit) +#define hdgraphCheck SCOTCH_NAME_INTERN (hdgraphCheck) +#define hdgraphFold SCOTCH_NAME_INTERN (hdgraphFold) +#define hdgraphFold2 SCOTCH_NAME_INTERN (hdgraphFold2) +#define hdgraphGather SCOTCH_NAME_INTERN (hdgraphGather) +#define hdgraphInduceList SCOTCH_NAME_INTERN (hdgraphInduceList) +#define hdgraphOrderNd SCOTCH_NAME_INTERN (hdgraphOrderNd) +#define hdgraphOrderSi SCOTCH_NAME_INTERN (hdgraphOrderSi) +#define hdgraphOrderSq SCOTCH_NAME_INTERN (hdgraphOrderSq) +#define hdgraphOrderSq2 SCOTCH_NAME_INTERN (hdgraphOrderSq2) +#define hdgraphOrderSt SCOTCH_NAME_INTERN (hdgraphOrderSt) + +#define hgraphorderststratab SCOTCH_NAME_INTERN (hgraphorderststratab) +#define hgraphInit SCOTCH_NAME_INTERN (hgraphInit) +#define hgraphExit SCOTCH_NAME_INTERN (hgraphExit) +#define hgraphFree SCOTCH_NAME_INTERN (hgraphFree) +#define hgraphInduceList SCOTCH_NAME_INTERN (hgraphInduceList) +#define hgraphCheck SCOTCH_NAME_INTERN (hgraphCheck) +#define hgraphOrderBl SCOTCH_NAME_INTERN (hgraphOrderBl) +#define hgraphOrderCc SCOTCH_NAME_INTERN (hgraphOrderCc) +#define hgraphOrderCp SCOTCH_NAME_INTERN (hgraphOrderCp) +#define hgraphOrderGp SCOTCH_NAME_INTERN (hgraphOrderGp) +#define hgraphOrderHd SCOTCH_NAME_INTERN (hgraphOrderHd) +#define hgraphOrderHf SCOTCH_NAME_INTERN (hgraphOrderHf) +#define hgraphOrderHxFill SCOTCH_NAME_INTERN (hgraphOrderHxFill) +#define hgraphOrderKp SCOTCH_NAME_INTERN (hgraphOrderKp) +#define hgraphOrderNd SCOTCH_NAME_INTERN (hgraphOrderNd) +#define hgraphOrderSi SCOTCH_NAME_INTERN (hgraphOrderSi) +#define hgraphOrderSt SCOTCH_NAME_INTERN (hgraphOrderSt) +#define hgraphUnhalo SCOTCH_NAME_INTERN (hgraphUnhalo) + +#define hmeshorderststratab SCOTCH_NAME_INTERN (hmeshorderststratab) +#define hmeshExit SCOTCH_NAME_INTERN (hmeshExit) +#define hmeshBase SCOTCH_NAME_INTERN (hmeshBase) +#define hmeshCheck SCOTCH_NAME_INTERN (hmeshCheck) +#define hmeshInducePart SCOTCH_NAME_INTERN (hmeshInducePart) +#define hmeshHgraph SCOTCH_NAME_INTERN (hmeshHgraph) +#define hmeshMesh SCOTCH_NAME_INTERN (hmeshMesh) +#define hmeshOrderBl SCOTCH_NAME_INTERN (hmeshOrderBl) +#define hmeshOrderCp SCOTCH_NAME_INTERN (hmeshOrderCp) +#define hmeshOrderGp SCOTCH_NAME_INTERN (hmeshOrderGp) +#define hmeshOrderGr SCOTCH_NAME_INTERN (hmeshOrderGr) +#define hmeshOrderHd SCOTCH_NAME_INTERN (hmeshOrderHd) +#define hmeshOrderHf SCOTCH_NAME_INTERN (hmeshOrderHf) +#define hmeshOrderHxFill SCOTCH_NAME_INTERN (hmeshOrderHxFill) +#define hmeshOrderNd SCOTCH_NAME_INTERN (hmeshOrderNd) +#define hmeshOrderSi SCOTCH_NAME_INTERN (hmeshOrderSi) +#define hmeshOrderSt SCOTCH_NAME_INTERN (hmeshOrderSt) + +#define kdgraphmapststratab SCOTCH_NAME_INTERN (kdgraphmapststratab) +#define kdgraphInit SCOTCH_NAME_INTERN (kdgraphInit) +#define kdgraphExit SCOTCH_NAME_INTERN (kdgraphExit) +#define kdgraphGather SCOTCH_NAME_INTERN (kdgraphGather) +#define kdgraphMapRb SCOTCH_NAME_INTERN (kdgraphMapRb) +#define kdgraphMapRbAdd2 SCOTCH_NAME_INTERN (kdgraphMapRbAdd2) +#define kdgraphMapRbAddBoth SCOTCH_NAME_INTERN (kdgraphMapRbAddBoth) +#define kdgraphMapRbAddOne SCOTCH_NAME_INTERN (kdgraphMapRbAddOne) +#define kdgraphMapRbAddPart SCOTCH_NAME_INTERN (kdgraphMapRbAddPart) +#define kdgraphMapRbMap SCOTCH_NAME_INTERN (kdgraphMapRbMap) +#define kdgraphMapRbPart SCOTCH_NAME_INTERN (kdgraphMapRbPart) +#define kdgraphMapSt SCOTCH_NAME_INTERN (kdgraphMapSt) + +#define kgraphmapststratab SCOTCH_NAME_INTERN (kgraphmapststratab) +#define kgraphInit SCOTCH_NAME_INTERN (kgraphInit) +#define kgraphExit SCOTCH_NAME_INTERN (kgraphExit) +#define kgraphCheck SCOTCH_NAME_INTERN (kgraphCheck) +#define kgraphBand SCOTCH_NAME_INTERN (kgraphBand) +#define kgraphCost SCOTCH_NAME_INTERN (kgraphCost) +#define kgraphFron SCOTCH_NAME_INTERN (kgraphFron) +#define kgraphFrst SCOTCH_NAME_INTERN (kgraphFrst) +#define kgraphMapBd SCOTCH_NAME_INTERN (kgraphMapBd) +#define kgraphMapCp SCOTCH_NAME_INTERN (kgraphMapCp) +#define kgraphMapDf SCOTCH_NAME_INTERN (kgraphMapDf) +#define kgraphMapEx SCOTCH_NAME_INTERN (kgraphMapEx) +#define kgraphMapFm SCOTCH_NAME_INTERN (kgraphMapFm) +#define kgraphMapMl SCOTCH_NAME_INTERN (kgraphMapMl) +#define kgraphMapRb SCOTCH_NAME_INTERN (kgraphMapRb) +#define kgraphMapRbMap SCOTCH_NAME_INTERN (kgraphMapRbMap) +#define kgraphMapRbBgraph SCOTCH_NAME_INTERN (kgraphMapRbBgraph) +#define kgraphMapRbPart SCOTCH_NAME_INTERN (kgraphMapRbPart) +#define kgraphMapRbVfloBuild SCOTCH_NAME_INTERN (kgraphMapRbVfloBuild) +#define kgraphMapRbVfloMerge SCOTCH_NAME_INTERN (kgraphMapRbVfloMerge) +#define kgraphMapRbVfloSplit SCOTCH_NAME_INTERN (kgraphMapRbVfloSplit) +#define kgraphMapSt SCOTCH_NAME_INTERN (kgraphMapSt) +#define kgraphStoreInit SCOTCH_NAME_INTERN (kgraphStoreInit) +#define kgraphStoreExit SCOTCH_NAME_INTERN (kgraphStoreExit) +#define kgraphStoreSave SCOTCH_NAME_INTERN (kgraphStoreSave) +#define kgraphStoreUpdt SCOTCH_NAME_INTERN (kgraphStoreUpdt) + +#define listInit SCOTCH_NAME_INTERN (listInit) +#define listExit SCOTCH_NAME_INTERN (listExit) +#define listAlloc SCOTCH_NAME_INTERN (listAlloc) +#define listFree SCOTCH_NAME_INTERN (listFree) +#define listLoad SCOTCH_NAME_INTERN (listLoad) +#define listSave SCOTCH_NAME_INTERN (listSave) +#define listSort SCOTCH_NAME_INTERN (listSort) +#define listCopy SCOTCH_NAME_INTERN (listCopy) + +#define mapInit SCOTCH_NAME_INTERN (mapInit) +#define mapInit2 SCOTCH_NAME_INTERN (mapInit2) +#define mapExit SCOTCH_NAME_INTERN (mapExit) +#define mapAlloc SCOTCH_NAME_INTERN (mapAlloc) +#define mapBuild SCOTCH_NAME_INTERN (mapBuild) +#define mapCopy SCOTCH_NAME_INTERN (mapCopy) +#define mapFree SCOTCH_NAME_INTERN (mapFree) +#define mapFrst SCOTCH_NAME_INTERN (mapFrst) +#define mapLoad SCOTCH_NAME_INTERN (mapLoad) +#define mapMerge SCOTCH_NAME_INTERN (mapMerge) +#define mapResize SCOTCH_NAME_INTERN (mapResize) +#define mapResize2 SCOTCH_NAME_INTERN (mapResize2) +#define mapSave SCOTCH_NAME_INTERN (mapSave) +#define mapTerm SCOTCH_NAME_INTERN (mapTerm) + +#define meshInit SCOTCH_NAME_INTERN (meshInit) +#define meshExit SCOTCH_NAME_INTERN (meshExit) +#define meshFree SCOTCH_NAME_INTERN (meshFree) +#define meshLoad SCOTCH_NAME_INTERN (meshLoad) +#define meshSave SCOTCH_NAME_INTERN (meshSave) +#define meshBase SCOTCH_NAME_INTERN (meshBase) +#define meshGraph SCOTCH_NAME_INTERN (meshGraph) +#define meshCoarsen SCOTCH_NAME_INTERN (meshCoarsen) +#define meshInduceList SCOTCH_NAME_INTERN (meshInduceList) +#define meshInducePart SCOTCH_NAME_INTERN (meshInducePart) +#define meshInduceSepa SCOTCH_NAME_INTERN (meshInduceSepa) +#define meshCheck SCOTCH_NAME_INTERN (meshCheck) +#define meshGeomLoadHabo SCOTCH_NAME_INTERN (meshGeomLoadHabo) +#define meshGeomLoadScot SCOTCH_NAME_INTERN (meshGeomLoadScot) +#define meshGeomSaveScot SCOTCH_NAME_INTERN (meshGeomSaveScot) + +#define orderInit SCOTCH_NAME_INTERN (orderInit) +#define orderExit SCOTCH_NAME_INTERN (orderExit) +#define orderLoad SCOTCH_NAME_INTERN (orderLoad) +#define orderSave SCOTCH_NAME_INTERN (orderSave) +#define orderSaveMap SCOTCH_NAME_INTERN (orderSaveMap) +#define orderSaveTree SCOTCH_NAME_INTERN (orderSaveTree) +#define orderCheck SCOTCH_NAME_INTERN (orderCheck) +#define orderPeri SCOTCH_NAME_INTERN (orderPeri) +#define orderRang SCOTCH_NAME_INTERN (orderRang) +#define orderTree SCOTCH_NAME_INTERN (orderTree) + +#define parsermethtokentab SCOTCH_NAME_INTERN (parsermethtokentab) +#define parserparamcurr SCOTCH_NAME_INTERN (parserparamcurr) +#define parserstratcurr SCOTCH_NAME_INTERN (parserstratcurr) +#define parserstrattab SCOTCH_NAME_INTERN (parserstrattab) + +#define stratdummy SCOTCH_NAME_INTERN (stratdummy) +#define stratInit SCOTCH_NAME_INTERN (stratInit) +#define stratExit SCOTCH_NAME_INTERN (stratExit) +#define stratSave SCOTCH_NAME_INTERN (stratSave) +#define stratCondEval SCOTCH_NAME_INTERN (stratCondEval) +#define stratCondExit SCOTCH_NAME_INTERN (stratCondExit) +#define stratCondSave SCOTCH_NAME_INTERN (stratCondSave) +#define stratParserInit SCOTCH_NAME_INTERN (stratParserInit) +#define stratParserInput SCOTCH_NAME_INTERN (stratParserInput) +#define stratParserLex SCOTCH_NAME_INTERN (stratParserLex) +#define stratParserRemain SCOTCH_NAME_INTERN (stratParserRemain) +#define stratParserSelect SCOTCH_NAME_INTERN (stratParserSelect) +#define stratParserParse SCOTCH_NAME_INTERN (stratParserParse) +#define stratParserParse2 SCOTCH_NAME_INTERN (stratParserParse2) +#define stratTestEval SCOTCH_NAME_INTERN (stratTestEval) +#define stratTestExit SCOTCH_NAME_INTERN (stratTestExit) +#define stratTestSave SCOTCH_NAME_INTERN (stratTestSave) + +#define threadLaunch SCOTCH_NAME_INTERN (threadLaunch) +#define threadReduce SCOTCH_NAME_INTERN (threadReduce) +#define threadScan SCOTCH_NAME_INTERN (threadScan) + +#define vdgraphseparateststratab SCOTCH_NAME_INTERN (vdgraphseparateststratab) +#define vdgraphCheck SCOTCH_NAME_INTERN (vdgraphCheck) +#define vdgraphExit SCOTCH_NAME_INTERN (vdgraphExit) +#define vdgraphGatherAll SCOTCH_NAME_INTERN (vdgraphGatherAll) +#define vdgraphInit SCOTCH_NAME_INTERN (vdgraphInit) +#define vdgraphSeparateBd SCOTCH_NAME_INTERN (vdgraphSeparateBd) +#define vdgraphSeparateDf SCOTCH_NAME_INTERN (vdgraphSeparateDf) +#define vdgraphSeparateMl SCOTCH_NAME_INTERN (vdgraphSeparateMl) +#define vdgraphSeparateSq SCOTCH_NAME_INTERN (vdgraphSeparateSq) +#define vdgraphSeparateSt SCOTCH_NAME_INTERN (vdgraphSeparateSt) +#define vdgraphSeparateZr SCOTCH_NAME_INTERN (vdgraphSeparateZr) +#define vdgraphStoreExit SCOTCH_NAME_INTERN (vdgraphStoreExit) +#define vdgraphStoreInit SCOTCH_NAME_INTERN (vdgraphStoreInit) +#define vdgraphStoreSave SCOTCH_NAME_INTERN (vdgraphStoreSave) +#define vdgraphStoreUpdt SCOTCH_NAME_INTERN (vdgraphStoreUpdt) +#define vdgraphZero SCOTCH_NAME_INTERN (vdgraphZero) + +#define vgraphseparateststratab SCOTCH_NAME_INTERN (vgraphseparateststratab) +#define vgraphInit SCOTCH_NAME_INTERN (vgraphInit) +#define vgraphExit SCOTCH_NAME_INTERN (vgraphExit) +#define vgraphCheck SCOTCH_NAME_INTERN (vgraphCheck) +#define vgraphZero SCOTCH_NAME_INTERN (vgraphZero) +#define vgraphSeparateBd SCOTCH_NAME_INTERN (vgraphSeparateBd) +#define vgraphSeparateDf SCOTCH_NAME_INTERN (vgraphSeparateDf) +#define vgraphSeparateEs SCOTCH_NAME_INTERN (vgraphSeparateEs) +#define vgraphSeparateFm SCOTCH_NAME_INTERN (vgraphSeparateFm) +#define vgraphSeparateGg SCOTCH_NAME_INTERN (vgraphSeparateGg) +#define vgraphSeparateGp SCOTCH_NAME_INTERN (vgraphSeparateGp) +#define vgraphSeparateMl SCOTCH_NAME_INTERN (vgraphSeparateMl) +#define vgraphSeparateMt SCOTCH_NAME_INTERN (vgraphSeparateMt) +#define vgraphSeparateSt SCOTCH_NAME_INTERN (vgraphSeparateSt) +#define vgraphSeparateTh SCOTCH_NAME_INTERN (vgraphSeparateTh) +#define vgraphSeparateVw SCOTCH_NAME_INTERN (vgraphSeparateVw) +#define vgraphSeparateZr SCOTCH_NAME_INTERN (vgraphSeparateZr) +#define vgraphStoreInit SCOTCH_NAME_INTERN (vgraphStoreInit) +#define vgraphStoreExit SCOTCH_NAME_INTERN (vgraphStoreExit) +#define vgraphStoreSave SCOTCH_NAME_INTERN (vgraphStoreSave) +#define vgraphStoreUpdt SCOTCH_NAME_INTERN (vgraphStoreUpdt) + +#define vmeshseparateststratab SCOTCH_NAME_INTERN (vmeshseparateststratab) +#define vmeshExit SCOTCH_NAME_INTERN (vmeshExit) +#define vmeshCheck SCOTCH_NAME_INTERN (vmeshCheck) +#define vmeshZero SCOTCH_NAME_INTERN (vmeshZero) +#define vmeshSeparateFm SCOTCH_NAME_INTERN (vmeshSeparateFm) +#define vmeshSeparateGg SCOTCH_NAME_INTERN (vmeshSeparateGg) +#define vmeshSeparateGr SCOTCH_NAME_INTERN (vmeshSeparateGr) +#define vmeshSeparateMl SCOTCH_NAME_INTERN (vmeshSeparateMl) +#define vmeshSeparateSt SCOTCH_NAME_INTERN (vmeshSeparateSt) +#define vmeshSeparateZr SCOTCH_NAME_INTERN (vmeshSeparateZr) +#define vmeshStoreInit SCOTCH_NAME_INTERN (vmeshStoreInit) +#define vmeshStoreExit SCOTCH_NAME_INTERN (vmeshStoreExit) +#define vmeshStoreSave SCOTCH_NAME_INTERN (vmeshStoreSave) +#define vmeshStoreUpdt SCOTCH_NAME_INTERN (vmeshStoreUpdt) + +#define wgraphpartststratab SCOTCH_NAME_INTERN (wgraphpartststratab) +#define wgraphAlloc SCOTCH_NAME_INTERN (wgraphAlloc) +#define wgraphInit SCOTCH_NAME_INTERN (wgraphInit) +#define wgraphExit SCOTCH_NAME_INTERN (wgraphExit) +#define wgraphCheck SCOTCH_NAME_INTERN (wgraphCheck) +#define wgraphZero SCOTCH_NAME_INTERN (wgraphZero) +#define wgraphPartFm SCOTCH_NAME_INTERN (wgraphPartFm) +#define wgraphPartGg SCOTCH_NAME_INTERN (wgraphPartGg) +#define wgraphPartGp SCOTCH_NAME_INTERN (wgraphPartGp) +#define wgraphPartMl SCOTCH_NAME_INTERN (wgraphPartMl) +#define wgraphPartRb SCOTCH_NAME_INTERN (wgraphPartRb) +#define wgraphPartSt SCOTCH_NAME_INTERN (wgraphPartSt) +#define wgraphPartZr SCOTCH_NAME_INTERN (wgraphPartZr) +#define wgraphStoreInit SCOTCH_NAME_INTERN (wgraphStoreInit) +#define wgraphStoreExit SCOTCH_NAME_INTERN (wgraphStoreExit) +#define wgraphStoreSave SCOTCH_NAME_INTERN (wgraphStoreSave) +#define wgraphStoreUpdt SCOTCH_NAME_INTERN (wgraphStoreUpdt) #endif /* SCOTCH_RENAME */ + +#ifdef SCOTCH_RENAME_PUBLIC +#define SCOTCH_archAlloc SCOTCH_NAME_PUBLIC (SCOTCH_archAlloc) +#define SCOTCH_archBuild SCOTCH_NAME_PUBLIC (SCOTCH_archBuild) +#define SCOTCH_archBuild0 SCOTCH_NAME_PUBLIC (SCOTCH_archBuild0) +#define SCOTCH_archBuild2 SCOTCH_NAME_PUBLIC (SCOTCH_archBuild2) +#define SCOTCH_archCmplt SCOTCH_NAME_PUBLIC (SCOTCH_archCmplt) +#define SCOTCH_archCmpltw SCOTCH_NAME_PUBLIC (SCOTCH_archCmpltw) +#define SCOTCH_archExit SCOTCH_NAME_PUBLIC (SCOTCH_archExit) +#define SCOTCH_archHcub SCOTCH_NAME_PUBLIC (SCOTCH_archHcub) +#define SCOTCH_archInit SCOTCH_NAME_PUBLIC (SCOTCH_archInit) +#define SCOTCH_archLoad SCOTCH_NAME_PUBLIC (SCOTCH_archLoad) +#define SCOTCH_archLtleaf SCOTCH_NAME_PUBLIC (SCOTCH_archLtleaf) +#define SCOTCH_archMesh2 SCOTCH_NAME_PUBLIC (SCOTCH_archMesh2) +#define SCOTCH_archMesh3 SCOTCH_NAME_PUBLIC (SCOTCH_archMesh3) +#define SCOTCH_archMeshX SCOTCH_NAME_PUBLIC (SCOTCH_archMeshX) +#define SCOTCH_archName SCOTCH_NAME_PUBLIC (SCOTCH_archName) +#define SCOTCH_archSave SCOTCH_NAME_PUBLIC (SCOTCH_archSave) +#define SCOTCH_archSize SCOTCH_NAME_PUBLIC (SCOTCH_archSize) +#define SCOTCH_archSub SCOTCH_NAME_PUBLIC (SCOTCH_archSub) +#define SCOTCH_archTleaf SCOTCH_NAME_PUBLIC (SCOTCH_archTleaf) +#define SCOTCH_archTorus2 SCOTCH_NAME_PUBLIC (SCOTCH_archTorus2) +#define SCOTCH_archTorus3 SCOTCH_NAME_PUBLIC (SCOTCH_archTorus3) +#define SCOTCH_archTorusX SCOTCH_NAME_PUBLIC (SCOTCH_archTorusX) +#define SCOTCH_archVar SCOTCH_NAME_PUBLIC (SCOTCH_archVar) +#define SCOTCH_archVcmplt SCOTCH_NAME_PUBLIC (SCOTCH_archVcmplt) +#define SCOTCH_archVhcub SCOTCH_NAME_PUBLIC (SCOTCH_archVhcub) +#define SCOTCH_dgraphAlloc SCOTCH_NAME_PUBLIC (SCOTCH_dgraphAlloc) +#define SCOTCH_dgraphBand SCOTCH_NAME_PUBLIC (SCOTCH_dgraphBand) +#define SCOTCH_dgraphBuild SCOTCH_NAME_PUBLIC (SCOTCH_dgraphBuild) +#define SCOTCH_dgraphBuildGrid3D SCOTCH_NAME_PUBLIC (SCOTCH_dgraphBuildGrid3D) +#define SCOTCH_dgraphCheck SCOTCH_NAME_PUBLIC (SCOTCH_dgraphCheck) +#define SCOTCH_dgraphCoarsen SCOTCH_NAME_PUBLIC (SCOTCH_dgraphCoarsen) +#define SCOTCH_dgraphCorderExit SCOTCH_NAME_PUBLIC (SCOTCH_dgraphCorderExit) +#define SCOTCH_dgraphCorderInit SCOTCH_NAME_PUBLIC (SCOTCH_dgraphCorderInit) +#define SCOTCH_dgraphData SCOTCH_NAME_PUBLIC (SCOTCH_dgraphData) +#define SCOTCH_dgraphExit SCOTCH_NAME_PUBLIC (SCOTCH_dgraphExit) +#define SCOTCH_dgraphFree SCOTCH_NAME_PUBLIC (SCOTCH_dgraphFree) +#define SCOTCH_dgraphGather SCOTCH_NAME_PUBLIC (SCOTCH_dgraphGather) +#define SCOTCH_dgraphGhst SCOTCH_NAME_PUBLIC (SCOTCH_dgraphGhst) +#define SCOTCH_dgraphGhstReplace SCOTCH_NAME_PUBLIC (SCOTCH_dgraphGhstReplace) +#define SCOTCH_dgraphGrow SCOTCH_NAME_PUBLIC (SCOTCH_dgraphGrow) +#define SCOTCH_dgraphHalo SCOTCH_NAME_PUBLIC (SCOTCH_dgraphHalo) +#define SCOTCH_dgraphHaloAsync SCOTCH_NAME_PUBLIC (SCOTCH_dgraphHaloAsync) +#define SCOTCH_dgraphHaloReqAlloc SCOTCH_NAME_PUBLIC (SCOTCH_dgraphHaloReqAlloc) +#define SCOTCH_dgraphHaloWait SCOTCH_NAME_PUBLIC (SCOTCH_dgraphHaloWait) +#define SCOTCH_dgraphInducePart SCOTCH_NAME_PUBLIC (SCOTCH_dgraphInducePart) +#define SCOTCH_dgraphInit SCOTCH_NAME_PUBLIC (SCOTCH_dgraphInit) +#define SCOTCH_dgraphLoad SCOTCH_NAME_PUBLIC (SCOTCH_dgraphLoad) +#define SCOTCH_dgraphMap SCOTCH_NAME_PUBLIC (SCOTCH_dgraphMap) +#define SCOTCH_dgraphMapCompute SCOTCH_NAME_PUBLIC (SCOTCH_dgraphMapCompute) +#define SCOTCH_dgraphMapExit SCOTCH_NAME_PUBLIC (SCOTCH_dgraphMapExit) +#define SCOTCH_dgraphMapInit SCOTCH_NAME_PUBLIC (SCOTCH_dgraphMapInit) +#define SCOTCH_dgraphMapSave SCOTCH_NAME_PUBLIC (SCOTCH_dgraphMapSave) +#define SCOTCH_dgraphMapView SCOTCH_NAME_PUBLIC (SCOTCH_dgraphMapView) +#define SCOTCH_dgraphOrderCblkDist SCOTCH_NAME_PUBLIC (SCOTCH_dgraphOrderCblkDist) +#define SCOTCH_dgraphOrderCompute SCOTCH_NAME_PUBLIC (SCOTCH_dgraphOrderCompute) +#define SCOTCH_dgraphOrderComputeList SCOTCH_NAME_PUBLIC (SCOTCH_dgraphOrderComputeList) +#define SCOTCH_dgraphOrderExit SCOTCH_NAME_PUBLIC (SCOTCH_dgraphOrderExit) +#define SCOTCH_dgraphOrderGather SCOTCH_NAME_PUBLIC (SCOTCH_dgraphOrderGather) +#define SCOTCH_dgraphOrderInit SCOTCH_NAME_PUBLIC (SCOTCH_dgraphOrderInit) +#define SCOTCH_dgraphOrderPerm SCOTCH_NAME_PUBLIC (SCOTCH_dgraphOrderPerm) +#define SCOTCH_dgraphOrderSave SCOTCH_NAME_PUBLIC (SCOTCH_dgraphOrderSave) +#define SCOTCH_dgraphOrderSaveBlock SCOTCH_NAME_PUBLIC (SCOTCH_dgraphOrderSaveBlock) +#define SCOTCH_dgraphOrderSaveMap SCOTCH_NAME_PUBLIC (SCOTCH_dgraphOrderSaveMap) +#define SCOTCH_dgraphOrderSaveTree SCOTCH_NAME_PUBLIC (SCOTCH_dgraphOrderSaveTree) +#define SCOTCH_dgraphOrderTreeDist SCOTCH_NAME_PUBLIC (SCOTCH_dgraphOrderTreeDist) +#define SCOTCH_dgraphPart SCOTCH_NAME_PUBLIC (SCOTCH_dgraphPart) +#define SCOTCH_dgraphRedist SCOTCH_NAME_PUBLIC (SCOTCH_dgraphRedist) +#define SCOTCH_dgraphSave SCOTCH_NAME_PUBLIC (SCOTCH_dgraphSave) +#define SCOTCH_dgraphScatter SCOTCH_NAME_PUBLIC (SCOTCH_dgraphScatter) +#define SCOTCH_dgraphSize SCOTCH_NAME_PUBLIC (SCOTCH_dgraphSize) +#define SCOTCH_dgraphStat SCOTCH_NAME_PUBLIC (SCOTCH_dgraphStat) +#define SCOTCH_dmapAlloc SCOTCH_NAME_PUBLIC (SCOTCH_dmapAlloc) +#define SCOTCH_dorderAlloc SCOTCH_NAME_PUBLIC (SCOTCH_dorderAlloc) +#define SCOTCH_geomAlloc SCOTCH_NAME_PUBLIC (SCOTCH_geomAlloc) +#define SCOTCH_geomData SCOTCH_NAME_PUBLIC (SCOTCH_geomData) +#define SCOTCH_geomExit SCOTCH_NAME_PUBLIC (SCOTCH_geomExit) +#define SCOTCH_geomInit SCOTCH_NAME_PUBLIC (SCOTCH_geomInit) +#define SCOTCH_graphAlloc SCOTCH_NAME_PUBLIC (SCOTCH_graphAlloc) +#define SCOTCH_graphBase SCOTCH_NAME_PUBLIC (SCOTCH_graphBase) +#define SCOTCH_graphBuild SCOTCH_NAME_PUBLIC (SCOTCH_graphBuild) +#define SCOTCH_graphCheck SCOTCH_NAME_PUBLIC (SCOTCH_graphCheck) +#define SCOTCH_graphCoarsen SCOTCH_NAME_PUBLIC (SCOTCH_graphCoarsen) +#define SCOTCH_graphCoarsenBuild SCOTCH_NAME_PUBLIC (SCOTCH_graphCoarsenBuild) +#define SCOTCH_graphCoarsenMatch SCOTCH_NAME_PUBLIC (SCOTCH_graphCoarsenMatch) +#define SCOTCH_graphColor SCOTCH_NAME_PUBLIC (SCOTCH_graphColor) +#define SCOTCH_graphData SCOTCH_NAME_PUBLIC (SCOTCH_graphData) +#define SCOTCH_graphDiamPV SCOTCH_NAME_PUBLIC (SCOTCH_graphDiamPV) +#define SCOTCH_graphExit SCOTCH_NAME_PUBLIC (SCOTCH_graphExit) +#define SCOTCH_graphFree SCOTCH_NAME_PUBLIC (SCOTCH_graphFree) +#define SCOTCH_graphGeomLoadChac SCOTCH_NAME_PUBLIC (SCOTCH_graphGeomLoadChac) +#define SCOTCH_graphGeomLoadHabo SCOTCH_NAME_PUBLIC (SCOTCH_graphGeomLoadHabo) +#define SCOTCH_graphGeomLoadMmkt SCOTCH_NAME_PUBLIC (SCOTCH_graphGeomLoadMmkt) +#define SCOTCH_graphGeomLoadScot SCOTCH_NAME_PUBLIC (SCOTCH_graphGeomLoadScot) +#define SCOTCH_graphGeomSaveChac SCOTCH_NAME_PUBLIC (SCOTCH_graphGeomSaveChac) +#define SCOTCH_graphGeomSaveMmkt SCOTCH_NAME_PUBLIC (SCOTCH_graphGeomSaveMmkt) +#define SCOTCH_graphGeomSaveScot SCOTCH_NAME_PUBLIC (SCOTCH_graphGeomSaveScot) +#define SCOTCH_graphInduceList SCOTCH_NAME_PUBLIC (SCOTCH_graphInduceList) +#define SCOTCH_graphInducePart SCOTCH_NAME_PUBLIC (SCOTCH_graphInducePart) +#define SCOTCH_graphInit SCOTCH_NAME_PUBLIC (SCOTCH_graphInit) +#define SCOTCH_graphLoad SCOTCH_NAME_PUBLIC (SCOTCH_graphLoad) +#define SCOTCH_graphMap SCOTCH_NAME_PUBLIC (SCOTCH_graphMap) +#define SCOTCH_graphMapCompute SCOTCH_NAME_PUBLIC (SCOTCH_graphMapCompute) +#define SCOTCH_graphMapExit SCOTCH_NAME_PUBLIC (SCOTCH_graphMapExit) +#define SCOTCH_graphMapFixed SCOTCH_NAME_PUBLIC (SCOTCH_graphMapFixed) +#define SCOTCH_graphMapFixedCompute SCOTCH_NAME_PUBLIC (SCOTCH_graphMapFixedCompute) +#define SCOTCH_graphMapInit SCOTCH_NAME_PUBLIC (SCOTCH_graphMapInit) +#define SCOTCH_graphMapLoad SCOTCH_NAME_PUBLIC (SCOTCH_graphMapLoad) +#define SCOTCH_graphMapSave SCOTCH_NAME_PUBLIC (SCOTCH_graphMapSave) +#define SCOTCH_graphMapView SCOTCH_NAME_PUBLIC (SCOTCH_graphMapView) +#define SCOTCH_graphMapViewRaw SCOTCH_NAME_PUBLIC (SCOTCH_graphMapViewRaw) +#define SCOTCH_graphOrder SCOTCH_NAME_PUBLIC (SCOTCH_graphOrder) +#define SCOTCH_graphOrderCheck SCOTCH_NAME_PUBLIC (SCOTCH_graphOrderCheck) +#define SCOTCH_graphOrderCompute SCOTCH_NAME_PUBLIC (SCOTCH_graphOrderCompute) +#define SCOTCH_graphOrderComputeList SCOTCH_NAME_PUBLIC (SCOTCH_graphOrderComputeList) +#define SCOTCH_graphOrderExit SCOTCH_NAME_PUBLIC (SCOTCH_graphOrderExit) +#define SCOTCH_graphOrderInit SCOTCH_NAME_PUBLIC (SCOTCH_graphOrderInit) +#define SCOTCH_graphOrderList SCOTCH_NAME_PUBLIC (SCOTCH_graphOrderList) +#define SCOTCH_graphOrderLoad SCOTCH_NAME_PUBLIC (SCOTCH_graphOrderLoad) +#define SCOTCH_graphOrderSave SCOTCH_NAME_PUBLIC (SCOTCH_graphOrderSave) +#define SCOTCH_graphOrderSaveMap SCOTCH_NAME_PUBLIC (SCOTCH_graphOrderSaveMap) +#define SCOTCH_graphOrderSaveTree SCOTCH_NAME_PUBLIC (SCOTCH_graphOrderSaveTree) +#define SCOTCH_graphPart SCOTCH_NAME_PUBLIC (SCOTCH_graphPart) +#define SCOTCH_graphPartFixed SCOTCH_NAME_PUBLIC (SCOTCH_graphPartFixed) +#define SCOTCH_graphPartOvl SCOTCH_NAME_PUBLIC (SCOTCH_graphPartOvl) +#define SCOTCH_graphRemap SCOTCH_NAME_PUBLIC (SCOTCH_graphRemap) +#define SCOTCH_graphRemapCompute SCOTCH_NAME_PUBLIC (SCOTCH_graphRemapCompute) +#define SCOTCH_graphRemapFixed SCOTCH_NAME_PUBLIC (SCOTCH_graphRemapFixed) +#define SCOTCH_graphRemapFixedCompute SCOTCH_NAME_PUBLIC (SCOTCH_graphRemapFixedCompute) +#define SCOTCH_graphRemapView SCOTCH_NAME_PUBLIC (SCOTCH_graphRemapView) +#define SCOTCH_graphRemapViewRaw SCOTCH_NAME_PUBLIC (SCOTCH_graphRemapViewRaw) +#define SCOTCH_graphRepart SCOTCH_NAME_PUBLIC (SCOTCH_graphRepart) +#define SCOTCH_graphRepartFixed SCOTCH_NAME_PUBLIC (SCOTCH_graphRepartFixed) +#define SCOTCH_graphSave SCOTCH_NAME_PUBLIC (SCOTCH_graphSave) +#define SCOTCH_graphSize SCOTCH_NAME_PUBLIC (SCOTCH_graphSize) +#define SCOTCH_graphStat SCOTCH_NAME_PUBLIC (SCOTCH_graphStat) +#define SCOTCH_graphTabLoad SCOTCH_NAME_PUBLIC (SCOTCH_graphTabLoad) +#define SCOTCH_mapAlloc SCOTCH_NAME_PUBLIC (SCOTCH_mapAlloc) +#define SCOTCH_meshAlloc SCOTCH_NAME_PUBLIC (SCOTCH_meshAlloc) +#define SCOTCH_meshBuild SCOTCH_NAME_PUBLIC (SCOTCH_meshBuild) +#define SCOTCH_meshCheck SCOTCH_NAME_PUBLIC (SCOTCH_meshCheck) +#define SCOTCH_meshData SCOTCH_NAME_PUBLIC (SCOTCH_meshData) +#define SCOTCH_meshExit SCOTCH_NAME_PUBLIC (SCOTCH_meshExit) +#define SCOTCH_meshGeomLoadHabo SCOTCH_NAME_PUBLIC (SCOTCH_meshGeomLoadHabo) +#define SCOTCH_meshGeomLoadScot SCOTCH_NAME_PUBLIC (SCOTCH_meshGeomLoadScot) +#define SCOTCH_meshGeomSaveScot SCOTCH_NAME_PUBLIC (SCOTCH_meshGeomSaveScot) +#define SCOTCH_meshGraph SCOTCH_NAME_PUBLIC (SCOTCH_meshGraph) +#define SCOTCH_meshInit SCOTCH_NAME_PUBLIC (SCOTCH_meshInit) +#define SCOTCH_meshLoad SCOTCH_NAME_PUBLIC (SCOTCH_meshLoad) +#define SCOTCH_meshOrder SCOTCH_NAME_PUBLIC (SCOTCH_meshOrder) +#define SCOTCH_meshOrderCheck SCOTCH_NAME_PUBLIC (SCOTCH_meshOrderCheck) +#define SCOTCH_meshOrderCompute SCOTCH_NAME_PUBLIC (SCOTCH_meshOrderCompute) +#define SCOTCH_meshOrderComputeList SCOTCH_NAME_PUBLIC (SCOTCH_meshOrderComputeList) +#define SCOTCH_meshOrderExit SCOTCH_NAME_PUBLIC (SCOTCH_meshOrderExit) +#define SCOTCH_meshOrderInit SCOTCH_NAME_PUBLIC (SCOTCH_meshOrderInit) +#define SCOTCH_meshOrderList SCOTCH_NAME_PUBLIC (SCOTCH_meshOrderList) +#define SCOTCH_meshOrderSave SCOTCH_NAME_PUBLIC (SCOTCH_meshOrderSave) +#define SCOTCH_meshOrderSaveMap SCOTCH_NAME_PUBLIC (SCOTCH_meshOrderSaveMap) +#define SCOTCH_meshOrderSaveTree SCOTCH_NAME_PUBLIC (SCOTCH_meshOrderSaveTree) +#define SCOTCH_meshSave SCOTCH_NAME_PUBLIC (SCOTCH_meshSave) +#define SCOTCH_meshSize SCOTCH_NAME_PUBLIC (SCOTCH_meshSize) +#define SCOTCH_meshStat SCOTCH_NAME_PUBLIC (SCOTCH_meshStat) +#define SCOTCH_numSizeof SCOTCH_NAME_PUBLIC (SCOTCH_numSizeof) +#define SCOTCH_orderAlloc SCOTCH_NAME_PUBLIC (SCOTCH_orderAlloc) +#define SCOTCH_randomLoad SCOTCH_NAME_PUBLIC (SCOTCH_randomLoad) +#define SCOTCH_randomProc SCOTCH_NAME_PUBLIC (SCOTCH_randomProc) +#define SCOTCH_randomReset SCOTCH_NAME_PUBLIC (SCOTCH_randomReset) +#define SCOTCH_randomSave SCOTCH_NAME_PUBLIC (SCOTCH_randomSave) +#define SCOTCH_randomSeed SCOTCH_NAME_PUBLIC (SCOTCH_randomSeed) +#define SCOTCH_stratAlloc SCOTCH_NAME_PUBLIC (SCOTCH_stratAlloc) +#define SCOTCH_stratArchBuild SCOTCH_NAME_PUBLIC (SCOTCH_stratArchBuild) +#define SCOTCH_stratDgraphClusterBuild SCOTCH_NAME_PUBLIC (SCOTCH_stratDgraphClusterBuild) +#define SCOTCH_stratDgraphMap SCOTCH_NAME_PUBLIC (SCOTCH_stratDgraphMap) +#define SCOTCH_stratDgraphMapBuild SCOTCH_NAME_PUBLIC (SCOTCH_stratDgraphMapBuild) +#define SCOTCH_stratDgraphOrder SCOTCH_NAME_PUBLIC (SCOTCH_stratDgraphOrder) +#define SCOTCH_stratDgraphOrderBuild SCOTCH_NAME_PUBLIC (SCOTCH_stratDgraphOrderBuild) +#define SCOTCH_stratExit SCOTCH_NAME_PUBLIC (SCOTCH_stratExit) +#define SCOTCH_stratFree SCOTCH_NAME_PUBLIC (SCOTCH_stratFree) +#define SCOTCH_stratGraphBipart SCOTCH_NAME_PUBLIC (SCOTCH_stratGraphBipart) +#define SCOTCH_stratGraphClusterBuild SCOTCH_NAME_PUBLIC (SCOTCH_stratGraphClusterBuild) +#define SCOTCH_stratGraphMap SCOTCH_NAME_PUBLIC (SCOTCH_stratGraphMap) +#define SCOTCH_stratGraphMapBuild SCOTCH_NAME_PUBLIC (SCOTCH_stratGraphMapBuild) +#define SCOTCH_stratGraphOrder SCOTCH_NAME_PUBLIC (SCOTCH_stratGraphOrder) +#define SCOTCH_stratGraphOrderBuild SCOTCH_NAME_PUBLIC (SCOTCH_stratGraphOrderBuild) +#define SCOTCH_stratGraphPartOvl SCOTCH_NAME_PUBLIC (SCOTCH_stratGraphPartOvl) +#define SCOTCH_stratGraphPartOvlBuild SCOTCH_NAME_PUBLIC (SCOTCH_stratGraphPartOvlBuild) +#define SCOTCH_stratInit SCOTCH_NAME_PUBLIC (SCOTCH_stratInit) +#define SCOTCH_stratMeshOrder SCOTCH_NAME_PUBLIC (SCOTCH_stratMeshOrder) +#define SCOTCH_stratMeshOrderBuild SCOTCH_NAME_PUBLIC (SCOTCH_stratMeshOrderBuild) +#define SCOTCH_stratSave SCOTCH_NAME_PUBLIC (SCOTCH_stratSave) +#define SCOTCH_version SCOTCH_NAME_PUBLIC (SCOTCH_version) +#endif /* SCOTCH_RENAME_PUBLIC */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/order.h scotch-6.0.6/src/libscotch/order.h --- scotch-6.0.4.dfsg1/src/libscotch/order.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/order.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -47,6 +47,8 @@ /** to 25 jul 2007 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to 04 nov 2010 **/ +/** # Version 6.0 : from : 08 may 2018 **/ +/** to 06 jun 2018 **/ /** **/ /************************************************************/ @@ -68,6 +70,7 @@ #define ORDERCBLKOTHR 0x0000 /*+ Other ordering node +*/ #define ORDERCBLKNEDI 0x0001 /*+ Nested dissection separator node +*/ +#define ORDERCBLKDICO 0x0002 /*+ Disconnected components node +*/ /* ** The type and structure definitions. @@ -112,22 +115,19 @@ ** The function prototypes. */ -#ifndef ORDER -#define static -#endif +#ifdef ORDER +static void orderExit2 (OrderCblk * const, const Gnum); +static void orderRang2 (Gnum ** const, Gnum * const, const OrderCblk * const); +static void orderTree2 (Gnum * restrict const, Gnum * restrict const, const OrderCblk * restrict const, Gnum); +#endif /* ORDER */ int orderInit (Order * const, const Gnum, const Gnum, Gnum * const); void orderExit (Order * const); -static void orderExit2 (OrderCblk * const, const Gnum); int orderLoad (Order * restrict const, const Gnum * restrict const, FILE * restrict const); int orderSave (const Order * restrict const, const Gnum * restrict const, FILE * restrict const); int orderSaveMap (const Order * const, const Gnum * restrict const, FILE * restrict const); int orderSaveTree (const Order * const, const Gnum * restrict const, FILE * restrict const); void orderPeri (const Gnum * const, const Gnum, const Gnum, Gnum * const, const Gnum); void orderRang (const Order * const, Gnum * const); -static void orderRang2 (Gnum ** const, Gnum * const, const OrderCblk * const); void orderTree (const Order * restrict const, Gnum * restrict const); -static void orderTree2 (Gnum * restrict const, Gnum * restrict const, const OrderCblk * restrict const, Gnum); int orderCheck (const Order * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/parser.c scotch-6.0.6/src/libscotch/parser.c --- scotch-6.0.4.dfsg1/src/libscotch/parser.c 2014-09-30 19:02:44.000000000 +0000 +++ scotch-6.0.6/src/libscotch/parser.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010,2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010,2012,2014,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -52,7 +52,7 @@ /** # Version 5.1 : from : 22 oct 2008 **/ /** to 11 aug 2010 **/ /** # Version 6.0 : from : 01 jun 2012 **/ -/** to 30 sep 2014 **/ +/** to 30 dec 2016 **/ /** **/ /************************************************************/ @@ -78,6 +78,11 @@ static StratTab stratdummytab = { NULL, NULL, NULL }; /* Dummy strategy table for the dummy empty object */ Strat stratdummy = { &stratdummytab, STRATNODEEMPTY }; /* Dummy empty object for offset computations */ +#ifdef COMMON_PTHREAD_MEMORY +static int muteflag = 1; /*+ Flag for mutex initialization +*/ +static pthread_mutex_t mutelocdat; /*+ Local mutex for parsing +*/ +#endif /* COMMON_PTHREAD_MEMORY */ + /**************************/ /* */ /* The strategy routines. */ @@ -97,6 +102,8 @@ const StratTab * const strattab, /*+ Pointer to strategy parsing table +*/ const char * const string) /*+ Strategy string to parse +*/ { + Strat * o; + #ifdef SCOTCH_DEBUG_PARSER1 if ((strattab == NULL) || (string == NULL)) { errorPrint ("stratInit: invalid parameter"); @@ -104,7 +111,21 @@ } #endif /* SCOTCH_DEBUG_PARSER1 */ - return (stratParserParse (strattab, string)); /* Parse strategy string */ +#ifdef COMMON_PTHREAD_MEMORY + if (muteflag != 0) { /* Unsafe code with respect to race conditions but should work; portable TSL needed */ + muteflag = 0; + pthread_mutex_init (&mutelocdat, NULL); /* Initialize local mutex */ + } + pthread_mutex_lock (&mutelocdat); /* Lock local mutex */ +#endif /* COMMON_PTHREAD_MEMORY */ + + o = stratParserParse (strattab, string); /* Parse strategy string */ + +#ifdef COMMON_PTHREAD_MEMORY + pthread_mutex_unlock (&mutelocdat); /* Unlock local mutex */ +#endif /* COMMON_PTHREAD_MEMORY */ + + return (o); } /* This routine frees a strategy structure. diff -Nru scotch-6.0.4.dfsg1/src/libscotch/parser.h scotch-6.0.6/src/libscotch/parser.h --- scotch-6.0.4.dfsg1/src/libscotch/parser.h 2014-09-30 19:02:45.000000000 +0000 +++ scotch-6.0.6/src/libscotch/parser.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -216,17 +216,14 @@ ** The function prototypes. */ -#ifndef PARSER -#define static -#endif +#ifdef PARSER +static int stratTestEvalCast (StratTest * const, StratTest * const); +#endif /* PARSER */ Strat * stratInit (const StratTab * const , const char * const); int stratExit (Strat * const); int stratSave (const Strat * const, FILE * const); int stratTestEval (const StratTest * const, StratTest * const, const void * const); -static int stratTestEvalCast (StratTest * const, StratTest * const); int stratTestExit (StratTest * const); int stratTestSave (const StratTest * const, FILE * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/parser_ll.h scotch-6.0.6/src/libscotch/parser_ll.h --- scotch-6.0.4.dfsg1/src/libscotch/parser_ll.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/parser_ll.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -47,6 +47,8 @@ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 20 dec 2001 **/ /** to 20 dec 2001 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /************************************************************/ @@ -54,14 +56,11 @@ ** The function prototypes. */ -#ifndef PARSER_LL -#define static -#endif +#ifdef PARSER_LL +static int stratParserInput (void); +#endif /* PARSER_LL */ void stratParserInit (const char * const); -static int stratParserInput (void); int stratParserLex (void); const char * stratParserRemain (void); void stratParserSelect (unsigned int); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/parser_yy.h scotch-6.0.6/src/libscotch/parser_yy.h --- scotch-6.0.4.dfsg1/src/libscotch/parser_yy.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/parser_yy.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -49,6 +49,8 @@ /** to 21 dec 2001 **/ /** # Version 5.1 : from : 09 jun 2009 **/ /** to 07 aug 2010 **/ +/** # Version 6.0 : from : 27 apr 2018 **/ +/** to 27 apr 2018 **/ /** **/ /************************************************************/ @@ -60,28 +62,23 @@ #if ((defined SCOTCH_RENAME_PARSER) || (defined yylex)) /* If prefix renaming */ #define scotchyyparse stratParserParse2 /* Parser function name */ -#define scotchyyerror stratParserError /* Error processing routine */ #ifndef yylval -#define yylval scotchyylval /* It should be Yacc/Bison's job to redefine it! */ +#define yylval SCOTCH_NAME_MACRO3 (scotchyy, SCOTCH_NAME_SUFFIX, lval) /* It should be Yacc/Bison's job to redefine it! */ #endif /* yylval */ #else /* SCOTCH_RENAME_PARSER */ #define yylex stratParserLex /* Lexical analyzer */ #define yyparse stratParserParse2 /* Parser function name */ -#define yyerror stratParserError /* Error processing routine */ #endif /* SCOTCH_RENAME_PARSER */ /* ** The function prototypes. */ -#ifndef PARSER_YY -#define static -#endif +Strat * stratParserParse (const StratTab * const, const char * const); int yylex (void); +int yyparse (void); -Strat * stratParserParse (const StratTab * const, const char * const); -int stratParserParse2 (void); -static int stratParserError (const char * const); - -#undef static +#ifdef PARSER_YY +static int yyerror (const char * const); +#endif /* PARSER_YY */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/parser_yy.y scotch-6.0.6/src/libscotch/parser_yy.y --- scotch-6.0.4.dfsg1/src/libscotch/parser_yy.y 2014-09-30 19:02:45.000000000 +0000 +++ scotch-6.0.6/src/libscotch/parser_yy.y 2018-07-14 15:24:49.000000000 +0000 @@ -1,5 +1,5 @@ %{ -/* Copyright 2004,2007,2008,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -50,7 +50,7 @@ /** # Version 5.1 : from : 30 oct 2007 **/ /** to 24 jul 2011 **/ /** # Version 6.0 : from : 30 sep 2014 **/ -/** to 30 sep 2014 **/ +/** to 27 apr 2018 **/ /** **/ /************************************************************/ @@ -795,7 +795,7 @@ parserstrattab = strattab; /* Point to the parsing tables */ parserstratcurr = NULL; /* Clear up the temporary strategy pointer */ - if (stratParserParse2 () != 0) { /* Parse the strategy string */ + if (yyparse () != 0) { /* Parse the strategy string */ if (parserstratcurr != NULL) stratExit (parserstratcurr); return (NULL); @@ -811,7 +811,7 @@ static int -stratParserError ( +yyerror ( const char * const errstr) { errorPrint ("stratParserParse: invalid strategy string, before \"%s\"", stratParserRemain ()); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vdgraph_gather_all.c scotch-6.0.6/src/libscotch/vdgraph_gather_all.c --- scotch-6.0.4.dfsg1/src/libscotch/vdgraph_gather_all.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vdgraph_gather_all.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007-2010 ENSEIRB, INRIA & CNRS +/* Copyright 2007-2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,6 +45,8 @@ /** to 01 mar 2008 **/ /** # Version 5.1 : from : 18 apr 2009 **/ /** to 30 jul 2010 **/ +/** # Version 6.0 : from : 07 jun 2018 **/ +/** to 07 jun 2018 **/ /** **/ /** NOTES : # The definitions of MPI_Gather and **/ /** MPI_Gatherv indicate that elements in **/ @@ -88,14 +90,14 @@ int * restrict froncnttab; /* Count array for gather operations */ int * restrict frondsptab; /* Displacement array for gather operations */ int fronlocnbr; /* Also int to enforce MPI standard */ - int cheklocval; #ifdef SCOTCH_DEBUG_VDGRAPH1 + int cheklocval; int chekglbval; #endif /* SCOTCH_DEBUG_VDGRAPH1 */ int procnum; - cheklocval = 0; #ifdef SCOTCH_DEBUG_VDGRAPH1 + cheklocval = 0; if (cgrfptr == NULL) /* Centralized graphs should be provided by all */ cheklocval = 1; if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, dgrfptr->s.proccomm) != MPI_SUCCESS) { @@ -200,7 +202,7 @@ memFree (froncnttab); /* Free group leader */ for (procnum = 0; procnum < dgrfptr->s.proclocnum; procnum ++) /* Desynchronize random generators across processes */ - cheklocval = intRandVal (2); + intRandVal (2); intPerm (cgrfptr->frontab, dgrfptr->compglbsize[2]); /* Compute permutation of frontier array to have different solutions on every process */ cgrfptr->compload[0] = dgrfptr->compglbload[0]; /* Update other fields */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vdgraph.h scotch-6.0.6/src/libscotch/vdgraph.h --- scotch-6.0.4.dfsg1/src/libscotch/vdgraph.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vdgraph.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2008,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2007,2008,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to : 29 apr 2006 **/ /** # Version 5.1 : from : 07 nov 2007 **/ /** to : 04 nov 2010 **/ +/** # Version 6.0 : from : 06 jun 2018 **/ +/** to 06 jun 2018 **/ /** **/ /************************************************************/ @@ -80,10 +82,6 @@ ** The function prototypes. */ -#ifndef VDGRAPH -#define static -#endif - int vdgraphInit (Vdgraph * restrict const, MPI_Comm); void vdgraphExit (Vdgraph * const); void vdgraphZero (Vdgraph * const); @@ -96,5 +94,3 @@ void vdgraphStoreExit (VdgraphStore * const); void vdgraphStoreSave (const Vdgraph * const , VdgraphStore * const); void vdgraphStoreUpdt (Vdgraph * const, const VdgraphStore * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vdgraph_separate_bd.h scotch-6.0.6/src/libscotch/vdgraph_separate_bd.h --- scotch-6.0.4.dfsg1/src/libscotch/vdgraph_separate_bd.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vdgraph_separate_bd.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007 ENSEIRB, INRIA & CNRS +/* Copyright 2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 5.0 : from : 04 mar 2006 **/ /** to : 04 mar 2006 **/ +/** # Version 6.0 : from : 06 jun 2018 **/ +/** to 06 jun 2018 **/ /** **/ /************************************************************/ @@ -59,10 +61,4 @@ ** The function prototypes. */ -#ifndef VDGRAPH_SEPARATE_BD -#define static -#endif - int vdgraphSeparateBd (Vdgraph * const, const VdgraphSeparateBdParam * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vdgraph_separate_df.h scotch-6.0.6/src/libscotch/vdgraph_separate_df.h --- scotch-6.0.4.dfsg1/src/libscotch/vdgraph_separate_df.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vdgraph_separate_df.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007 ENSEIRB, INRIA & CNRS +/* Copyright 2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 5.1 : from : 05 nov 2007 **/ /** to : 07 nov 2007 **/ +/** # Version 6.0 : from : 06 jun 2018 **/ +/** to 06 jun 2018 **/ /** **/ /************************************************************/ @@ -74,10 +76,4 @@ ** The function prototypes. */ -#ifndef VDGRAPH_SEPARATE_DF -#define static -#endif - int vdgraphSeparateDf (Vdgraph * const, const VdgraphSeparateDfParam * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vdgraph_separate_ml.h scotch-6.0.6/src/libscotch/vdgraph_separate_ml.h --- scotch-6.0.4.dfsg1/src/libscotch/vdgraph_separate_ml.h 2014-09-28 16:41:08.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vdgraph_separate_ml.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007-2009, 2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007-2009,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,7 +45,7 @@ /** # Version 5.1 : from : 14 dec 2008 **/ /** to : 29 may 2009 **/ /** # Version 6.0 : from : 28 sep 2014 **/ -/** to : 28 sep 2014 **/ +/** to : 06 jun 2018 **/ /** **/ /************************************************************/ @@ -70,14 +70,11 @@ ** The function prototypes. */ -#ifndef VDGRAPH_SEPARATE_ML -#define static -#endif - +#ifdef VDGRAPH_SEPARATE_ML static int vdgraphSeparateMlCoarsen (Vdgraph * const, Vdgraph * const, DgraphCoarsenMulti * restrict * const, const VdgraphSeparateMlParam * const); static int vdgraphSeparateMlUncoarsen (Vdgraph *, const Vdgraph * const, const DgraphCoarsenMulti * restrict const); static void vdgraphSeparateMlOpBest (const Gnum * const, Gnum * const, const int * const, const MPI_Datatype * const); -int vdgraphSeparateMl (Vdgraph * const, const VdgraphSeparateMlParam * const); -static int vdgraphSeparateMl2 (Vdgraph * const, const VdgraphSeparateMlParam * const); +static int vdgraphSeparateMl2 (Vdgraph * const, const VdgraphSeparateMlParam * const); +#endif /* VDGRAPH_SEPARATE_ML */ -#undef static +int vdgraphSeparateMl (Vdgraph * const, const VdgraphSeparateMlParam * const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vdgraph_separate_sq.h scotch-6.0.6/src/libscotch/vdgraph_separate_sq.h --- scotch-6.0.4.dfsg1/src/libscotch/vdgraph_separate_sq.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vdgraph_separate_sq.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007 ENSEIRB, INRIA & CNRS +/* Copyright 2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 5.0 : from : 15 feb 2006 **/ /** to : 01 mar 2006 **/ +/** # Version 6.0 : from : 06 jun 2018 **/ +/** to 06 jun 2018 **/ /** **/ /************************************************************/ @@ -58,12 +60,8 @@ ** The function prototypes. */ -#ifndef VDGRAPH_SEPARATE_SQ -#define static -#endif - -int vdgraphSeparateSq (Vdgraph * const, const VdgraphSeparateSqParam * const); - +#ifdef VDGRAPH_SEPARATE_SQ static void vdgraphSeparateSqOpBest (const Gnum * const, Gnum * const, const int * const, const MPI_Datatype * const); +#endif /* VDGRAPH_SEPARATE_SQ */ -#undef static +int vdgraphSeparateSq (Vdgraph * const, const VdgraphSeparateSqParam * const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vdgraph_separate_st.h scotch-6.0.6/src/libscotch/vdgraph_separate_st.h --- scotch-6.0.4.dfsg1/src/libscotch/vdgraph_separate_st.h 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vdgraph_separate_st.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007 ENSEIRB, INRIA & CNRS +/* Copyright 2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to 08 mar 2006 **/ /** # Version 5.1 : from : 05 nov 2007 **/ /** to 05 nov 2007 **/ +/** # Version 6.0 : from : 06 jun 2018 **/ +/** to 06 jun 2018 **/ /** **/ /************************************************************/ @@ -71,10 +73,4 @@ ** The function prototypes. */ -#ifndef VDGRAPH_SEPARATE_ST -#define static -#endif - int vdgraphSeparateSt (Vdgraph * const, const Strat * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vdgraph_separate_zr.c scotch-6.0.6/src/libscotch/vdgraph_separate_zr.c --- scotch-6.0.4.dfsg1/src/libscotch/vdgraph_separate_zr.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vdgraph_separate_zr.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007 ENSEIRB, INRIA & CNRS +/* Copyright 2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 5.0 : from : 07 feb 2006 **/ /** to 07 feb 2006 **/ +/** # Version 6.0 : from : 23 feb 2018 **/ +/** to 23 feb 2018 **/ /** **/ /************************************************************/ @@ -73,7 +75,7 @@ vdgraphSeparateZr ( Vdgraph * const grafptr) /*+ Active graph +*/ { - if (grafptr->compglbload[0] != grafptr->s.veloglbsum) /* If not all vertices already in part zero */ + if (grafptr->compglbsize[0] != grafptr->s.vertglbnbr) /* If not all vertices already in part zero */ vdgraphZero (grafptr); return (0); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vdgraph_separate_zr.h scotch-6.0.6/src/libscotch/vdgraph_separate_zr.h --- scotch-6.0.4.dfsg1/src/libscotch/vdgraph_separate_zr.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vdgraph_separate_zr.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007 ENSEIRB, INRIA & CNRS +/* Copyright 2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 5.0 : from : 07 feb 2006 **/ /** to 07 feb 2006 **/ +/** # Version 6.0 : from : 06 jun 2018 **/ +/** to 06 jun 2018 **/ /** **/ /************************************************************/ @@ -48,10 +50,4 @@ ** The function prototypes. */ -#ifndef VDGRAPH_SEPARATE_ZR -#define static -#endif - int vdgraphSeparateZr (Vdgraph * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vgraph.h scotch-6.0.6/src/libscotch/vgraph.h --- scotch-6.0.4.dfsg1/src/libscotch/vgraph.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vgraph.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -46,6 +46,8 @@ /** to : 07 jan 2002 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to : 04 nov 2010 **/ +/** # Version 6.0 : from : 30 apr 2018 **/ +/** to : 30 apr 2018 **/ /** **/ /************************************************************/ @@ -82,10 +84,6 @@ ** The function prototypes. */ -#ifndef VGRAPH -#define static -#endif - void vgraphExit (Vgraph * const); void vgraphZero (Vgraph * const); int vgraphCheck (const Vgraph * const); @@ -94,5 +92,3 @@ void vgraphStoreExit (VgraphStore * const); void vgraphStoreSave (const Vgraph * const , VgraphStore * const); void vgraphStoreUpdt (Vgraph * const, const VgraphStore * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_bd.c scotch-6.0.6/src/libscotch/vgraph_separate_bd.c --- scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_bd.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vgraph_separate_bd.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2008,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,6 +45,8 @@ /** to : 12 sep 2007 **/ /** # Version 5.1 : from : 30 oct 2007 **/ /** to : 09 nov 2008 **/ +/** # Version 6.0 : from : 31 may 2018 **/ +/** to : 31 may 2018 **/ /** **/ /************************************************************/ @@ -94,6 +96,7 @@ Gnum bndedgetmp; Gnum bnddegrmax; Gnum fronnum; + const Gnum * restrict const orgverttax = orggrafptr->s.verttax; /* Fast accesses */ const Gnum * restrict const orgvendtax = orggrafptr->s.vendtax; const Gnum * restrict const orgvelotax = orggrafptr->s.velotax; @@ -176,7 +179,6 @@ orgvertend = orgedgetax[orgedgenum]; if (orgdisttax[orgvertend] == ~0) { /* If vertex not visited yet */ - #ifdef SCOTCH_DEBUG_VGRAPH2 if (orggrafptr->parttax[orgvertend] > 1) { errorPrint ("vgraphSeparateBd: internal error (5)"); @@ -334,12 +336,9 @@ } #endif /* SCOTCH_DEBUG_VGRAPH2 */ bndgrafdat.s.edgenbr = - bndgrafdat.s.edlosum = bndedgetmp - orggrafptr->s.baseval; /* Since edge load array not kept */ - bndgrafdat.s.verttax[bndvertnnd + 2] = bndedgetmp; /* Mark end of edge array with anchor vertices */ - for (bndvertnum = bndvlvlnum; bndvertnum < bndvertnnd; bndvertnum ++) { /* Fill anchor edge arrays */ - Gnum orgvertnum; - - orgvertnum = bndvnumtax[bndvertnum]; + bndgrafdat.s.edlosum = bndedgetmp - orggrafptr->s.baseval; /* Since edge load array not kept */ + bndgrafdat.s.verttax[bndvertnnd + 2] = bndedgetmp; /* Mark end of edge array with anchor vertices */ + for (bndvertnum = bndvlvlnum; bndvertnum < bndvertnnd; bndvertnum ++) { /* Fill anchor edge arrays */ if (bndgrafdat.s.verttax[bndvertnum + 1] > bndgrafdat.s.verttax[bndvertnum]) { /* If vertex is not isolated */ Gnum bndvertend; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_df.c scotch-6.0.6/src/libscotch/vgraph_separate_df.c --- scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_df.c 2013-12-24 11:07:21.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vgraph_separate_df.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2013 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2013,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -49,7 +49,7 @@ /** DATES : # Version 5.1 : from : 29 oct 2007 **/ /** to 24 may 2008 **/ /** # Version 6.0 : from : 24 dec 2013 **/ -/** to 24 dec 2013 **/ +/** to 31 may 2018 **/ /** **/ /************************************************************/ @@ -173,9 +173,7 @@ for (movenum = 0; movenum < paraptr->movenbr; movenum ++) { /* For all moves */ Gnum vertnum; Gnum vertnnd; - float vancval; /* Value to load vertex with if anchor */ - vancval = 0.0F; /* At first vertices are not anchors */ vertnum = grafptr->s.baseval; vertnnd = grafptr->s.vertnnd - 2; while (1) { @@ -216,8 +214,7 @@ if (vertnum == grafptr->s.vertnnd) /* If all vertices processed, exit intermediate infinite loop */ break; - vertnnd ++; /* Prepare to go only for one more run */ - vancval = vanctab[vertnum - grafptr->s.vertnnd + 2]; /* Load variable with anchor value */ + vertnnd ++; /* Prepare to go only for one more run */ } difttax = difntax; /* Swap old and new diffusion arrays */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_df.h scotch-6.0.6/src/libscotch/vgraph_separate_df.h --- scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_df.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vgraph_separate_df.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2008 ENSEIRB, INRIA & CNRS +/* Copyright 2007,2008,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 5.1 : from : 29 oct 2007 **/ /** to 24 may 2008 **/ +/** # Version 6.0 : from : 30 apr 2018 **/ +/** to : 30 apr 2018 **/ /** **/ /************************************************************/ @@ -70,10 +72,4 @@ ** The function prototypes. */ -#ifndef VGRAPH_SEPARATE_DF -#define static -#endif - int vgraphSeparateDf (Vgraph * restrict const, const VgraphSeparateDfParam * restrict const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_es.h scotch-6.0.6/src/libscotch/vgraph_separate_es.h --- scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_es.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vgraph_separate_es.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,6 +45,8 @@ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 18 aug 2004 **/ /** to 19 aug 2004 **/ +/** # Version 6.0 : from : 30 apr 2018 **/ +/** to : 30 apr 2018 **/ /** **/ /************************************************************/ @@ -100,15 +102,13 @@ ** The function prototypes. */ -#ifndef VGRAPH_SEPARATE_ES -#define static -#endif +#ifdef VGRAPH_SEPARATE_ES static int vgraphSeparateEsCover (const Graph * const, const Gnum, Gnum * const, Gnum * const); static int vgraphSeparateEsCoverAugment (const Gnum * restrict const, const Gnum, Gnum * restrict const, VgraphSeparateEsTrav * restrict const, const Gnum * restrict const, const Gnum * restrict const, const Gnum * restrict const, const Gnum); static void vgraphSeparateEsCoverCol (const Gnum * restrict const, VgraphSeparateEsType * restrict const, const Gnum * restrict const, const Gnum * restrict const, const Gnum * restrict const, const Gnum); static void vgraphSeparateEsCoverRow (const Gnum * restrict const, VgraphSeparateEsType * restrict const, const Gnum * restrict const, const Gnum * restrict const, const Gnum * restrict const, const Gnum); -int vgraphSeparateEs (Vgraph * const, const VgraphSeparateEsParam * const); +#endif /* VGRAPH_SEPARATE_ES */ -#undef static +int vgraphSeparateEs (Vgraph * const, const VgraphSeparateEsParam * const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_fm.h scotch-6.0.6/src/libscotch/vgraph_separate_fm.h --- scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_fm.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vgraph_separate_fm.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,6 +45,8 @@ /** to 28 dec 1998 **/ /** # Version 4.0 : from : 13 dec 2001 **/ /** to 18 aug 2004 **/ +/** # Version 6.0 : from : 30 apr 2018 **/ +/** to : 30 apr 2018 **/ /** **/ /************************************************************/ @@ -119,16 +121,14 @@ ** The function prototypes. */ -#ifndef VGRAPH_SEPARATE_FM -#define static -#endif - -int vgraphSeparateFm (Vgraph * const, const VgraphSeparateFmParam * const); +#ifdef VGRAPH_SEPARATE_FM static int vgraphSeparateFmResize (VgraphSeparateFmVertex * restrict * hashtabptr, Gnum * const, Gnum * const, VgraphSeparateFmSave * restrict *, const Gnum, GainTabl * const, GainLink * const); +static GainLink * vgraphSeparateFmTablGet (GainTabl * const, const Gnum, const Gnum, const int); #ifdef SCOTCH_DEBUG_VGRAPH3 static int vgraphSeparateFmCheck (const Vgraph * const, const VgraphSeparateFmVertex * restrict const, const Gnum, const Gnum, const Gnum); #endif /* SCOTCH_DEBUG_VGRAPH3 */ -static GainLink * vgraphSeparateFmTablGet (GainTabl * const, const Gnum, const Gnum, const int); -#undef static +#endif /* VGRAPH_SEPARATE_FM */ + +int vgraphSeparateFm (Vgraph * const, const VgraphSeparateFmParam * const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_gg.c scotch-6.0.6/src/libscotch/vgraph_separate_gg.c --- scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_gg.c 2012-02-04 10:05:00.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vgraph_separate_gg.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -50,7 +50,7 @@ /** # Version 5.1 : from : 09 nov 2008 **/ /** to 09 nov 2008 **/ /** # Version 6.0 : from : 04 feb 2012 **/ -/** to 04 feb 2012 **/ +/** to 26 feb 2018 **/ /** **/ /************************************************************/ @@ -106,9 +106,7 @@ const Gnum * restrict const verttax = grafptr->s.verttax; const Gnum * restrict const vendtax = grafptr->s.vendtax; - const Gnum * restrict const velotax = grafptr->s.velotax; const Gnum * restrict const edgetax = grafptr->s.edgetax; - const Gnum * restrict const edlotax = grafptr->s.edlotax; GraphPart * restrict const parttax = grafptr->parttax; Gnum * restrict const frontab = grafptr->frontab; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_gg.h scotch-6.0.6/src/libscotch/vgraph_separate_gg.h --- scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_gg.h 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vgraph_separate_gg.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,6 +45,8 @@ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 19 dec 2001 **/ /** to 09 jan 2004 **/ +/** # Version 6.0 : from : 30 apr 2018 **/ +/** to : 30 apr 2018 **/ /** **/ /************************************************************/ @@ -84,10 +86,4 @@ ** The function prototypes. */ -#ifndef VGRAPH_SEPARATE_GG -#define static -#endif - int vgraphSeparateGg (Vgraph * restrict const, const VgraphSeparateGgParam * restrict const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_gp.c scotch-6.0.6/src/libscotch/vgraph_separate_gp.c --- scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_gp.c 2012-02-14 00:42:43.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vgraph_separate_gp.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2012,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -47,7 +47,7 @@ /** # Version 5.1 : from : 09 nov 2008 **/ /** to 09 nov 2008 **/ /** # Version 6.0 : from : 10 feb 2011 **/ -/** to 10 feb 2011 **/ +/** to 15 aug 2016 **/ /** **/ /************************************************************/ @@ -97,7 +97,7 @@ GraphPart * restrict const parttax = grafptr->parttax; Gnum * restrict const frontab = grafptr->frontab; - if (grafptr->compload[0] != grafptr->s.velosum) /* If not all vertices already in part 0 */ + if (grafptr->compsize[0] != grafptr->s.vertnbr) /* If not all vertices already in part 0 */ vgraphZero (grafptr); /* Move all graph vertices to part 0 */ if (memAllocGroup ((void **) (void *) diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_gp.h scotch-6.0.6/src/libscotch/vgraph_separate_gp.h --- scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_gp.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vgraph_separate_gp.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to 17 may 2004 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to 04 nov 2010 **/ +/** # Version 6.0 : from : 30 apr 2018 **/ +/** to : 30 apr 2018 **/ /** **/ /************************************************************/ @@ -75,14 +77,8 @@ ** The function prototypes. */ -#ifndef VGRAPH_SEPARATE_GP -#define static -#endif - int vgraphSeparateGp (Vgraph * restrict const, const VgraphSeparateGpParam * restrict const); -#undef static - /* ** The macro definitions. */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_ml.c scotch-6.0.6/src/libscotch/vgraph_separate_ml.c --- scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_ml.c 2015-03-01 09:14:02.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vgraph_separate_ml.c 2018-07-14 15:24:49.000000000 +0000 @@ -48,7 +48,7 @@ /** # Version 5.1 : from : 11 nov 2009 **/ /** to 11 nov 2009 **/ /** # Version 6.0 : from : 09 mar 2011 **/ -/** to 27 feb 2015 **/ +/** to 16 aug 2015 **/ /** **/ /************************************************************/ @@ -94,7 +94,9 @@ const VgraphSeparateMlParam * const paraptr) /*+ Method parameters +*/ { *coarmultptr = NULL; /* Allocate coarmulttab along with coarse graph */ - if (graphCoarsen (&finegrafptr->s, &coargrafptr->s, coarmultptr, paraptr->coarnbr, paraptr->coarval, NULL, NULL, 0, NULL) != 0) + if (graphCoarsen (&finegrafptr->s, &coargrafptr->s, NULL, coarmultptr, + paraptr->coarnbr, paraptr->coarval, GRAPHCOARSENNONE, + NULL, NULL, 0, NULL) != 0) return (1); /* Return if coarsening failed */ coargrafptr->parttax = NULL; /* Do not allocate partition data yet */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_ml.h scotch-6.0.6/src/libscotch/vgraph_separate_ml.h --- scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_ml.h 2013-09-25 06:30:18.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vgraph_separate_ml.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2011,2013 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2011,2013,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -46,7 +46,7 @@ /** # Version 4.0 : from : 13 dec 2001 **/ /** to 02 feb 2004 **/ /** # Version 6.0 : from : 16 apr 2011 **/ -/** to 25 sep 2013 **/ +/** to 30 apr 2018 **/ /** **/ /************************************************************/ @@ -68,14 +68,12 @@ ** The function prototypes. */ -#ifndef VGRAPH_SEPARATE_ML -#define static -#endif +#ifdef VGRAPH_SEPARATE_ML static int vgraphSeparateMlCoarsen (const Vgraph * const, Vgraph * const, GraphCoarsenMulti * restrict * const, const VgraphSeparateMlParam * const); static int vgraphSeparateMlUncoarsen (Vgraph * const, const Vgraph * const, const GraphCoarsenMulti * restrict const); - -int vgraphSeparateMl (Vgraph * const, const VgraphSeparateMlParam * const); static int vgraphSeparateMl2 (Vgraph * const, const VgraphSeparateMlParam * const); -#undef static +#endif /* VGRAPH_SEPARATE_ML */ + +int vgraphSeparateMl (Vgraph * const, const VgraphSeparateMlParam * const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_st.h scotch-6.0.6/src/libscotch/vgraph_separate_st.h --- scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_st.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vgraph_separate_st.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -49,6 +49,8 @@ /** to : 17 feb 2007 **/ /** # Version 5.1 : from : 30 oct 2007 **/ /** to : 30 oct 2007 **/ +/** # Version 6.0 : from : 30 apr 2018 **/ +/** to : 30 apr 2018 **/ /** **/ /************************************************************/ @@ -80,10 +82,4 @@ ** The function prototypes. */ -#ifndef VGRAPH_SEPARATE_ST -#define static -#endif - int vgraphSeparateSt (Vgraph * const, const Strat * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_th.h scotch-6.0.6/src/libscotch/vgraph_separate_th.h --- scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_th.h 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vgraph_separate_th.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to 17 oct 1998 **/ /** # Version 4.0 : from : 12 dec 2001 **/ /** to 01 jan 2002 **/ +/** # Version 6.0 : from : 30 apr 2018 **/ +/** to : 30 apr 2018 **/ /** **/ /************************************************************/ @@ -50,10 +52,4 @@ ** The function prototypes. */ -#ifndef VGRAPH_SEPARATE_TH -#define static -#endif - int vgraphSeparateTh (Vgraph * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_vw.h scotch-6.0.6/src/libscotch/vgraph_separate_vw.h --- scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_vw.h 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vgraph_separate_vw.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to 31 may 1999 **/ /** # Version 4.0 : from : 18 may 2004 **/ /** to 18 may 2004 **/ +/** # Version 6.0 : from : 30 apr 2018 **/ +/** to : 30 apr 2018 **/ /** **/ /************************************************************/ @@ -50,10 +52,4 @@ ** The function prototypes. */ -#ifndef VGRAPH_SEPARATE_VW -#define static -#endif - int vgraphSeparateVw (Vgraph * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_zr.c scotch-6.0.6/src/libscotch/vgraph_separate_zr.c --- scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_zr.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vgraph_separate_zr.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,6 +42,8 @@ /** to 31 may 1999 **/ /** # Version 4.0 : from : 19 dec 2001 **/ /** to 29 may 2004 **/ +/** # Version 6.0 : from : 15 aug 2016 **/ +/** to 15 aug 2016 **/ /** **/ /************************************************************/ @@ -74,7 +76,7 @@ vgraphSeparateZr ( Vgraph * const grafptr) /*+ Active graph +*/ { - if (grafptr->compload[0] != grafptr->s.velosum) /* If not all vertices already in part zero */ + if (grafptr->compsize[0] != grafptr->s.vertnbr) /* If not all vertices already in part zero */ vgraphZero (grafptr); return (0); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_zr.h scotch-6.0.6/src/libscotch/vgraph_separate_zr.h --- scotch-6.0.4.dfsg1/src/libscotch/vgraph_separate_zr.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vgraph_separate_zr.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to 31 may 1999 **/ /** # Version 4.0 : from : 19 dec 2001 **/ /** to 01 jan 2002 **/ +/** # Version 6.0 : from : 30 apr 2018 **/ +/** to : 30 apr 2018 **/ /** **/ /************************************************************/ @@ -50,10 +52,4 @@ ** The function prototypes. */ -#ifndef VGRAPH_SEPARATE_ZR -#define static -#endif - int vgraphSeparateZr (Vgraph * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vmesh_check.c scotch-6.0.6/src/libscotch/vmesh_check.c --- scotch-6.0.4.dfsg1/src/libscotch/vmesh_check.c 2014-06-02 17:24:37.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vmesh_check.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,7 +41,7 @@ /** DATES : # Version 4.0 : from : 21 mar 2003 **/ /** to 11 may 2004 **/ /** # Version 6.0 : from : 02 jun 2014 **/ -/** to 02 jun 2014 **/ +/** to 21 may 2018 **/ /** **/ /************************************************************/ @@ -120,17 +120,9 @@ eelmnum < meshptr->m.vendtax[velmnum]; eelmnum ++) edgecut[meshptr->parttax[meshptr->m.edgetax[eelmnum]]] ++; - if (partnum == 2) { - if ((edgecut[0] != 0) || (edgecut[1] != 0)) { - errorPrint ("vmeshCheck: separator element not surrounded by separator nodes"); - return (1); - } - } - else { - if (edgecut[1 - partnum] != 0) { - errorPrint ("vmeshCheck: element should be in separator (%ld)", (long) velmnum); - return (1); - } + if (edgecut[1 - partnum] != 0) { + errorPrint ("vmeshCheck: element connected to nodes in other part (%ld)", (long) velmnum); + return (1); } } if ((meshptr->ecmpsize[0] != ecmpsize[0]) || diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vmesh.h scotch-6.0.6/src/libscotch/vmesh.h --- scotch-6.0.4.dfsg1/src/libscotch/vmesh.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vmesh.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,6 +43,8 @@ /** to : 10 sep 2002 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to : 04 nov 2010 **/ +/** # Version 6.0 : from : 31 may 2018 **/ +/** to 31 may 2018 **/ /** **/ /************************************************************/ @@ -79,10 +81,6 @@ ** The function prototypes. */ -#ifndef VMESH -#define static -#endif - void vmeshExit (Vmesh * const); void vmeshZero (Vmesh * const); int vmeshCheck (const Vmesh * const); @@ -91,5 +89,3 @@ void vmeshStoreExit (VmeshStore * const); void vmeshStoreSave (const Vmesh * const , VmeshStore * const); void vmeshStoreUpdt (Vmesh * const, const VmeshStore * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vmesh_separate_fm.h scotch-6.0.6/src/libscotch/vmesh_separate_fm.h --- scotch-6.0.4.dfsg1/src/libscotch/vmesh_separate_fm.h 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vmesh_separate_fm.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 4.0 : from : 26 feb 2003 **/ /** to 06 may 2004 **/ +/** # Version 6.0 : from : 31 may 2018 **/ +/** to 31 may 2018 **/ /** **/ /************************************************************/ @@ -123,16 +125,12 @@ ** The function prototypes. */ -#ifndef VMESH_SEPARATE_FM -#define static -#endif - -int vmeshSeparateFm (Vmesh * restrict const, const VmeshSeparateFmParam * restrict const); - +#ifdef VMESH_SEPARATE_FM static VmeshSeparateFmElement * vmeshSeparateFmTablGet (GainTabl * const, const Gnum, const Gnum); static int vmeshSeparateFmResize (GainTabl * restrict const, VmeshSeparateFmElement * restrict * const, VmeshSeparateFmNode * restrict * const, VmeshSeparateFmSave * restrict * const, const Gnum, VmeshSeparateFmElement **, VmeshSeparateFmElement **, const Gnum); #ifdef SCOTCH_DEBUG_VMESH3 static int vmeshSeparateFmCheck (const Vmesh * const, const VmeshSeparateFmElement * restrict, const VmeshSeparateFmNode * restrict, const Gnum, const Gnum, const Gnum); #endif /* SCOTCH_DEBUG_VMESH3 */ +#endif /* VMESH_SEPARATE_FM */ -#undef static +int vmeshSeparateFm (Vmesh * restrict const, const VmeshSeparateFmParam * restrict const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vmesh_separate_gg.h scotch-6.0.6/src/libscotch/vmesh_separate_gg.h --- scotch-6.0.4.dfsg1/src/libscotch/vmesh_separate_gg.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vmesh_separate_gg.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 4.0 : from : 16 sep 2002 **/ /** to 07 apr 2004 **/ +/** # Version 6.0 : from : 31 may 2018 **/ +/** to 31 may 2018 **/ /** **/ /************************************************************/ @@ -91,14 +93,10 @@ ** The function prototypes. */ -#ifndef VMESH_SEPARATE_GG -#define static -#endif - -int vmeshSeparateGg (Vmesh * restrict const, const VmeshSeparateGgParam * restrict const); - +#ifdef VMESH_SEPARATE_GG #ifdef SCOTCH_DEBUG_VMESH3 static int vmeshSeparateGgCheck (Vmesh * restrict const, const Gnum, const Gnum, const VmeshSeparateGgElem * restrict const, const VmeshSeparateGgNode * restrict const vnoxtax); #endif /* SCOTCH_DEBUG_VMESH3 */ +#endif /* VMESH_SEPARATE_GG */ -#undef static +int vmeshSeparateGg (Vmesh * restrict const, const VmeshSeparateGgParam * restrict const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vmesh_separate_gr.h scotch-6.0.6/src/libscotch/vmesh_separate_gr.h --- scotch-6.0.4.dfsg1/src/libscotch/vmesh_separate_gr.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vmesh_separate_gr.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 4.0 : from : 11 oct 2003 **/ /** to 11 oct 2003 **/ +/** # Version 6.0 : from : 31 may 2018 **/ +/** to 31 may 2018 **/ /** **/ /************************************************************/ @@ -62,10 +64,4 @@ ** The function prototypes. */ -#ifndef VMESH_SEPARATE_GR -#define static -#endif - int vmeshSeparateGr (Vmesh * restrict const, const VmeshSeparateGrParam * restrict const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vmesh_separate_ml.h scotch-6.0.6/src/libscotch/vmesh_separate_ml.h --- scotch-6.0.4.dfsg1/src/libscotch/vmesh_separate_ml.h 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vmesh_separate_ml.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 4.0 : from : 20 feb 2003 **/ /** to 31 aug 2005 **/ +/** # Version 6.0 : from : 31 may 2018 **/ +/** to 31 may 2018 **/ /** **/ /************************************************************/ @@ -62,14 +64,10 @@ ** The function prototypes. */ -#ifndef VMESH_SEPARATE_ML -#define static -#endif - +#ifdef VMESH_SEPARATE_ML static int vmeshSeparateMlCoarsen (const Vmesh * restrict const, Vmesh * restrict const, Gnum * restrict * const, const VmeshSeparateMlParam * const); static int vmeshSeparateMlUncoarsen (Vmesh * const, const Vmesh * const, const Gnum * restrict const); - -int vmeshSeparateMl (Vmesh * const, const VmeshSeparateMlParam * const); static int vmeshSeparateMl2 (Vmesh * const, const VmeshSeparateMlParam * const); +#endif /* VMESH_SEPARATE_ML */ -#undef static +int vmeshSeparateMl (Vmesh * const, const VmeshSeparateMlParam * const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vmesh_separate_st.c scotch-6.0.6/src/libscotch/vmesh_separate_st.c --- scotch-6.0.4.dfsg1/src/libscotch/vmesh_separate_st.c 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vmesh_separate_st.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,6 +42,8 @@ /** to 08 feb 2003 **/ /** # Version 5.0 : from : 04 aug 2007 **/ /** to 04 aug 2007 **/ +/** # Version 6.0 : from : 06 jun 2018 **/ +/** to 06 jun 2018 **/ /** **/ /************************************************************/ @@ -84,10 +86,12 @@ StratNodeMethodData padding; } vmeshseparatedefaultgg = { { 5 } }; +#ifdef SCOTCH_DEBUG_VMESH2 static union { VmeshSeparateGrParam param; StratNodeMethodData padding; } vmeshseparatedefaultgr = { { &stratdummy } }; +#endif /* SCOTCH_DEBUG_VMESH2 */ static union { VmeshSeparateMlParam param; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vmesh_separate_st.h scotch-6.0.6/src/libscotch/vmesh_separate_st.h --- scotch-6.0.4.dfsg1/src/libscotch/vmesh_separate_st.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vmesh_separate_st.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 4.0 : from : 20 sep 2002 **/ /** to 31 oct 2003 **/ +/** # Version 6.0 : from : 31 may 2018 **/ +/** to 31 may 2018 **/ /** **/ /************************************************************/ @@ -71,10 +73,4 @@ ** The function prototypes. */ -#ifndef VMESH_SEPARATE_ST -#define static -#endif - int vmeshSeparateSt (Vmesh * restrict const, const Strat * restrict const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/vmesh_separate_zr.h scotch-6.0.6/src/libscotch/vmesh_separate_zr.h --- scotch-6.0.4.dfsg1/src/libscotch/vmesh_separate_zr.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/vmesh_separate_zr.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS +/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,6 +41,8 @@ /** **/ /** DATES : # Version 4.0 : from : 10 sep 2002 **/ /** to 10 sep 2002 **/ +/** # Version 6.0 : from : 31 may 2018 **/ +/** to 31 may 2018 **/ /** **/ /************************************************************/ @@ -48,10 +50,4 @@ ** The function prototypes. */ -#ifndef VMESH_SEPARATE_ZR -#define static -#endif - int vmeshSeparateZr (Vmesh * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/wgraph_check.c scotch-6.0.6/src/libscotch/wgraph_check.c --- scotch-6.0.4.dfsg1/src/libscotch/wgraph_check.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/wgraph_check.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007-2010 ENSEIRB, INRIA & CNRS +/* Copyright 2007-2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,7 +43,7 @@ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2009 **/ -/** to : 10 mar 2010 **/ +/** to : 31 may 2018 **/ /** **/ /************************************************************/ @@ -82,7 +82,6 @@ wgraphCheck ( const Wgraph * const grafptr) { - Gnum vertnbr; /* number of vertex */ Gnum vertnum; /* Number of current vertex */ const Gnum * restrict velobax; /* Data for handling of optional arrays */ Gnum velomsk; @@ -94,8 +93,6 @@ Gnum * restrict compsize; Gnum * restrict flagtab; - vertnbr = grafptr->s.vertnbr; - if (memAllocGroup ((void **) (void *) &flagtab, (size_t) (grafptr->partnbr * sizeof (Gnum)), &compload, (size_t) (grafptr->partnbr * sizeof (Gnum)), diff -Nru scotch-6.0.4.dfsg1/src/libscotch/wgraph.h scotch-6.0.6/src/libscotch/wgraph.h --- scotch-6.0.4.dfsg1/src/libscotch/wgraph.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/wgraph.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007-2010 ENSEIRB, INRIA & CNRS +/* Copyright 2007-2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2009 **/ -/** to : 04 nov 2010 **/ +/** to : 31 may 2018 **/ /** **/ /************************************************************/ @@ -92,10 +92,6 @@ ** The function prototypes. */ -#ifndef WGRAPH -#define static -#endif - void wgraphInit (Wgraph * const, const Graph * restrict const, const Anum); void wgraphExit (Wgraph * const); int wgraphAlloc (Wgraph * const); @@ -106,5 +102,3 @@ void wgraphStoreExit (WgraphStore * const); void wgraphStoreSave (const Wgraph * const, WgraphStore * const); void wgraphStoreUpdt (Wgraph * const, const WgraphStore * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/wgraph_part_fm.c scotch-6.0.6/src/libscotch/wgraph_part_fm.c --- scotch-6.0.4.dfsg1/src/libscotch/wgraph_part_fm.c 2013-12-24 15:09:47.000000000 +0000 +++ scotch-6.0.6/src/libscotch/wgraph_part_fm.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007-2013 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007-2013,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2009 **/ -/** to 24 dec 2013 **/ +/** to 31 may 2018 **/ /** **/ /************************************************************/ @@ -911,5 +911,5 @@ { errorPrint ("wgraphPartFmResize: not implemented"); - return (0); + return (1); } diff -Nru scotch-6.0.4.dfsg1/src/libscotch/wgraph_part_fm.h scotch-6.0.6/src/libscotch/wgraph_part_fm.h --- scotch-6.0.4.dfsg1/src/libscotch/wgraph_part_fm.h 2012-11-30 09:52:28.000000000 +0000 +++ scotch-6.0.6/src/libscotch/wgraph_part_fm.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007-2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007-2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2009 **/ -/** to : 30 nov 2012 **/ +/** to : 31 may 2018 **/ /** **/ /************************************************************/ @@ -145,13 +145,8 @@ ** The function prototypes. */ -#ifndef WGRAPH_PART_FM -#define static -#endif - -int wgraphPartFm (Wgraph * const, const WgraphPartFmParam * const); - +#ifdef WGRAPH_PART_FM static int wgraphPartFmResize (); -static int wgraphPartFmCheck (const Wgraph * restrict const, const WgraphPartFmVertex * restrict const, Gnum, const Gnum, const Gnum); +#endif /* WGRAPH_PART_FM */ -#undef static +int wgraphPartFm (Wgraph * const, const WgraphPartFmParam * const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/wgraph_part_gg.h scotch-6.0.6/src/libscotch/wgraph_part_gg.h --- scotch-6.0.4.dfsg1/src/libscotch/wgraph_part_gg.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/wgraph_part_gg.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007-2010 ENSEIRB, INRIA & CNRS +/* Copyright 2007-2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2009 **/ -/** to : 04 nov 2010 **/ +/** to : 31 may 2018 **/ /** **/ /************************************************************/ @@ -83,10 +83,4 @@ ** The function prototypes. */ -#ifndef WGRAPH_PART_GG -#define static -#endif - int wgraphPartGg (Wgraph * restrict const, const WgraphPartGgParam * restrict const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/wgraph_part_gp.h scotch-6.0.6/src/libscotch/wgraph_part_gp.h --- scotch-6.0.4.dfsg1/src/libscotch/wgraph_part_gp.h 2011-09-06 16:46:49.000000000 +0000 +++ scotch-6.0.6/src/libscotch/wgraph_part_gp.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007-2010 ENSEIRB, INRIA & CNRS +/* Copyright 2007-2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2009 **/ -/** to : 04 nov 2010 **/ +/** to : 31 may 2018 **/ /** **/ /************************************************************/ @@ -81,10 +81,4 @@ ** The function prototypes. */ -#ifndef WGRAPH_PART_GP -#define static -#endif - int wgraphPartGp (Wgraph * restrict const, const WgraphPartGpParam * restrict const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/wgraph_part_ml.c scotch-6.0.6/src/libscotch/wgraph_part_ml.c --- scotch-6.0.4.dfsg1/src/libscotch/wgraph_part_ml.c 2015-03-01 09:14:02.000000000 +0000 +++ scotch-6.0.6/src/libscotch/wgraph_part_ml.c 2018-07-14 15:24:49.000000000 +0000 @@ -45,7 +45,7 @@ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2009 **/ -/** to 27 feb 2015 **/ +/** to 16 aug 2015 **/ /** **/ /************************************************************/ @@ -97,9 +97,9 @@ const WgraphPartMlParam * const paraptr) /*+ Method parameters +*/ { *coarmultptr = NULL; /* Allocate coarmulttab along with coarse graph */ - if (graphCoarsen (&finegrafptr->s, &coargrafptr->s, coarmultptr, - (paraptr->coarnbr * finegrafptr->partnbr), - paraptr->coarval, NULL, NULL, 0, NULL) != 0) + if (graphCoarsen (&finegrafptr->s, &coargrafptr->s, NULL, coarmultptr, + (paraptr->coarnbr * finegrafptr->partnbr), paraptr->coarval, GRAPHCOARSENNONE, + NULL, NULL, 0, NULL) != 0) return (1); /* Return if coarsening failed */ coargrafptr->parttax = NULL; /* Do not allocate partition data yet */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/wgraph_part_ml.h scotch-6.0.6/src/libscotch/wgraph_part_ml.h --- scotch-6.0.4.dfsg1/src/libscotch/wgraph_part_ml.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/wgraph_part_ml.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007-2011 ENSEIRB, INRIA & CNRS +/* Copyright 2007-2011,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,7 +43,7 @@ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2009 **/ -/** to : 16 apr 2011 **/ +/** to : 31 may 2018 **/ /** **/ /************************************************************/ @@ -64,14 +64,10 @@ ** The function prototypes. */ -#ifndef WGRAPH_PART_ML -#define static -#endif - +#ifdef WGRAPH_PART_ML static int wgraphPartMlCoarsen (const Wgraph * const, Wgraph * const, GraphCoarsenMulti * restrict * const, const WgraphPartMlParam * const); static int wgraphPartMlUncoarsen (Wgraph * const, const Wgraph * const, const GraphCoarsenMulti * restrict const); - -int wgraphPartMl (Wgraph * const, const WgraphPartMlParam * const); static int wgraphPartMl2 (Wgraph * const, const WgraphPartMlParam * const); +#endif /* WGRAPH_PART_ML */ -#undef static +int wgraphPartMl (Wgraph * const, const WgraphPartMlParam * const); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/wgraph_part_rb.c scotch-6.0.6/src/libscotch/wgraph_part_rb.c --- scotch-6.0.4.dfsg1/src/libscotch/wgraph_part_rb.c 2014-08-23 18:42:38.000000000 +0000 +++ scotch-6.0.6/src/libscotch/wgraph_part_rb.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2010,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2010,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,7 +41,7 @@ /** sive bipartitioning approach. **/ /** **/ /** DATES : # Version 6.0 : from : 16 mar 2010 **/ -/** to 12 aug 2014 **/ +/** to 26 feb 2018 **/ /** **/ /** NOTES : # This code derives from the code of **/ /** kgraph_map_rb_part.c for the vertex **/ @@ -248,7 +248,6 @@ const WgraphPartRbParam * restrict const paraptr) { const Anum * restrict parttax; - Anum partval; Gnum vertnum; Gnum velomsk; const Gnum * restrict velobax; /* Data for handling of optional arrays */ diff -Nru scotch-6.0.4.dfsg1/src/libscotch/wgraph_part_rb.h scotch-6.0.6/src/libscotch/wgraph_part_rb.h --- scotch-6.0.4.dfsg1/src/libscotch/wgraph_part_rb.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/wgraph_part_rb.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2010 ENSEIRB, INRIA & CNRS +/* Copyright 2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -41,7 +41,7 @@ /** ng approach. **/ /** **/ /** DATES : # Version 6.0 : from : 16 mar 2010 **/ -/** to 04 nov 2010 **/ +/** to 31 may 2018 **/ /** **/ /** NOTES : # This code derives from the code of **/ /** kgraph_map_rb_part.h for the vertex **/ @@ -73,10 +73,4 @@ ** The function prototypes. */ -#ifndef WGRAPH_PART_RB -#define static -#endif - int wgraphPartRb (Wgraph * restrict const, const WgraphPartRbParam * restrict const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotch/wgraph_part_st.c scotch-6.0.6/src/libscotch/wgraph_part_st.c --- scotch-6.0.4.dfsg1/src/libscotch/wgraph_part_st.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/wgraph_part_st.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007-2011 ENSEIRB, INRIA & CNRS +/* Copyright 2007-2011,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -34,8 +34,8 @@ /** NAME : wgraph_part_st.c **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ -/** Charles-Edmond BICHOT (v5.1b) **/ /** Sebastien FOURESTIER (v6.0) **/ +/** Charles-Edmond BICHOT (v5.1b) **/ /** **/ /** FUNCTION : This module contains the global **/ /** vertex overlapped graph partitioning **/ @@ -44,7 +44,7 @@ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2009 **/ -/** to 16 apr 2011 **/ +/** to 26 feb 2018 **/ /** **/ /************************************************************/ @@ -77,7 +77,9 @@ ** The static and global variables. */ +#if 0 /* Not used */ static Wgraph wgraphdummy; /* Dummy overlap graph for offset computations */ +#endif static union { WgraphPartFmParam param; diff -Nru scotch-6.0.4.dfsg1/src/libscotch/wgraph_part_st.h scotch-6.0.6/src/libscotch/wgraph_part_st.h --- scotch-6.0.4.dfsg1/src/libscotch/wgraph_part_st.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/wgraph_part_st.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007-2010 ENSEIRB, INRIA & CNRS +/* Copyright 2007-2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,7 +43,7 @@ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2009 **/ -/** to : 14 mar 2010 **/ +/** to : 31 may 2018 **/ /** **/ /************************************************************/ /* @@ -74,11 +74,4 @@ ** The function prototypes. */ -#ifndef WGRAPH_PART_ST -#define static -#endif - int wgraphPartSt (Wgraph * restrict const, const Strat * restrict const); - -#undef static - diff -Nru scotch-6.0.4.dfsg1/src/libscotch/wgraph_part_zr.c scotch-6.0.6/src/libscotch/wgraph_part_zr.c --- scotch-6.0.4.dfsg1/src/libscotch/wgraph_part_zr.c 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/wgraph_part_zr.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,3 +1,52 @@ +/* Copyright 2007-2010,2016 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : wgraph_part_zr.c **/ +/** **/ +/** AUTHOR : Jun-Ho HER (v6.0) **/ +/** Charles-Edmond BICHOT (v5.1b) **/ +/** Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : This module moves all of the vertices **/ +/** to the first subdomain of the **/ +/** partition. **/ +/** **/ +/** DATES : # Version 5.1 : from : 01 dec 2007 **/ +/** to : 01 jul 2008 **/ +/** # Version 6.0 : from : 05 nov 2009 **/ +/** to : 14 mar 2010 **/ +/** **/ +/************************************************************/ /* ** The defines and includes. */ @@ -27,8 +76,7 @@ wgraphPartZr ( Wgraph * const grafptr) /*+ Active graph +*/ { - - if (grafptr->compload[0] != grafptr->s.velosum) /* If not all vertices already in part zero */ + if (grafptr->compsize[0] != grafptr->s.vertnbr) /* If not all vertices already in part zero */ wgraphZero (grafptr); return (0); diff -Nru scotch-6.0.4.dfsg1/src/libscotch/wgraph_part_zr.h scotch-6.0.6/src/libscotch/wgraph_part_zr.h --- scotch-6.0.4.dfsg1/src/libscotch/wgraph_part_zr.h 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotch/wgraph_part_zr.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,11 +1,53 @@ +/* Copyright 2007-2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : wgraph_part_zr.h **/ +/** **/ +/** AUTHOR : Charles-Edmond BICHOT (v5.1b) **/ +/** **/ +/** FUNCTION : These lines are the data declarations **/ +/** for the move-all-to-first-subdomain **/ +/** partitioning algorithm. **/ +/** **/ +/** DATES : # Version 5.1 : from : 01 dec 2007 **/ +/** to : 01 jul 2008 **/ +/** # Version 6.0 : from : 05 nov 2009 **/ +/** to : 31 may 2018 **/ +/** **/ +/************************************************************/ + /* ** The function prototypes. */ -#ifndef WGRAPH_PART_ZR -#define static -#endif - int wgraphPartZr (Wgraph * const); - -#undef static diff -Nru scotch-6.0.4.dfsg1/src/libscotchmetis/library_metis.h scotch-6.0.6/src/libscotchmetis/library_metis.h --- scotch-6.0.4.dfsg1/src/libscotchmetis/library_metis.h 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/libscotchmetis/library_metis.h 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,115 @@ +/********************************************************* +** ** +** WARNING: THIS IS NOT THE ORIGINAL INCLUDE FILE OF ** +** THE MeTiS SOFTWARE PACKAGE. ** +** This file is a compatibility include file provided ** +** as part of the Scotch software distribution. ** +** Preferably use the original MeTiS include file to ** +** keep definitions of routines not overloaded by ** +** the libScotchMeTiS library. ** +** ** +*********************************************************/ +/* Copyright 2007,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : library_metis.h **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : Compatibility declaration file for the **/ +/** MeTiS interface routines provided by **/ +/** the Scotch project. **/ +/** **/ +/** DATES : # Version 5.0 : from : 08 sep 2006 **/ +/** to 07 jun 2007 **/ +/** # Version 5.1 : from : 30 jun 2010 **/ +/** to 30 jun 2010 **/ +/** # Version 6.0 : from : 13 sep 2012 **/ +/** to 14 feb 2018 **/ +/** **/ +/************************************************************/ + +/* +** The defines. +*/ + +#ifdef SCOTCH_METIS_PREFIX +#define SCOTCH_METIS_PREFIXL scotch_ +#define SCOTCH_METIS_PREFIXU SCOTCH_ +#endif /* SCOTCH_METIS_PREFIX */ + +#ifndef SCOTCH_METIS_PREFIXL +#define SCOTCH_METIS_PREFIXL +#endif /* SCOTCH_METIS_PREFIXL */ + +#ifndef SCOTCH_METIS_PREFIXU +#define SCOTCH_METIS_PREFIXU +#endif /* SCOTCH_METIS_PREFIXU */ + +#ifndef METISNAMEL +#define METISNAMEL(s) METISNAME2(METISNAME3(SCOTCH_METIS_PREFIXL),s) +#define METISNAMEU(s) METISNAME2(METISNAME3(SCOTCH_METIS_PREFIXU),s) +#define METISNAME2(p,s) METISNAME4(p,s) +#define METISNAME3(s) s +#define METISNAME4(p,s) p##s +#endif /* METISNAMEL */ + +#ifndef SCOTCH_METIS_RETURN +#define SCOTCH_METIS_RETURN +typedef enum { + METIS_OK = 1, + METIS_ERROR_INPUT = -2, + METIS_ERROR_MEMORY = -3, + METIS_ERROR = -4 +} rstatus_et; +#endif /* SCOTCH_METIS_RETURN */ + +/* +** The type and structure definitions. +*/ + +#ifndef SCOTCH_H /* In case "scotch.h" not included before */ +typedef DUMMYINT SCOTCH_Num; +#endif /* SCOTCH_H */ + +/* +** The function prototypes. +*/ + +int METISNAMEU(METIS_EdgeND) (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); +int METISNAMEU(METIS_NodeND) (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); +int METISNAMEU(METIS_NodeWND) (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); + +int METISNAMEU(METIS_PartGraphKway) (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); +int METISNAMEU(METIS_PartGraphRecursive) (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); +int METISNAMEU(METIS_PartGraphVKway) (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); diff -Nru scotch-6.0.4.dfsg1/src/libscotchmetis/library_parmetis.h scotch-6.0.6/src/libscotchmetis/library_parmetis.h --- scotch-6.0.4.dfsg1/src/libscotchmetis/library_parmetis.h 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/libscotchmetis/library_parmetis.h 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,118 @@ +/********************************************************* +** ** +** WARNING: THIS IS NOT THE ORIGINAL INCLUDE FILE OF ** +** THE ParMeTiS SOFTWARE PACKAGE. ** +** This file is a compatibility include file provided ** +** as part of the Scotch software distribution. ** +** Preferably use the original ParMeTiS include file ** +** to keep definitions of routines not overloaded by ** +** the libPTScotchMeTiS library. ** +** ** +*********************************************************/ +/* Copyright 2007,2008,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS +** +** This file is part of the Scotch software package for static mapping, +** graph partitioning and sparse matrix ordering. +** +** This software is governed by the CeCILL-C license under French law +** and abiding by the rules of distribution of free software. You can +** use, modify and/or redistribute the software under the terms of the +** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following +** URL: "http://www.cecill.info". +** +** As a counterpart to the access to the source code and rights to copy, +** modify and redistribute granted by the license, users are provided +** only with a limited warranty and the software's author, the holder of +** the economic rights, and the successive licensors have only limited +** liability. +** +** In this respect, the user's attention is drawn to the risks associated +** with loading, using, modifying and/or developing or reproducing the +** software by the user in light of its specific status of free software, +** that may mean that it is complicated to manipulate, and that also +** therefore means that it is reserved for developers and experienced +** professionals having in-depth computer knowledge. Users are therefore +** encouraged to load and test the software's suitability as regards +** their requirements in conditions enabling the security of their +** systems and/or data to be ensured and, more generally, to use and +** operate it in the same conditions as regards security. +** +** The fact that you are presently reading this means that you have had +** knowledge of the CeCILL-C license and that you accept its terms. +*/ +/************************************************************/ +/** **/ +/** NAME : library_parmetis.h **/ +/** **/ +/** AUTHOR : Francois PELLEGRINI **/ +/** **/ +/** FUNCTION : Compatibility declaration file for the **/ +/** MeTiS interface routines provided by **/ +/** the Scotch project. **/ +/** **/ +/** DATES : # Version 5.0 : from : 17 oct 2007 **/ +/** to 18 oct 2007 **/ +/** # Version 5.1 : from : 19 jun 2008 **/ +/** to 30 jun 2010 **/ +/** # Version 6.0 : from : 13 sep 2012 **/ +/** to 14 feb 2018 **/ +/** **/ +/************************************************************/ + +/* +** The defines and includes. +*/ + +#ifndef __parmetis_h__ +#define __parmetis_h__ + +#include /* Since ParMeTiS does it, do it too */ + +#endif /* __parmetis_h__ */ + +#ifdef SCOTCH_METIS_PREFIX +#define SCOTCH_METIS_PREFIXL scotch_ +#define SCOTCH_METIS_PREFIXU SCOTCH_ +#endif /* SCOTCH_METIS_PREFIX */ + +#ifndef SCOTCH_METIS_PREFIXL +#define SCOTCH_METIS_PREFIXL +#endif /* SCOTCH_METIS_PREFIXL */ + +#ifndef SCOTCH_METIS_PREFIXU +#define SCOTCH_METIS_PREFIXU +#endif /* SCOTCH_METIS_PREFIXU */ + +#ifndef METISNAMEL +#define METISNAMEL(s) METISNAME2(METISNAME3(SCOTCH_METIS_PREFIXL),s) +#define METISNAMEU(s) METISNAME2(METISNAME3(SCOTCH_METIS_PREFIXU),s) +#define METISNAME2(p,s) METISNAME4(p,s) +#define METISNAME3(s) s +#define METISNAME4(p,s) p##s +#endif /* METISNAMEL */ + +#ifndef SCOTCH_METIS_RETURN +#define SCOTCH_METIS_RETURN +typedef enum { + METIS_OK = 1, + METIS_ERROR_INPUT = -2, + METIS_ERROR_MEMORY = -3, + METIS_ERROR = -4 +} rstatus_et; +#endif /* SCOTCH_METIS_RETURN */ + +/* +** The type and structure definitions. +*/ + +#ifndef SCOTCH_H /* In case "scotch.h" not included before */ +typedef DUMMYINT SCOTCH_Num; +#endif /* SCOTCH_H */ + +/* +** The function prototypes. +*/ + +int METISNAMEU(ParMETIS_V3_NodeND) (const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, MPI_Comm * const); +int METISNAMEU(ParMETIS_V3_PartGeomKway) (const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const float * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const float * const, const float * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, MPI_Comm * const); +int METISNAMEU(ParMETIS_V3_PartKway) (const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const float * const, const float * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, MPI_Comm * const); diff -Nru scotch-6.0.4.dfsg1/src/libscotchmetis/Makefile scotch-6.0.6/src/libscotchmetis/Makefile --- scotch-6.0.4.dfsg1/src/libscotchmetis/Makefile 2011-09-06 16:46:48.000000000 +0000 +++ scotch-6.0.6/src/libscotchmetis/Makefile 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -## Copyright 2007-2010 ENSEIRB, INRIA & CNRS +## Copyright 2007-2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ## ## This file is part of the Scotch software package for static mapping, ## graph partitioning and sparse matrix ordering. @@ -54,10 +54,12 @@ scotch : $(MAKE) CC="$(CCS)" SCOTCHLIB=ptscotch \ + metis.h \ libscotchmetis$(LIB) ptscotch : $(MAKE) CFLAGS="$(CFLAGS) -DSCOTCH_PTSCOTCH" CC="$(CCP)" SCOTCHLIB=ptscotch \ + parmetis.h \ libptscotchparmetis$(LIB) install : scotch @@ -69,7 +71,7 @@ -$(CP) libptscotchparmetis$(LIB) $(libdir) clean : - -$(RM) *~ *$(OBJ) lib*$(LIB) + -$(RM) *~ *$(OBJ) lib*$(LIB) metis.h parmetis.h realclean : clean @@ -77,6 +79,10 @@ ## Todo list. ## +metis.h : ../libscotch/dummysizes$(EXE) \ + library_metis.h + ../libscotch/dummysizes$(EXE) library_metis.h metis.h + metis_graph_order$(OBJ) : metis_graph_order.c \ ../libscotch/module.h \ ../libscotch/common.h \ @@ -101,6 +107,10 @@ $(includedir)/scotch.h \ metis.h +parmetis.h : ../libscotch/dummysizes$(EXE) \ + library_parmetis.h + ../libscotch/dummysizes$(EXE) library_parmetis.h parmetis.h + parmetis_dgraph_order$(OBJ) : parmetis_dgraph_order.c \ ../libscotch/module.h \ ../libscotch/common.h \ diff -Nru scotch-6.0.4.dfsg1/src/libscotchmetis/metis_graph_order.c scotch-6.0.6/src/libscotchmetis/metis_graph_order.c --- scotch-6.0.4.dfsg1/src/libscotchmetis/metis_graph_order.c 2012-09-13 15:29:07.000000000 +0000 +++ scotch-6.0.6/src/libscotchmetis/metis_graph_order.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2008,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2008,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** # Version 5.1 : from : 30 jun 2010 **/ /** to 30 jun 2010 **/ /** # Version 6.0 : from : 13 sep 2012 **/ -/** to 13 sep 2012 **/ +/** to 14 feb 2018 **/ /** **/ /************************************************************/ @@ -70,7 +70,7 @@ ** */ -void +int METISNAMEU(METIS_EdgeND) ( const SCOTCH_Num * const n, const SCOTCH_Num * const xadj, @@ -80,14 +80,14 @@ SCOTCH_Num * const perm, SCOTCH_Num * const iperm) { - METISNAMEU(METIS_NodeWND) (n, xadj, adjncy, NULL, numflag, options, perm, iperm); + return (METISNAMEU(METIS_NodeWND) (n, xadj, adjncy, NULL, numflag, options, perm, iperm)); } /* ** */ -void +int METISNAMEU(METIS_NodeND) ( const SCOTCH_Num * const n, const SCOTCH_Num * const xadj, @@ -97,14 +97,14 @@ SCOTCH_Num * const perm, SCOTCH_Num * const iperm) { - METISNAMEU(METIS_NodeWND) (n, xadj, adjncy, NULL, numflag, options, perm, iperm); + return (METISNAMEU(METIS_NodeWND) (n, xadj, adjncy, NULL, numflag, options, perm, iperm)); } /* ** */ -void +int METISNAMEU(METIS_NodeWND) ( const SCOTCH_Num * const n, const SCOTCH_Num * const xadj, @@ -118,6 +118,9 @@ SCOTCH_Graph grafdat; /* Scotch graph object to interface with libScotch */ SCOTCH_Ordering ordedat; /* Scotch ordering object to interface with libScotch */ SCOTCH_Strat stradat; + int o; + + o = METIS_ERROR; /* Assume an error */ SCOTCH_graphInit (&grafdat); @@ -131,11 +134,14 @@ { if (SCOTCH_graphOrderInit (&grafdat, &ordedat, iperm, perm, /* MeTiS and Scotch have opposite definitions for (inverse) permutations */ NULL, NULL, NULL) == 0) { - SCOTCH_graphOrderCompute (&grafdat, &ordedat, &stradat); + if (SCOTCH_graphOrderCompute (&grafdat, &ordedat, &stradat) == 0) + o = METIS_OK; SCOTCH_graphOrderExit (&grafdat, &ordedat); } } SCOTCH_stratExit (&stradat); } SCOTCH_graphExit (&grafdat); + + return (o); } diff -Nru scotch-6.0.4.dfsg1/src/libscotchmetis/metis_graph_order_f.c scotch-6.0.6/src/libscotchmetis/metis_graph_order_f.c --- scotch-6.0.4.dfsg1/src/libscotchmetis/metis_graph_order_f.c 2012-09-13 15:10:48.000000000 +0000 +++ scotch-6.0.6/src/libscotchmetis/metis_graph_order_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2010,2012,2015 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** # Version 5.1 : from : 30 jun 2010 **/ /** to 30 jun 2010 **/ /** # Version 6.0 : from : 13 sep 2012 **/ -/** to 13 sep 2012 **/ +/** to 27 apr 2015 **/ /** **/ /************************************************************/ @@ -54,6 +54,7 @@ #define LIBRARY +#include "module.h" #include "common.h" #include "scotch.h" #include "metis.h" /* Our "metis.h" file */ diff -Nru scotch-6.0.4.dfsg1/src/libscotchmetis/metis_graph_part.c scotch-6.0.6/src/libscotchmetis/metis_graph_part.c --- scotch-6.0.4.dfsg1/src/libscotchmetis/metis_graph_part.c 2012-09-13 17:43:37.000000000 +0000 +++ scotch-6.0.6/src/libscotchmetis/metis_graph_part.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007-2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007-2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** # Version 5.1 : from : 06 jun 2009 **/ /** to 30 jun 2010 **/ /** # Version 6.0 : from : 23 dec 2011 **/ -/** to 13 sep 2012 **/ +/** to 06 jun 2018 **/ /** **/ /************************************************************/ @@ -130,7 +130,7 @@ */ static -void +int _SCOTCH_METIS_PartGraph ( const SCOTCH_Num * const n, const SCOTCH_Num * const xadj, @@ -161,7 +161,7 @@ if (_SCOTCH_METIS_PartGraph2 (n, xadj, adjncy, vwgt2, adjwgt2, numflag, nparts, part, flagval, kbalval) != 0) { *edgecut = -1; /* Indicate error */ - return; + return (METIS_ERROR); } parttax = part - *numflag; @@ -203,13 +203,15 @@ } } *edgecut = commcut / 2; + + return (METIS_OK); } /* ** */ -void +int METISNAMEU (METIS_PartGraphKway) ( const SCOTCH_Num * const n, const SCOTCH_Num * const xadj, @@ -223,11 +225,12 @@ SCOTCH_Num * const edgecut, SCOTCH_Num * const part) { - _SCOTCH_METIS_PartGraph (n, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, options, edgecut, part, - SCOTCH_STRATDEFAULT, 0.01); + return (_SCOTCH_METIS_PartGraph (n, xadj, adjncy, vwgt, adjwgt, wgtflag, + numflag, nparts, options, edgecut, part, + SCOTCH_STRATDEFAULT, 0.01)); } -void +int METISNAMEU (METIS_PartGraphRecursive) ( const SCOTCH_Num * const n, const SCOTCH_Num * const xadj, @@ -241,8 +244,9 @@ SCOTCH_Num * const edgecut, SCOTCH_Num * const part) { - _SCOTCH_METIS_PartGraph (n, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, options, edgecut, part, - SCOTCH_STRATRECURSIVE, 0.01); + return (_SCOTCH_METIS_PartGraph (n, xadj, adjncy, vwgt, adjwgt, wgtflag, + numflag, nparts, options, edgecut, part, + SCOTCH_STRATRECURSIVE, 0.01)); } /* Scotch does not directly consider communication volume. @@ -252,7 +256,7 @@ ** be less likely to be cut. */ -void +int METISNAMEU (METIS_PartGraphVKway) ( const SCOTCH_Num * const n, const SCOTCH_Num * const xadj, @@ -286,7 +290,7 @@ if (vsize2 == NULL) { /* If no communication load data provided */ if (_SCOTCH_METIS_PartGraph2 (n, xadj, adjncy, vwgt2, NULL, numflag, nparts, part, SCOTCH_STRATDEFAULT, 0.01) != 0) - return; + return (METIS_ERROR); } else { /* Will have to turn communication volumes into edge loads */ const SCOTCH_Num * restrict vsiztax; @@ -296,7 +300,7 @@ edgenbr = xadj[vertnbr] - baseval; if ((edlotax = memAlloc (edgenbr * sizeof (SCOTCH_Num))) == NULL) - return; + return (METIS_ERROR); edlotax -= baseval; /* Base access to edlotax */ vsiztax = vsize2 - baseval; @@ -320,11 +324,11 @@ memFree (edlotax + baseval); if (o != 0) - return; + return (METIS_ERROR); } if ((nghbtab = memAlloc (*nparts * sizeof (SCOTCH_Num))) == NULL) - return; + return (METIS_ERROR_MEMORY); memSet (nghbtab, ~0, *nparts * sizeof (SCOTCH_Num)); parttax = part - baseval; @@ -354,4 +358,6 @@ *volume = commvol; memFree (nghbtab); + + return (METIS_OK); } diff -Nru scotch-6.0.4.dfsg1/src/libscotchmetis/metis_graph_part_f.c scotch-6.0.6/src/libscotchmetis/metis_graph_part_f.c --- scotch-6.0.4.dfsg1/src/libscotchmetis/metis_graph_part_f.c 2012-09-13 15:13:44.000000000 +0000 +++ scotch-6.0.6/src/libscotchmetis/metis_graph_part_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2010,2012,2015 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** # Version 5.1 : from : 30 jun 2010 **/ /** to 30 jun 2010 **/ /** # Version 6.0 : from : 13 sep 2012 **/ -/** to 13 sep 2012 **/ +/** to 27 apr 2015 **/ /** **/ /************************************************************/ @@ -54,6 +54,7 @@ #define LIBRARY +#include "module.h" #include "common.h" #include "scotch.h" #include "metis.h" /* Our "metis.h" file */ diff -Nru scotch-6.0.4.dfsg1/src/libscotchmetis/metis.h scotch-6.0.6/src/libscotchmetis/metis.h --- scotch-6.0.4.dfsg1/src/libscotchmetis/metis.h 2012-09-13 15:43:52.000000000 +0000 +++ scotch-6.0.6/src/libscotchmetis/metis.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,97 +0,0 @@ -/********************************************************* -** ** -** WARNING: THIS IS NOT THE ORIGINAL INCLUDE FILE OF ** -** THE MeTiS SOFTWARE PACKAGE. ** -** This file is a compatibility include file provided ** -** as part of the Scotch software distribution. ** -** Preferably use the original MeTiS include file to ** -** keep definitions of routines not overloaded by ** -** the libScotchMeTiS library. ** -** ** -*********************************************************/ -/* Copyright 2007,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS -** -** This file is part of the Scotch software package for static mapping, -** graph partitioning and sparse matrix ordering. -** -** This software is governed by the CeCILL-C license under French law -** and abiding by the rules of distribution of free software. You can -** use, modify and/or redistribute the software under the terms of the -** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following -** URL: "http://www.cecill.info". -** -** As a counterpart to the access to the source code and rights to copy, -** modify and redistribute granted by the license, users are provided -** only with a limited warranty and the software's author, the holder of -** the economic rights, and the successive licensors have only limited -** liability. -** -** In this respect, the user's attention is drawn to the risks associated -** with loading, using, modifying and/or developing or reproducing the -** software by the user in light of its specific status of free software, -** that may mean that it is complicated to manipulate, and that also -** therefore means that it is reserved for developers and experienced -** professionals having in-depth computer knowledge. Users are therefore -** encouraged to load and test the software's suitability as regards -** their requirements in conditions enabling the security of their -** systems and/or data to be ensured and, more generally, to use and -** operate it in the same conditions as regards security. -** -** The fact that you are presently reading this means that you have had -** knowledge of the CeCILL-C license and that you accept its terms. -*/ -/************************************************************/ -/** **/ -/** NAME : metis.h **/ -/** **/ -/** AUTHOR : Francois PELLEGRINI **/ -/** **/ -/** FUNCTION : Compatibility declaration file for the **/ -/** MeTiS interface routines provided by **/ -/** the Scotch project. **/ -/** **/ -/** DATES : # Version 5.0 : from : 08 sep 2006 **/ -/** to 07 jun 2007 **/ -/** # Version 5.1 : from : 30 jun 2010 **/ -/** to 30 jun 2010 **/ -/** # Version 6.0 : from : 13 sep 2012 **/ -/** to 13 sep 2012 **/ -/** **/ -/************************************************************/ - -/* -** The defines. -*/ - -#ifdef SCOTCH_METIS_PREFIX -#define SCOTCH_METIS_PREFIXL scotch_ -#define SCOTCH_METIS_PREFIXU SCOTCH_ -#endif /* SCOTCH_METIS_PREFIX */ - -#ifndef SCOTCH_METIS_PREFIXL -#define SCOTCH_METIS_PREFIXL -#endif /* SCOTCH_METIS_PREFIXL */ - -#ifndef SCOTCH_METIS_PREFIXU -#define SCOTCH_METIS_PREFIXU -#endif /* SCOTCH_METIS_PREFIXU */ - -#ifndef METISNAMEL -#define METISNAMEL(s) METISNAME2(METISNAME3(SCOTCH_METIS_PREFIXL),s) -#define METISNAMEU(s) METISNAME2(METISNAME3(SCOTCH_METIS_PREFIXU),s) -#define METISNAME2(p,s) METISNAME4(p,s) -#define METISNAME3(s) s -#define METISNAME4(p,s) p##s -#endif /* METISNAMEL */ - -/* -** The function prototypes. -*/ - -void METISNAMEU(METIS_EdgeND) (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); -void METISNAMEU(METIS_NodeND) (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); -void METISNAMEU(METIS_NodeWND) (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); - -void METISNAMEU(METIS_PartGraphKway) (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); -void METISNAMEU(METIS_PartGraphRecursive) (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); -void METISNAMEU(METIS_PartGraphVKway) (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); diff -Nru scotch-6.0.4.dfsg1/src/libscotchmetis/parmetis_dgraph_order.c scotch-6.0.6/src/libscotchmetis/parmetis_dgraph_order.c --- scotch-6.0.4.dfsg1/src/libscotchmetis/parmetis_dgraph_order.c 2012-09-13 15:36:33.000000000 +0000 +++ scotch-6.0.6/src/libscotchmetis/parmetis_dgraph_order.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007-2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007-2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** # Version 5.1 : from : 18 mar 2009 **/ /** to 30 jun 2010 **/ /** # Version 6.0 : from : 13 sep 2012 **/ -/** to 13 sep 2012 **/ +/** to 14 feb 2012 **/ /** **/ /************************************************************/ @@ -97,7 +97,7 @@ ** */ -void +int METISNAMEU(ParMETIS_V3_NodeND) ( const SCOTCH_Num * const vtxdist, SCOTCH_Num * const xadj, @@ -117,10 +117,13 @@ SCOTCH_Strat stradat; SCOTCH_Num vertlocnbr; SCOTCH_Num edgelocnbr; + int o; + + o = METIS_ERROR; /* Assume something will go wrong */ proccomm = *comm; if (SCOTCH_dgraphInit (&grafdat, proccomm) != 0) - return; + return (o); MPI_Comm_size (proccomm, &procglbnbr); MPI_Comm_rank (proccomm, &proclocnum); @@ -203,6 +206,7 @@ if ((rootnum >= 0) && (sizes != NULL)) { /* If no error above, go on processing separator tree */ memSet (sizes, 0, (2 * procglbnbr - 1) * sizeof (SCOTCH_Num)); /* Set array of sizes to 0 by default */ _SCOTCH_ParMETIS_V3_NodeNDTree (sizes + (2 * procglbnbr - 1), sizeglbtab, sepaglbtab, levlmax, 0, rootnum, 1); + o = METIS_OK; } } @@ -217,4 +221,6 @@ SCOTCH_stratExit (&stradat); } SCOTCH_dgraphExit (&grafdat); + + return (o); } diff -Nru scotch-6.0.4.dfsg1/src/libscotchmetis/parmetis_dgraph_order_f.c scotch-6.0.6/src/libscotchmetis/parmetis_dgraph_order_f.c --- scotch-6.0.4.dfsg1/src/libscotchmetis/parmetis_dgraph_order_f.c 2012-09-13 15:14:48.000000000 +0000 +++ scotch-6.0.6/src/libscotchmetis/parmetis_dgraph_order_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2010,2012,2015 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** # Version 5.1 : from : 30 jun 2010 **/ /** to 30 jun 2010 **/ /** # Version 6.0 : from : 13 sep 2012 **/ -/** to 13 sep 2012 **/ +/** to 27 apr 2015 **/ /** **/ /************************************************************/ @@ -54,6 +54,7 @@ #define LIBRARY +#include "module.h" #include "common.h" #include "ptscotch.h" #include "parmetis.h" /* Our "parmetis.h" file */ diff -Nru scotch-6.0.4.dfsg1/src/libscotchmetis/parmetis_dgraph_part.c scotch-6.0.6/src/libscotchmetis/parmetis_dgraph_part.c --- scotch-6.0.4.dfsg1/src/libscotchmetis/parmetis_dgraph_part.c 2012-09-13 15:37:56.000000000 +0000 +++ scotch-6.0.6/src/libscotchmetis/parmetis_dgraph_part.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2008-2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2008-2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 5.1 : from : 19 jun 2008 **/ /** to 30 jun 2010 **/ /** # Version 6.0 : from : 13 sep 2012 **/ -/** to 13 sep 2012 **/ +/** to 21 may 2018 **/ /** **/ /************************************************************/ @@ -65,7 +65,7 @@ /* */ /************************************/ -void +int METISNAMEU(ParMETIS_V3_PartKway) ( const SCOTCH_Num * const vtxdist, SCOTCH_Num * const xadj, @@ -100,10 +100,10 @@ SCOTCH_Num i; if ((vwgttab = malloc (*nparts * sizeof (double))) == NULL) - return; + return (METIS_ERROR_MEMORY); if ((velotab = malloc (*nparts * sizeof (SCOTCH_Num))) == NULL) { free (vwgttab); - return; + return (METIS_ERROR_MEMORY); } for (i = 0; i < *nparts; i ++) vwgttab[i] = (double) tpwgts[i] * (double) (*nparts); @@ -122,8 +122,11 @@ velotab[i] = (SCOTCH_Num) (vwgttab[i] + 0.5); proccomm = *comm; - if (SCOTCH_dgraphInit (&grafdat, proccomm) != 0) - return; + if (SCOTCH_dgraphInit (&grafdat, proccomm) != 0) { + free (velotab); + free (vwgttab); + return (METIS_ERROR); + } MPI_Comm_size (proccomm, &procglbnbr); MPI_Comm_rank (proccomm, &proclocnum); @@ -157,8 +160,8 @@ *edgecut = 0; /* TODO : compute real edge cut for people who might want it */ - free (vwgttab); free (velotab); + free (vwgttab); if (baseval != 0) { /* MeTiS part array is based, Scotch is not */ SCOTCH_Num vertlocnum; @@ -166,13 +169,15 @@ for (vertlocnum = 0; vertlocnum < vertlocnbr; vertlocnum ++) part[vertlocnum] += baseval; } + + return (METIS_OK); } /* ** */ -void +int METISNAMEU(ParMETIS_V3_PartGeomKway) ( const SCOTCH_Num * const vtxdist, SCOTCH_Num * const xadj, @@ -192,5 +197,5 @@ SCOTCH_Num * const part, MPI_Comm * commptr) { - METISNAMEU(ParMETIS_V3_PartKway) (vtxdist, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, ncon, nparts, tpwgts, ubvec, options, edgecut, part, commptr); + return (METISNAMEU(ParMETIS_V3_PartKway) (vtxdist, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, ncon, nparts, tpwgts, ubvec, options, edgecut, part, commptr)); } diff -Nru scotch-6.0.4.dfsg1/src/libscotchmetis/parmetis_dgraph_part_f.c scotch-6.0.6/src/libscotchmetis/parmetis_dgraph_part_f.c --- scotch-6.0.4.dfsg1/src/libscotchmetis/parmetis_dgraph_part_f.c 2012-09-13 15:16:26.000000000 +0000 +++ scotch-6.0.6/src/libscotchmetis/parmetis_dgraph_part_f.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2008,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2008,2010,2012,2015 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 5.1 : from : 19 jun 2008 **/ /** to 30 jun 2010 **/ /** # Version 6.0 : from : 13 sep 2012 **/ -/** to 13 sep 2012 **/ +/** to 27 apr 2015 **/ /** **/ /************************************************************/ @@ -52,6 +52,7 @@ #define LIBRARY +#include "module.h" #include "common.h" #include "ptscotch.h" #include "parmetis.h" /* Our "parmetis.h" file */ diff -Nru scotch-6.0.4.dfsg1/src/libscotchmetis/parmetis.h scotch-6.0.6/src/libscotchmetis/parmetis.h --- scotch-6.0.4.dfsg1/src/libscotchmetis/parmetis.h 2012-09-13 15:41:21.000000000 +0000 +++ scotch-6.0.6/src/libscotchmetis/parmetis.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,100 +0,0 @@ -/********************************************************* -** ** -** WARNING: THIS IS NOT THE ORIGINAL INCLUDE FILE OF ** -** THE ParMeTiS SOFTWARE PACKAGE. ** -** This file is a compatibility include file provided ** -** as part of the Scotch software distribution. ** -** Preferably use the original ParMeTiS include file ** -** to keep definitions of routines not overloaded by ** -** the libPTScotchMeTiS library. ** -** ** -*********************************************************/ -/* Copyright 2007,2008,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS -** -** This file is part of the Scotch software package for static mapping, -** graph partitioning and sparse matrix ordering. -** -** This software is governed by the CeCILL-C license under French law -** and abiding by the rules of distribution of free software. You can -** use, modify and/or redistribute the software under the terms of the -** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following -** URL: "http://www.cecill.info". -** -** As a counterpart to the access to the source code and rights to copy, -** modify and redistribute granted by the license, users are provided -** only with a limited warranty and the software's author, the holder of -** the economic rights, and the successive licensors have only limited -** liability. -** -** In this respect, the user's attention is drawn to the risks associated -** with loading, using, modifying and/or developing or reproducing the -** software by the user in light of its specific status of free software, -** that may mean that it is complicated to manipulate, and that also -** therefore means that it is reserved for developers and experienced -** professionals having in-depth computer knowledge. Users are therefore -** encouraged to load and test the software's suitability as regards -** their requirements in conditions enabling the security of their -** systems and/or data to be ensured and, more generally, to use and -** operate it in the same conditions as regards security. -** -** The fact that you are presently reading this means that you have had -** knowledge of the CeCILL-C license and that you accept its terms. -*/ -/************************************************************/ -/** **/ -/** NAME : parmetis.h **/ -/** **/ -/** AUTHOR : Francois PELLEGRINI **/ -/** **/ -/** FUNCTION : Compatibility declaration file for the **/ -/** MeTiS interface routines provided by **/ -/** the Scotch project. **/ -/** **/ -/** DATES : # Version 5.0 : from : 17 oct 2007 **/ -/** to 18 oct 2007 **/ -/** # Version 5.1 : from : 19 jun 2008 **/ -/** to 30 jun 2010 **/ -/** # Version 6.0 : from : 13 sep 2012 **/ -/** to 13 sep 2012 **/ -/** **/ -/************************************************************/ - -/* -** The defines and includes. -*/ - -#ifndef __parmetis_h__ -#define __parmetis_h__ - -#include /* Since ParMeTiS does it, do it too */ - -#endif /* __parmetis_h__ */ - -#ifdef SCOTCH_METIS_PREFIX -#define SCOTCH_METIS_PREFIXL scotch_ -#define SCOTCH_METIS_PREFIXU SCOTCH_ -#endif /* SCOTCH_METIS_PREFIX */ - -#ifndef SCOTCH_METIS_PREFIXL -#define SCOTCH_METIS_PREFIXL -#endif /* SCOTCH_METIS_PREFIXL */ - -#ifndef SCOTCH_METIS_PREFIXU -#define SCOTCH_METIS_PREFIXU -#endif /* SCOTCH_METIS_PREFIXU */ - -#ifndef METISNAMEL -#define METISNAMEL(s) METISNAME2(METISNAME3(SCOTCH_METIS_PREFIXL),s) -#define METISNAMEU(s) METISNAME2(METISNAME3(SCOTCH_METIS_PREFIXU),s) -#define METISNAME2(p,s) METISNAME4(p,s) -#define METISNAME3(s) s -#define METISNAME4(p,s) p##s -#endif /* METISNAMEL */ - -/* -** The function prototypes. -*/ - -void METISNAMEU(ParMETIS_V3_NodeND) (const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, MPI_Comm * const); -void METISNAMEU(ParMETIS_V3_PartGeomKway) (const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const float * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const float * const, const float * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, MPI_Comm * const); -void METISNAMEU(ParMETIS_V3_PartKway) (const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const float * const, const float * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, MPI_Comm * const); diff -Nru scotch-6.0.4.dfsg1/src/Makefile scotch-6.0.6/src/Makefile --- scotch-6.0.4.dfsg1/src/Makefile 2014-10-02 15:31:36.000000000 +0000 +++ scotch-6.0.6/src/Makefile 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -## Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +## Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ## ## This file is part of the Scotch software package for static mapping, ## graph partitioning and sparse matrix ordering. @@ -32,7 +32,7 @@ VERSION = 6 RELEASE = 0 -PATCHLEVEL = 4 +PATCHLEVEL = 6 .PHONY : clean default install ptscotch realclean required scotch @@ -89,13 +89,17 @@ $(mandir)/man1 : $(mandir) -$(MKDIR) $(mandir)/man1 -scotch : required +libscotch : required (cd libscotch ; $(MAKE) VERSION=$(VERSION) RELEASE=$(RELEASE) PATCHLEVEL=$(PATCHLEVEL) scotch && $(MAKE) install) + +scotch : libscotch (cd scotch ; $(MAKE) VERSION=$(VERSION) RELEASE=$(RELEASE) PATCHLEVEL=$(PATCHLEVEL) scotch && $(MAKE) install) (cd libscotchmetis ; $(MAKE) scotch && $(MAKE) install) -ptscotch : required +libptscotch : libscotch (cd libscotch ; $(MAKE) VERSION=$(VERSION) RELEASE=$(RELEASE) PATCHLEVEL=$(PATCHLEVEL) ptscotch && $(MAKE) ptinstall) + +ptscotch : libptscotch (cd scotch ; $(MAKE) VERSION=$(VERSION) RELEASE=$(RELEASE) PATCHLEVEL=$(PATCHLEVEL) ptscotch && $(MAKE) ptinstall) (cd libscotchmetis ; $(MAKE) ptscotch && $(MAKE) ptinstall) @@ -108,13 +112,15 @@ esmumps : scotch (cd esmumps ; $(MAKE) scotch && $(MAKE) install) -ptesmumps : ptscotch +ptesmumps : scotch ptscotch (cd esmumps ; $(MAKE) ptscotch && $(MAKE) ptinstall) install : required $(bindir) $(includedir) $(libdir) $(mandir)/man1 -$(CP) -f ../bin/[agm]*$(EXE) $(bindir) -$(CP) -f ../bin/d[agm]*$(EXE) $(bindir) + -$(CP) -f ../include/*esmumps*.h $(includedir) -$(CP) -f ../include/*scotch*.h $(includedir) + -$(CP) -f ../lib/*esmumps*$(LIB) $(libdir) -$(CP) -f ../lib/*scotch*$(LIB) $(libdir) -$(CP) -Rf ../man/* $(mandir) diff -Nru scotch-6.0.4.dfsg1/src/Make.inc/Makefile.inc.i686_pc_linux2.shlib scotch-6.0.6/src/Make.inc/Makefile.inc.i686_pc_linux2.shlib --- scotch-6.0.4.dfsg1/src/Make.inc/Makefile.inc.i686_pc_linux2.shlib 2014-08-05 12:56:17.000000000 +0000 +++ scotch-6.0.6/src/Make.inc/Makefile.inc.i686_pc_linux2.shlib 2018-07-14 15:24:49.000000000 +0000 @@ -11,7 +11,7 @@ CCD = gcc CFLAGS = -O3 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -DSCOTCH_PTHREAD -Drestrict=__restrict CLIBFLAGS = -shared -fPIC -LDFLAGS = -lz -lm -pthread +LDFLAGS = -lz -lm -pthread -Xlinker --no-as-needed CP = cp LEX = flex -Pscotchyy -olex.yy.c LN = ln diff -Nru scotch-6.0.4.dfsg1/src/Make.inc/Makefile.inc.i686_pc_linux2.shlib.debug scotch-6.0.6/src/Make.inc/Makefile.inc.i686_pc_linux2.shlib.debug --- scotch-6.0.4.dfsg1/src/Make.inc/Makefile.inc.i686_pc_linux2.shlib.debug 2014-08-05 12:56:23.000000000 +0000 +++ scotch-6.0.6/src/Make.inc/Makefile.inc.i686_pc_linux2.shlib.debug 2018-07-14 15:24:49.000000000 +0000 @@ -11,7 +11,7 @@ CCD = gcc CFLAGS = -g -O0 -Drestrict=__restrict -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DSCOTCH_DEBUG_ALL -DSCOTCH_DETERMINISTIC -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME CLIBFLAGS = -shared -fPIC -LDFLAGS = -g -lz -lm -pthread +LDFLAGS = -g -lz -lm -pthread -Xlinker --no-as-needed CP = cp LEX = flex -Pscotchyy -olex.yy.c LN = ln diff -Nru scotch-6.0.4.dfsg1/src/Make.inc/Makefile.inc.i686_pc_mingw32 scotch-6.0.6/src/Make.inc/Makefile.inc.i686_pc_mingw32 --- scotch-6.0.4.dfsg1/src/Make.inc/Makefile.inc.i686_pc_mingw32 2012-03-16 14:59:35.000000000 +0000 +++ scotch-6.0.6/src/Make.inc/Makefile.inc.i686_pc_mingw32 2018-07-14 15:24:49.000000000 +0000 @@ -8,8 +8,7 @@ # Since all files are linked with the MPI libraries, this file is # for compiling PT-Scotch only. To compile Scotch, remove the # -DSCOTCH_PTSCOTCH flag, as well as all references to MPI in the -# CFLAGS and CLIBFLAGS = -LDFLAGS variables. +# CFLAGS and CLIBFLAGS = LDFLAGS variables. EXE = LIB = .a @@ -26,14 +25,14 @@ #--- Compiler/loader flags CFLAGS_CPL = -O0 -g3 CFLAGS_INC = -CFLAGS_DEF = -DCOMMON_RANDOM_FIXED_SEED -DCOMMON_STUB_FORK -DSCOTCH_PTSCOTCH -DSCOTCH_RENAME -D'pipe(pfds)=_pipe(pfds,1024,0x8000)' -CLIBFLAGS = +CFLAGS_DEF = -DCOMMON_RANDOM_FIXED_SEED -DCOMMON_STUB_FORK -DSCOTCH_PTSCOTCH -DSCOTCH_RENAME -DCOMMON_WINDOWS +CLIBFLAGS = LDFLAGS = PGMFILES=$(PROGRAMFILES) #--- MPI -MPI_ROOTDIR = $(PGMFILES)/MPICH2 +MPI_ROOTDIR = $(PGMFILES)/MPICH2 CFLAGS_INC += -I$(MPI_ROOTDIR)/include #--- Comment/Uncomment for threaded MPI CLIBFLAGS = @@ -43,12 +42,12 @@ #--- Pthread : Uncomment for pthread support #PTHREAD_ROOTDIR = $(PGMFILES)/pthread-win32 -#CFLAGS_INC += -I$(PTHREAD_ROOTDIR)/include +#CFLAGS_INC += -I$(PTHREAD_ROOTDIR)/include #CLIBFLAGS = LDFLAGS += -L$(PTHREAD_ROOTDIR)/lib -lpthreadGC2 #--- zlib: Uncomment for compressed files -#ZLIB_ROOTDIR = $(PGMFILES)/zlib-1.2.3 +#ZLIB_ROOTDIR = $(PGMFILES)/zlib-1.2.3 #CFLAGS_INC += -I$(ZLIB_ROOTDIR)/include #CLIBFLAGS = LDFLAGS += -L$(ZLIB_ROOTDIR)/lib -lzdll @@ -60,10 +59,10 @@ #CFLAGS_DEF += -DSCOTCH_PTHREAD CFLAGS = $(CFLAGS_CPL) $(CFLAGS_INC) $(CFLAGS_DEF) -CP = cp -LEX = flex -Pscotchyy -olex.yy.c -LN = cp -MKDIR = mkdir -MV = mv -RANLIB = ranlib -YACC = bison -pscotchyy -y -b y +CP = cp +LEX = flex -Pscotchyy -olex.yy.c +LN = cp +MKDIR = mkdir +MV = mv +RANLIB = ranlib +YACC = bison -pscotchyy -y -b y diff -Nru scotch-6.0.4.dfsg1/src/Make.inc/Makefile.inc.x86-64_pc_linux2.icc.impi scotch-6.0.6/src/Make.inc/Makefile.inc.x86-64_pc_linux2.icc.impi --- scotch-6.0.4.dfsg1/src/Make.inc/Makefile.inc.x86-64_pc_linux2.icc.impi 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/Make.inc/Makefile.inc.x86-64_pc_linux2.icc.impi 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,22 @@ +EXE = +LIB = .a +OBJ = .o + +MAKE = make +AR = ar +ARFLAGS = -ruv +CAT = cat +CCS = icc +CCP = mpiicc +MPI_INC = $(shell mpiicc -show | sed -e 's/.*\(\-I.*include\).*/\1/') +CCD = icc $(MPI_INC) +CFLAGS = -O3 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -DSCOTCH_PTHREAD -restrict -DIDXSIZE64 +CLIBFLAGS = +LDFLAGS = -lz -lm -lrt -pthread +CP = cp +LEX = flex -Pscotchyy -olex.yy.c +LN = ln +MKDIR = mkdir +MV = mv +RANLIB = ranlib +YACC = bison -pscotchyy -y -b y diff -Nru scotch-6.0.4.dfsg1/src/Make.inc/Makefile.inc.x86-64_pc_linux2.icc.impi.debug scotch-6.0.6/src/Make.inc/Makefile.inc.x86-64_pc_linux2.icc.impi.debug --- scotch-6.0.4.dfsg1/src/Make.inc/Makefile.inc.x86-64_pc_linux2.icc.impi.debug 1970-01-01 00:00:00.000000000 +0000 +++ scotch-6.0.6/src/Make.inc/Makefile.inc.x86-64_pc_linux2.icc.impi.debug 2018-07-14 15:24:49.000000000 +0000 @@ -0,0 +1,22 @@ +EXE = +LIB = .a +OBJ = .o + +MAKE = make +AR = ar +ARFLAGS = -ruv +CAT = cat +CCS = icc +CCP = mpiicc +MPI_INC = $(shell mpiicc -show | sed -e 's/.*\(\-I.*include\).*/\1/') +CCD = icc $(MPI_INC) +CFLAGS = -g -O0 -fp-model strict -traceback -fp-stack-check -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_DEBUG_ALL -DSCOTCH_DETERMINISTIC -DSCOTCH_RENAME -restrict -DIDXSIZE64 +CLIBFLAGS = +LDFLAGS = -g -lz -lm -lrt -pthread +CP = cp +LEX = flex -Pscotchyy -olex.yy.c +LN = ln +MKDIR = mkdir +MV = mv +RANLIB = ranlib +YACC = bison -pscotchyy -y -b y diff -Nru scotch-6.0.4.dfsg1/src/Make.inc/Makefile.inc.x86-64_pc_linux2.shlib scotch-6.0.6/src/Make.inc/Makefile.inc.x86-64_pc_linux2.shlib --- scotch-6.0.4.dfsg1/src/Make.inc/Makefile.inc.x86-64_pc_linux2.shlib 2014-09-17 15:49:21.000000000 +0000 +++ scotch-6.0.6/src/Make.inc/Makefile.inc.x86-64_pc_linux2.shlib 2018-07-14 15:24:49.000000000 +0000 @@ -11,7 +11,7 @@ CCD = gcc CFLAGS = -O3 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -DSCOTCH_PTHREAD -Drestrict=__restrict -DIDXSIZE64 CLIBFLAGS = -shared -fPIC -LDFLAGS = -lz -lm -lrt -pthread +LDFLAGS = -lz -lm -lrt -pthread -Xlinker --no-as-needed CP = cp LEX = flex -Pscotchyy -olex.yy.c LN = ln diff -Nru scotch-6.0.4.dfsg1/src/scotch/acpl.c scotch-6.0.6/src/scotch/acpl.c --- scotch-6.0.4.dfsg1/src/scotch/acpl.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/acpl.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -56,7 +56,7 @@ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -77,8 +77,8 @@ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* File array */ - { "r" }, - { "w" } }; + { FILEMODER }, + { FILEMODEW } }; static const char * C_usageList[] = { "acpl [ []] ", @@ -126,7 +126,7 @@ return (0); case 'V' : fprintf (stderr, "acpl, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -150,8 +150,5 @@ SCOTCH_archExit (&arch); -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/amk_ccc.c scotch-6.0.6/src/scotch/amk_ccc.c --- scotch-6.0.4.dfsg1/src/scotch/amk_ccc.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/amk_ccc.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -57,7 +57,7 @@ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -79,7 +79,7 @@ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ - { "w" } }; + { FILEMODEW } }; static C_VertDist * C_distaTab; /* Pointer to distance map table */ static C_Queue C_distaQueue; /* Distance queue */ @@ -233,8 +233,5 @@ C_queueExit (&C_distaQueue); memFree (C_distaTab); -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/amk_fft2.c scotch-6.0.6/src/scotch/amk_fft2.c --- scotch-6.0.4.dfsg1/src/scotch/amk_fft2.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/amk_fft2.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -55,7 +55,7 @@ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -77,7 +77,7 @@ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ - { "w" } }; + { FILEMODEW } }; static C_VertDist * C_distaTab; /* Pointer to distance map table */ static C_Queue C_distaQueue; /* Distance queue */ @@ -104,8 +104,7 @@ SCOTCH_Num fnbr; /* Number of FFT vertices */ SCOTCH_Num fmax; /* Maximum terminal number */ SCOTCH_Num fmsk; /* Position bit mask */ - C_Vertex v, w, x; /* A FFT vertex (lvl, pos) */ - SCOTCH_Num b, d; /* Mask and bit variables */ + C_Vertex v; /* A FFT vertex (lvl, pos) */ SCOTCH_Num i; /* Loop counter */ SCOTCH_Num t; /* Vertex terminal value */ @@ -145,7 +144,7 @@ return (0); case 'V' : fprintf (stderr, "amk_fft2, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -167,6 +166,8 @@ for (v.lvl = 0; v.lvl <= fdim; v.lvl ++) { /* For all vertices */ for (v.pos = 0; v.pos <= fmsk; v.pos ++) { + SCOTCH_Num b; /* Bitmask value */ + for (i = v.lvl, b = 1 << (fdim - 1), t = 1; /* Recurse through the vertical + horizontal cuts */ i <= fdim; i ++, b >>= 1) { @@ -195,6 +196,9 @@ for (v.lvl = 0; v.lvl <= fdim; v.lvl ++) { /* For all vertices */ for (v.pos = 0; v.pos <= fmsk; v.pos ++) { + C_Vertex w; /* Current vertex */ + SCOTCH_Num d; /* Distance value */ + for (i = 0; i < fnbr; i ++) /* Initialize the vertex table */ C_distaTab[i].queued = 0; /* Vertex not queued yet */ @@ -205,6 +209,8 @@ d ++; /* Search for neighbors at next level */ if (w.lvl > 0) { /* Add new neighbors to the queue */ + C_Vertex x; /* Neighbor vertex */ + x.lvl = w.lvl - 1; x.pos = w.pos; C_distaPut (&x, d); @@ -212,6 +218,8 @@ C_distaPut (&x, d); } if (w.lvl < fdim) { + C_Vertex x; /* Neighbor vertex */ + x.lvl = w.lvl + 1; x.pos = w.pos; C_distaPut (&x, d); @@ -236,8 +244,5 @@ fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/amk_grf.c scotch-6.0.6/src/scotch/amk_grf.c --- scotch-6.0.4.dfsg1/src/scotch/amk_grf.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/amk_grf.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -55,7 +55,7 @@ /** # Version 5.1 : from : 11 dec 2008 **/ /** to : 17 jul 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -76,13 +76,14 @@ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* File array */ - { "r" }, - { "w" }, - { "r" } }; + { FILEMODER }, + { FILEMODEW }, + { FILEMODER } }; static const char * C_usageList[] = { /* Usage */ "amk_grf [ []] ", - " -b : Apply bipartitioning strategy ", + " -2 : Create a 'deco 2' instead of a 'deco 0' architecture", + " -b : Apply bipartitioning strategy (for 'deco 0' architectures)", " -h : Display this help", " -l : Load vertex list from ", " -V : Print program version and copyright", @@ -136,6 +137,9 @@ } else { /* If found an option name */ switch (argv[i][1]) { + case '2' : /* Type-2 architecture */ + flagval |= C_FLAGDECO2; + break; case 'B' : /* Bipartitioning strategy */ case 'b' : SCOTCH_stratExit (&bipastrat); @@ -157,7 +161,7 @@ break; case 'V' : fprintf (stderr, "amk_grf, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -234,9 +238,12 @@ } } - SCOTCH_archInit (&archdat); /* Initialize target architecture */ - SCOTCH_archBuild (&archdat, &grafdat, listnbr, listtab, &bipastrat); /* Compute architecture */ - SCOTCH_archSave (&archdat, C_filepntrtgtout); /* Write target architecture */ + SCOTCH_archInit (&archdat); /* Initialize target architecture */ + if ((flagval & C_FLAGDECO2) != 0) + SCOTCH_archBuild2 (&archdat, &grafdat, listnbr, listtab); /* Compute type-2 architecture */ + else + SCOTCH_archBuild0 (&archdat, &grafdat, listnbr, listtab, &bipastrat); /* Compute type-0 architecture */ + SCOTCH_archSave (&archdat, C_filepntrtgtout); /* Write target architecture */ fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end potential (un)compression tasks */ @@ -246,8 +253,5 @@ if (listtab != NULL) /* If vertex list provided */ memFree (listtab); /* Free it */ -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/amk_grf.h scotch-6.0.6/src/scotch/amk_grf.h --- scotch-6.0.4.dfsg1/src/scotch/amk_grf.h 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/amk_grf.h 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -50,7 +50,7 @@ /** # Version 5.1 : from : 17 jul 2011 **/ /** to : 17 jul 2011 **/ /** # Version 6.0 : from : 12 nov 2014 **/ -/** to : 12 nov 2014 **/ +/** to : 11 feb 2018 **/ /** **/ /************************************************************/ @@ -73,7 +73,8 @@ /*+ Process flags. +*/ -#define C_FLAGVRTINP 0x0001 /* Input vertex list */ +#define C_FLAGVRTINP 0x0001 /* Input vertex list */ +#define C_FLAGDECO2 0x0002 /* Type-2 architecture */ #define C_FLAGNONE 0x0000 /* Default flags */ diff -Nru scotch-6.0.4.dfsg1/src/scotch/amk_hy.c scotch-6.0.6/src/scotch/amk_hy.c --- scotch-6.0.4.dfsg1/src/scotch/amk_hy.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/amk_hy.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -55,7 +55,7 @@ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -77,7 +77,7 @@ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ - { "w" } }; + { FILEMODEW } }; static const char * C_usageList[] = { "amk_hy [] ", @@ -139,7 +139,7 @@ return (0); case 'V' : fprintf (stderr, "amk_hy, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -175,8 +175,5 @@ fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/amk_m2.c scotch-6.0.6/src/scotch/amk_m2.c --- scotch-6.0.4.dfsg1/src/scotch/amk_m2.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/amk_m2.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -57,7 +57,7 @@ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /** NOTES : # The vertices of the (dX,dY) mesh are **/ /** numbered as terminals so that **/ @@ -92,7 +92,7 @@ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* File array */ - { "w" } }; + { FILEMODEW } }; static const char * C_usageList[] = { "amk_m2 [ []] ", @@ -121,6 +121,7 @@ ArchMesh2Dom dom; /* Initial domain */ C_MethType methtype; /* Bipartitioning method */ unsigned int termnbr; /* Number of terminal domains */ + unsigned int termnum; unsigned int termmax; /* Maximum terminal number */ unsigned int * termtab; /* Terminal numbers table */ unsigned int x0, y0, x1, y1; @@ -179,7 +180,7 @@ return (0); case 'V' : fprintf (stderr, "amk_m2, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -210,9 +211,9 @@ fprintf (C_filepntrarcout, "deco\n0\n%u\t%u\n", /* Print file header */ termnbr, /* Print number of terminal domains */ termmax); /* Print biggest terminal value */ - for (i = 0; i < termnbr; i ++) /* For all terminals */ + for (termnum = 0; termnum < termnbr; termnum ++) /* For all terminals */ fprintf (C_filepntrarcout, "%u\t1\t%u\n", /* Print terminal data */ - i, termtab[i]); + termnum, termtab[termnum]); for (y0 = 0; y0 < arch.c[1]; y0 ++) { /* For all vertices */ for (x0 = 0; x0 < arch.c[0]; x0 ++) { @@ -230,9 +231,6 @@ memFree (termtab); /* Free terminal number array */ -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/amk_p2.c scotch-6.0.6/src/scotch/amk_p2.c --- scotch-6.0.4.dfsg1/src/scotch/amk_p2.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/amk_p2.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -49,7 +49,7 @@ /** # Version 5.1 : from : 16 dec 2007 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -71,7 +71,7 @@ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* File array */ - { "w" } }; + { FILEMODEW } }; static const char * C_usageList[] = { "amk_p2 [ []] ", @@ -127,7 +127,7 @@ return (0); case 'V' : fprintf (stderr, "amk_p2, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -145,8 +145,5 @@ fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/atst.c scotch-6.0.6/src/scotch/atst.c --- scotch-6.0.4.dfsg1/src/scotch/atst.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/atst.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -54,7 +54,7 @@ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -78,8 +78,8 @@ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* File array */ - { "r" }, - { "w" } }; + { FILEMODER }, + { FILEMODEW } }; static const char * C_usageList[] = { "atst [ []] ", @@ -136,7 +136,7 @@ return (0); case 'V' : fprintf (stderr, "atst, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -198,8 +198,5 @@ archExit (&archdat); -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/CMakeLists.txt scotch-6.0.6/src/scotch/CMakeLists.txt --- scotch-6.0.4.dfsg1/src/scotch/CMakeLists.txt 2015-03-01 09:09:17.000000000 +0000 +++ scotch-6.0.6/src/scotch/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,190 +0,0 @@ -## Copyright 2014,2015 IPB, Universite de Bordeaux, INRIA & CNRS -## -## This file is part of the Scotch software package for static mapping, -## graph partitioning and sparse matrix ordering. -## -## This software is governed by the CeCILL-C license under French law -## and abiding by the rules of distribution of free software. You can -## use, modify and/or redistribute the software under the terms of the -## CeCILL-C license as circulated by CEA, CNRS and INRIA at the following -## URL: "http://www.cecill.info". -## -## As a counterpart to the access to the source code and rights to copy, -## modify and redistribute granted by the license, users are provided -## only with a limited warranty and the software's author, the holder of -## the economic rights, and the successive licensors have only limited -## liability. -## -## In this respect, the user's attention is drawn to the risks associated -## with loading, using, modifying and/or developing or reproducing the -## software by the user in light of its specific status of free software, -## that may mean that it is complicated to manipulate, and that also -## therefore means that it is reserved for developers and experienced -## professionals having in-depth computer knowledge. Users are therefore -## encouraged to load and test the software's suitability as regards -## their requirements in conditions enabling the security of their -## systems and/or data to be ensured and, more generally, to use and -## operate it in the same conditions as regards security. -## -## The fact that you are presently reading this means that you have had -## knowledge of the CeCILL-C license and that you accept its terms. -## -############################################################## -### ### -### AUTHOR : Cedric LACHAT ### -### ### -### FUNCTION : Secondary configuration file for CMake ### -### ### -### DATES : # Version 6.0 : from : 01 sep 2014 ### -### to 01 mar 2015 ### -### ### -############################################################## - -include_directories(include ${SCOTCH_BINARY_DIR}/src/libscotch) -include_directories(${SCOTCH_SOURCE_DIR}/src/libscotch) - -########### -# Execs # -########### - -# Search source files with components -set (SCOTCH_EXECS -acpl -amk_ccc -amk_fft2 -amk_grf -amk_hy -amk_m2 -amk_p2 -atst -gbase -gcv -gmap -gmk_hy -gmk_m2 -gmk_m3 -gmk_msh -gmk_ub2 -gmtst -gord -gotst -gout -gpart -gscat -gtst -mcv -mmk_m2 -mmk_m3 -mord -mtst -) - -if (PTSCOTCH) - set (PTSCOTCH_EXECS - dggath - dgmap - dgord - dgpart - dgscat - dgtst - ) -endif (PTSCOTCH) - -#################### -# Parallel execs # -#################### - -# Combine parallel source file with execution file -foreach(EXEC_NAME ${PTSCOTCH_EXECS}) - if (NOT ${EXEC_NAME} STREQUAL "dgpart") - add_executable(${EXEC_NAME} ${EXEC_NAME}.c) - else () - add_executable(${EXEC_NAME} dgmap.c) - set_target_properties(${EXEC_NAME} PROPERTIES COMPILE_FLAGS "-DSCOTCH_COMPILE_PART") - endif () - target_link_libraries(${EXEC_NAME} scotcherr ptscotch scotch ${SCOTCH_DEPENDENCIES}) - - install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${EXEC_NAME} DESTINATION bin - PERMISSIONS OWNER_EXECUTE OWNER_READ OWNER_WRITE) - list(APPEND C_EXECS ${EXEC_NAME}) - - ## Add test - #if (TEST_FILES MATCHES ".*${EXEC_NAME}.*") - # if (OLD_CMAKE) - # add_test( ${EXEC_NAME} - # ${CMAKE_MODULE_PATH}/run-partests.sh ${MPIEXEC} ${NB_PROC} - # ${CMAKE_CURRENT_BINARY_DIR}/${EXEC_NAME} ${CMAKE_CURRENT_BINARY_DIR}/${EXEC_NAME}-out ${TEST_DIR}/${EXEC_NAME}) - # else () - # add_test(NAME ${EXEC_NAME} - # COMMAND ${CMAKE_MODULE_PATH}/run-partests.sh ${MPIEXEC} ${NB_PROC} ${CMAKE_CURRENT_BINARY_DIR}/${EXEC_NAME} - # ${CMAKE_CURRENT_BINARY_DIR}/${EXEC_NAME}-out ${TEST_DIR}/${EXEC_NAME}) - # set_tests_properties (${EXEC_NAME} PROPERTIES - # TIMEOUT 60 - # ) - # endif () - #endif () - ## Add memory test - # if (OLD_CMAKE) - # add_test( MEM_${EXEC_NAME} - # ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${NB_PROC} ${VALGRIND_EXE} ${VALGRIND_ARGS} - # ${CMAKE_CURRENT_BINARY_DIR}/${EXEC_NAME}) - # else () - # add_test(NAME MEM_${EXEC_NAME} - # COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${NB_PROC} ${VALGRIND_EXE} ${VALGRIND_ARGS} - # ${CMAKE_CURRENT_BINARY_DIR}/${EXEC_NAME}) - # endif () - #set_tests_properties (MEM_${EXEC_NAME} PROPERTIES - # FAIL_REGULAR_EXPRESSION "problem with execution of;mpiexec was unable to launch;definitely lost: [^0][0-9,]* bytes in [^0][0-9,]* blocks;indirectly lost: [^0][0-9,]* bytes in [^0][0-9,]* blocks;possibly lost: [^0][0-9,]* bytes in [^0][0-9,]* blocks;ERROR SUMMARY: [^0][0-9,]* errors from [^0][0-9,]* contexts;Conditional jump or move depends on uninitialised value;Invalid write;Invalid read" - # TIMEOUT 60 - # PASS_REGULAR_EXPRESSION "fin du prog") -endforeach() - -###################### -# Sequential execs # -###################### - -# Combine sequential source file with execution file - -message (STATUS "depend: ${SCOTCH_DEPENDENCIES}") -foreach (EXEC_NAME ${SCOTCH_EXECS}) - if (NOT ${EXEC_NAME} STREQUAL "gout" AND NOT ${EXEC_NAME} STREQUAL "gpart") - add_executable(${EXEC_NAME} ${EXEC_NAME}.c) - else () - if (${EXEC_NAME} STREQUAL "gout") - add_executable (${EXEC_NAME} ${EXEC_NAME}_c.c ${EXEC_NAME}_o.c) - else () - add_executable (${EXEC_NAME} gmap.c) - set_target_properties (${EXEC_NAME} PROPERTIES COMPILE_FLAGS "-DSCOTCH_COMPILE_PART") - endif () - endif () - target_link_libraries (${EXEC_NAME} scotcherr scotch ${SCOTCH_DEPENDENCIES}) - - install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${EXEC_NAME} DESTINATION bin - PERMISSIONS OWNER_EXECUTE OWNER_READ OWNER_WRITE) - list (APPEND C_EXECS ${EXEC_NAME}) - - ## Add test - #if (TEST_FILES MATCHES ".*${EXEC_NAME}.*") - # if (OLD_CMAKE) - # add_test (${EXEC_NAME} - # ${CMAKE_MODULE_PATH}/run-seqtests.sh - # ${CMAKE_CURRENT_BINARY_DIR}/${EXEC_NAME} ${CMAKE_CURRENT_BINARY_DIR}/${EXEC_NAME}-out ${TEST_DIR}/${EXEC_NAME}) - # else () - # add_test (NAME ${EXEC_NAME} - # COMMAND ${CMAKE_MODULE_PATH}/run-seqtests.sh - # ${CMAKE_CURRENT_BINARY_DIR}/${EXEC_NAME} ${CMAKE_CURRENT_BINARY_DIR}/${EXEC_NAME}-out ${TEST_DIR}/${EXEC_NAME}) - # endif () - #endif() - ## Add memory test - # if (OLD_CMAKE) - # add_test (MEM_${EXEC_NAME} - # ${VALGRIND_EXE} ${VALGRIND_ARGS} - # ${CMAKE_CURRENT_BINARY_DIR}/${EXEC_NAME}) - # else () - # add_test (NAME MEM_${EXEC_NAME} - # COMMAND ${VALGRIND_EXE} ${VALGRIND_ARGS} - # ${CMAKE_CURRENT_BINARY_DIR}/${EXEC_NAME}) - # endif () - #set_tests_properties (MEM_${EXEC_NAME} PROPERTIES - # FAIL_REGULAR_EXPRESSION "definitely lost: [^0][0-9,]* bytes in [^0][0-9,]* blocks;indirectly lost: [^0][0-9,]* bytes in [^0][0-9,]* blocks;possibly lost: [^0][0-9,]* bytes in [^0][0-9,]* blocks;ERROR SUMMARY: [^0][0-9,]* errors from [^0][0-9,]* contexts;Conditional jump or move depends on uninitialised value;Invalid write;Invalid read") -endforeach() diff -Nru scotch-6.0.4.dfsg1/src/scotch/dggath.c scotch-6.0.6/src/scotch/dggath.c --- scotch-6.0.4.dfsg1/src/scotch/dggath.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/dggath.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,7 +43,7 @@ /** DATES : # Version 5.1 : from : 26 oct 2008 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -65,8 +65,8 @@ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* File array */ - { "r" }, - { "w" } }; + { FILEMODER }, + { FILEMODEW } }; static const char * C_usageList[] = { "dggath [ []] ", @@ -163,7 +163,7 @@ case 'V' : case 'v' : fprintf (stderr, "dggath, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -222,8 +222,6 @@ SCOTCH_dgraphExit (&dgrfdat); MPI_Finalize (); -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ + return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/dgmap.c scotch-6.0.6/src/scotch/dgmap.c --- scotch-6.0.4.dfsg1/src/scotch/dgmap.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/dgmap.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2008-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2008-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -44,7 +44,7 @@ /** # Version 5.1 : from : 26 oct 2008 **/ /** to : 31 aug 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -72,10 +72,10 @@ static int C_fileNum = 0; /* Number of file in arg list */ static int C_fileNbr = 4; /* Number of files for mapping */ static File C_fileTab[C_FILENBR] = { /* File array */ - { "r" }, - { "r" }, - { "w" }, - { "w" } }; + { FILEMODER }, + { FILEMODER }, + { FILEMODEW }, + { FILEMODEW } }; static const char * C_usageList[] = { /* Usage */ "dgmap [ [ [ []]]] ", @@ -293,7 +293,7 @@ break; case 'V' : fprintf (stderr, "dgmap/dgpart, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2008-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2008-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); case 'v' : /* Output control info */ @@ -473,9 +473,7 @@ SCOTCH_archExit (&archdat); MPI_Finalize (); -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ + return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/dgord.c scotch-6.0.6/src/scotch/dgord.c --- scotch-6.0.4.dfsg1/src/scotch/dgord.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/dgord.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,7 +45,7 @@ /** # Version 5.1 : from : 26 oct 2008 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -69,11 +69,11 @@ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* File array */ - { "r" }, - { "w" }, - { "w" }, - { "w" }, - { "w" } }; + { FILEMODER }, + { FILEMODEW }, + { FILEMODEW }, + { FILEMODEW }, + { FILEMODEW } }; static const char * C_usageList[] = { "dgord [ [ []]] ", @@ -241,7 +241,7 @@ break; case 'V' : fprintf (stderr, "dgord, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2007-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2007-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); case 'v' : /* Output control info */ @@ -408,9 +408,7 @@ SCOTCH_stratExit (&stradat); MPI_Finalize (); -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ + return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/dgscat.c scotch-6.0.6/src/scotch/dgscat.c --- scotch-6.0.4.dfsg1/src/scotch/dgscat.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/dgscat.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,7 +45,7 @@ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -67,8 +67,8 @@ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* File array */ - { "r" }, - { "w" } }; + { FILEMODER }, + { FILEMODEW } }; static const char * C_usageList[] = { "dgscat [ []] ", @@ -160,7 +160,7 @@ case 'V' : case 'v' : fprintf (stderr, "dgscat, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -197,8 +197,6 @@ SCOTCH_dgraphExit (&grafdat); MPI_Finalize (); -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ + return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/dgtst.c scotch-6.0.6/src/scotch/dgtst.c --- scotch-6.0.4.dfsg1/src/scotch/dgtst.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/dgtst.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -43,7 +43,7 @@ /** # Version 5.1 : from : 26 oct 2008 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -65,8 +65,8 @@ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* File array */ - { "r" }, - { "w" } }; + { FILEMODER }, + { FILEMODEW } }; static const char * C_usageList[] = { "dgtst [ []] ", @@ -106,8 +106,10 @@ SCOTCH_Num edlosum; double edloavg; double edlodlt; - int flagval; int i; +#ifdef SCOTCH_DEBUG_ALL + int flagval; +#endif /* SCOTCH_DEBUG_ALL */ #ifdef SCOTCH_PTHREAD int thrdlvlreqval; int thrdlvlproval; @@ -135,7 +137,9 @@ return (0); } +#ifdef SCOTCH_DEBUG_ALL flagval = C_FLAGNONE; +#endif /* SCOTCH_DEBUG_ALL */ fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ @@ -170,7 +174,7 @@ case 'V' : case 'v' : fprintf (stderr, "dgtst, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -221,8 +225,6 @@ SCOTCH_dgraphExit (&grafdat); MPI_Finalize (); -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ + return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/gbase.c scotch-6.0.6/src/scotch/gbase.c --- scotch-6.0.4.dfsg1/src/scotch/gbase.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/gbase.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,7 +45,7 @@ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -67,8 +67,8 @@ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ - { "r" }, - { "w" } }; + { FILEMODER }, + { FILEMODEW } }; static const char * C_usageList[] = { "gbase [ []] ", @@ -126,7 +126,7 @@ exit (0); case 'V' : fprintf (stderr, "gbase, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -146,8 +146,5 @@ SCOTCH_graphExit (&grafdat); -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/gcv.c scotch-6.0.6/src/scotch/gcv.c --- scotch-6.0.4.dfsg1/src/scotch/gcv.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/gcv.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -60,7 +60,7 @@ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -105,9 +105,9 @@ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[3] = { /* File array */ - { "r" }, - { "w" }, - { "w" } }; + { FILEMODER }, + { FILEMODEW }, + { FILEMODEW } }; static const char * C_usageList[] = { "gcv [ [ []]] ", @@ -195,7 +195,7 @@ break; case 'V' : fprintf (stderr, "gcv, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014 Universite de Bordeaux, INRIA & CNRS\n"); + fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014,2018 Universite de Bordeaux, INRIA & CNRS\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -223,8 +223,5 @@ SCOTCH_geomExit (&geomdat); SCOTCH_graphExit (&grafdat); -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/gmap.c scotch-6.0.6/src/scotch/gmap.c --- scotch-6.0.4.dfsg1/src/scotch/gmap.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/gmap.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -66,7 +66,7 @@ /** # Version 5.1 : from : 30 jun 2010 **/ /** to : 31 aug 2011 **/ /** # Version 6.0 : from : 29 may 2010 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -91,13 +91,13 @@ static int C_fileNum = 0; /* Number of file in arg list */ static int C_fileNbr = 4; /* Number of files for mapping */ static File C_fileTab[C_FILENBR] = { /* File array */ - { "r" }, - { "r" }, - { "w" }, - { "w" }, - { "r" }, - { "r" }, - { "r" } }; + { FILEMODER }, + { FILEMODER }, + { FILEMODEW }, + { FILEMODEW }, + { FILEMODER }, + { FILEMODER }, + { FILEMODEW } }; static const char * C_usageList[] = { /* Usage */ "gmap [ [ [ []]]] ", @@ -316,7 +316,7 @@ break; case 'V' : fprintf (stderr, "gmap/gpart, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); case 'v' : /* Output control info */ @@ -503,9 +503,6 @@ memFree (parttab); /* Free hand-made partition array */ -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/gmk_hy.c scotch-6.0.6/src/scotch/gmk_hy.c --- scotch-6.0.4.dfsg1/src/scotch/gmk_hy.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/gmk_hy.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -53,7 +53,7 @@ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -75,7 +75,7 @@ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ - { "w" } }; + { FILEMODEW } }; static const char * C_usageList[] = { "gmk_hy [] ", @@ -136,7 +136,7 @@ exit (0); case 'V' : fprintf (stderr, "gmk_hy, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS\n"); + fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -166,8 +166,5 @@ fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/gmk_m2.c scotch-6.0.6/src/scotch/gmk_m2.c --- scotch-6.0.4.dfsg1/src/scotch/gmk_m2.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/gmk_m2.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -53,7 +53,7 @@ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /** NOTES : # The vertices of the (dX,dY) mesh are **/ /** numbered as terminals so that **/ @@ -81,8 +81,8 @@ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ - { "w" }, - { "w" } }; + { FILEMODEW }, + { FILEMODEW } }; static const char * C_usageList[] = { "gmk_m2 [ []] ", @@ -169,7 +169,7 @@ break; case 'V' : fprintf (stderr, "gmk_m2, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -260,8 +260,5 @@ fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/gmk_m3.c scotch-6.0.6/src/scotch/gmk_m3.c --- scotch-6.0.4.dfsg1/src/scotch/gmk_m3.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/gmk_m3.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,7 +45,7 @@ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /** NOTES : # The vertices of the (dX,dY,dZ) mesh **/ /** are numbered as terminals so that **/ @@ -74,8 +74,8 @@ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ - { "w" }, - { "w" } }; + { FILEMODEW }, + { FILEMODEW } }; static const char * C_usageList[] = { "gmk_m3 [ [ []]] ", @@ -157,7 +157,7 @@ break; case 'V' : fprintf (stderr, "gmk_m3, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -266,8 +266,5 @@ fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/gmk_msh.c scotch-6.0.6/src/scotch/gmk_msh.c --- scotch-6.0.4.dfsg1/src/scotch/gmk_msh.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/gmk_msh.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,7 +45,7 @@ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -66,8 +66,8 @@ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[2] = { /* File array */ - { "r" }, - { "w" } }; + { FILEMODER }, + { FILEMODEW } }; static const char * C_usageList[] = { "gmk_msh [ []] ", @@ -116,7 +116,7 @@ return (0); case 'V' : fprintf (stderr, "gmk_msh, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -147,8 +147,5 @@ SCOTCH_graphExit (&grafdat); SCOTCH_meshExit (&meshdat); -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/gmk_ub2.c scotch-6.0.6/src/scotch/gmk_ub2.c --- scotch-6.0.4.dfsg1/src/scotch/gmk_ub2.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/gmk_ub2.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -57,7 +57,7 @@ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -72,14 +72,18 @@ #include "scotch.h" #include "gmk_ub2.h" -#define ngbadd(v) if ((v) != vertnum) { \ - int k; \ - for (k = 0; k < ngbnbr; k ++) \ - if ((v) == ngbtab[k]) \ - break; \ - if (k == ngbnbr) \ - ngbtab[ngbnbr ++] = (v); \ - } +#define ngbadd(v) do { \ + int t; \ + t = (v); \ + if (t != vertnum) { \ + int k; \ + for (k = 0; k < ngbnbr; k ++) \ + if (t == ngbtab[k]) \ + break; \ + if (k == ngbnbr) \ + ngbtab[ngbnbr ++] = t; \ + } \ + } while (0); /* ** The static definitions. @@ -88,7 +92,7 @@ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ - { "w" } }; + { FILEMODEW } }; static const char * C_usageList[] = { "gmk_ub2 [] ", @@ -150,7 +154,7 @@ return (0); case 'V' : fprintf (stderr, "gmk_ub2, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -185,8 +189,5 @@ fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/gmtst.c scotch-6.0.6/src/scotch/gmtst.c --- scotch-6.0.4.dfsg1/src/scotch/gmtst.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/gmtst.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -51,7 +51,7 @@ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -72,10 +72,10 @@ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ - { "r" }, - { "r" }, - { "r" }, - { "w" } }; + { FILEMODER }, + { FILEMODER }, + { FILEMODER }, + { FILEMODEW } }; static const char * C_usageList[] = { /* Usage */ "gmtst [ [ [ []]]] ", @@ -95,12 +95,11 @@ int argc, char * argv[]) { - SCOTCH_Graph grafdat; /* Source graph */ - SCOTCH_Num vertnbr; /* Source graph size */ - SCOTCH_Num * vlbltab; /* Source graph vertex label array */ - SCOTCH_Arch archdat; /* Target architecture */ - SCOTCH_Num archnbr; /* Size of the target architecture */ - SCOTCH_Mapping mappdat; /* Mapping data */ + SCOTCH_Graph grafdat; /* Source graph */ + SCOTCH_Num vertnbr; /* Source graph size */ + SCOTCH_Num * vlbltab; /* Source graph vertex label array */ + SCOTCH_Arch archdat; /* Target architecture */ + SCOTCH_Mapping mappdat; /* Mapping data */ int i; errorProg ("gmtst"); @@ -134,7 +133,7 @@ break; case 'V' : fprintf (stderr, "gmtst, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -159,8 +158,6 @@ return (1); } - archnbr = SCOTCH_archSize (&archdat); /* Get architecture size */ - SCOTCH_graphMapInit (&grafdat, &mappdat, &archdat, NULL); /* Create mapping structure */ if (SCOTCH_graphMapLoad (&grafdat, &mappdat, C_filepntrmapinp) != 0) errorPrint ("main: bad input (1)"); @@ -173,8 +170,5 @@ SCOTCH_archExit (&archdat); SCOTCH_graphExit (&grafdat); -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/gord.c scotch-6.0.6/src/scotch/gord.c --- scotch-6.0.4.dfsg1/src/scotch/gord.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/gord.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -52,7 +52,7 @@ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -73,11 +73,11 @@ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* File array */ - { "r" }, - { "w" }, - { "w" }, - { "w" }, - { "w" } }; + { FILEMODER }, + { FILEMODEW }, + { FILEMODEW }, + { FILEMODEW }, + { FILEMODEW } }; static const char * C_usageList[] = { "gord [ [ []]] ", @@ -193,7 +193,7 @@ break; case 'V' : fprintf (stderr, "gord, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); case 'v' : /* Output control info */ @@ -282,8 +282,5 @@ SCOTCH_graphExit (&grafdat); memFree (permtab); -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/gotst.c scotch-6.0.6/src/scotch/gotst.c --- scotch-6.0.4.dfsg1/src/scotch/gotst.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/gotst.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -46,7 +46,7 @@ /** # Version 5.1 : from : 20 apr 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /** NOTES : # The cost analysis routine leaves the **/ /** memory management to malloc and free **/ @@ -73,9 +73,9 @@ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[3] = { /* File array */ - { "r" }, - { "r" }, - { "w" } }; + { FILEMODER }, + { FILEMODER }, + { FILEMODEW } }; static const char * C_usageList[] = { "gotst [ [ []]] ", @@ -132,7 +132,7 @@ return (0); case 'V' : fprintf (stderr, "gotst, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -174,9 +174,6 @@ SCOTCH_graphOrderExit (&grafdat, &ordedat); SCOTCH_graphExit (&grafdat); -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/gout_c.c scotch-6.0.6/src/scotch/gout_c.c --- scotch-6.0.4.dfsg1/src/scotch/gout_c.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/gout_c.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -57,7 +57,7 @@ /** # Version 5.1 : from : 25 oct 2007 **/ /** to 14 feb 2011 **/ /** # Version 6.0 : from : 16 oct 2010 **/ -/** to 12 nov 2014 **/ +/** to 10 jul 2018 **/ /** **/ /************************************************************/ @@ -79,10 +79,10 @@ static int C_fileNum = 0; /* Number of file in arg list */ File C_fileTab[C_FILENBR] = { /* The file array; public */ - { "r" }, - { "r" }, - { "r" }, - { "w" } }; + { FILEMODER }, + { FILEMODER }, + { FILEMODER }, + { FILEMODEW } }; static unsigned int C_geoFlag = C_GEOFLAGDEFAULT; /* Geometry flag */ @@ -186,7 +186,7 @@ break; case 'V' : fprintf (stderr, "gout, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -218,9 +218,6 @@ C_geoExit (&geo); SCOTCH_graphExit (&grafdat.grafdat); -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/gout_o.c scotch-6.0.6/src/scotch/gout_o.c --- scotch-6.0.4.dfsg1/src/scotch/gout_o.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/gout_o.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2011,2012 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2011,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -55,7 +55,7 @@ /** # Version 5.1 : from : 25 oct 2007 **/ /** to 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 01 jan 2012 **/ +/** to : 21 may 2018 **/ /** **/ /************************************************************/ @@ -360,10 +360,7 @@ for (i = 0; i < idxnbr - 1; i ++) { if ((i % 8) == 0) fprintf (stream, "\n"); - if (idxtab[i] == ~0) - fprintf (stream, "\t-1,"); - else - fprintf (stream, "\t%u,", idxtab[i]); + fprintf (stream, "\t%d,", idxtab[i]); /* ~0 is "1" */ } if (((idxnbr - 1) % 8) == 0) fprintf (stream, "\n"); @@ -769,7 +766,7 @@ if (O_outParam.PosMesh.color == 'c') fprintf (stream, "C%c\n", 'a' + pictab[i].col); else - fprintf (stream, "%u G\n", pictab[i].col); + fprintf (stream, "%d G\n", pictab[i].col); j = i; /* Record the new current color */ } diff -Nru scotch-6.0.4.dfsg1/src/scotch/gscat.c scotch-6.0.6/src/scotch/gscat.c --- scotch-6.0.4.dfsg1/src/scotch/gscat.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/gscat.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2009-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2009-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -42,7 +42,7 @@ /** DATES : # Version 5.1 : from : 26 apr 2009 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -64,8 +64,8 @@ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* File array */ - { "r" }, - { "w" } }; + { FILEMODER }, + { FILEMODEW } }; static const char * C_usageList[] = { /* Usage */ "gscat ", @@ -120,7 +120,7 @@ return (0); case 'V' : fprintf (stderr, "gscat, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2009-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2009-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -136,9 +136,6 @@ fileBlockClose (C_fileTab, 1); /* Always close explicitely to end eventual (un)compression tasks */ -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } @@ -182,18 +179,25 @@ flagtab[2] = proptab[2] - '0'; /* Vertex loads flag */ for (procnum = 0; procnum < procnbr; procnum ++) { - char * nametmp; + char * naexptr; /* Expanded name */ FILE * ostream; SCOTCH_Num vertlocnbr; SCOTCH_Num vertlocnum; SCOTCH_Num edgelocnbr; - nametmp = nameptr; ostream = NULL; - if (fileNameDistExpand (&nametmp, procnbr, procnum, -1) == 0) { - ostream = fopen (nametmp, "w+"); - memFree (nametmp); /* Expanded name no longer needed anyway */ + naexptr = fileNameDistExpand (nameptr, procnbr, procnum); + if (naexptr == nameptr) { + errorPrint ("C_graphScat: not a distributed file name"); + return (1); + } + if (naexptr == NULL) { + errorPrint ("C_graphScat: cannot create distributed file name"); + return (1); } + + ostream = fopen (naexptr, "w+"); + memFree (naexptr); /* Expanded name no longer needed anyway */ if (ostream == NULL) { errorPrint ("C_graphScat: cannot open file"); return (1); @@ -211,6 +215,7 @@ (SCOTCH_Num) baseval, proptab) == EOF) { errorPrint ("C_graphScat: bad output (1)"); + fclose (ostream); return (1); } @@ -222,6 +227,7 @@ if (intLoad (stream, &vlblval) != 1) { /* Read label data */ errorPrint ("C_graphScat: bad input (3)"); + fclose (ostream); return (1); } intSave (ostream, vlblval); @@ -232,6 +238,7 @@ if (intLoad (stream, &veloval) != 1) { /* Read vertex load data */ errorPrint ("C_graphScat: bad input (4)"); + fclose (ostream); return (1); } intSave (ostream, veloval); @@ -239,6 +246,7 @@ } if (intLoad (stream, °rval) != 1) { /* Read vertex degree */ errorPrint ("C_graphScat: bad input (5)"); + fclose (ostream); return (1); } intSave (ostream, degrval); @@ -253,6 +261,7 @@ if (intLoad (stream, &edloval) != 1) { /* Read edge load data */ errorPrint ("C_graphScat: bad input (6)"); + fclose (ostream); return (1); } putc ('\t', ostream); @@ -261,6 +270,7 @@ if (intLoad (stream, &edgeval) != 1) { /* Read edge data */ errorPrint ("C_graphScat: bad input (7)"); + fclose (ostream); return (1); } putc ('\t', ostream); diff -Nru scotch-6.0.4.dfsg1/src/scotch/gtst.c scotch-6.0.6/src/scotch/gtst.c --- scotch-6.0.4.dfsg1/src/scotch/gtst.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/gtst.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -55,7 +55,7 @@ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -76,8 +76,8 @@ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ - { "r" }, - { "w" } }; + { FILEMODER }, + { FILEMODEW } }; static const char * C_usageList[] = { "gtst [ []] ", @@ -141,7 +141,7 @@ exit (0); case 'V' : fprintf (stderr, "gtst, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -179,8 +179,5 @@ fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/mcv.c scotch-6.0.6/src/scotch/mcv.c --- scotch-6.0.4.dfsg1/src/scotch/mcv.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/mcv.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,7 +45,7 @@ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -82,9 +82,9 @@ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[3] = { /* File array */ - { "r" }, - { "w" }, - { "w" } }; + { FILEMODER }, + { FILEMODEW }, + { FILEMODEW } }; static const char * C_usageList[] = { "mcv [ [ []]] ", @@ -168,7 +168,7 @@ break; case 'V' : fprintf (stderr, "mcv, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -196,8 +196,5 @@ SCOTCH_geomExit (&geomdat); SCOTCH_meshExit (&meshdat); -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/mmk_m2.c scotch-6.0.6/src/scotch/mmk_m2.c --- scotch-6.0.4.dfsg1/src/scotch/mmk_m2.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/mmk_m2.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,7 +45,7 @@ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /** NOTES : # The nodes and elements of the **/ /** (dX,dY) mesh are numbered so that **/ @@ -73,8 +73,8 @@ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ - { "w" }, - { "w" } }; + { FILEMODEW }, + { FILEMODEW } }; static const int C_nghbTab[3] = { 4, 2, 1 }; @@ -145,7 +145,7 @@ return (0); case 'V' : fprintf (stderr, "mmk_m2, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -223,8 +223,5 @@ fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/mmk_m3.c scotch-6.0.6/src/scotch/mmk_m3.c --- scotch-6.0.4.dfsg1/src/scotch/mmk_m3.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/mmk_m3.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,7 +45,7 @@ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /** NOTES : # The nodes and elements of the **/ /** (dX,dY,dZ) mesh are numbered so that **/ @@ -74,8 +74,8 @@ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ - { "w" }, - { "w" } }; + { FILEMODEW }, + { FILEMODEW } }; static const int C_nghbTab[4] = { 8, 4, 2, 1 }; @@ -146,7 +146,7 @@ return (0); case 'V' : fprintf (stderr, "mmk_m3, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -261,8 +261,5 @@ fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/mord.c scotch-6.0.6/src/scotch/mord.c --- scotch-6.0.4.dfsg1/src/scotch/mord.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/mord.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,7 +45,7 @@ /** # Version 5.1 : from : 08 sep 2008 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -66,10 +66,10 @@ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* File array */ - { "r" }, - { "w" }, - { "w" }, - { "w" } }; + { FILEMODER }, + { FILEMODEW }, + { FILEMODEW }, + { FILEMODEW } }; static const char * C_usageList[] = { "mord [ [ []]] ", @@ -183,7 +183,7 @@ break; case 'V' : fprintf (stderr, "mord, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); break; @@ -274,9 +274,6 @@ SCOTCH_meshExit (&meshdat); memFree (permtab); -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); } diff -Nru scotch-6.0.4.dfsg1/src/scotch/mtst.c scotch-6.0.6/src/scotch/mtst.c --- scotch-6.0.4.dfsg1/src/scotch/mtst.c 2015-02-24 22:39:37.000000000 +0000 +++ scotch-6.0.6/src/scotch/mtst.c 2018-07-14 15:24:49.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS +/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. @@ -45,7 +45,7 @@ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ -/** to : 12 nov 2014 **/ +/** to : 10 jul 2018 **/ /** **/ /************************************************************/ @@ -66,8 +66,8 @@ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ - { "r" }, - { "w" } }; + { FILEMODER }, + { FILEMODEW } }; static const char * C_usageList[] = { "mtst [ []] ", @@ -131,7 +131,7 @@ exit (0); case 'V' : fprintf (stderr, "mtst, version " SCOTCH_VERSION_STRING "\n"); - fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); + fprintf (stderr, "Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : @@ -169,8 +169,5 @@ SCOTCH_meshExit (&meshdat); -#ifdef COMMON_PTHREAD - pthread_exit ((void *) 0); /* Allow potential (un)compression tasks to complete */ -#endif /* COMMON_PTHREAD */ return (0); }